Create IRadio AIDL

Create IRadio AIDL from HIDL versions 1.0-1.6 using the hidl2aidl tool.
This is just a skeleton implementation to allow 1.7 APIs to be added to
the AIDL interface. Changes to the API surface and modularization to
come after this change is merged.

Test: build
Bug: 198331182
Change-Id: Ice71b7c159b98de8b36124f379167fb579a4ea2f
diff --git a/compatibility_matrices/compatibility_matrix.current.xml b/compatibility_matrices/compatibility_matrix.current.xml
index f03008a..9eaa847 100644
--- a/compatibility_matrices/compatibility_matrix.current.xml
+++ b/compatibility_matrices/compatibility_matrix.current.xml
@@ -446,6 +446,16 @@
             <instance>default</instance>
         </interface>
     </hal>
+    <hal format="aidl" optional="true">
+        <name>android.hardware.radio</name>
+        <version>1</version>
+        <interface>
+            <name>IRadio</name>
+            <instance>slot1</instance>
+            <instance>slot2</instance>
+            <instance>slot3</instance>
+        </interface>
+    </hal>
     <hal format="hidl" optional="true">
         <name>android.hardware.radio</name>
         <version>1.6</version>
diff --git a/radio/aidl/Android.bp b/radio/aidl/Android.bp
new file mode 100644
index 0000000..29d7a58
--- /dev/null
+++ b/radio/aidl/Android.bp
@@ -0,0 +1,54 @@
+aidl_interface {
+    name: "android.hardware.radio",
+    vendor_available: true,
+    srcs: ["android/hardware/radio/*.aidl"],
+    stability: "vintf",
+    backend: {
+        cpp: {
+            enabled: false,
+        },
+        java: {
+            sdk_version: "module_current",
+        },
+        ndk: {
+            vndk: {
+                enabled: true,
+            },
+        },
+    },
+}
+
+cc_library {
+    name: "android.hardware.radio-translate-ndk",
+    vendor_available: true,
+    srcs: ["android/hardware/radio/translate-ndk.cpp"],
+    shared_libs: [
+        "libbinder_ndk",
+        "libhidlbase",
+        "android.hardware.radio-V1-ndk_platform",
+        "android.hardware.radio@1.0",
+        "android.hardware.radio@1.1",
+        "android.hardware.radio@1.2",
+        "android.hardware.radio@1.3",
+        "android.hardware.radio@1.4",
+        "android.hardware.radio@1.5",
+        "android.hardware.radio@1.6",
+    ],
+    export_include_dirs: ["include"],
+}
+
+java_library {
+    name: "android.hardware.radio-translate-java",
+    srcs: ["android/hardware/radio/Translate.java"],
+    libs: [
+        "android.hardware.radio-V1-java",
+        "android.hardware.radio-V1.0-java",
+        "android.hardware.radio-V1.1-java",
+        "android.hardware.radio-V1.2-java",
+        "android.hardware.radio-V1.3-java",
+        "android.hardware.radio-V1.4-java",
+        "android.hardware.radio-V1.5-java",
+        "android.hardware.radio-V1.6-java",
+    ],
+    sdk_version: "module_current",
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/AccessNetwork.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/AccessNetwork.aidl
new file mode 100644
index 0000000..0327d6c
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/AccessNetwork.aidl
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum AccessNetwork {
+  UNKNOWN = 0,
+  GERAN = 1,
+  UTRAN = 2,
+  EUTRAN = 3,
+  CDMA2000 = 4,
+  IWLAN = 5,
+  NGRAN = 6,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ActivityStatsInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ActivityStatsInfo.aidl
new file mode 100644
index 0000000..f9ef742
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ActivityStatsInfo.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable ActivityStatsInfo {
+  int sleepModeTimeMs;
+  int idleModeTimeMs;
+  int[] txmModetimeMs;
+  int rxModeTimeMs;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/AddressProperty.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/AddressProperty.aidl
new file mode 100644
index 0000000..dd6e79a
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/AddressProperty.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum AddressProperty {
+  NONE = 0,
+  DEPRECATED = 32,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ApnAuthType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ApnAuthType.aidl
new file mode 100644
index 0000000..bae7d1f
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ApnAuthType.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum ApnAuthType {
+  NO_PAP_NO_CHAP = 0,
+  PAP_NO_CHAP = 1,
+  NO_PAP_CHAP = 2,
+  PAP_CHAP = 3,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ApnTypes.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ApnTypes.aidl
new file mode 100644
index 0000000..0829fa6
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ApnTypes.aidl
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum ApnTypes {
+  NONE = 0,
+  DEFAULT = 1,
+  MMS = 2,
+  SUPL = 4,
+  DUN = 8,
+  HIPRI = 16,
+  FOTA = 32,
+  IMS = 64,
+  CBS = 128,
+  IA = 256,
+  EMERGENCY = 512,
+  ALL = 1023,
+  MCX = 1024,
+  XCAP = 2048,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/AppState.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/AppState.aidl
new file mode 100644
index 0000000..59e2bd4
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/AppState.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum AppState {
+  UNKNOWN = 0,
+  DETECTED = 1,
+  PIN = 2,
+  PUK = 3,
+  SUBSCRIPTION_PERSO = 4,
+  READY = 5,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/AppStatus.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/AppStatus.aidl
new file mode 100644
index 0000000..c9abe32
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/AppStatus.aidl
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable AppStatus {
+  android.hardware.radio.AppType appType;
+  android.hardware.radio.AppState appState;
+  android.hardware.radio.PersoSubstate persoSubstate;
+  String aidPtr;
+  String appLabelPtr;
+  int pin1Replaced;
+  android.hardware.radio.PinState pin1;
+  android.hardware.radio.PinState pin2;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/AppType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/AppType.aidl
new file mode 100644
index 0000000..adbbe9f
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/AppType.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum AppType {
+  UNKNOWN = 0,
+  SIM = 1,
+  USIM = 2,
+  RUIM = 3,
+  CSIM = 4,
+  ISIM = 5,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/AudioQuality.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/AudioQuality.aidl
new file mode 100644
index 0000000..a596969
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/AudioQuality.aidl
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum AudioQuality {
+  UNSPECIFIED = 0,
+  AMR = 1,
+  AMR_WB = 2,
+  GSM_EFR = 3,
+  GSM_FR = 4,
+  GSM_HR = 5,
+  EVRC = 6,
+  EVRC_B = 7,
+  EVRC_WB = 8,
+  EVRC_NW = 9,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/BarringInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/BarringInfo.aidl
new file mode 100644
index 0000000..ac0b4aa
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/BarringInfo.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable BarringInfo {
+  android.hardware.radio.BarringInfoServiceType serviceType;
+  android.hardware.radio.BarringInfoBarringType barringType;
+  android.hardware.radio.BarringInfoBarringTypeSpecificInfo barringTypeSpecificInfo;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/BarringInfoBarringType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/BarringInfoBarringType.aidl
new file mode 100644
index 0000000..6b8006e
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/BarringInfoBarringType.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum BarringInfoBarringType {
+  NONE = 0,
+  CONDITIONAL = 1,
+  UNCONDITIONAL = 2,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/BarringInfoBarringTypeSpecificInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/BarringInfoBarringTypeSpecificInfo.aidl
new file mode 100644
index 0000000..c2ba1d2
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/BarringInfoBarringTypeSpecificInfo.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+union BarringInfoBarringTypeSpecificInfo {
+  boolean noinit;
+  android.hardware.radio.BarringInfoBarringTypeSpecificInfoConditional conditional;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/BarringInfoBarringTypeSpecificInfoConditional.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/BarringInfoBarringTypeSpecificInfoConditional.aidl
new file mode 100644
index 0000000..8c079e2
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/BarringInfoBarringTypeSpecificInfoConditional.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable BarringInfoBarringTypeSpecificInfoConditional {
+  int factor;
+  int timeSeconds;
+  boolean isBarred;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/BarringInfoServiceType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/BarringInfoServiceType.aidl
new file mode 100644
index 0000000..faea9b9
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/BarringInfoServiceType.aidl
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum BarringInfoServiceType {
+  CS_SERVICE = 0,
+  PS_SERVICE = 1,
+  CS_VOICE = 2,
+  MO_SIGNALLING = 3,
+  MO_DATA = 4,
+  CS_FALLBACK = 5,
+  MMTEL_VOICE = 6,
+  MMTEL_VIDEO = 7,
+  EMERGENCY = 8,
+  SMS = 9,
+  OPERATOR_1 = 1001,
+  OPERATOR_2 = 1002,
+  OPERATOR_3 = 1003,
+  OPERATOR_4 = 1004,
+  OPERATOR_5 = 1005,
+  OPERATOR_6 = 1006,
+  OPERATOR_7 = 1007,
+  OPERATOR_8 = 1008,
+  OPERATOR_9 = 1009,
+  OPERATOR_10 = 1010,
+  OPERATOR_11 = 1011,
+  OPERATOR_12 = 1012,
+  OPERATOR_13 = 1013,
+  OPERATOR_14 = 1014,
+  OPERATOR_15 = 1015,
+  OPERATOR_16 = 1016,
+  OPERATOR_17 = 1017,
+  OPERATOR_18 = 1018,
+  OPERATOR_19 = 1019,
+  OPERATOR_20 = 1020,
+  OPERATOR_21 = 1021,
+  OPERATOR_22 = 1022,
+  OPERATOR_23 = 1023,
+  OPERATOR_24 = 1024,
+  OPERATOR_25 = 1025,
+  OPERATOR_26 = 1026,
+  OPERATOR_27 = 1027,
+  OPERATOR_28 = 1028,
+  OPERATOR_29 = 1029,
+  OPERATOR_30 = 1030,
+  OPERATOR_31 = 1031,
+  OPERATOR_32 = 1032,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/Call.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/Call.aidl
new file mode 100644
index 0000000..36e1ae3
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/Call.aidl
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable Call {
+  android.hardware.radio.CallState state;
+  int index;
+  int toa;
+  boolean isMpty;
+  boolean isMT;
+  byte als;
+  boolean isVoice;
+  boolean isVoicePrivacy;
+  String number;
+  android.hardware.radio.CallPresentation numberPresentation;
+  String name;
+  android.hardware.radio.CallPresentation namePresentation;
+  android.hardware.radio.UusInfo[] uusInfo;
+  android.hardware.radio.AudioQuality audioQuality;
+  String forwardedNumber;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CallForwardInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CallForwardInfo.aidl
new file mode 100644
index 0000000..bcfa90f
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CallForwardInfo.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CallForwardInfo {
+  android.hardware.radio.CallForwardInfoStatus status;
+  int reason;
+  int serviceClass;
+  int toa;
+  String number;
+  int timeSeconds;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CallForwardInfoStatus.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CallForwardInfoStatus.aidl
new file mode 100644
index 0000000..5ac129a
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CallForwardInfoStatus.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum CallForwardInfoStatus {
+  DISABLE = 0,
+  ENABLE = 1,
+  INTERROGATE = 2,
+  REGISTRATION = 3,
+  ERASURE = 4,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CallPresentation.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CallPresentation.aidl
new file mode 100644
index 0000000..c32cd08
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CallPresentation.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum CallPresentation {
+  ALLOWED = 0,
+  RESTRICTED = 1,
+  UNKNOWN = 2,
+  PAYPHONE = 3,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CallState.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CallState.aidl
new file mode 100644
index 0000000..375ca2c
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CallState.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum CallState {
+  ACTIVE = 0,
+  HOLDING = 1,
+  DIALING = 2,
+  ALERTING = 3,
+  INCOMING = 4,
+  WAITING = 5,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CardPowerState.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CardPowerState.aidl
new file mode 100644
index 0000000..1a3b4c6
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CardPowerState.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum CardPowerState {
+  POWER_DOWN = 0,
+  POWER_UP = 1,
+  POWER_UP_PASS_THROUGH = 2,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CardState.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CardState.aidl
new file mode 100644
index 0000000..d200b97
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CardState.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum CardState {
+  ABSENT = 0,
+  PRESENT = 1,
+  ERROR = 2,
+  RESTRICTED = 3,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CardStatus.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CardStatus.aidl
new file mode 100644
index 0000000..e11bb21
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CardStatus.aidl
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CardStatus {
+  android.hardware.radio.CardState cardState;
+  android.hardware.radio.PinState universalPinState;
+  int gsmUmtsSubscriptionAppIndex;
+  int cdmaSubscriptionAppIndex;
+  int imsSubscriptionAppIndex;
+  android.hardware.radio.AppStatus[] applications;
+  int physicalSlotId;
+  String atr;
+  String iccid;
+  String eid;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/Carrier.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/Carrier.aidl
new file mode 100644
index 0000000..bbf777f
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/Carrier.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable Carrier {
+  String mcc;
+  String mnc;
+  android.hardware.radio.CarrierMatchType matchType;
+  String matchData;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CarrierMatchType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CarrierMatchType.aidl
new file mode 100644
index 0000000..c3596cd
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CarrierMatchType.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum CarrierMatchType {
+  ALL = 0,
+  SPN = 1,
+  IMSI_PREFIX = 2,
+  GID1 = 3,
+  GID2 = 4,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CarrierRestrictions.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CarrierRestrictions.aidl
new file mode 100644
index 0000000..f8cafb5
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CarrierRestrictions.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CarrierRestrictions {
+  android.hardware.radio.Carrier[] allowedCarriers;
+  android.hardware.radio.Carrier[] excludedCarriers;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CarrierRestrictionsWithPriority.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CarrierRestrictionsWithPriority.aidl
new file mode 100644
index 0000000..1f06980
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CarrierRestrictionsWithPriority.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CarrierRestrictionsWithPriority {
+  android.hardware.radio.Carrier[] allowedCarriers;
+  android.hardware.radio.Carrier[] excludedCarriers;
+  boolean allowedCarriersPrioritized;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaBroadcastSmsConfigInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaBroadcastSmsConfigInfo.aidl
new file mode 100644
index 0000000..73c7fae
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaBroadcastSmsConfigInfo.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CdmaBroadcastSmsConfigInfo {
+  int serviceCategory;
+  int language;
+  boolean selected;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaCallWaiting.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaCallWaiting.aidl
new file mode 100644
index 0000000..564433f
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaCallWaiting.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CdmaCallWaiting {
+  String number;
+  android.hardware.radio.CdmaCallWaitingNumberPresentation numberPresentation;
+  String name;
+  android.hardware.radio.CdmaSignalInfoRecord signalInfoRecord;
+  android.hardware.radio.CdmaCallWaitingNumberType numberType;
+  android.hardware.radio.CdmaCallWaitingNumberPlan numberPlan;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaCallWaitingNumberPlan.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaCallWaitingNumberPlan.aidl
new file mode 100644
index 0000000..6dcd594
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaCallWaitingNumberPlan.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum CdmaCallWaitingNumberPlan {
+  UNKNOWN = 0,
+  ISDN = 1,
+  DATA = 3,
+  TELEX = 4,
+  NATIONAL = 8,
+  PRIVATE = 9,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaCallWaitingNumberPresentation.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaCallWaitingNumberPresentation.aidl
new file mode 100644
index 0000000..22eaf6b
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaCallWaitingNumberPresentation.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum CdmaCallWaitingNumberPresentation {
+  ALLOWED = 0,
+  RESTRICTED = 1,
+  UNKNOWN = 2,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaCallWaitingNumberType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaCallWaitingNumberType.aidl
new file mode 100644
index 0000000..4740108
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaCallWaitingNumberType.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum CdmaCallWaitingNumberType {
+  UNKNOWN = 0,
+  INTERNATIONAL = 1,
+  NATIONAL = 2,
+  NETWORK_SPECIFIC = 3,
+  SUBSCRIBER = 4,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaDisplayInfoRecord.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaDisplayInfoRecord.aidl
new file mode 100644
index 0000000..11f082f
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaDisplayInfoRecord.aidl
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CdmaDisplayInfoRecord {
+  String alphaBuf;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaInfoRecName.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaInfoRecName.aidl
new file mode 100644
index 0000000..182dcc0
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaInfoRecName.aidl
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum CdmaInfoRecName {
+  DISPLAY = 0,
+  CALLED_PARTY_NUMBER = 1,
+  CALLING_PARTY_NUMBER = 2,
+  CONNECTED_NUMBER = 3,
+  SIGNAL = 4,
+  REDIRECTING_NUMBER = 5,
+  LINE_CONTROL = 6,
+  EXTENDED_DISPLAY = 7,
+  T53_CLIR = 8,
+  T53_RELEASE = 9,
+  T53_AUDIO_CONTROL = 10,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaInformationRecord.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaInformationRecord.aidl
new file mode 100644
index 0000000..844a1bf
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaInformationRecord.aidl
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CdmaInformationRecord {
+  android.hardware.radio.CdmaInfoRecName name;
+  android.hardware.radio.CdmaDisplayInfoRecord[] display;
+  android.hardware.radio.CdmaNumberInfoRecord[] number;
+  android.hardware.radio.CdmaSignalInfoRecord[] signal;
+  android.hardware.radio.CdmaRedirectingNumberInfoRecord[] redir;
+  android.hardware.radio.CdmaLineControlInfoRecord[] lineCtrl;
+  android.hardware.radio.CdmaT53ClirInfoRecord[] clir;
+  android.hardware.radio.CdmaT53AudioControlInfoRecord[] audioCtrl;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaInformationRecords.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaInformationRecords.aidl
new file mode 100644
index 0000000..88a4331
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaInformationRecords.aidl
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CdmaInformationRecords {
+  android.hardware.radio.CdmaInformationRecord[] infoRec;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaLineControlInfoRecord.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaLineControlInfoRecord.aidl
new file mode 100644
index 0000000..48180a7
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaLineControlInfoRecord.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CdmaLineControlInfoRecord {
+  byte lineCtrlPolarityIncluded;
+  byte lineCtrlToggle;
+  byte lineCtrlReverse;
+  byte lineCtrlPowerDenial;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaNumberInfoRecord.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaNumberInfoRecord.aidl
new file mode 100644
index 0000000..86376a7
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaNumberInfoRecord.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CdmaNumberInfoRecord {
+  String number;
+  byte numberType;
+  byte numberPlan;
+  byte pi;
+  byte si;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaOtaProvisionStatus.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaOtaProvisionStatus.aidl
new file mode 100644
index 0000000..7cd88ac
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaOtaProvisionStatus.aidl
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum CdmaOtaProvisionStatus {
+  SPL_UNLOCKED = 0,
+  SPC_RETRIES_EXCEEDED = 1,
+  A_KEY_EXCHANGED = 2,
+  SSD_UPDATED = 3,
+  NAM_DOWNLOADED = 4,
+  MDN_DOWNLOADED = 5,
+  IMSI_DOWNLOADED = 6,
+  PRL_DOWNLOADED = 7,
+  COMMITTED = 8,
+  OTAPA_STARTED = 9,
+  OTAPA_STOPPED = 10,
+  OTAPA_ABORTED = 11,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaRedirectingNumberInfoRecord.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaRedirectingNumberInfoRecord.aidl
new file mode 100644
index 0000000..44b7993
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaRedirectingNumberInfoRecord.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CdmaRedirectingNumberInfoRecord {
+  android.hardware.radio.CdmaNumberInfoRecord redirectingNumber;
+  android.hardware.radio.CdmaRedirectingReason redirectingReason;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaRedirectingReason.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaRedirectingReason.aidl
new file mode 100644
index 0000000..e109c5b
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaRedirectingReason.aidl
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum CdmaRedirectingReason {
+  UNKNOWN = 0,
+  CALL_FORWARDING_BUSY = 1,
+  CALL_FORWARDING_NO_REPLY = 2,
+  CALLED_DTE_OUT_OF_ORDER = 9,
+  CALL_FORWARDING_BY_THE_CALLED_DTE = 10,
+  CALL_FORWARDING_UNCONDITIONAL = 15,
+  RESERVED = 16,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaRoamingType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaRoamingType.aidl
new file mode 100644
index 0000000..09a59a0
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaRoamingType.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum CdmaRoamingType {
+  HOME_NETWORK = 0,
+  AFFILIATED_ROAM = 1,
+  ANY_ROAM = 2,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSignalInfoRecord.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSignalInfoRecord.aidl
new file mode 100644
index 0000000..efb396a
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSignalInfoRecord.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CdmaSignalInfoRecord {
+  boolean isPresent;
+  byte signalType;
+  byte alertPitch;
+  byte signal;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSignalStrength.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSignalStrength.aidl
new file mode 100644
index 0000000..2939183
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSignalStrength.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CdmaSignalStrength {
+  int dbm;
+  int ecio;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsAck.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsAck.aidl
new file mode 100644
index 0000000..0ef4331
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsAck.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CdmaSmsAck {
+  android.hardware.radio.CdmaSmsErrorClass errorClass;
+  int smsCauseCode;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsAddress.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsAddress.aidl
new file mode 100644
index 0000000..a37f1e7
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsAddress.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CdmaSmsAddress {
+  android.hardware.radio.CdmaSmsDigitMode digitMode;
+  android.hardware.radio.CdmaSmsNumberMode numberMode;
+  android.hardware.radio.CdmaSmsNumberType numberType;
+  android.hardware.radio.CdmaSmsNumberPlan numberPlan;
+  byte[] digits;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsDigitMode.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsDigitMode.aidl
new file mode 100644
index 0000000..7c77830
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsDigitMode.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum CdmaSmsDigitMode {
+  FOUR_BIT = 0,
+  EIGHT_BIT = 1,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsErrorClass.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsErrorClass.aidl
new file mode 100644
index 0000000..3ad5c1a
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsErrorClass.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum CdmaSmsErrorClass {
+  NO_ERROR = 0,
+  ERROR = 1,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsMessage.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsMessage.aidl
new file mode 100644
index 0000000..c419bad
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsMessage.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CdmaSmsMessage {
+  int teleserviceId;
+  boolean isServicePresent;
+  int serviceCategory;
+  android.hardware.radio.CdmaSmsAddress address;
+  android.hardware.radio.CdmaSmsSubaddress subAddress;
+  byte[] bearerData;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsNumberMode.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsNumberMode.aidl
new file mode 100644
index 0000000..31d49d4
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsNumberMode.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum CdmaSmsNumberMode {
+  NOT_DATA_NETWORK = 0,
+  DATA_NETWORK = 1,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsNumberPlan.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsNumberPlan.aidl
new file mode 100644
index 0000000..fcbd1cc
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsNumberPlan.aidl
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum CdmaSmsNumberPlan {
+  UNKNOWN = 0,
+  TELEPHONY = 1,
+  RESERVED_2 = 2,
+  DATA = 3,
+  TELEX = 4,
+  RESERVED_5 = 5,
+  RESERVED_6 = 6,
+  RESERVED_7 = 7,
+  RESERVED_8 = 8,
+  PRIVATE = 9,
+  RESERVED_10 = 10,
+  RESERVED_11 = 11,
+  RESERVED_12 = 12,
+  RESERVED_13 = 13,
+  RESERVED_14 = 14,
+  RESERVED_15 = 15,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsNumberType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsNumberType.aidl
new file mode 100644
index 0000000..ca14dbc
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsNumberType.aidl
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum CdmaSmsNumberType {
+  UNKNOWN = 0,
+  INTERNATIONAL_OR_DATA_IP = 1,
+  NATIONAL_OR_INTERNET_MAIL = 2,
+  NETWORK = 3,
+  SUBSCRIBER = 4,
+  ALPHANUMERIC = 5,
+  ABBREVIATED = 6,
+  RESERVED_7 = 7,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsSubaddress.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsSubaddress.aidl
new file mode 100644
index 0000000..a0155da
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsSubaddress.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CdmaSmsSubaddress {
+  android.hardware.radio.CdmaSmsSubaddressType subaddressType;
+  boolean odd;
+  byte[] digits;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsSubaddressType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsSubaddressType.aidl
new file mode 100644
index 0000000..a4db5ec
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsSubaddressType.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum CdmaSmsSubaddressType {
+  NSAP = 0,
+  USER_SPECIFIED = 1,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsWriteArgs.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsWriteArgs.aidl
new file mode 100644
index 0000000..3202314
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsWriteArgs.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CdmaSmsWriteArgs {
+  android.hardware.radio.CdmaSmsWriteArgsStatus status;
+  android.hardware.radio.CdmaSmsMessage message;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsWriteArgsStatus.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsWriteArgsStatus.aidl
new file mode 100644
index 0000000..4bad261
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSmsWriteArgsStatus.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum CdmaSmsWriteArgsStatus {
+  REC_UNREAD = 0,
+  REC_READ = 1,
+  STO_UNSENT = 2,
+  STO_SENT = 3,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSubscriptionSource.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSubscriptionSource.aidl
new file mode 100644
index 0000000..11e8a24
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaSubscriptionSource.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum CdmaSubscriptionSource {
+  RUIM_SIM = 0,
+  NV = 1,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaT53AudioControlInfoRecord.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaT53AudioControlInfoRecord.aidl
new file mode 100644
index 0000000..9285eb7
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaT53AudioControlInfoRecord.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CdmaT53AudioControlInfoRecord {
+  byte upLink;
+  byte downLink;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaT53ClirInfoRecord.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaT53ClirInfoRecord.aidl
new file mode 100644
index 0000000..ff4d3c3
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CdmaT53ClirInfoRecord.aidl
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CdmaT53ClirInfoRecord {
+  byte cause;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellConfigLte.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellConfigLte.aidl
new file mode 100644
index 0000000..184af1c
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellConfigLte.aidl
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CellConfigLte {
+  boolean isEndcAvailable;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellConnectionStatus.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellConnectionStatus.aidl
new file mode 100644
index 0000000..96f8368
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellConnectionStatus.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum CellConnectionStatus {
+  NONE = 0,
+  PRIMARY_SERVING = 1,
+  SECONDARY_SERVING = 2,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellIdentity.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellIdentity.aidl
new file mode 100644
index 0000000..aa37fdf
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellIdentity.aidl
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+union CellIdentity {
+  boolean noinit;
+  android.hardware.radio.CellIdentityGsm gsm;
+  android.hardware.radio.CellIdentityWcdma wcdma;
+  android.hardware.radio.CellIdentityTdscdma tdscdma;
+  android.hardware.radio.CellIdentityCdma cdma;
+  android.hardware.radio.CellIdentityLte lte;
+  android.hardware.radio.CellIdentityNr nr;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellIdentityCdma.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellIdentityCdma.aidl
new file mode 100644
index 0000000..d24b91d
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellIdentityCdma.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CellIdentityCdma {
+  int networkId;
+  int systemId;
+  int baseStationId;
+  int longitude;
+  int latitude;
+  android.hardware.radio.CellIdentityOperatorNames operatorNames;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellIdentityGsm.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellIdentityGsm.aidl
new file mode 100644
index 0000000..4ee2148
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellIdentityGsm.aidl
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CellIdentityGsm {
+  String mcc;
+  String mnc;
+  int lac;
+  int cid;
+  int arfcn;
+  byte bsic;
+  android.hardware.radio.CellIdentityOperatorNames operatorNames;
+  String[] additionalPlmns;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellIdentityLte.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellIdentityLte.aidl
new file mode 100644
index 0000000..5a8c272
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellIdentityLte.aidl
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CellIdentityLte {
+  String mcc;
+  String mnc;
+  int ci;
+  int pci;
+  int tac;
+  int earfcn;
+  android.hardware.radio.CellIdentityOperatorNames operatorNames;
+  int bandwidth;
+  String[] additionalPlmns;
+  android.hardware.radio.OptionalCsgInfo optionalCsgInfo;
+  android.hardware.radio.EutranBands[] bands;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellIdentityNr.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellIdentityNr.aidl
new file mode 100644
index 0000000..60a24d7
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellIdentityNr.aidl
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CellIdentityNr {
+  String mcc;
+  String mnc;
+  long nci;
+  int pci;
+  int tac;
+  int nrarfcn;
+  android.hardware.radio.CellIdentityOperatorNames operatorNames;
+  String[] additionalPlmns;
+  android.hardware.radio.NgranBands[] bands;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellIdentityOperatorNames.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellIdentityOperatorNames.aidl
new file mode 100644
index 0000000..161797f
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellIdentityOperatorNames.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CellIdentityOperatorNames {
+  String alphaLong;
+  String alphaShort;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellIdentityTdscdma.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellIdentityTdscdma.aidl
new file mode 100644
index 0000000..35e1f5d
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellIdentityTdscdma.aidl
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CellIdentityTdscdma {
+  String mcc;
+  String mnc;
+  int lac;
+  int cid;
+  int cpid;
+  int uarfcn;
+  android.hardware.radio.CellIdentityOperatorNames operatorNames;
+  String[] additionalPlmns;
+  android.hardware.radio.OptionalCsgInfo optionalCsgInfo;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellIdentityWcdma.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellIdentityWcdma.aidl
new file mode 100644
index 0000000..7bcc4d5
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellIdentityWcdma.aidl
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CellIdentityWcdma {
+  String mcc;
+  String mnc;
+  int lac;
+  int cid;
+  int psc;
+  int uarfcn;
+  android.hardware.radio.CellIdentityOperatorNames operatorNames;
+  String[] additionalPlmns;
+  android.hardware.radio.OptionalCsgInfo optionalCsgInfo;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfo.aidl
new file mode 100644
index 0000000..20ea3cb
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfo.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CellInfo {
+  boolean registered;
+  android.hardware.radio.CellConnectionStatus connectionStatus;
+  android.hardware.radio.CellInfoCellInfoRatSpecificInfo ratSpecificInfo;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfoCdma.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfoCdma.aidl
new file mode 100644
index 0000000..dd940c2
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfoCdma.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CellInfoCdma {
+  android.hardware.radio.CellIdentityCdma cellIdentityCdma;
+  android.hardware.radio.CdmaSignalStrength signalStrengthCdma;
+  android.hardware.radio.EvdoSignalStrength signalStrengthEvdo;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfoCellInfoRatSpecificInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfoCellInfoRatSpecificInfo.aidl
new file mode 100644
index 0000000..7084e5e
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfoCellInfoRatSpecificInfo.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+union CellInfoCellInfoRatSpecificInfo {
+  android.hardware.radio.CellInfoGsm gsm;
+  android.hardware.radio.CellInfoWcdma wcdma;
+  android.hardware.radio.CellInfoTdscdma tdscdma;
+  android.hardware.radio.CellInfoLte lte;
+  android.hardware.radio.CellInfoNr nr;
+  android.hardware.radio.CellInfoCdma cdma;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfoGsm.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfoGsm.aidl
new file mode 100644
index 0000000..fda976c
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfoGsm.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CellInfoGsm {
+  android.hardware.radio.CellIdentityGsm cellIdentityGsm;
+  android.hardware.radio.GsmSignalStrength signalStrengthGsm;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfoInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfoInfo.aidl
new file mode 100644
index 0000000..9c22555
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfoInfo.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+union CellInfoInfo {
+  android.hardware.radio.CellInfoGsm gsm;
+  android.hardware.radio.CellInfoCdma cdma;
+  android.hardware.radio.CellInfoWcdma wcdma;
+  android.hardware.radio.CellInfoTdscdma tdscdma;
+  android.hardware.radio.CellInfoLte lte;
+  android.hardware.radio.CellInfoNr nr;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfoLte.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfoLte.aidl
new file mode 100644
index 0000000..9976feb
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfoLte.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CellInfoLte {
+  android.hardware.radio.CellIdentityLte cellIdentityLte;
+  android.hardware.radio.LteSignalStrength signalStrengthLte;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfoNr.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfoNr.aidl
new file mode 100644
index 0000000..7883692
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfoNr.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CellInfoNr {
+  android.hardware.radio.CellIdentityNr cellIdentityNr;
+  android.hardware.radio.NrSignalStrength signalStrengthNr;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfoTdscdma.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfoTdscdma.aidl
new file mode 100644
index 0000000..4fbe5b6
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfoTdscdma.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CellInfoTdscdma {
+  android.hardware.radio.CellIdentityTdscdma cellIdentityTdscdma;
+  android.hardware.radio.TdscdmaSignalStrength signalStrengthTdscdma;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfoType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfoType.aidl
new file mode 100644
index 0000000..cb92ed9
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfoType.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum CellInfoType {
+  NONE = 0,
+  GSM = 1,
+  CDMA = 2,
+  LTE = 3,
+  WCDMA = 4,
+  TD_SCDMA = 5,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfoWcdma.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfoWcdma.aidl
new file mode 100644
index 0000000..88ca975
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CellInfoWcdma.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CellInfoWcdma {
+  android.hardware.radio.CellIdentityWcdma cellIdentityWcdma;
+  android.hardware.radio.WcdmaSignalStrength signalStrengthWcdma;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CfData.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CfData.aidl
new file mode 100644
index 0000000..6a2b026
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/CfData.aidl
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable CfData {
+  android.hardware.radio.CallForwardInfo[] cfInfo;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ClipStatus.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ClipStatus.aidl
new file mode 100644
index 0000000..36a1510
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ClipStatus.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum ClipStatus {
+  CLIP_PROVISIONED = 0,
+  CLIP_UNPROVISIONED = 1,
+  UNKNOWN = 2,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/Clir.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/Clir.aidl
new file mode 100644
index 0000000..97ba4ed
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/Clir.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum Clir {
+  DEFAULT = 0,
+  INVOCATION = 1,
+  SUPPRESSION = 2,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ClosedSubscriberGroupInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ClosedSubscriberGroupInfo.aidl
new file mode 100644
index 0000000..0c10ca4
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ClosedSubscriberGroupInfo.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable ClosedSubscriberGroupInfo {
+  boolean csgIndication;
+  String homeNodebName;
+  int csgIdentity;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DataCallFailCause.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DataCallFailCause.aidl
new file mode 100644
index 0000000..df895f8
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DataCallFailCause.aidl
@@ -0,0 +1,377 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum DataCallFailCause {
+  NONE = 0,
+  OPERATOR_BARRED = 8,
+  NAS_SIGNALLING = 14,
+  INSUFFICIENT_RESOURCES = 26,
+  MISSING_UNKNOWN_APN = 27,
+  UNKNOWN_PDP_ADDRESS_TYPE = 28,
+  USER_AUTHENTICATION = 29,
+  ACTIVATION_REJECT_GGSN = 30,
+  ACTIVATION_REJECT_UNSPECIFIED = 31,
+  SERVICE_OPTION_NOT_SUPPORTED = 32,
+  SERVICE_OPTION_NOT_SUBSCRIBED = 33,
+  SERVICE_OPTION_OUT_OF_ORDER = 34,
+  NSAPI_IN_USE = 35,
+  REGULAR_DEACTIVATION = 36,
+  QOS_NOT_ACCEPTED = 37,
+  NETWORK_FAILURE = 38,
+  UMTS_REACTIVATION_REQ = 39,
+  FEATURE_NOT_SUPP = 40,
+  TFT_SEMANTIC_ERROR = 41,
+  TFT_SYTAX_ERROR = 42,
+  UNKNOWN_PDP_CONTEXT = 43,
+  FILTER_SEMANTIC_ERROR = 44,
+  FILTER_SYTAX_ERROR = 45,
+  PDP_WITHOUT_ACTIVE_TFT = 46,
+  ONLY_IPV4_ALLOWED = 50,
+  ONLY_IPV6_ALLOWED = 51,
+  ONLY_SINGLE_BEARER_ALLOWED = 52,
+  ESM_INFO_NOT_RECEIVED = 53,
+  PDN_CONN_DOES_NOT_EXIST = 54,
+  MULTI_CONN_TO_SAME_PDN_NOT_ALLOWED = 55,
+  MAX_ACTIVE_PDP_CONTEXT_REACHED = 65,
+  UNSUPPORTED_APN_IN_CURRENT_PLMN = 66,
+  INVALID_TRANSACTION_ID = 81,
+  MESSAGE_INCORRECT_SEMANTIC = 95,
+  INVALID_MANDATORY_INFO = 96,
+  MESSAGE_TYPE_UNSUPPORTED = 97,
+  MSG_TYPE_NONCOMPATIBLE_STATE = 98,
+  UNKNOWN_INFO_ELEMENT = 99,
+  CONDITIONAL_IE_ERROR = 100,
+  MSG_AND_PROTOCOL_STATE_UNCOMPATIBLE = 101,
+  PROTOCOL_ERRORS = 111,
+  APN_TYPE_CONFLICT = 112,
+  INVALID_PCSCF_ADDR = 113,
+  INTERNAL_CALL_PREEMPT_BY_HIGH_PRIO_APN = 114,
+  EMM_ACCESS_BARRED = 115,
+  EMERGENCY_IFACE_ONLY = 116,
+  IFACE_MISMATCH = 117,
+  COMPANION_IFACE_IN_USE = 118,
+  IP_ADDRESS_MISMATCH = 119,
+  IFACE_AND_POL_FAMILY_MISMATCH = 120,
+  EMM_ACCESS_BARRED_INFINITE_RETRY = 121,
+  AUTH_FAILURE_ON_EMERGENCY_CALL = 122,
+  OEM_DCFAILCAUSE_1 = 4097,
+  OEM_DCFAILCAUSE_2 = 4098,
+  OEM_DCFAILCAUSE_3 = 4099,
+  OEM_DCFAILCAUSE_4 = 4100,
+  OEM_DCFAILCAUSE_5 = 4101,
+  OEM_DCFAILCAUSE_6 = 4102,
+  OEM_DCFAILCAUSE_7 = 4103,
+  OEM_DCFAILCAUSE_8 = 4104,
+  OEM_DCFAILCAUSE_9 = 4105,
+  OEM_DCFAILCAUSE_10 = 4106,
+  OEM_DCFAILCAUSE_11 = 4107,
+  OEM_DCFAILCAUSE_12 = 4108,
+  OEM_DCFAILCAUSE_13 = 4109,
+  OEM_DCFAILCAUSE_14 = 4110,
+  OEM_DCFAILCAUSE_15 = 4111,
+  VOICE_REGISTRATION_FAIL = -1,
+  DATA_REGISTRATION_FAIL = -2,
+  SIGNAL_LOST = -3,
+  PREF_RADIO_TECH_CHANGED = -4,
+  RADIO_POWER_OFF = -5,
+  TETHERED_CALL_ACTIVE = -6,
+  ERROR_UNSPECIFIED = 65535,
+  LLC_SNDCP = 25,
+  ACTIVATION_REJECTED_BCM_VIOLATION = 48,
+  COLLISION_WITH_NETWORK_INITIATED_REQUEST = 56,
+  ONLY_IPV4V6_ALLOWED = 57,
+  ONLY_NON_IP_ALLOWED = 58,
+  UNSUPPORTED_QCI_VALUE = 59,
+  BEARER_HANDLING_NOT_SUPPORTED = 60,
+  INVALID_DNS_ADDR = 123,
+  INVALID_PCSCF_OR_DNS_ADDRESS = 124,
+  CALL_PREEMPT_BY_EMERGENCY_APN = 127,
+  UE_INITIATED_DETACH_OR_DISCONNECT = 128,
+  MIP_FA_REASON_UNSPECIFIED = 2000,
+  MIP_FA_ADMIN_PROHIBITED = 2001,
+  MIP_FA_INSUFFICIENT_RESOURCES = 2002,
+  MIP_FA_MOBILE_NODE_AUTHENTICATION_FAILURE = 2003,
+  MIP_FA_HOME_AGENT_AUTHENTICATION_FAILURE = 2004,
+  MIP_FA_REQUESTED_LIFETIME_TOO_LONG = 2005,
+  MIP_FA_MALFORMED_REQUEST = 2006,
+  MIP_FA_MALFORMED_REPLY = 2007,
+  MIP_FA_ENCAPSULATION_UNAVAILABLE = 2008,
+  MIP_FA_VJ_HEADER_COMPRESSION_UNAVAILABLE = 2009,
+  MIP_FA_REVERSE_TUNNEL_UNAVAILABLE = 2010,
+  MIP_FA_REVERSE_TUNNEL_IS_MANDATORY = 2011,
+  MIP_FA_DELIVERY_STYLE_NOT_SUPPORTED = 2012,
+  MIP_FA_MISSING_NAI = 2013,
+  MIP_FA_MISSING_HOME_AGENT = 2014,
+  MIP_FA_MISSING_HOME_ADDRESS = 2015,
+  MIP_FA_UNKNOWN_CHALLENGE = 2016,
+  MIP_FA_MISSING_CHALLENGE = 2017,
+  MIP_FA_STALE_CHALLENGE = 2018,
+  MIP_HA_REASON_UNSPECIFIED = 2019,
+  MIP_HA_ADMIN_PROHIBITED = 2020,
+  MIP_HA_INSUFFICIENT_RESOURCES = 2021,
+  MIP_HA_MOBILE_NODE_AUTHENTICATION_FAILURE = 2022,
+  MIP_HA_FOREIGN_AGENT_AUTHENTICATION_FAILURE = 2023,
+  MIP_HA_REGISTRATION_ID_MISMATCH = 2024,
+  MIP_HA_MALFORMED_REQUEST = 2025,
+  MIP_HA_UNKNOWN_HOME_AGENT_ADDRESS = 2026,
+  MIP_HA_REVERSE_TUNNEL_UNAVAILABLE = 2027,
+  MIP_HA_REVERSE_TUNNEL_IS_MANDATORY = 2028,
+  MIP_HA_ENCAPSULATION_UNAVAILABLE = 2029,
+  CLOSE_IN_PROGRESS = 2030,
+  NETWORK_INITIATED_TERMINATION = 2031,
+  MODEM_APP_PREEMPTED = 2032,
+  PDN_IPV4_CALL_DISALLOWED = 2033,
+  PDN_IPV4_CALL_THROTTLED = 2034,
+  PDN_IPV6_CALL_DISALLOWED = 2035,
+  PDN_IPV6_CALL_THROTTLED = 2036,
+  MODEM_RESTART = 2037,
+  PDP_PPP_NOT_SUPPORTED = 2038,
+  UNPREFERRED_RAT = 2039,
+  PHYSICAL_LINK_CLOSE_IN_PROGRESS = 2040,
+  APN_PENDING_HANDOVER = 2041,
+  PROFILE_BEARER_INCOMPATIBLE = 2042,
+  SIM_CARD_CHANGED = 2043,
+  LOW_POWER_MODE_OR_POWERING_DOWN = 2044,
+  APN_DISABLED = 2045,
+  MAX_PPP_INACTIVITY_TIMER_EXPIRED = 2046,
+  IPV6_ADDRESS_TRANSFER_FAILED = 2047,
+  TRAT_SWAP_FAILED = 2048,
+  EHRPD_TO_HRPD_FALLBACK = 2049,
+  MIP_CONFIG_FAILURE = 2050,
+  PDN_INACTIVITY_TIMER_EXPIRED = 2051,
+  MAX_IPV4_CONNECTIONS = 2052,
+  MAX_IPV6_CONNECTIONS = 2053,
+  APN_MISMATCH = 2054,
+  IP_VERSION_MISMATCH = 2055,
+  DUN_CALL_DISALLOWED = 2056,
+  INTERNAL_EPC_NONEPC_TRANSITION = 2057,
+  INTERFACE_IN_USE = 2058,
+  APN_DISALLOWED_ON_ROAMING = 2059,
+  APN_PARAMETERS_CHANGED = 2060,
+  NULL_APN_DISALLOWED = 2061,
+  THERMAL_MITIGATION = 2062,
+  DATA_SETTINGS_DISABLED = 2063,
+  DATA_ROAMING_SETTINGS_DISABLED = 2064,
+  DDS_SWITCHED = 2065,
+  FORBIDDEN_APN_NAME = 2066,
+  DDS_SWITCH_IN_PROGRESS = 2067,
+  CALL_DISALLOWED_IN_ROAMING = 2068,
+  NON_IP_NOT_SUPPORTED = 2069,
+  PDN_NON_IP_CALL_THROTTLED = 2070,
+  PDN_NON_IP_CALL_DISALLOWED = 2071,
+  CDMA_LOCK = 2072,
+  CDMA_INTERCEPT = 2073,
+  CDMA_REORDER = 2074,
+  CDMA_RELEASE_DUE_TO_SO_REJECTION = 2075,
+  CDMA_INCOMING_CALL = 2076,
+  CDMA_ALERT_STOP = 2077,
+  CHANNEL_ACQUISITION_FAILURE = 2078,
+  MAX_ACCESS_PROBE = 2079,
+  CONCURRENT_SERVICE_NOT_SUPPORTED_BY_BASE_STATION = 2080,
+  NO_RESPONSE_FROM_BASE_STATION = 2081,
+  REJECTED_BY_BASE_STATION = 2082,
+  CONCURRENT_SERVICES_INCOMPATIBLE = 2083,
+  NO_CDMA_SERVICE = 2084,
+  RUIM_NOT_PRESENT = 2085,
+  CDMA_RETRY_ORDER = 2086,
+  ACCESS_BLOCK = 2087,
+  ACCESS_BLOCK_ALL = 2088,
+  IS707B_MAX_ACCESS_PROBES = 2089,
+  THERMAL_EMERGENCY = 2090,
+  CONCURRENT_SERVICES_NOT_ALLOWED = 2091,
+  INCOMING_CALL_REJECTED = 2092,
+  NO_SERVICE_ON_GATEWAY = 2093,
+  NO_GPRS_CONTEXT = 2094,
+  ILLEGAL_MS = 2095,
+  ILLEGAL_ME = 2096,
+  GPRS_SERVICES_AND_NON_GPRS_SERVICES_NOT_ALLOWED = 2097,
+  GPRS_SERVICES_NOT_ALLOWED = 2098,
+  MS_IDENTITY_CANNOT_BE_DERIVED_BY_THE_NETWORK = 2099,
+  IMPLICITLY_DETACHED = 2100,
+  PLMN_NOT_ALLOWED = 2101,
+  LOCATION_AREA_NOT_ALLOWED = 2102,
+  GPRS_SERVICES_NOT_ALLOWED_IN_THIS_PLMN = 2103,
+  PDP_DUPLICATE = 2104,
+  UE_RAT_CHANGE = 2105,
+  CONGESTION = 2106,
+  NO_PDP_CONTEXT_ACTIVATED = 2107,
+  ACCESS_CLASS_DSAC_REJECTION = 2108,
+  PDP_ACTIVATE_MAX_RETRY_FAILED = 2109,
+  RADIO_ACCESS_BEARER_FAILURE = 2110,
+  ESM_UNKNOWN_EPS_BEARER_CONTEXT = 2111,
+  DRB_RELEASED_BY_RRC = 2112,
+  CONNECTION_RELEASED = 2113,
+  EMM_DETACHED = 2114,
+  EMM_ATTACH_FAILED = 2115,
+  EMM_ATTACH_STARTED = 2116,
+  LTE_NAS_SERVICE_REQUEST_FAILED = 2117,
+  DUPLICATE_BEARER_ID = 2118,
+  ESM_COLLISION_SCENARIOS = 2119,
+  ESM_BEARER_DEACTIVATED_TO_SYNC_WITH_NETWORK = 2120,
+  ESM_NW_ACTIVATED_DED_BEARER_WITH_ID_OF_DEF_BEARER = 2121,
+  ESM_BAD_OTA_MESSAGE = 2122,
+  ESM_DOWNLOAD_SERVER_REJECTED_THE_CALL = 2123,
+  ESM_CONTEXT_TRANSFERRED_DUE_TO_IRAT = 2124,
+  DS_EXPLICIT_DEACTIVATION = 2125,
+  ESM_LOCAL_CAUSE_NONE = 2126,
+  LTE_THROTTLING_NOT_REQUIRED = 2127,
+  ACCESS_CONTROL_LIST_CHECK_FAILURE = 2128,
+  SERVICE_NOT_ALLOWED_ON_PLMN = 2129,
+  EMM_T3417_EXPIRED = 2130,
+  EMM_T3417_EXT_EXPIRED = 2131,
+  RRC_UPLINK_DATA_TRANSMISSION_FAILURE = 2132,
+  RRC_UPLINK_DELIVERY_FAILED_DUE_TO_HANDOVER = 2133,
+  RRC_UPLINK_CONNECTION_RELEASE = 2134,
+  RRC_UPLINK_RADIO_LINK_FAILURE = 2135,
+  RRC_UPLINK_ERROR_REQUEST_FROM_NAS = 2136,
+  RRC_CONNECTION_ACCESS_STRATUM_FAILURE = 2137,
+  RRC_CONNECTION_ANOTHER_PROCEDURE_IN_PROGRESS = 2138,
+  RRC_CONNECTION_ACCESS_BARRED = 2139,
+  RRC_CONNECTION_CELL_RESELECTION = 2140,
+  RRC_CONNECTION_CONFIG_FAILURE = 2141,
+  RRC_CONNECTION_TIMER_EXPIRED = 2142,
+  RRC_CONNECTION_LINK_FAILURE = 2143,
+  RRC_CONNECTION_CELL_NOT_CAMPED = 2144,
+  RRC_CONNECTION_SYSTEM_INTERVAL_FAILURE = 2145,
+  RRC_CONNECTION_REJECT_BY_NETWORK = 2146,
+  RRC_CONNECTION_NORMAL_RELEASE = 2147,
+  RRC_CONNECTION_RADIO_LINK_FAILURE = 2148,
+  RRC_CONNECTION_REESTABLISHMENT_FAILURE = 2149,
+  RRC_CONNECTION_OUT_OF_SERVICE_DURING_CELL_REGISTER = 2150,
+  RRC_CONNECTION_ABORT_REQUEST = 2151,
+  RRC_CONNECTION_SYSTEM_INFORMATION_BLOCK_READ_ERROR = 2152,
+  NETWORK_INITIATED_DETACH_WITH_AUTO_REATTACH = 2153,
+  NETWORK_INITIATED_DETACH_NO_AUTO_REATTACH = 2154,
+  ESM_PROCEDURE_TIME_OUT = 2155,
+  INVALID_CONNECTION_ID = 2156,
+  MAXIMIUM_NSAPIS_EXCEEDED = 2157,
+  INVALID_PRIMARY_NSAPI = 2158,
+  CANNOT_ENCODE_OTA_MESSAGE = 2159,
+  RADIO_ACCESS_BEARER_SETUP_FAILURE = 2160,
+  PDP_ESTABLISH_TIMEOUT_EXPIRED = 2161,
+  PDP_MODIFY_TIMEOUT_EXPIRED = 2162,
+  PDP_INACTIVE_TIMEOUT_EXPIRED = 2163,
+  PDP_LOWERLAYER_ERROR = 2164,
+  PDP_MODIFY_COLLISION = 2165,
+  MAXINUM_SIZE_OF_L2_MESSAGE_EXCEEDED = 2166,
+  NAS_REQUEST_REJECTED_BY_NETWORK = 2167,
+  RRC_CONNECTION_INVALID_REQUEST = 2168,
+  RRC_CONNECTION_TRACKING_AREA_ID_CHANGED = 2169,
+  RRC_CONNECTION_RF_UNAVAILABLE = 2170,
+  RRC_CONNECTION_ABORTED_DUE_TO_IRAT_CHANGE = 2171,
+  RRC_CONNECTION_RELEASED_SECURITY_NOT_ACTIVE = 2172,
+  RRC_CONNECTION_ABORTED_AFTER_HANDOVER = 2173,
+  RRC_CONNECTION_ABORTED_AFTER_IRAT_CELL_CHANGE = 2174,
+  RRC_CONNECTION_ABORTED_DURING_IRAT_CELL_CHANGE = 2175,
+  IMSI_UNKNOWN_IN_HOME_SUBSCRIBER_SERVER = 2176,
+  IMEI_NOT_ACCEPTED = 2177,
+  EPS_SERVICES_AND_NON_EPS_SERVICES_NOT_ALLOWED = 2178,
+  EPS_SERVICES_NOT_ALLOWED_IN_PLMN = 2179,
+  MSC_TEMPORARILY_NOT_REACHABLE = 2180,
+  CS_DOMAIN_NOT_AVAILABLE = 2181,
+  ESM_FAILURE = 2182,
+  MAC_FAILURE = 2183,
+  SYNCHRONIZATION_FAILURE = 2184,
+  UE_SECURITY_CAPABILITIES_MISMATCH = 2185,
+  SECURITY_MODE_REJECTED = 2186,
+  UNACCEPTABLE_NON_EPS_AUTHENTICATION = 2187,
+  CS_FALLBACK_CALL_ESTABLISHMENT_NOT_ALLOWED = 2188,
+  NO_EPS_BEARER_CONTEXT_ACTIVATED = 2189,
+  INVALID_EMM_STATE = 2190,
+  NAS_LAYER_FAILURE = 2191,
+  MULTIPLE_PDP_CALL_NOT_ALLOWED = 2192,
+  EMBMS_NOT_ENABLED = 2193,
+  IRAT_HANDOVER_FAILED = 2194,
+  EMBMS_REGULAR_DEACTIVATION = 2195,
+  TEST_LOOPBACK_REGULAR_DEACTIVATION = 2196,
+  LOWER_LAYER_REGISTRATION_FAILURE = 2197,
+  DATA_PLAN_EXPIRED = 2198,
+  UMTS_HANDOVER_TO_IWLAN = 2199,
+  EVDO_CONNECTION_DENY_BY_GENERAL_OR_NETWORK_BUSY = 2200,
+  EVDO_CONNECTION_DENY_BY_BILLING_OR_AUTHENTICATION_FAILURE = 2201,
+  EVDO_HDR_CHANGED = 2202,
+  EVDO_HDR_EXITED = 2203,
+  EVDO_HDR_NO_SESSION = 2204,
+  EVDO_USING_GPS_FIX_INSTEAD_OF_HDR_CALL = 2205,
+  EVDO_HDR_CONNECTION_SETUP_TIMEOUT = 2206,
+  FAILED_TO_ACQUIRE_COLOCATED_HDR = 2207,
+  OTASP_COMMIT_IN_PROGRESS = 2208,
+  NO_HYBRID_HDR_SERVICE = 2209,
+  HDR_NO_LOCK_GRANTED = 2210,
+  DBM_OR_SMS_IN_PROGRESS = 2211,
+  HDR_FADE = 2212,
+  HDR_ACCESS_FAILURE = 2213,
+  UNSUPPORTED_1X_PREV = 2214,
+  LOCAL_END = 2215,
+  NO_SERVICE = 2216,
+  FADE = 2217,
+  NORMAL_RELEASE = 2218,
+  ACCESS_ATTEMPT_ALREADY_IN_PROGRESS = 2219,
+  REDIRECTION_OR_HANDOFF_IN_PROGRESS = 2220,
+  EMERGENCY_MODE = 2221,
+  PHONE_IN_USE = 2222,
+  INVALID_MODE = 2223,
+  INVALID_SIM_STATE = 2224,
+  NO_COLLOCATED_HDR = 2225,
+  UE_IS_ENTERING_POWERSAVE_MODE = 2226,
+  DUAL_SWITCH = 2227,
+  PPP_TIMEOUT = 2228,
+  PPP_AUTH_FAILURE = 2229,
+  PPP_OPTION_MISMATCH = 2230,
+  PPP_PAP_FAILURE = 2231,
+  PPP_CHAP_FAILURE = 2232,
+  PPP_CLOSE_IN_PROGRESS = 2233,
+  LIMITED_TO_IPV4 = 2234,
+  LIMITED_TO_IPV6 = 2235,
+  VSNCP_TIMEOUT = 2236,
+  VSNCP_GEN_ERROR = 2237,
+  VSNCP_APN_UNAUTHORIZED = 2238,
+  VSNCP_PDN_LIMIT_EXCEEDED = 2239,
+  VSNCP_NO_PDN_GATEWAY_ADDRESS = 2240,
+  VSNCP_PDN_GATEWAY_UNREACHABLE = 2241,
+  VSNCP_PDN_GATEWAY_REJECT = 2242,
+  VSNCP_INSUFFICIENT_PARAMETERS = 2243,
+  VSNCP_RESOURCE_UNAVAILABLE = 2244,
+  VSNCP_ADMINISTRATIVELY_PROHIBITED = 2245,
+  VSNCP_PDN_ID_IN_USE = 2246,
+  VSNCP_SUBSCRIBER_LIMITATION = 2247,
+  VSNCP_PDN_EXISTS_FOR_THIS_APN = 2248,
+  VSNCP_RECONNECT_NOT_ALLOWED = 2249,
+  IPV6_PREFIX_UNAVAILABLE = 2250,
+  HANDOFF_PREFERENCE_CHANGED = 2251,
+  SLICE_REJECTED = 2252,
+  MATCH_ALL_RULE_NOT_ALLOWED = 2253,
+  ALL_MATCHING_RULES_FAILED = 2254,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DataConnActiveStatus.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DataConnActiveStatus.aidl
new file mode 100644
index 0000000..0d11390
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DataConnActiveStatus.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum DataConnActiveStatus {
+  INACTIVE = 0,
+  DORMANT = 1,
+  ACTIVE = 2,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DataProfileId.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DataProfileId.aidl
new file mode 100644
index 0000000..2c86c0f
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DataProfileId.aidl
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum DataProfileId {
+  DEFAULT = 0,
+  TETHERED = 1,
+  IMS = 2,
+  FOTA = 3,
+  CBS = 4,
+  OEM_BASE = 1000,
+  INVALID = -1,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DataProfileInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DataProfileInfo.aidl
new file mode 100644
index 0000000..d9d0487
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DataProfileInfo.aidl
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable DataProfileInfo {
+  android.hardware.radio.DataProfileId profileId;
+  String apn;
+  android.hardware.radio.PdpProtocolType protocol;
+  android.hardware.radio.PdpProtocolType roamingProtocol;
+  android.hardware.radio.ApnAuthType authType;
+  String user;
+  String password;
+  android.hardware.radio.DataProfileInfoType type;
+  int maxConnsTime;
+  int maxConns;
+  int waitTime;
+  boolean enabled;
+  android.hardware.radio.ApnTypes supportedApnTypesBitmap;
+  android.hardware.radio.RadioAccessFamily bearerBitmap;
+  int mtuV4;
+  int mtuV6;
+  boolean preferred;
+  boolean persistent;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DataProfileInfoType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DataProfileInfoType.aidl
new file mode 100644
index 0000000..a559de0
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DataProfileInfoType.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum DataProfileInfoType {
+  COMMON = 0,
+  THREE_GPP = 1,
+  THREE_GPP2 = 2,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DataRegStateResult.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DataRegStateResult.aidl
new file mode 100644
index 0000000..303035f
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DataRegStateResult.aidl
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable DataRegStateResult {
+  android.hardware.radio.RegState regState;
+  int rat;
+  int reasonDataDenied;
+  int maxDataCalls;
+  android.hardware.radio.CellIdentity cellIdentity;
+  android.hardware.radio.DataRegStateResultVopsInfo vopsInfo;
+  android.hardware.radio.NrIndicators nrIndicators;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DataRegStateResultVopsInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DataRegStateResultVopsInfo.aidl
new file mode 100644
index 0000000..2ce646e
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DataRegStateResultVopsInfo.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+union DataRegStateResultVopsInfo {
+  boolean noinit;
+  android.hardware.radio.LteVopsInfo lteVopsInfo;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DataRequestReason.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DataRequestReason.aidl
new file mode 100644
index 0000000..1dd0e08
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DataRequestReason.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum DataRequestReason {
+  NORMAL = 1,
+  SHUTDOWN = 2,
+  HANDOVER = 3,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DataThrottlingAction.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DataThrottlingAction.aidl
new file mode 100644
index 0000000..70aaa0f
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DataThrottlingAction.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="byte") @VintfStability
+enum DataThrottlingAction {
+  NO_DATA_THROTTLING = 0,
+  THROTTLE_SECONDARY_CARRIER = 1,
+  THROTTLE_ANCHOR_CARRIER = 2,
+  HOLD = 3,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DeviceStateType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DeviceStateType.aidl
new file mode 100644
index 0000000..2d3cea8
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/DeviceStateType.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum DeviceStateType {
+  POWER_SAVE_MODE = 0,
+  CHARGING_STATE = 1,
+  LOW_DATA_EXPECTED = 2,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/Dial.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/Dial.aidl
new file mode 100644
index 0000000..f8edf48
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/Dial.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable Dial {
+  String address;
+  android.hardware.radio.Clir clir;
+  android.hardware.radio.UusInfo[] uusInfo;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/Domain.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/Domain.aidl
new file mode 100644
index 0000000..062af35
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/Domain.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum Domain {
+  CS = 1,
+  PS = 2,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/EmcIndicator.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/EmcIndicator.aidl
new file mode 100644
index 0000000..846084b
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/EmcIndicator.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="byte") @VintfStability
+enum EmcIndicator {
+  EMC_NOT_SUPPORTED = 0,
+  EMC_NR_CONNECTED_TO_5GCN = 1,
+  EMC_EUTRA_CONNECTED_TO_5GCN = 2,
+  EMC_BOTH_NR_EUTRA_CONNECTED_TO_5GCN = 3,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/EmergencyCallRouting.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/EmergencyCallRouting.aidl
new file mode 100644
index 0000000..95f5a46
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/EmergencyCallRouting.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum EmergencyCallRouting {
+  UNKNOWN = 0,
+  EMERGENCY = 1,
+  NORMAL = 2,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/EmergencyNumber.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/EmergencyNumber.aidl
new file mode 100644
index 0000000..7aa4cd8
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/EmergencyNumber.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable EmergencyNumber {
+  String number;
+  String mcc;
+  String mnc;
+  android.hardware.radio.EmergencyServiceCategory categories;
+  String[] urns;
+  android.hardware.radio.EmergencyNumberSource sources;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/EmergencyNumberSource.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/EmergencyNumberSource.aidl
new file mode 100644
index 0000000..1424bfa
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/EmergencyNumberSource.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum EmergencyNumberSource {
+  NETWORK_SIGNALING = 1,
+  SIM = 2,
+  MODEM_CONFIG = 4,
+  DEFAULT = 8,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/EmergencyServiceCategory.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/EmergencyServiceCategory.aidl
new file mode 100644
index 0000000..0341572
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/EmergencyServiceCategory.aidl
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum EmergencyServiceCategory {
+  UNSPECIFIED = 0,
+  POLICE = 1,
+  AMBULANCE = 2,
+  FIRE_BRIGADE = 4,
+  MARINE_GUARD = 8,
+  MOUNTAIN_RESCUE = 16,
+  MIEC = 32,
+  AIEC = 64,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/EmfIndicator.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/EmfIndicator.aidl
new file mode 100644
index 0000000..21100f2
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/EmfIndicator.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="byte") @VintfStability
+enum EmfIndicator {
+  EMF_NOT_SUPPORTED = 0,
+  EMF_NR_CONNECTED_TO_5GCN = 1,
+  EMF_EUTRA_CONNECTED_TO_5GCN = 2,
+  EMF_BOTH_NR_EUTRA_CONNECTED_TO_5GCN = 3,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/EpsQos.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/EpsQos.aidl
new file mode 100644
index 0000000..8eb3fda
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/EpsQos.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable EpsQos {
+  int qci;
+  android.hardware.radio.QosBandwidth downlink;
+  android.hardware.radio.QosBandwidth uplink;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/EutranBands.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/EutranBands.aidl
new file mode 100644
index 0000000..1449865
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/EutranBands.aidl
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum EutranBands {
+  BAND_1 = 1,
+  BAND_2 = 2,
+  BAND_3 = 3,
+  BAND_4 = 4,
+  BAND_5 = 5,
+  BAND_6 = 6,
+  BAND_7 = 7,
+  BAND_8 = 8,
+  BAND_9 = 9,
+  BAND_10 = 10,
+  BAND_11 = 11,
+  BAND_12 = 12,
+  BAND_13 = 13,
+  BAND_14 = 14,
+  BAND_17 = 17,
+  BAND_18 = 18,
+  BAND_19 = 19,
+  BAND_20 = 20,
+  BAND_21 = 21,
+  BAND_22 = 22,
+  BAND_23 = 23,
+  BAND_24 = 24,
+  BAND_25 = 25,
+  BAND_26 = 26,
+  BAND_27 = 27,
+  BAND_28 = 28,
+  BAND_30 = 30,
+  BAND_31 = 31,
+  BAND_33 = 33,
+  BAND_34 = 34,
+  BAND_35 = 35,
+  BAND_36 = 36,
+  BAND_37 = 37,
+  BAND_38 = 38,
+  BAND_39 = 39,
+  BAND_40 = 40,
+  BAND_41 = 41,
+  BAND_42 = 42,
+  BAND_43 = 43,
+  BAND_44 = 44,
+  BAND_45 = 45,
+  BAND_46 = 46,
+  BAND_47 = 47,
+  BAND_48 = 48,
+  BAND_65 = 65,
+  BAND_66 = 66,
+  BAND_68 = 68,
+  BAND_70 = 70,
+  BAND_49 = 49,
+  BAND_50 = 50,
+  BAND_51 = 51,
+  BAND_52 = 52,
+  BAND_53 = 53,
+  BAND_71 = 71,
+  BAND_72 = 72,
+  BAND_73 = 73,
+  BAND_74 = 74,
+  BAND_85 = 85,
+  BAND_87 = 87,
+  BAND_88 = 88,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/EvdoSignalStrength.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/EvdoSignalStrength.aidl
new file mode 100644
index 0000000..148dfa0
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/EvdoSignalStrength.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable EvdoSignalStrength {
+  int dbm;
+  int ecio;
+  int signalNoiseRatio;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/FrequencyRange.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/FrequencyRange.aidl
new file mode 100644
index 0000000..243b54e
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/FrequencyRange.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum FrequencyRange {
+  LOW = 1,
+  MID = 2,
+  HIGH = 3,
+  MMWAVE = 4,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/GeranBands.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/GeranBands.aidl
new file mode 100644
index 0000000..0efe023
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/GeranBands.aidl
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum GeranBands {
+  BAND_T380 = 1,
+  BAND_T410 = 2,
+  BAND_450 = 3,
+  BAND_480 = 4,
+  BAND_710 = 5,
+  BAND_750 = 6,
+  BAND_T810 = 7,
+  BAND_850 = 8,
+  BAND_P900 = 9,
+  BAND_E900 = 10,
+  BAND_R900 = 11,
+  BAND_DCS1800 = 12,
+  BAND_PCS1900 = 13,
+  BAND_ER900 = 14,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/GsmBroadcastSmsConfigInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/GsmBroadcastSmsConfigInfo.aidl
new file mode 100644
index 0000000..e74845e
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/GsmBroadcastSmsConfigInfo.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable GsmBroadcastSmsConfigInfo {
+  int fromServiceId;
+  int toServiceId;
+  int fromCodeScheme;
+  int toCodeScheme;
+  boolean selected;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/GsmSignalStrength.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/GsmSignalStrength.aidl
new file mode 100644
index 0000000..5d3a6e1
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/GsmSignalStrength.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable GsmSignalStrength {
+  int signalStrength;
+  int bitErrorRate;
+  int timingAdvance;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/GsmSmsMessage.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/GsmSmsMessage.aidl
new file mode 100644
index 0000000..1b00b0f
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/GsmSmsMessage.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable GsmSmsMessage {
+  String smscPdu;
+  String pdu;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/HandoverFailureMode.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/HandoverFailureMode.aidl
new file mode 100644
index 0000000..661b7b7
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/HandoverFailureMode.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="byte") @VintfStability
+enum HandoverFailureMode {
+  LEGACY = 0,
+  DO_FALLBACK = 1,
+  NO_FALLBACK_RETRY_HANDOVER = 2,
+  NO_FALLBACK_RETRY_SETUP_NORMAL = 3,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/HardwareConfig.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/HardwareConfig.aidl
new file mode 100644
index 0000000..4a5c107
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/HardwareConfig.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable HardwareConfig {
+  android.hardware.radio.HardwareConfigType type;
+  String uuid;
+  android.hardware.radio.HardwareConfigState state;
+  android.hardware.radio.HardwareConfigModem[] modem;
+  android.hardware.radio.HardwareConfigSim[] sim;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/HardwareConfigModem.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/HardwareConfigModem.aidl
new file mode 100644
index 0000000..08e12e6
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/HardwareConfigModem.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable HardwareConfigModem {
+  int rilModel;
+  int rat;
+  int maxVoice;
+  int maxData;
+  int maxStandby;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/HardwareConfigSim.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/HardwareConfigSim.aidl
new file mode 100644
index 0000000..8df23b4
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/HardwareConfigSim.aidl
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable HardwareConfigSim {
+  String modemUuid;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/HardwareConfigState.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/HardwareConfigState.aidl
new file mode 100644
index 0000000..672fe47
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/HardwareConfigState.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum HardwareConfigState {
+  ENABLED = 0,
+  STANDBY = 1,
+  DISABLED = 2,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/HardwareConfigType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/HardwareConfigType.aidl
new file mode 100644
index 0000000..a152282
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/HardwareConfigType.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum HardwareConfigType {
+  MODEM = 0,
+  SIM = 1,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/IRadio.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/IRadio.aidl
new file mode 100644
index 0000000..5a7b251
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/IRadio.aidl
@@ -0,0 +1,200 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+interface IRadio {
+  oneway void acceptCall(in int serial);
+  oneway void acknowledgeIncomingGsmSmsWithPdu(in int serial, in boolean success, in String ackPdu);
+  oneway void acknowledgeLastIncomingCdmaSms(in int serial, in android.hardware.radio.CdmaSmsAck smsAck);
+  oneway void acknowledgeLastIncomingGsmSms(in int serial, in boolean success, in android.hardware.radio.SmsAcknowledgeFailCause cause);
+  oneway void allocatePduSessionId(in int serial);
+  oneway void areUiccApplicationsEnabled(in int serial);
+  oneway void cancelHandover(in int serial, in int callId);
+  oneway void cancelPendingUssd(in int serial);
+  oneway void changeIccPin2ForApp(in int serial, in String oldPin2, in String newPin2, in String aid);
+  oneway void changeIccPinForApp(in int serial, in String oldPin, in String newPin, in String aid);
+  oneway void conference(in int serial);
+  oneway void deactivateDataCall(in int serial, in int cid, in android.hardware.radio.DataRequestReason reason);
+  oneway void deleteSmsOnRuim(in int serial, in int index);
+  oneway void deleteSmsOnSim(in int serial, in int index);
+  oneway void dial(in int serial, in android.hardware.radio.Dial dialInfo);
+  oneway void emergencyDial(in int serial, in android.hardware.radio.Dial dialInfo, in android.hardware.radio.EmergencyServiceCategory categories, in String[] urns, in android.hardware.radio.EmergencyCallRouting routing, in boolean hasKnownUserIntentEmergency, in boolean isTesting);
+  oneway void enableModem(in int serial, in boolean on);
+  oneway void enableUiccApplications(in int serial, in boolean enable);
+  oneway void exitEmergencyCallbackMode(in int serial);
+  oneway void explicitCallTransfer(in int serial);
+  oneway void getAllowedCarriers(in int serial);
+  oneway void getAllowedNetworkTypesBitmap(in int serial);
+  oneway void getAvailableBandModes(in int serial);
+  oneway void getAvailableNetworks(in int serial);
+  oneway void getBarringInfo(in int serial);
+  oneway void getBasebandVersion(in int serial);
+  oneway void getCDMASubscription(in int serial);
+  oneway void getCallForwardStatus(in int serial, in android.hardware.radio.CallForwardInfo callInfo);
+  oneway void getCallWaiting(in int serial, in int serviceClass);
+  oneway void getCdmaBroadcastConfig(in int serial);
+  oneway void getCdmaRoamingPreference(in int serial);
+  oneway void getCdmaSubscriptionSource(in int serial);
+  oneway void getCellInfoList(in int serial);
+  oneway void getClip(in int serial);
+  oneway void getClir(in int serial);
+  oneway void getCurrentCalls(in int serial);
+  oneway void getDataCallList(in int serial);
+  oneway void getDataRegistrationState(in int serial);
+  oneway void getDeviceIdentity(in int serial);
+  oneway void getFacilityLockForApp(in int serial, in String facility, in String password, in int serviceClass, in String appId);
+  oneway void getGsmBroadcastConfig(in int serial);
+  oneway void getHardwareConfig(in int serial);
+  oneway void getIccCardStatus(in int serial);
+  oneway void getImsRegistrationState(in int serial);
+  oneway void getImsiForApp(in int serial, in String aid);
+  oneway void getLastCallFailCause(in int serial);
+  oneway void getModemActivityInfo(in int serial);
+  oneway void getModemStackStatus(in int serial);
+  oneway void getMute(in int serial);
+  oneway void getNeighboringCids(in int serial);
+  oneway void getNetworkSelectionMode(in int serial);
+  oneway void getOperator(in int serial);
+  oneway void getPreferredNetworkType(in int serial);
+  oneway void getPreferredNetworkTypeBitmap(in int serial);
+  oneway void getPreferredVoicePrivacy(in int serial);
+  oneway void getRadioCapability(in int serial);
+  oneway void getSignalStrength(in int serial);
+  oneway void getSimPhonebookCapacity(in int serial);
+  oneway void getSimPhonebookRecords(in int serial);
+  oneway void getSlicingConfig(in int serial);
+  oneway void getSmscAddress(in int serial);
+  oneway void getSystemSelectionChannels(in int serial);
+  oneway void getTTYMode(in int serial);
+  oneway void getVoiceRadioTechnology(in int serial);
+  oneway void getVoiceRegistrationState(in int serial);
+  oneway void handleStkCallSetupRequestFromSim(in int serial, in boolean accept);
+  oneway void hangup(in int serial, in int gsmIndex);
+  oneway void hangupForegroundResumeBackground(in int serial);
+  oneway void hangupWaitingOrBackground(in int serial);
+  oneway void iccCloseLogicalChannel(in int serial, in int channelId);
+  oneway void iccIOForApp(in int serial, in android.hardware.radio.IccIo iccIo);
+  oneway void iccOpenLogicalChannel(in int serial, in String aid, in int p2);
+  oneway void iccTransmitApduBasicChannel(in int serial, in android.hardware.radio.SimApdu message);
+  oneway void iccTransmitApduLogicalChannel(in int serial, in android.hardware.radio.SimApdu message);
+  oneway void isNrDualConnectivityEnabled(in int serial);
+  oneway void nvReadItem(in int serial, in android.hardware.radio.NvItem itemId);
+  oneway void nvResetConfig(in int serial, in android.hardware.radio.ResetNvType resetType);
+  oneway void nvWriteCdmaPrl(in int serial, in byte[] prl);
+  oneway void nvWriteItem(in int serial, in android.hardware.radio.NvWriteItem item);
+  oneway void pullLceData(in int serial);
+  oneway void rejectCall(in int serial);
+  oneway void releasePduSessionId(in int serial, in int id);
+  oneway void reportSmsMemoryStatus(in int serial, in boolean available);
+  oneway void reportStkServiceIsRunning(in int serial);
+  oneway void requestIccSimAuthentication(in int serial, in int authContext, in String authData, in String aid);
+  oneway void requestIsimAuthentication(in int serial, in String challenge);
+  oneway void requestShutdown(in int serial);
+  oneway void responseAcknowledgement();
+  oneway void sendBurstDtmf(in int serial, in String dtmf, in int on, in int off);
+  oneway void sendCDMAFeatureCode(in int serial, in String featureCode);
+  oneway void sendCdmaSms(in int serial, in android.hardware.radio.CdmaSmsMessage sms);
+  oneway void sendCdmaSmsExpectMore(in int serial, in android.hardware.radio.CdmaSmsMessage sms);
+  oneway void sendDeviceState(in int serial, in android.hardware.radio.DeviceStateType deviceStateType, in boolean state);
+  oneway void sendDtmf(in int serial, in String s);
+  oneway void sendEnvelope(in int serial, in String command);
+  oneway void sendEnvelopeWithStatus(in int serial, in String contents);
+  oneway void sendImsSms(in int serial, in android.hardware.radio.ImsSmsMessage message);
+  oneway void sendSMSExpectMore(in int serial, in android.hardware.radio.GsmSmsMessage message);
+  oneway void sendSms(in int serial, in android.hardware.radio.GsmSmsMessage message);
+  oneway void sendSmsExpectMore(in int serial, in android.hardware.radio.GsmSmsMessage message);
+  oneway void sendTerminalResponseToSim(in int serial, in String commandResponse);
+  oneway void sendUssd(in int serial, in String ussd);
+  oneway void separateConnection(in int serial, in int gsmIndex);
+  oneway void setAllowedCarriers(in int serial, in android.hardware.radio.CarrierRestrictionsWithPriority carriers, in android.hardware.radio.SimLockMultiSimPolicy multiSimPolicy);
+  oneway void setAllowedNetworkTypesBitmap(in int serial, in android.hardware.radio.RadioAccessFamily networkTypeBitmap);
+  oneway void setBandMode(in int serial, in android.hardware.radio.RadioBandMode mode);
+  oneway void setBarringPassword(in int serial, in String facility, in String oldPassword, in String newPassword);
+  oneway void setCallForward(in int serial, in android.hardware.radio.CallForwardInfo callInfo);
+  oneway void setCallWaiting(in int serial, in boolean enable, in int serviceClass);
+  oneway void setCarrierInfoForImsiEncryption(in int serial, in android.hardware.radio.ImsiEncryptionInfo imsiEncryptionInfo);
+  oneway void setCdmaBroadcastActivation(in int serial, in boolean activate);
+  oneway void setCdmaBroadcastConfig(in int serial, in android.hardware.radio.CdmaBroadcastSmsConfigInfo[] configInfo);
+  oneway void setCdmaRoamingPreference(in int serial, in android.hardware.radio.CdmaRoamingType type);
+  oneway void setCdmaSubscriptionSource(in int serial, in android.hardware.radio.CdmaSubscriptionSource cdmaSub);
+  oneway void setCellInfoListRate(in int serial, in int rate);
+  oneway void setClir(in int serial, in int status);
+  oneway void setDataAllowed(in int serial, in boolean allow);
+  oneway void setDataProfile(in int serial, in android.hardware.radio.DataProfileInfo[] profiles);
+  oneway void setDataThrottling(in int serial, in android.hardware.radio.DataThrottlingAction dataThrottlingAction, in long completionDurationMillis);
+  oneway void setFacilityLockForApp(in int serial, in String facility, in boolean lockState, in String password, in int serviceClass, in String appId);
+  oneway void setGsmBroadcastActivation(in int serial, in boolean activate);
+  oneway void setGsmBroadcastConfig(in int serial, in android.hardware.radio.GsmBroadcastSmsConfigInfo[] configInfo);
+  oneway void setIndicationFilter(in int serial, in android.hardware.radio.IndicationFilter indicationFilter);
+  oneway void setInitialAttachApn(in int serial, in android.hardware.radio.DataProfileInfo dataProfileInfo);
+  oneway void setLinkCapacityReportingCriteria(in int serial, in int hysteresisMs, in int hysteresisDlKbps, in int hysteresisUlKbps, in int[] thresholdsDownlinkKbps, in int[] thresholdsUplinkKbps, in android.hardware.radio.AccessNetwork accessNetwork);
+  oneway void setLocationUpdates(in int serial, in boolean enable);
+  oneway void setMute(in int serial, in boolean enable);
+  oneway void setNetworkSelectionModeAutomatic(in int serial);
+  oneway void setNetworkSelectionModeManual(in int serial, in String operatorNumeric, in android.hardware.radio.RadioAccessNetworks ran);
+  oneway void setNrDualConnectivityState(in int serial, in android.hardware.radio.NrDualConnectivityState nrDualConnectivityState);
+  oneway void setPreferredNetworkType(in int serial, in android.hardware.radio.PreferredNetworkType nwType);
+  oneway void setPreferredNetworkTypeBitmap(in int serial, in android.hardware.radio.RadioAccessFamily networkTypeBitmap);
+  oneway void setPreferredVoicePrivacy(in int serial, in boolean enable);
+  oneway void setRadioCapability(in int serial, in android.hardware.radio.RadioCapability rc);
+  oneway void setRadioPower(in int serial, in boolean powerOn, in boolean forEmergencyCall, in boolean preferredForEmergencyCall);
+  void setResponseFunctions(in android.hardware.radio.IRadioResponse radioResponse, in android.hardware.radio.IRadioIndication radioIndication);
+  oneway void setSignalStrengthReportingCriteria(in int serial, in android.hardware.radio.SignalThresholdInfo signalThresholdInfo, in android.hardware.radio.AccessNetwork accessNetwork);
+  oneway void setSimCardPower(in int serial, in android.hardware.radio.CardPowerState powerUp);
+  oneway void setSmscAddress(in int serial, in String smsc);
+  oneway void setSuppServiceNotifications(in int serial, in boolean enable);
+  oneway void setSystemSelectionChannels(in int serial, in boolean specifyChannels, in android.hardware.radio.RadioAccessSpecifier[] specifiers);
+  oneway void setTTYMode(in int serial, in android.hardware.radio.TtyMode mode);
+  oneway void setUiccSubscription(in int serial, in android.hardware.radio.SelectUiccSub uiccSub);
+  oneway void setupDataCall(in int serial, in android.hardware.radio.AccessNetwork accessNetwork, in android.hardware.radio.DataProfileInfo dataProfileInfo, in boolean roamingAllowed, in android.hardware.radio.DataRequestReason reason, in android.hardware.radio.LinkAddress[] addresses, in String[] dnses, in int pduSessionId, in android.hardware.radio.OptionalSliceInfo sliceInfo, in android.hardware.radio.OptionalTrafficDescriptor trafficDescriptor, in boolean matchAllRuleAllowed);
+  oneway void startDtmf(in int serial, in String s);
+  oneway void startHandover(in int serial, in int callId);
+  oneway void startKeepalive(in int serial, in android.hardware.radio.KeepaliveRequest keepalive);
+  oneway void startLceService(in int serial, in int reportInterval, in boolean pullMode);
+  oneway void startNetworkScan(in int serial, in android.hardware.radio.NetworkScanRequest request);
+  oneway void stopDtmf(in int serial);
+  oneway void stopKeepalive(in int serial, in int sessionHandle);
+  oneway void stopLceService(in int serial);
+  oneway void stopNetworkScan(in int serial);
+  oneway void supplyIccPin2ForApp(in int serial, in String pin2, in String aid);
+  oneway void supplyIccPinForApp(in int serial, in String pin, in String aid);
+  oneway void supplyIccPuk2ForApp(in int serial, in String puk2, in String pin2, in String aid);
+  oneway void supplyIccPukForApp(in int serial, in String puk, in String pin, in String aid);
+  oneway void supplyNetworkDepersonalization(in int serial, in String netPin);
+  oneway void supplySimDepersonalization(in int serial, in android.hardware.radio.PersoSubstate persoType, in String controlKey);
+  oneway void switchWaitingOrHoldingAndActive(in int serial);
+  oneway void updateSimPhonebookRecords(in int serial, in android.hardware.radio.PhonebookRecordInfo recordInfo);
+  oneway void writeSmsToRuim(in int serial, in android.hardware.radio.CdmaSmsWriteArgs cdmaSms);
+  oneway void writeSmsToSim(in int serial, in android.hardware.radio.SmsWriteArgs smsWriteArgs);
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/IRadioIndication.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/IRadioIndication.aidl
new file mode 100644
index 0000000..48e9e3e
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/IRadioIndication.aidl
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+interface IRadioIndication {
+  oneway void barringInfoChanged(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.CellIdentity cellIdentity, in android.hardware.radio.BarringInfo[] barringInfos);
+  oneway void callRing(in android.hardware.radio.RadioIndicationType type, in boolean isGsm, in android.hardware.radio.CdmaSignalInfoRecord record);
+  oneway void callStateChanged(in android.hardware.radio.RadioIndicationType type);
+  oneway void carrierInfoForImsiEncryption(in android.hardware.radio.RadioIndicationType info);
+  oneway void cdmaCallWaiting(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.CdmaCallWaiting callWaitingRecord);
+  oneway void cdmaInfoRec(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.CdmaInformationRecords records);
+  oneway void cdmaNewSms(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.CdmaSmsMessage msg);
+  oneway void cdmaOtaProvisionStatus(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.CdmaOtaProvisionStatus status);
+  oneway void cdmaPrlChanged(in android.hardware.radio.RadioIndicationType type, in int version);
+  oneway void cdmaRuimSmsStorageFull(in android.hardware.radio.RadioIndicationType type);
+  oneway void cdmaSubscriptionSourceChanged(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.CdmaSubscriptionSource cdmaSource);
+  oneway void cellInfoList(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.CellInfo[] records);
+  oneway void currentEmergencyNumberList(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.EmergencyNumber[] emergencyNumberList);
+  oneway void currentLinkCapacityEstimate(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.LinkCapacityEstimate lce);
+  oneway void currentPhysicalChannelConfigs(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.PhysicalChannelConfig[] configs);
+  oneway void currentSignalStrength(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.SignalStrength signalStrength);
+  oneway void dataCallListChanged(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.SetupDataCallResult[] dcList);
+  oneway void enterEmergencyCallbackMode(in android.hardware.radio.RadioIndicationType type);
+  oneway void exitEmergencyCallbackMode(in android.hardware.radio.RadioIndicationType type);
+  oneway void hardwareConfigChanged(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.HardwareConfig[] configs);
+  oneway void imsNetworkStateChanged(in android.hardware.radio.RadioIndicationType type);
+  oneway void indicateRingbackTone(in android.hardware.radio.RadioIndicationType type, in boolean start);
+  oneway void keepaliveStatus(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.KeepaliveStatus status);
+  oneway void lceData(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.LceDataInfo lce);
+  oneway void modemReset(in android.hardware.radio.RadioIndicationType type, in String reason);
+  oneway void networkScanResult(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.NetworkScanResult result);
+  oneway void networkStateChanged(in android.hardware.radio.RadioIndicationType type);
+  oneway void newBroadcastSms(in android.hardware.radio.RadioIndicationType type, in byte[] data);
+  oneway void newSms(in android.hardware.radio.RadioIndicationType type, in byte[] pdu);
+  oneway void newSmsOnSim(in android.hardware.radio.RadioIndicationType type, in int recordNumber);
+  oneway void newSmsStatusReport(in android.hardware.radio.RadioIndicationType type, in byte[] pdu);
+  oneway void nitzTimeReceived(in android.hardware.radio.RadioIndicationType type, in String nitzTime, in long receivedTime);
+  oneway void onSupplementaryServiceIndication(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.StkCcUnsolSsResult ss);
+  oneway void onUssd(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.UssdModeType modeType, in String msg);
+  oneway void pcoData(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.PcoDataInfo pco);
+  oneway void radioCapabilityIndication(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.RadioCapability rc);
+  oneway void radioStateChanged(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.RadioState radioState);
+  oneway void registrationFailed(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.CellIdentity cellIdentity, in String chosenPlmn, in android.hardware.radio.Domain domain, in int causeCode, in int additionalCauseCode);
+  oneway void resendIncallMute(in android.hardware.radio.RadioIndicationType type);
+  oneway void restrictedStateChanged(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.PhoneRestrictedState state);
+  oneway void rilConnected(in android.hardware.radio.RadioIndicationType type);
+  oneway void simPhonebookChanged(in android.hardware.radio.RadioIndicationType type);
+  oneway void simPhonebookRecordsReceived(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.PbReceivedStatus status, in android.hardware.radio.PhonebookRecordInfo[] records);
+  oneway void simRefresh(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.SimRefreshResult refreshResult);
+  oneway void simSmsStorageFull(in android.hardware.radio.RadioIndicationType type);
+  oneway void simStatusChanged(in android.hardware.radio.RadioIndicationType type);
+  oneway void srvccStateNotify(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.SrvccState state);
+  oneway void stkCallControlAlphaNotify(in android.hardware.radio.RadioIndicationType type, in String alpha);
+  oneway void stkCallSetup(in android.hardware.radio.RadioIndicationType type, in long timeout);
+  oneway void stkEventNotify(in android.hardware.radio.RadioIndicationType type, in String cmd);
+  oneway void stkProactiveCommand(in android.hardware.radio.RadioIndicationType type, in String cmd);
+  oneway void stkSessionEnd(in android.hardware.radio.RadioIndicationType type);
+  oneway void subscriptionStatusChanged(in android.hardware.radio.RadioIndicationType type, in boolean activate);
+  oneway void suppSvcNotify(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.SuppSvcNotification suppSvc);
+  oneway void uiccApplicationsEnablementChanged(in android.hardware.radio.RadioIndicationType type, in boolean enabled);
+  oneway void unthrottleApn(in android.hardware.radio.RadioIndicationType type, in String apn);
+  oneway void voiceRadioTechChanged(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.RadioTechnology rat);
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/IRadioResponse.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/IRadioResponse.aidl
new file mode 100644
index 0000000..9137b973
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/IRadioResponse.aidl
@@ -0,0 +1,199 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+interface IRadioResponse {
+  oneway void acceptCallResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void acknowledgeIncomingGsmSmsWithPduResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void acknowledgeLastIncomingCdmaSmsResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void acknowledgeLastIncomingGsmSmsResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void acknowledgeRequest(in int serial);
+  oneway void allocatePduSessionIdResponse(in android.hardware.radio.RadioResponseInfo info, in int id);
+  oneway void areUiccApplicationsEnabledResponse(in android.hardware.radio.RadioResponseInfo info, in boolean enabled);
+  oneway void cancelHandoverResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void cancelPendingUssdResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void changeIccPin2ForAppResponse(in android.hardware.radio.RadioResponseInfo info, in int remainingRetries);
+  oneway void changeIccPinForAppResponse(in android.hardware.radio.RadioResponseInfo info, in int remainingRetries);
+  oneway void conferenceResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void deactivateDataCallResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void deleteSmsOnRuimResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void deleteSmsOnSimResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void dialResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void emergencyDialResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void enableModemResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void enableUiccApplicationsResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void exitEmergencyCallbackModeResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void explicitCallTransferResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void getAllowedCarriersResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.CarrierRestrictionsWithPriority carriers, in android.hardware.radio.SimLockMultiSimPolicy multiSimPolicy);
+  oneway void getAllowedNetworkTypesBitmapResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.RadioAccessFamily networkTypeBitmap);
+  oneway void getAvailableBandModesResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.RadioBandMode[] bandModes);
+  oneway void getAvailableNetworksResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.OperatorInfo[] networkInfos);
+  oneway void getBarringInfoResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.CellIdentity cellIdentity, in android.hardware.radio.BarringInfo[] barringInfos);
+  oneway void getBasebandVersionResponse(in android.hardware.radio.RadioResponseInfo info, in String version);
+  oneway void getCDMASubscriptionResponse(in android.hardware.radio.RadioResponseInfo info, in String mdn, in String hSid, in String hNid, in String min, in String prl);
+  oneway void getCallForwardStatusResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.CallForwardInfo[] callForwardInfos);
+  oneway void getCallWaitingResponse(in android.hardware.radio.RadioResponseInfo info, in boolean enable, in int serviceClass);
+  oneway void getCdmaBroadcastConfigResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.CdmaBroadcastSmsConfigInfo[] configs);
+  oneway void getCdmaRoamingPreferenceResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.CdmaRoamingType type);
+  oneway void getCdmaSubscriptionSourceResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.CdmaSubscriptionSource source);
+  oneway void getCellInfoListResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.CellInfo[] cellInfo);
+  oneway void getClipResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.ClipStatus status);
+  oneway void getClirResponse(in android.hardware.radio.RadioResponseInfo info, in int n, in int m);
+  oneway void getCurrentCallsResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.Call[] calls);
+  oneway void getDataCallListResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.SetupDataCallResult[] dcResponse);
+  oneway void getDataRegistrationStateResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.RegStateResult dataRegResponse);
+  oneway void getDeviceIdentityResponse(in android.hardware.radio.RadioResponseInfo info, in String imei, in String imeisv, in String esn, in String meid);
+  oneway void getFacilityLockForAppResponse(in android.hardware.radio.RadioResponseInfo info, in int response);
+  oneway void getGsmBroadcastConfigResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.GsmBroadcastSmsConfigInfo[] configs);
+  oneway void getHardwareConfigResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.HardwareConfig[] config);
+  oneway void getIMSIForAppResponse(in android.hardware.radio.RadioResponseInfo info, in String imsi);
+  oneway void getIccCardStatusResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.CardStatus cardStatus);
+  oneway void getImsRegistrationStateResponse(in android.hardware.radio.RadioResponseInfo info, in boolean isRegistered, in android.hardware.radio.RadioTechnologyFamily ratFamily);
+  oneway void getLastCallFailCauseResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.LastCallFailCauseInfo failCauseinfo);
+  oneway void getModemActivityInfoResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.ActivityStatsInfo activityInfo);
+  oneway void getModemStackStatusResponse(in android.hardware.radio.RadioResponseInfo info, in boolean isEnabled);
+  oneway void getMuteResponse(in android.hardware.radio.RadioResponseInfo info, in boolean enable);
+  oneway void getNeighboringCidsResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.NeighboringCell[] cells);
+  oneway void getNetworkSelectionModeResponse(in android.hardware.radio.RadioResponseInfo info, in boolean manual);
+  oneway void getOperatorResponse(in android.hardware.radio.RadioResponseInfo info, in String longName, in String shortName, in String numeric);
+  oneway void getPreferredNetworkTypeBitmapResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.RadioAccessFamily networkTypeBitmap);
+  oneway void getPreferredNetworkTypeResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.PreferredNetworkType nwType);
+  oneway void getPreferredVoicePrivacyResponse(in android.hardware.radio.RadioResponseInfo info, in boolean enable);
+  oneway void getRadioCapabilityResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.RadioCapability rc);
+  oneway void getSignalStrengthResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.SignalStrength signalStrength);
+  oneway void getSimPhonebookCapacityResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.PhonebookCapacity capacity);
+  oneway void getSimPhonebookRecordsResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void getSlicingConfigResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.SlicingConfig slicingConfig);
+  oneway void getSmscAddressResponse(in android.hardware.radio.RadioResponseInfo info, in String smsc);
+  oneway void getSystemSelectionChannelsResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.RadioAccessSpecifier[] specifiers);
+  oneway void getTTYModeResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.TtyMode mode);
+  oneway void getVoiceRadioTechnologyResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.RadioTechnology rat);
+  oneway void getVoiceRegistrationStateResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.RegStateResult voiceRegResponse);
+  oneway void handleStkCallSetupRequestFromSimResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void hangupConnectionResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void hangupForegroundResumeBackgroundResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void hangupWaitingOrBackgroundResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void iccCloseLogicalChannelResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void iccIOForAppResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.IccIoResult iccIo);
+  oneway void iccOpenLogicalChannelResponse(in android.hardware.radio.RadioResponseInfo info, in int channelId, in byte[] selectResponse);
+  oneway void iccTransmitApduBasicChannelResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.IccIoResult result);
+  oneway void iccTransmitApduLogicalChannelResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.IccIoResult result);
+  oneway void isNrDualConnectivityEnabledResponse(in android.hardware.radio.RadioResponseInfo info, in boolean isEnabled);
+  oneway void nvReadItemResponse(in android.hardware.radio.RadioResponseInfo info, in String result);
+  oneway void nvResetConfigResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void nvWriteCdmaPrlResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void nvWriteItemResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void pullLceDataResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.LceDataInfo lceInfo);
+  oneway void rejectCallResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void releasePduSessionIdResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void reportSmsMemoryStatusResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void reportStkServiceIsRunningResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void requestIccSimAuthenticationResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.IccIoResult result);
+  oneway void requestIsimAuthenticationResponse(in android.hardware.radio.RadioResponseInfo info, in String response);
+  oneway void requestShutdownResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void sendBurstDtmfResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void sendCDMAFeatureCodeResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void sendCdmaSmsExpectMoreResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.SendSmsResult sms);
+  oneway void sendCdmaSmsResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.SendSmsResult sms);
+  oneway void sendDeviceStateResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void sendDtmfResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void sendEnvelopeResponse(in android.hardware.radio.RadioResponseInfo info, in String commandResponse);
+  oneway void sendEnvelopeWithStatusResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.IccIoResult iccIo);
+  oneway void sendImsSmsResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.SendSmsResult sms);
+  oneway void sendSMSExpectMoreResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.SendSmsResult sms);
+  oneway void sendSmsExpectMoreResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.SendSmsResult sms);
+  oneway void sendSmsResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.SendSmsResult sms);
+  oneway void sendTerminalResponseToSimResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void sendUssdResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void separateConnectionResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setAllowedCarriersResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setAllowedNetworkTypesBitmapResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setBandModeResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setBarringPasswordResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setCallForwardResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setCallWaitingResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setCarrierInfoForImsiEncryptionResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setCdmaBroadcastActivationResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setCdmaBroadcastConfigResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setCdmaRoamingPreferenceResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setCdmaSubscriptionSourceResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setCellInfoListRateResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setClirResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setDataAllowedResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setDataProfileResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setDataThrottlingResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setFacilityLockForAppResponse(in android.hardware.radio.RadioResponseInfo info, in int retry);
+  oneway void setGsmBroadcastActivationResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setGsmBroadcastConfigResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setIndicationFilterResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setInitialAttachApnResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setLinkCapacityReportingCriteriaResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setLocationUpdatesResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setMuteResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setNetworkSelectionModeAutomaticResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setNetworkSelectionModeManualResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setNrDualConnectivityStateResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setPreferredNetworkTypeBitmapResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setPreferredNetworkTypeResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setPreferredVoicePrivacyResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setRadioCapabilityResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.RadioCapability rc);
+  oneway void setRadioPowerResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setSignalStrengthReportingCriteriaResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setSimCardPowerResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setSmscAddressResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setSuppServiceNotificationsResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setSystemSelectionChannelsResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setTTYModeResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setUiccSubscriptionResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void setupDataCallResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.SetupDataCallResult dcResponse);
+  oneway void startDtmfResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void startHandoverResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void startKeepaliveResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.KeepaliveStatus status);
+  oneway void startLceServiceResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.LceStatusInfo statusInfo);
+  oneway void startNetworkScanResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void stopDtmfResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void stopKeepaliveResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void stopLceServiceResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.LceStatusInfo statusInfo);
+  oneway void stopNetworkScanResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void supplyIccPin2ForAppResponse(in android.hardware.radio.RadioResponseInfo info, in int remainingRetries);
+  oneway void supplyIccPinForAppResponse(in android.hardware.radio.RadioResponseInfo info, in int remainingRetries);
+  oneway void supplyIccPuk2ForAppResponse(in android.hardware.radio.RadioResponseInfo info, in int remainingRetries);
+  oneway void supplyIccPukForAppResponse(in android.hardware.radio.RadioResponseInfo info, in int remainingRetries);
+  oneway void supplyNetworkDepersonalizationResponse(in android.hardware.radio.RadioResponseInfo info, in int remainingRetries);
+  oneway void supplySimDepersonalizationResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.PersoSubstate persoType, in int remainingRetries);
+  oneway void switchWaitingOrHoldingAndActiveResponse(in android.hardware.radio.RadioResponseInfo info);
+  oneway void updateSimPhonebookRecordsResponse(in android.hardware.radio.RadioResponseInfo info, in int updatedRecordIndex);
+  oneway void writeSmsToRuimResponse(in android.hardware.radio.RadioResponseInfo info, in int index);
+  oneway void writeSmsToSimResponse(in android.hardware.radio.RadioResponseInfo info, in int index);
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ISap.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ISap.aidl
new file mode 100644
index 0000000..fa04264
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ISap.aidl
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+interface ISap {
+  oneway void apduReq(in int token, in android.hardware.radio.SapApduType type, in byte[] command);
+  oneway void connectReq(in int token, in int maxMsgSize);
+  oneway void disconnectReq(in int token);
+  oneway void powerReq(in int token, in boolean state);
+  oneway void resetSimReq(in int token);
+  void setCallback(in android.hardware.radio.ISapCallback sapCallback);
+  oneway void setTransferProtocolReq(in int token, in android.hardware.radio.SapTransferProtocol transferProtocol);
+  oneway void transferAtrReq(in int token);
+  oneway void transferCardReaderStatusReq(in int token);
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ISapCallback.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ISapCallback.aidl
new file mode 100644
index 0000000..5ae0392
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ISapCallback.aidl
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+interface ISapCallback {
+  oneway void apduResponse(in int token, in android.hardware.radio.SapResultCode resultCode, in byte[] apduRsp);
+  oneway void connectResponse(in int token, in android.hardware.radio.SapConnectRsp sapConnectRsp, in int maxMsgSize);
+  oneway void disconnectIndication(in int token, in android.hardware.radio.SapDisconnectType disconnectType);
+  oneway void disconnectResponse(in int token);
+  oneway void errorResponse(in int token);
+  oneway void powerResponse(in int token, in android.hardware.radio.SapResultCode resultCode);
+  oneway void resetSimResponse(in int token, in android.hardware.radio.SapResultCode resultCode);
+  oneway void statusIndication(in int token, in android.hardware.radio.SapStatus status);
+  oneway void transferAtrResponse(in int token, in android.hardware.radio.SapResultCode resultCode, in byte[] atr);
+  oneway void transferCardReaderStatusResponse(in int token, in android.hardware.radio.SapResultCode resultCode, in int cardReaderStatus);
+  oneway void transferProtocolResponse(in int token, in android.hardware.radio.SapResultCode resultCode);
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/IccIo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/IccIo.aidl
new file mode 100644
index 0000000..1bea23a
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/IccIo.aidl
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable IccIo {
+  int command;
+  int fileId;
+  String path;
+  int p1;
+  int p2;
+  int p3;
+  String data;
+  String pin2;
+  String aid;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/IccIoResult.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/IccIoResult.aidl
new file mode 100644
index 0000000..50b1e9e
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/IccIoResult.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable IccIoResult {
+  int sw1;
+  int sw2;
+  String simResponse;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ImsSmsMessage.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ImsSmsMessage.aidl
new file mode 100644
index 0000000..b5ffcc6
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ImsSmsMessage.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable ImsSmsMessage {
+  android.hardware.radio.RadioTechnologyFamily tech;
+  boolean retry;
+  int messageRef;
+  android.hardware.radio.CdmaSmsMessage[] cdmaMessage;
+  android.hardware.radio.GsmSmsMessage[] gsmMessage;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ImsiEncryptionInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ImsiEncryptionInfo.aidl
new file mode 100644
index 0000000..c89c3a0
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ImsiEncryptionInfo.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable ImsiEncryptionInfo {
+  String mcc;
+  String mnc;
+  byte[] carrierKey;
+  String keyIdentifier;
+  long expirationTime;
+  android.hardware.radio.PublicKeyType keyType;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/IncrementalResultsPeriodicityRange.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/IncrementalResultsPeriodicityRange.aidl
new file mode 100644
index 0000000..ad3441f
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/IncrementalResultsPeriodicityRange.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum IncrementalResultsPeriodicityRange {
+  MIN = 1,
+  MAX = 10,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/IndicationFilter.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/IndicationFilter.aidl
new file mode 100644
index 0000000..629af68
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/IndicationFilter.aidl
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum IndicationFilter {
+  NONE = 0,
+  ALL = -1,
+  SIGNAL_STRENGTH = 1,
+  FULL_NETWORK_STATE = 2,
+  DATA_CALL_DORMANCY_CHANGED = 4,
+  LINK_CAPACITY_ESTIMATE = 8,
+  PHYSICAL_CHANNEL_CONFIG = 16,
+  REGISTRATION_FAILURE = 32,
+  BARRING_INFO = 64,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/KeepaliveRequest.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/KeepaliveRequest.aidl
new file mode 100644
index 0000000..1f23a69
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/KeepaliveRequest.aidl
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable KeepaliveRequest {
+  android.hardware.radio.KeepaliveType type;
+  byte[] sourceAddress;
+  int sourcePort;
+  byte[] destinationAddress;
+  int destinationPort;
+  int maxKeepaliveIntervalMillis;
+  int cid;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/KeepaliveStatus.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/KeepaliveStatus.aidl
new file mode 100644
index 0000000..8729b69
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/KeepaliveStatus.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable KeepaliveStatus {
+  int sessionHandle;
+  android.hardware.radio.KeepaliveStatusCode code;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/KeepaliveStatusCode.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/KeepaliveStatusCode.aidl
new file mode 100644
index 0000000..8ad5dc5
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/KeepaliveStatusCode.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum KeepaliveStatusCode {
+  ACTIVE = 0,
+  INACTIVE = 1,
+  PENDING = 2,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/KeepaliveType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/KeepaliveType.aidl
new file mode 100644
index 0000000..f0dd521
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/KeepaliveType.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum KeepaliveType {
+  NATT_IPV4 = 0,
+  NATT_IPV6 = 1,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/LastCallFailCause.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/LastCallFailCause.aidl
new file mode 100644
index 0000000..024f7ea
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/LastCallFailCause.aidl
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum LastCallFailCause {
+  UNOBTAINABLE_NUMBER = 1,
+  NO_ROUTE_TO_DESTINATION = 3,
+  CHANNEL_UNACCEPTABLE = 6,
+  OPERATOR_DETERMINED_BARRING = 8,
+  NORMAL = 16,
+  BUSY = 17,
+  NO_USER_RESPONDING = 18,
+  NO_ANSWER_FROM_USER = 19,
+  CALL_REJECTED = 21,
+  NUMBER_CHANGED = 22,
+  PREEMPTION = 25,
+  DESTINATION_OUT_OF_ORDER = 27,
+  INVALID_NUMBER_FORMAT = 28,
+  FACILITY_REJECTED = 29,
+  RESP_TO_STATUS_ENQUIRY = 30,
+  NORMAL_UNSPECIFIED = 31,
+  CONGESTION = 34,
+  NETWORK_OUT_OF_ORDER = 38,
+  TEMPORARY_FAILURE = 41,
+  SWITCHING_EQUIPMENT_CONGESTION = 42,
+  ACCESS_INFORMATION_DISCARDED = 43,
+  REQUESTED_CIRCUIT_OR_CHANNEL_NOT_AVAILABLE = 44,
+  RESOURCES_UNAVAILABLE_OR_UNSPECIFIED = 47,
+  QOS_UNAVAILABLE = 49,
+  REQUESTED_FACILITY_NOT_SUBSCRIBED = 50,
+  INCOMING_CALLS_BARRED_WITHIN_CUG = 55,
+  BEARER_CAPABILITY_NOT_AUTHORIZED = 57,
+  BEARER_CAPABILITY_UNAVAILABLE = 58,
+  SERVICE_OPTION_NOT_AVAILABLE = 63,
+  BEARER_SERVICE_NOT_IMPLEMENTED = 65,
+  ACM_LIMIT_EXCEEDED = 68,
+  REQUESTED_FACILITY_NOT_IMPLEMENTED = 69,
+  ONLY_DIGITAL_INFORMATION_BEARER_AVAILABLE = 70,
+  SERVICE_OR_OPTION_NOT_IMPLEMENTED = 79,
+  INVALID_TRANSACTION_IDENTIFIER = 81,
+  USER_NOT_MEMBER_OF_CUG = 87,
+  INCOMPATIBLE_DESTINATION = 88,
+  INVALID_TRANSIT_NW_SELECTION = 91,
+  SEMANTICALLY_INCORRECT_MESSAGE = 95,
+  INVALID_MANDATORY_INFORMATION = 96,
+  MESSAGE_TYPE_NON_IMPLEMENTED = 97,
+  MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 98,
+  INFORMATION_ELEMENT_NON_EXISTENT = 99,
+  CONDITIONAL_IE_ERROR = 100,
+  MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 101,
+  RECOVERY_ON_TIMER_EXPIRED = 102,
+  PROTOCOL_ERROR_UNSPECIFIED = 111,
+  INTERWORKING_UNSPECIFIED = 127,
+  CALL_BARRED = 240,
+  FDN_BLOCKED = 241,
+  IMSI_UNKNOWN_IN_VLR = 242,
+  IMEI_NOT_ACCEPTED = 243,
+  DIAL_MODIFIED_TO_USSD = 244,
+  DIAL_MODIFIED_TO_SS = 245,
+  DIAL_MODIFIED_TO_DIAL = 246,
+  RADIO_OFF = 247,
+  OUT_OF_SERVICE = 248,
+  NO_VALID_SIM = 249,
+  RADIO_INTERNAL_ERROR = 250,
+  NETWORK_RESP_TIMEOUT = 251,
+  NETWORK_REJECT = 252,
+  RADIO_ACCESS_FAILURE = 253,
+  RADIO_LINK_FAILURE = 254,
+  RADIO_LINK_LOST = 255,
+  RADIO_UPLINK_FAILURE = 256,
+  RADIO_SETUP_FAILURE = 257,
+  RADIO_RELEASE_NORMAL = 258,
+  RADIO_RELEASE_ABNORMAL = 259,
+  ACCESS_CLASS_BLOCKED = 260,
+  NETWORK_DETACH = 261,
+  CDMA_LOCKED_UNTIL_POWER_CYCLE = 1000,
+  CDMA_DROP = 1001,
+  CDMA_INTERCEPT = 1002,
+  CDMA_REORDER = 1003,
+  CDMA_SO_REJECT = 1004,
+  CDMA_RETRY_ORDER = 1005,
+  CDMA_ACCESS_FAILURE = 1006,
+  CDMA_PREEMPTED = 1007,
+  CDMA_NOT_EMERGENCY = 1008,
+  CDMA_ACCESS_BLOCKED = 1009,
+  OEM_CAUSE_1 = 61441,
+  OEM_CAUSE_2 = 61442,
+  OEM_CAUSE_3 = 61443,
+  OEM_CAUSE_4 = 61444,
+  OEM_CAUSE_5 = 61445,
+  OEM_CAUSE_6 = 61446,
+  OEM_CAUSE_7 = 61447,
+  OEM_CAUSE_8 = 61448,
+  OEM_CAUSE_9 = 61449,
+  OEM_CAUSE_10 = 61450,
+  OEM_CAUSE_11 = 61451,
+  OEM_CAUSE_12 = 61452,
+  OEM_CAUSE_13 = 61453,
+  OEM_CAUSE_14 = 61454,
+  OEM_CAUSE_15 = 61455,
+  ERROR_UNSPECIFIED = 65535,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/LastCallFailCauseInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/LastCallFailCauseInfo.aidl
new file mode 100644
index 0000000..43ef0cd
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/LastCallFailCauseInfo.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable LastCallFailCauseInfo {
+  android.hardware.radio.LastCallFailCause causeCode;
+  String vendorCause;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/LceDataInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/LceDataInfo.aidl
new file mode 100644
index 0000000..64c6367
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/LceDataInfo.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable LceDataInfo {
+  int lastHopCapacityKbps;
+  byte confidenceLevel;
+  boolean lceSuspended;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/LceStatus.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/LceStatus.aidl
new file mode 100644
index 0000000..2542cc7
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/LceStatus.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum LceStatus {
+  NOT_SUPPORTED = 0,
+  STOPPED = 1,
+  ACTIVE = 2,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/LceStatusInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/LceStatusInfo.aidl
new file mode 100644
index 0000000..29f5ab6
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/LceStatusInfo.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable LceStatusInfo {
+  android.hardware.radio.LceStatus lceStatus;
+  byte actualIntervalMs;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/LinkAddress.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/LinkAddress.aidl
new file mode 100644
index 0000000..b64daf9
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/LinkAddress.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable LinkAddress {
+  String address;
+  android.hardware.radio.AddressProperty properties;
+  long deprecationTime;
+  long expirationTime;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/LinkCapacityEstimate.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/LinkCapacityEstimate.aidl
new file mode 100644
index 0000000..d2a5c83
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/LinkCapacityEstimate.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable LinkCapacityEstimate {
+  int downlinkCapacityKbps;
+  int uplinkCapacityKbps;
+  int secondaryDownlinkCapacityKbps;
+  int secondaryUplinkCapacityKbps;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/LteSignalStrength.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/LteSignalStrength.aidl
new file mode 100644
index 0000000..28840bc
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/LteSignalStrength.aidl
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable LteSignalStrength {
+  int signalStrength;
+  int rsrp;
+  int rsrq;
+  int rssnr;
+  int cqi;
+  int timingAdvance;
+  int cqiTableIndex;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/LteVopsInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/LteVopsInfo.aidl
new file mode 100644
index 0000000..b28c415
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/LteVopsInfo.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable LteVopsInfo {
+  boolean isVopsSupported;
+  boolean isEmcBearerSupported;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/MaxSearchTimeRange.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/MaxSearchTimeRange.aidl
new file mode 100644
index 0000000..88cdf5f
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/MaxSearchTimeRange.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum MaxSearchTimeRange {
+  MIN = 60,
+  MAX = 3600,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/MaybePort.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/MaybePort.aidl
new file mode 100644
index 0000000..f556c7f
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/MaybePort.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+union MaybePort {
+  boolean noinit;
+  android.hardware.radio.PortRange range;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/MvnoType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/MvnoType.aidl
new file mode 100644
index 0000000..8be23b6
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/MvnoType.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum MvnoType {
+  NONE = 0,
+  IMSI = 1,
+  GID = 2,
+  SPN = 3,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NeighboringCell.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NeighboringCell.aidl
new file mode 100644
index 0000000..89d7818
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NeighboringCell.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable NeighboringCell {
+  String cid;
+  int rssi;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NetworkScanRequest.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NetworkScanRequest.aidl
new file mode 100644
index 0000000..4e6f613
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NetworkScanRequest.aidl
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable NetworkScanRequest {
+  android.hardware.radio.ScanType type;
+  int interval;
+  android.hardware.radio.RadioAccessSpecifier[] specifiers;
+  int maxSearchTime;
+  boolean incrementalResults;
+  int incrementalResultsPeriodicity;
+  String[] mccMncs;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NetworkScanResult.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NetworkScanResult.aidl
new file mode 100644
index 0000000..86543e3
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NetworkScanResult.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable NetworkScanResult {
+  android.hardware.radio.ScanStatus status;
+  android.hardware.radio.RadioError error;
+  android.hardware.radio.CellInfo[] networkInfos;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NgranBands.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NgranBands.aidl
new file mode 100644
index 0000000..14db49b
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NgranBands.aidl
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum NgranBands {
+  BAND_1 = 1,
+  BAND_2 = 2,
+  BAND_3 = 3,
+  BAND_5 = 5,
+  BAND_7 = 7,
+  BAND_8 = 8,
+  BAND_12 = 12,
+  BAND_14 = 14,
+  BAND_18 = 18,
+  BAND_20 = 20,
+  BAND_25 = 25,
+  BAND_26 = 26,
+  BAND_28 = 28,
+  BAND_29 = 29,
+  BAND_30 = 30,
+  BAND_34 = 34,
+  BAND_38 = 38,
+  BAND_39 = 39,
+  BAND_40 = 40,
+  BAND_41 = 41,
+  BAND_46 = 46,
+  BAND_48 = 48,
+  BAND_50 = 50,
+  BAND_51 = 51,
+  BAND_53 = 53,
+  BAND_65 = 65,
+  BAND_66 = 66,
+  BAND_70 = 70,
+  BAND_71 = 71,
+  BAND_74 = 74,
+  BAND_75 = 75,
+  BAND_76 = 76,
+  BAND_77 = 77,
+  BAND_78 = 78,
+  BAND_79 = 79,
+  BAND_80 = 80,
+  BAND_81 = 81,
+  BAND_82 = 82,
+  BAND_83 = 83,
+  BAND_84 = 84,
+  BAND_86 = 86,
+  BAND_89 = 89,
+  BAND_90 = 90,
+  BAND_91 = 91,
+  BAND_92 = 92,
+  BAND_93 = 93,
+  BAND_94 = 94,
+  BAND_95 = 95,
+  BAND_96 = 96,
+  BAND_257 = 257,
+  BAND_258 = 258,
+  BAND_260 = 260,
+  BAND_261 = 261,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NrDualConnectivityState.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NrDualConnectivityState.aidl
new file mode 100644
index 0000000..c3fb9f2
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NrDualConnectivityState.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="byte") @VintfStability
+enum NrDualConnectivityState {
+  ENABLE = 1,
+  DISABLE = 2,
+  DISABLE_IMMEDIATE = 3,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NrIndicators.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NrIndicators.aidl
new file mode 100644
index 0000000..81dc51c
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NrIndicators.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable NrIndicators {
+  boolean isEndcAvailable;
+  boolean isDcNrRestricted;
+  boolean isNrAvailable;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NrQos.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NrQos.aidl
new file mode 100644
index 0000000..6cb8f33
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NrQos.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable NrQos {
+  int fiveQi;
+  android.hardware.radio.QosBandwidth downlink;
+  android.hardware.radio.QosBandwidth uplink;
+  byte qfi;
+  char averagingWindowMs;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NrSignalStrength.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NrSignalStrength.aidl
new file mode 100644
index 0000000..daf6a41
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NrSignalStrength.aidl
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable NrSignalStrength {
+  int ssRsrp;
+  int ssRsrq;
+  int ssSinr;
+  int csiRsrp;
+  int csiRsrq;
+  int csiSinr;
+  int csiCqiTableIndex;
+  byte[] csiCqiReport;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NrVopsInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NrVopsInfo.aidl
new file mode 100644
index 0000000..b737aaf
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NrVopsInfo.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable NrVopsInfo {
+  android.hardware.radio.VopsIndicator vopsSupported;
+  android.hardware.radio.EmcIndicator emcSupported;
+  android.hardware.radio.EmfIndicator emfSupported;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NvItem.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NvItem.aidl
new file mode 100644
index 0000000..d7706c5
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NvItem.aidl
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum NvItem {
+  CDMA_MEID = 1,
+  CDMA_MIN = 2,
+  CDMA_MDN = 3,
+  CDMA_ACCOLC = 4,
+  DEVICE_MSL = 11,
+  RTN_RECONDITIONED_STATUS = 12,
+  RTN_ACTIVATION_DATE = 13,
+  RTN_LIFE_TIMER = 14,
+  RTN_LIFE_CALLS = 15,
+  RTN_LIFE_DATA_TX = 16,
+  RTN_LIFE_DATA_RX = 17,
+  OMADM_HFA_LEVEL = 18,
+  MIP_PROFILE_NAI = 31,
+  MIP_PROFILE_HOME_ADDRESS = 32,
+  MIP_PROFILE_AAA_AUTH = 33,
+  MIP_PROFILE_HA_AUTH = 34,
+  MIP_PROFILE_PRI_HA_ADDR = 35,
+  MIP_PROFILE_SEC_HA_ADDR = 36,
+  MIP_PROFILE_REV_TUN_PREF = 37,
+  MIP_PROFILE_HA_SPI = 38,
+  MIP_PROFILE_AAA_SPI = 39,
+  MIP_PROFILE_MN_HA_SS = 40,
+  MIP_PROFILE_MN_AAA_SS = 41,
+  CDMA_PRL_VERSION = 51,
+  CDMA_BC10 = 52,
+  CDMA_BC14 = 53,
+  CDMA_SO68 = 54,
+  CDMA_SO73_COP0 = 55,
+  CDMA_SO73_COP1TO7 = 56,
+  CDMA_1X_ADVANCED_ENABLED = 57,
+  CDMA_EHRPD_ENABLED = 58,
+  CDMA_EHRPD_FORCED = 59,
+  LTE_BAND_ENABLE_25 = 71,
+  LTE_BAND_ENABLE_26 = 72,
+  LTE_BAND_ENABLE_41 = 73,
+  LTE_SCAN_PRIORITY_25 = 74,
+  LTE_SCAN_PRIORITY_26 = 75,
+  LTE_SCAN_PRIORITY_41 = 76,
+  LTE_HIDDEN_BAND_PRIORITY_25 = 77,
+  LTE_HIDDEN_BAND_PRIORITY_26 = 78,
+  LTE_HIDDEN_BAND_PRIORITY_41 = 79,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NvWriteItem.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NvWriteItem.aidl
new file mode 100644
index 0000000..9e60db6
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/NvWriteItem.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable NvWriteItem {
+  android.hardware.radio.NvItem itemId;
+  String value;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OperatorInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OperatorInfo.aidl
new file mode 100644
index 0000000..2f29c02
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OperatorInfo.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable OperatorInfo {
+  String alphaLong;
+  String alphaShort;
+  String operatorNumeric;
+  android.hardware.radio.OperatorStatus status;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OperatorStatus.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OperatorStatus.aidl
new file mode 100644
index 0000000..4ef10ca
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OperatorStatus.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum OperatorStatus {
+  UNKNOWN = 0,
+  AVAILABLE = 1,
+  CURRENT = 2,
+  FORBIDDEN = 3,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OptionalCsgInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OptionalCsgInfo.aidl
new file mode 100644
index 0000000..6866dca
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OptionalCsgInfo.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+union OptionalCsgInfo {
+  boolean noinit;
+  android.hardware.radio.ClosedSubscriberGroupInfo csgInfo;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OptionalDnn.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OptionalDnn.aidl
new file mode 100644
index 0000000..88582de
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OptionalDnn.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+union OptionalDnn {
+  boolean noinit;
+  String value;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OptionalOsAppId.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OptionalOsAppId.aidl
new file mode 100644
index 0000000..40bfa41
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OptionalOsAppId.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+union OptionalOsAppId {
+  boolean noinit;
+  android.hardware.radio.OsAppId value;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OptionalPdpProtocolType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OptionalPdpProtocolType.aidl
new file mode 100644
index 0000000..5b4964f
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OptionalPdpProtocolType.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+union OptionalPdpProtocolType {
+  boolean noinit;
+  android.hardware.radio.PdpProtocolType value;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OptionalSliceInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OptionalSliceInfo.aidl
new file mode 100644
index 0000000..d640aac
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OptionalSliceInfo.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+union OptionalSliceInfo {
+  boolean noinit;
+  android.hardware.radio.SliceInfo value;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OptionalSscMode.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OptionalSscMode.aidl
new file mode 100644
index 0000000..0472615
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OptionalSscMode.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+union OptionalSscMode {
+  boolean noinit;
+  android.hardware.radio.SscMode value;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OptionalTrafficDescriptor.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OptionalTrafficDescriptor.aidl
new file mode 100644
index 0000000..6b57525
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OptionalTrafficDescriptor.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+union OptionalTrafficDescriptor {
+  boolean noinit;
+  android.hardware.radio.TrafficDescriptor value;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OsAppId.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OsAppId.aidl
new file mode 100644
index 0000000..bc11229
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/OsAppId.aidl
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable OsAppId {
+  byte[] osAppId;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/P2Constant.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/P2Constant.aidl
new file mode 100644
index 0000000..eb8b442
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/P2Constant.aidl
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum P2Constant {
+  NO_P2 = -1,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PbReceivedStatus.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PbReceivedStatus.aidl
new file mode 100644
index 0000000..dd95ad5
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PbReceivedStatus.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="byte") @VintfStability
+enum PbReceivedStatus {
+  PB_RECEIVED_OK = 1,
+  PB_RECEIVED_ERROR = 2,
+  PB_RECEIVED_ABORT = 3,
+  PB_RECEIVED_FINAL = 4,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PcoDataInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PcoDataInfo.aidl
new file mode 100644
index 0000000..828b08c
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PcoDataInfo.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable PcoDataInfo {
+  int cid;
+  String bearerProto;
+  int pcoId;
+  byte[] contents;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PdpProtocolType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PdpProtocolType.aidl
new file mode 100644
index 0000000..980d3af
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PdpProtocolType.aidl
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum PdpProtocolType {
+  UNKNOWN = -1,
+  IP = 0,
+  IPV6 = 1,
+  IPV4V6 = 2,
+  PPP = 3,
+  NON_IP = 4,
+  UNSTRUCTURED = 5,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PersoSubstate.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PersoSubstate.aidl
new file mode 100644
index 0000000..35b75c6
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PersoSubstate.aidl
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum PersoSubstate {
+  UNKNOWN = 0,
+  IN_PROGRESS = 1,
+  READY = 2,
+  SIM_NETWORK = 3,
+  SIM_NETWORK_SUBSET = 4,
+  SIM_CORPORATE = 5,
+  SIM_SERVICE_PROVIDER = 6,
+  SIM_SIM = 7,
+  SIM_NETWORK_PUK = 8,
+  SIM_NETWORK_SUBSET_PUK = 9,
+  SIM_CORPORATE_PUK = 10,
+  SIM_SERVICE_PROVIDER_PUK = 11,
+  SIM_SIM_PUK = 12,
+  RUIM_NETWORK1 = 13,
+  RUIM_NETWORK2 = 14,
+  RUIM_HRPD = 15,
+  RUIM_CORPORATE = 16,
+  RUIM_SERVICE_PROVIDER = 17,
+  RUIM_RUIM = 18,
+  RUIM_NETWORK1_PUK = 19,
+  RUIM_NETWORK2_PUK = 20,
+  RUIM_HRPD_PUK = 21,
+  RUIM_CORPORATE_PUK = 22,
+  RUIM_SERVICE_PROVIDER_PUK = 23,
+  RUIM_RUIM_PUK = 24,
+  SIM_SPN = 25,
+  SIM_SPN_PUK = 26,
+  SIM_SP_EHPLMN = 27,
+  SIM_SP_EHPLMN_PUK = 28,
+  SIM_ICCID = 29,
+  SIM_ICCID_PUK = 30,
+  SIM_IMPI = 31,
+  SIM_IMPI_PUK = 32,
+  SIM_NS_SP = 33,
+  SIM_NS_SP_PUK = 34,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PhoneRestrictedState.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PhoneRestrictedState.aidl
new file mode 100644
index 0000000..7a4982f
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PhoneRestrictedState.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum PhoneRestrictedState {
+  NONE = 0,
+  CS_EMERGENCY = 1,
+  CS_NORMAL = 2,
+  CS_ALL = 4,
+  PS_ALL = 16,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PhonebookCapacity.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PhonebookCapacity.aidl
new file mode 100644
index 0000000..8d2623b
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PhonebookCapacity.aidl
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable PhonebookCapacity {
+  int maxAdnRecords;
+  int usedAdnRecords;
+  int maxEmailRecords;
+  int usedEmailRecords;
+  int maxAdditionalNumberRecords;
+  int usedAdditionalNumberRecords;
+  int maxNameLen;
+  int maxNumberLen;
+  int maxEmailLen;
+  int maxAdditionalNumberLen;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PhonebookRecordInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PhonebookRecordInfo.aidl
new file mode 100644
index 0000000..02a166e
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PhonebookRecordInfo.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable PhonebookRecordInfo {
+  int recordId;
+  String name;
+  String number;
+  String[] emails;
+  String[] additionalNumbers;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PhysicalChannelConfig.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PhysicalChannelConfig.aidl
new file mode 100644
index 0000000..91c4a96
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PhysicalChannelConfig.aidl
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable PhysicalChannelConfig {
+  android.hardware.radio.CellConnectionStatus status;
+  android.hardware.radio.RadioTechnology rat;
+  int downlinkChannelNumber;
+  int uplinkChannelNumber;
+  int cellBandwidthDownlinkKhz;
+  int cellBandwidthUplinkKhz;
+  int[] contextIds;
+  int physicalCellId;
+  android.hardware.radio.PhysicalChannelConfigBand band;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PhysicalChannelConfigBand.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PhysicalChannelConfigBand.aidl
new file mode 100644
index 0000000..1953083
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PhysicalChannelConfigBand.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+union PhysicalChannelConfigBand {
+  boolean noinit;
+  android.hardware.radio.GeranBands geranBand;
+  android.hardware.radio.UtranBands utranBand;
+  android.hardware.radio.EutranBands eutranBand;
+  android.hardware.radio.NgranBands ngranBand;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PinState.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PinState.aidl
new file mode 100644
index 0000000..3b65179
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PinState.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum PinState {
+  UNKNOWN = 0,
+  ENABLED_NOT_VERIFIED = 1,
+  ENABLED_VERIFIED = 2,
+  DISABLED = 3,
+  ENABLED_BLOCKED = 4,
+  ENABLED_PERM_BLOCKED = 5,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PortRange.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PortRange.aidl
new file mode 100644
index 0000000..9e4d272
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PortRange.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable PortRange {
+  int start;
+  int end;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PreferredNetworkType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PreferredNetworkType.aidl
new file mode 100644
index 0000000..7615dff
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PreferredNetworkType.aidl
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum PreferredNetworkType {
+  GSM_WCDMA = 0,
+  GSM_ONLY = 1,
+  WCDMA = 2,
+  GSM_WCDMA_AUTO = 3,
+  CDMA_EVDO_AUTO = 4,
+  CDMA_ONLY = 5,
+  EVDO_ONLY = 6,
+  GSM_WCDMA_CDMA_EVDO_AUTO = 7,
+  LTE_CDMA_EVDO = 8,
+  LTE_GSM_WCDMA = 9,
+  LTE_CMDA_EVDO_GSM_WCDMA = 10,
+  LTE_ONLY = 11,
+  LTE_WCDMA = 12,
+  TD_SCDMA_ONLY = 13,
+  TD_SCDMA_WCDMA = 14,
+  TD_SCDMA_LTE = 15,
+  TD_SCDMA_GSM = 16,
+  TD_SCDMA_GSM_LTE = 17,
+  TD_SCDMA_GSM_WCDMA = 18,
+  TD_SCDMA_WCDMA_LTE = 19,
+  TD_SCDMA_GSM_WCDMA_LTE = 20,
+  TD_SCDMA_GSM_WCDMA_CDMA_EVDO_AUTO = 21,
+  TD_SCDMA_LTE_CDMA_EVDO_GSM_WCDMA = 22,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PrlIndicator.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PrlIndicator.aidl
new file mode 100644
index 0000000..b596d30
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PrlIndicator.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum PrlIndicator {
+  NOT_REGISTERED = -1,
+  NOT_IN_PRL = 0,
+  IN_PRL = 1,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PublicKeyType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PublicKeyType.aidl
new file mode 100644
index 0000000..68d96e8
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/PublicKeyType.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="byte") @VintfStability
+enum PublicKeyType {
+  EPDG = 1,
+  WLAN = 2,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/Qos.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/Qos.aidl
new file mode 100644
index 0000000..d69853f
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/Qos.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+union Qos {
+  boolean noinit;
+  android.hardware.radio.EpsQos eps;
+  android.hardware.radio.NrQos nr;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosBandwidth.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosBandwidth.aidl
new file mode 100644
index 0000000..95622bc
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosBandwidth.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable QosBandwidth {
+  int maxBitrateKbps;
+  int guaranteedBitrateKbps;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosFilter.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosFilter.aidl
new file mode 100644
index 0000000..3376c66
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosFilter.aidl
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable QosFilter {
+  String[] localAddresses;
+  String[] remoteAddresses;
+  android.hardware.radio.MaybePort localPort;
+  android.hardware.radio.MaybePort remotePort;
+  android.hardware.radio.QosProtocol protocol;
+  android.hardware.radio.QosFilterTypeOfService tos;
+  android.hardware.radio.QosFilterIpv6FlowLabel flowLabel;
+  android.hardware.radio.QosFilterIpsecSpi spi;
+  android.hardware.radio.QosFilterDirection direction;
+  int precedence;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosFilterDirection.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosFilterDirection.aidl
new file mode 100644
index 0000000..efb9c50
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosFilterDirection.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="byte") @VintfStability
+enum QosFilterDirection {
+  DOWNLINK = 0,
+  UPLINK = 1,
+  BIDIRECTIONAL = 2,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosFilterIpsecSpi.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosFilterIpsecSpi.aidl
new file mode 100644
index 0000000..695b735
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosFilterIpsecSpi.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+union QosFilterIpsecSpi {
+  boolean noinit;
+  int value;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosFilterIpv6FlowLabel.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosFilterIpv6FlowLabel.aidl
new file mode 100644
index 0000000..5b9c82c
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosFilterIpv6FlowLabel.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+union QosFilterIpv6FlowLabel {
+  boolean noinit;
+  int value;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosFilterTypeOfService.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosFilterTypeOfService.aidl
new file mode 100644
index 0000000..c7c0331
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosFilterTypeOfService.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+union QosFilterTypeOfService {
+  boolean noinit;
+  byte value;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosFlowIdRange.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosFlowIdRange.aidl
new file mode 100644
index 0000000..95468e0
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosFlowIdRange.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="byte") @VintfStability
+enum QosFlowIdRange {
+  MIN = 1,
+  MAX = 63,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosPortRange.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosPortRange.aidl
new file mode 100644
index 0000000..7171c7e
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosPortRange.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum QosPortRange {
+  MIN = 20,
+  MAX = 65535,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosProtocol.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosProtocol.aidl
new file mode 100644
index 0000000..cb68f04
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosProtocol.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="byte") @VintfStability
+enum QosProtocol {
+  UNSPECIFIED = -1,
+  TCP = 6,
+  UDP = 17,
+  ESP = 50,
+  AH = 51,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosSession.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosSession.aidl
new file mode 100644
index 0000000..8f1b913
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/QosSession.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable QosSession {
+  int qosSessionId;
+  android.hardware.radio.Qos qos;
+  android.hardware.radio.QosFilter[] qosFilters;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioAccessFamily.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioAccessFamily.aidl
new file mode 100644
index 0000000..10a956e
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioAccessFamily.aidl
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum RadioAccessFamily {
+  UNKNOWN = 1,
+  GPRS = 2,
+  EDGE = 4,
+  UMTS = 8,
+  IS95A = 16,
+  IS95B = 32,
+  ONE_X_RTT = 64,
+  EVDO_0 = 128,
+  EVDO_A = 256,
+  HSDPA = 512,
+  HSUPA = 1024,
+  HSPA = 2048,
+  EVDO_B = 4096,
+  EHRPD = 8192,
+  LTE = 16384,
+  HSPAP = 32768,
+  GSM = 65536,
+  TD_SCDMA = 131072,
+  LTE_CA = 524288,
+  NR = 1048576,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioAccessNetworks.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioAccessNetworks.aidl
new file mode 100644
index 0000000..67f5e8a
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioAccessNetworks.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum RadioAccessNetworks {
+  UNKNOWN = 0,
+  GERAN = 1,
+  UTRAN = 2,
+  EUTRAN = 3,
+  NGRAN = 4,
+  CDMA2000 = 5,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioAccessSpecifier.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioAccessSpecifier.aidl
new file mode 100644
index 0000000..b47ee2d
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioAccessSpecifier.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable RadioAccessSpecifier {
+  android.hardware.radio.RadioAccessNetworks radioAccessNetwork;
+  android.hardware.radio.RadioAccessSpecifierBands bands;
+  int[] channels;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioAccessSpecifierBands.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioAccessSpecifierBands.aidl
new file mode 100644
index 0000000..9d0a997
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioAccessSpecifierBands.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+union RadioAccessSpecifierBands {
+  boolean noinit;
+  android.hardware.radio.GeranBands[] geranBands;
+  android.hardware.radio.UtranBands[] utranBands;
+  android.hardware.radio.EutranBands[] eutranBands;
+  android.hardware.radio.NgranBands[] ngranBands;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioBandMode.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioBandMode.aidl
new file mode 100644
index 0000000..973ca52
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioBandMode.aidl
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum RadioBandMode {
+  BAND_MODE_UNSPECIFIED = 0,
+  BAND_MODE_EURO = 1,
+  BAND_MODE_USA = 2,
+  BAND_MODE_JPN = 3,
+  BAND_MODE_AUS = 4,
+  BAND_MODE_AUS_2 = 5,
+  BAND_MODE_CELL_800 = 6,
+  BAND_MODE_PCS = 7,
+  BAND_MODE_JTACS = 8,
+  BAND_MODE_KOREA_PCS = 9,
+  BAND_MODE_5_450M = 10,
+  BAND_MODE_IMT2000 = 11,
+  BAND_MODE_7_700M_2 = 12,
+  BAND_MODE_8_1800M = 13,
+  BAND_MODE_9_900M = 14,
+  BAND_MODE_10_800M_2 = 15,
+  BAND_MODE_EURO_PAMR_400M = 16,
+  BAND_MODE_AWS = 17,
+  BAND_MODE_USA_2500M = 18,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioCapability.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioCapability.aidl
new file mode 100644
index 0000000..99c1a41
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioCapability.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable RadioCapability {
+  int session;
+  android.hardware.radio.RadioCapabilityPhase phase;
+  android.hardware.radio.RadioAccessFamily raf;
+  String logicalModemUuid;
+  android.hardware.radio.RadioCapabilityStatus status;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioCapabilityPhase.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioCapabilityPhase.aidl
new file mode 100644
index 0000000..7a4b9ad
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioCapabilityPhase.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum RadioCapabilityPhase {
+  CONFIGURED = 0,
+  START = 1,
+  APPLY = 2,
+  UNSOL_RSP = 3,
+  FINISH = 4,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioCapabilityStatus.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioCapabilityStatus.aidl
new file mode 100644
index 0000000..72e0bd5
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioCapabilityStatus.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum RadioCapabilityStatus {
+  NONE = 0,
+  SUCCESS = 1,
+  FAIL = 2,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioCdmaSmsConst.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioCdmaSmsConst.aidl
new file mode 100644
index 0000000..7e5c471
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioCdmaSmsConst.aidl
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum RadioCdmaSmsConst {
+  ADDRESS_MAX = 36,
+  SUBADDRESS_MAX = 36,
+  BEARER_DATA_MAX = 255,
+  UDH_MAX_SND_SIZE = 128,
+  UDH_EO_DATA_SEGMENT_MAX = 131,
+  MAX_UD_HEADERS = 7,
+  USER_DATA_MAX = 229,
+  UDH_LARGE_PIC_SIZE = 128,
+  UDH_SMALL_PIC_SIZE = 32,
+  UDH_VAR_PIC_SIZE = 134,
+  UDH_ANIM_NUM_BITMAPS = 4,
+  UDH_LARGE_BITMAP_SIZE = 32,
+  UDH_SMALL_BITMAP_SIZE = 8,
+  UDH_OTHER_SIZE = 226,
+  IP_ADDRESS_SIZE = 4,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioConst.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioConst.aidl
new file mode 100644
index 0000000..d37f13b
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioConst.aidl
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum RadioConst {
+  CDMA_ALPHA_INFO_BUFFER_LENGTH = 64,
+  CDMA_NUMBER_INFO_BUFFER_LENGTH = 81,
+  MAX_RILDS = 3,
+  MAX_SOCKET_NAME_LENGTH = 6,
+  MAX_CLIENT_ID_LENGTH = 2,
+  MAX_DEBUG_SOCKET_NAME_LENGTH = 12,
+  MAX_QEMU_PIPE_NAME_LENGTH = 11,
+  MAX_UUID_LENGTH = 64,
+  CARD_MAX_APPS = 8,
+  CDMA_MAX_NUMBER_OF_INFO_RECS = 10,
+  SS_INFO_MAX = 4,
+  NUM_SERVICE_CLASSES = 7,
+  NUM_TX_POWER_LEVELS = 5,
+  RADIO_ACCESS_SPECIFIER_MAX_SIZE = 8,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioError.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioError.aidl
new file mode 100644
index 0000000..3ef67bc
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioError.aidl
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum RadioError {
+  NONE = 0,
+  RADIO_NOT_AVAILABLE = 1,
+  GENERIC_FAILURE = 2,
+  PASSWORD_INCORRECT = 3,
+  SIM_PIN2 = 4,
+  SIM_PUK2 = 5,
+  REQUEST_NOT_SUPPORTED = 6,
+  CANCELLED = 7,
+  OP_NOT_ALLOWED_DURING_VOICE_CALL = 8,
+  OP_NOT_ALLOWED_BEFORE_REG_TO_NW = 9,
+  SMS_SEND_FAIL_RETRY = 10,
+  SIM_ABSENT = 11,
+  SUBSCRIPTION_NOT_AVAILABLE = 12,
+  MODE_NOT_SUPPORTED = 13,
+  FDN_CHECK_FAILURE = 14,
+  ILLEGAL_SIM_OR_ME = 15,
+  MISSING_RESOURCE = 16,
+  NO_SUCH_ELEMENT = 17,
+  DIAL_MODIFIED_TO_USSD = 18,
+  DIAL_MODIFIED_TO_SS = 19,
+  DIAL_MODIFIED_TO_DIAL = 20,
+  USSD_MODIFIED_TO_DIAL = 21,
+  USSD_MODIFIED_TO_SS = 22,
+  USSD_MODIFIED_TO_USSD = 23,
+  SS_MODIFIED_TO_DIAL = 24,
+  SS_MODIFIED_TO_USSD = 25,
+  SUBSCRIPTION_NOT_SUPPORTED = 26,
+  SS_MODIFIED_TO_SS = 27,
+  LCE_NOT_SUPPORTED = 36,
+  NO_MEMORY = 37,
+  INTERNAL_ERR = 38,
+  SYSTEM_ERR = 39,
+  MODEM_ERR = 40,
+  INVALID_STATE = 41,
+  NO_RESOURCES = 42,
+  SIM_ERR = 43,
+  INVALID_ARGUMENTS = 44,
+  INVALID_SIM_STATE = 45,
+  INVALID_MODEM_STATE = 46,
+  INVALID_CALL_ID = 47,
+  NO_SMS_TO_ACK = 48,
+  NETWORK_ERR = 49,
+  REQUEST_RATE_LIMITED = 50,
+  SIM_BUSY = 51,
+  SIM_FULL = 52,
+  NETWORK_REJECT = 53,
+  OPERATION_NOT_ALLOWED = 54,
+  EMPTY_RECORD = 55,
+  INVALID_SMS_FORMAT = 56,
+  ENCODING_ERR = 57,
+  INVALID_SMSC_ADDRESS = 58,
+  NO_SUCH_ENTRY = 59,
+  NETWORK_NOT_READY = 60,
+  NOT_PROVISIONED = 61,
+  NO_SUBSCRIPTION = 62,
+  NO_NETWORK_FOUND = 63,
+  DEVICE_IN_USE = 64,
+  ABORTED = 65,
+  INVALID_RESPONSE = 66,
+  OEM_ERROR_1 = 501,
+  OEM_ERROR_2 = 502,
+  OEM_ERROR_3 = 503,
+  OEM_ERROR_4 = 504,
+  OEM_ERROR_5 = 505,
+  OEM_ERROR_6 = 506,
+  OEM_ERROR_7 = 507,
+  OEM_ERROR_8 = 508,
+  OEM_ERROR_9 = 509,
+  OEM_ERROR_10 = 510,
+  OEM_ERROR_11 = 511,
+  OEM_ERROR_12 = 512,
+  OEM_ERROR_13 = 513,
+  OEM_ERROR_14 = 514,
+  OEM_ERROR_15 = 515,
+  OEM_ERROR_16 = 516,
+  OEM_ERROR_17 = 517,
+  OEM_ERROR_18 = 518,
+  OEM_ERROR_19 = 519,
+  OEM_ERROR_20 = 520,
+  OEM_ERROR_21 = 521,
+  OEM_ERROR_22 = 522,
+  OEM_ERROR_23 = 523,
+  OEM_ERROR_24 = 524,
+  OEM_ERROR_25 = 525,
+  SIMULTANEOUS_SMS_AND_CALL_NOT_ALLOWED = 67,
+  ACCESS_BARRED = 68,
+  BLOCKED_DUE_TO_CALL = 69,
+  RF_HARDWARE_ISSUE = 70,
+  NO_RF_CALIBRATION_INFO = 71,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioFrequencyInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioFrequencyInfo.aidl
new file mode 100644
index 0000000..6c07045
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioFrequencyInfo.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+union RadioFrequencyInfo {
+  boolean noinit;
+  android.hardware.radio.FrequencyRange range;
+  int channelNumber;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioIndicationType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioIndicationType.aidl
new file mode 100644
index 0000000..fc5d4df
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioIndicationType.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum RadioIndicationType {
+  UNSOLICITED = 0,
+  UNSOLICITED_ACK_EXP = 1,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioResponseInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioResponseInfo.aidl
new file mode 100644
index 0000000..08c3023
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioResponseInfo.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable RadioResponseInfo {
+  android.hardware.radio.RadioResponseType type;
+  int serial;
+  android.hardware.radio.RadioError error;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioResponseInfoModem.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioResponseInfoModem.aidl
new file mode 100644
index 0000000..cbc4ab9
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioResponseInfoModem.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable RadioResponseInfoModem {
+  android.hardware.radio.RadioResponseType type;
+  int serial;
+  android.hardware.radio.RadioError error;
+  boolean isEnabled;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioResponseType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioResponseType.aidl
new file mode 100644
index 0000000..cf241830
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioResponseType.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum RadioResponseType {
+  SOLICITED = 0,
+  SOLICITED_ACK = 1,
+  SOLICITED_ACK_EXP = 2,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioState.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioState.aidl
new file mode 100644
index 0000000..3dad483
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioState.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum RadioState {
+  OFF = 0,
+  UNAVAILABLE = 1,
+  ON = 10,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioTechnology.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioTechnology.aidl
new file mode 100644
index 0000000..d0ca9b5
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioTechnology.aidl
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum RadioTechnology {
+  UNKNOWN = 0,
+  GPRS = 1,
+  EDGE = 2,
+  UMTS = 3,
+  IS95A = 4,
+  IS95B = 5,
+  ONE_X_RTT = 6,
+  EVDO_0 = 7,
+  EVDO_A = 8,
+  HSDPA = 9,
+  HSUPA = 10,
+  HSPA = 11,
+  EVDO_B = 12,
+  EHRPD = 13,
+  LTE = 14,
+  HSPAP = 15,
+  GSM = 16,
+  TD_SCDMA = 17,
+  IWLAN = 18,
+  LTE_CA = 19,
+  NR = 20,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioTechnologyFamily.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioTechnologyFamily.aidl
new file mode 100644
index 0000000..c11cd1c
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioTechnologyFamily.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum RadioTechnologyFamily {
+  THREE_GPP = 0,
+  THREE_GPP2 = 1,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RegState.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RegState.aidl
new file mode 100644
index 0000000..049ded1
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RegState.aidl
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum RegState {
+  NOT_REG_MT_NOT_SEARCHING_OP = 0,
+  REG_HOME = 1,
+  NOT_REG_MT_SEARCHING_OP = 2,
+  REG_DENIED = 3,
+  UNKNOWN = 4,
+  REG_ROAMING = 5,
+  NOT_REG_MT_NOT_SEARCHING_OP_EM = 10,
+  NOT_REG_MT_SEARCHING_OP_EM = 12,
+  REG_DENIED_EM = 13,
+  UNKNOWN_EM = 14,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RegStateResult.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RegStateResult.aidl
new file mode 100644
index 0000000..78c5c2d
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RegStateResult.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable RegStateResult {
+  android.hardware.radio.RegState regState;
+  android.hardware.radio.RadioTechnology rat;
+  android.hardware.radio.RegistrationFailCause reasonForDenial;
+  android.hardware.radio.CellIdentity cellIdentity;
+  String registeredPlmn;
+  android.hardware.radio.RegStateResultAccessTechnologySpecificInfo accessTechnologySpecificInfo;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RegStateResultAccessTechnologySpecificInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RegStateResultAccessTechnologySpecificInfo.aidl
new file mode 100644
index 0000000..6ce6398
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RegStateResultAccessTechnologySpecificInfo.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+union RegStateResultAccessTechnologySpecificInfo {
+  boolean noinit;
+  android.hardware.radio.RegStateResultAccessTechnologySpecificInfoCdma2000RegistrationInfo cdmaInfo;
+  android.hardware.radio.RegStateResultAccessTechnologySpecificInfoEutranRegistrationInfo eutranInfo;
+  android.hardware.radio.NrVopsInfo ngranNrVopsInfo;
+  boolean geranDtmSupported;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RegStateResultAccessTechnologySpecificInfoCdma2000RegistrationInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RegStateResultAccessTechnologySpecificInfoCdma2000RegistrationInfo.aidl
new file mode 100644
index 0000000..a56a791
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RegStateResultAccessTechnologySpecificInfoCdma2000RegistrationInfo.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable RegStateResultAccessTechnologySpecificInfoCdma2000RegistrationInfo {
+  boolean cssSupported;
+  int roamingIndicator;
+  android.hardware.radio.PrlIndicator systemIsInPrl;
+  int defaultRoamingIndicator;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RegStateResultAccessTechnologySpecificInfoEutranRegistrationInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RegStateResultAccessTechnologySpecificInfoEutranRegistrationInfo.aidl
new file mode 100644
index 0000000..ed422eb
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RegStateResultAccessTechnologySpecificInfoEutranRegistrationInfo.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable RegStateResultAccessTechnologySpecificInfoEutranRegistrationInfo {
+  android.hardware.radio.LteVopsInfo lteVopsInfo;
+  android.hardware.radio.NrIndicators nrIndicators;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RegistrationFailCause.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RegistrationFailCause.aidl
new file mode 100644
index 0000000..c5529b6
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RegistrationFailCause.aidl
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum RegistrationFailCause {
+  NONE = 0,
+  IMSI_UNKNOWN_IN_HLR = 2,
+  ILLEGAL_MS = 3,
+  IMSI_UNKNOWN_IN_VLR = 4,
+  IMEI_NOT_ACCEPTED = 5,
+  ILLEGAL_ME = 6,
+  GPRS_SERVICES_NOT_ALLOWED = 7,
+  GPRS_AND_NON_GPRS_SERVICES_NOT_ALLOWED = 8,
+  MS_IDENTITY_CANNOT_BE_DERIVED_BY_NETWORK = 9,
+  IMPLICITLY_DETACHED = 10,
+  PLMN_NOT_ALLOWED = 11,
+  LOCATION_AREA_NOT_ALLOWED = 12,
+  ROAMING_NOT_ALLOWED = 13,
+  GPRS_SERVICES_NOT_ALLOWED_IN_PLMN = 14,
+  NO_SUITABLE_CELLS = 15,
+  MSC_TEMPORARILY_NOT_REACHABLE = 15,
+  NETWORK_FAILURE = 17,
+  MAC_FAILURE = 20,
+  SYNC_FAILURE = 21,
+  CONGESTION = 22,
+  GSM_AUTHENTICATION_UNACCEPTABLE = 23,
+  NOT_AUTHORIZED_FOR_THIS_CSG = 25,
+  SMS_PROVIDED_BY_GPRS_IN_ROUTING_AREA = 26,
+  SERVICE_OPTION_NOT_SUPPORTED = 32,
+  SERVICE_OPTION_NOT_SUBSCRIBED = 33,
+  SERVICE_OPTION_TEMPORARILY_OUT_OF_ORDER = 34,
+  CALL_CANNOT_BE_IDENTIFIED = 38,
+  NO_PDP_CONTEXT_ACTIVATED = 40,
+  RETRY_UPON_ENTRY_INTO_NEW_CELL_1 = 48,
+  RETRY_UPON_ENTRY_INTO_NEW_CELL_2 = 49,
+  RETRY_UPON_ENTRY_INTO_NEW_CELL_3 = 50,
+  RETRY_UPON_ENTRY_INTO_NEW_CELL_4 = 51,
+  RETRY_UPON_ENTRY_INTO_NEW_CELL_5 = 52,
+  RETRY_UPON_ENTRY_INTO_NEW_CELL_6 = 53,
+  RETRY_UPON_ENTRY_INTO_NEW_CELL_7 = 54,
+  RETRY_UPON_ENTRY_INTO_NEW_CELL_8 = 55,
+  RETRY_UPON_ENTRY_INTO_NEW_CELL_9 = 56,
+  RETRY_UPON_ENTRY_INTO_NEW_CELL_10 = 57,
+  RETRY_UPON_ENTRY_INTO_NEW_CELL_11 = 58,
+  RETRY_UPON_ENTRY_INTO_NEW_CELL_12 = 59,
+  RETRY_UPON_ENTRY_INTO_NEW_CELL_13 = 60,
+  RETRY_UPON_ENTRY_INTO_NEW_CELL_14 = 61,
+  RETRY_UPON_ENTRY_INTO_NEW_CELL_15 = 62,
+  RETRY_UPON_ENTRY_INTO_NEW_CELL_16 = 63,
+  SEMANTICALLY_INCORRECT_MESSAGE = 95,
+  INVALID_MANDATORY_INFORMATION = 96,
+  MESSAGE_TYPE_NON_EXISTENT_OR_NOT_IMPLEMENTED = 97,
+  MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 98,
+  INFORMATION_ELEMENT_NON_EXISTENT_OR_NOT_IMPLEMENTED = 99,
+  CONDITIONAL_IE_ERROR = 100,
+  MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 101,
+  PROTOCOL_ERROR_UNSPECIFIED = 111,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ResetNvType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ResetNvType.aidl
new file mode 100644
index 0000000..3852a77
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ResetNvType.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum ResetNvType {
+  RELOAD = 0,
+  ERASE = 1,
+  FACTORY_RESET = 2,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RestrictedState.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RestrictedState.aidl
new file mode 100644
index 0000000..dc83ba5
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RestrictedState.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum RestrictedState {
+  NONE = 0,
+  CS_EMERGENCY = 1,
+  CS_NORMAL = 2,
+  CS_ALL = 4,
+  PS_ALL = 16,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RouteSelectionDescriptor.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RouteSelectionDescriptor.aidl
new file mode 100644
index 0000000..689ee2f
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RouteSelectionDescriptor.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable RouteSelectionDescriptor {
+  byte precedence;
+  android.hardware.radio.OptionalPdpProtocolType sessionType;
+  android.hardware.radio.OptionalSscMode sscMode;
+  android.hardware.radio.SliceInfo[] sliceInfo;
+  String[] dnn;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SapApduType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SapApduType.aidl
new file mode 100644
index 0000000..9bfb725
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SapApduType.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum SapApduType {
+  APDU = 0,
+  APDU7816 = 1,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SapConnectRsp.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SapConnectRsp.aidl
new file mode 100644
index 0000000..7e4d246
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SapConnectRsp.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum SapConnectRsp {
+  SUCCESS = 0,
+  CONNECT_FAILURE = 1,
+  MSG_SIZE_TOO_LARGE = 2,
+  MSG_SIZE_TOO_SMALL = 3,
+  CONNECT_OK_CALL_ONGOING = 4,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SapDisconnectType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SapDisconnectType.aidl
new file mode 100644
index 0000000..e0d8eb2
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SapDisconnectType.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum SapDisconnectType {
+  GRACEFUL = 0,
+  IMMEDIATE = 1,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SapResultCode.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SapResultCode.aidl
new file mode 100644
index 0000000..0c6c513
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SapResultCode.aidl
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum SapResultCode {
+  SUCCESS = 0,
+  GENERIC_FAILURE = 1,
+  CARD_NOT_ACCESSSIBLE = 2,
+  CARD_ALREADY_POWERED_OFF = 3,
+  CARD_REMOVED = 4,
+  CARD_ALREADY_POWERED_ON = 5,
+  DATA_NOT_AVAILABLE = 6,
+  NOT_SUPPORTED = 7,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SapStatus.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SapStatus.aidl
new file mode 100644
index 0000000..715c507
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SapStatus.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum SapStatus {
+  UNKNOWN_ERROR = 0,
+  CARD_RESET = 1,
+  CARD_NOT_ACCESSIBLE = 2,
+  CARD_REMOVED = 3,
+  CARD_INSERTED = 4,
+  RECOVERED = 5,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SapTransferProtocol.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SapTransferProtocol.aidl
new file mode 100644
index 0000000..6eadbb7
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SapTransferProtocol.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum SapTransferProtocol {
+  T0 = 0,
+  T1 = 1,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ScanIntervalRange.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ScanIntervalRange.aidl
new file mode 100644
index 0000000..3e6539b
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ScanIntervalRange.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum ScanIntervalRange {
+  MIN = 5,
+  MAX = 300,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ScanStatus.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ScanStatus.aidl
new file mode 100644
index 0000000..f8810b6
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ScanStatus.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum ScanStatus {
+  PARTIAL = 1,
+  COMPLETE = 2,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ScanType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ScanType.aidl
new file mode 100644
index 0000000..7d51ce2
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/ScanType.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum ScanType {
+  ONE_SHOT = 0,
+  PERIODIC = 1,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SelectUiccSub.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SelectUiccSub.aidl
new file mode 100644
index 0000000..a285f64
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SelectUiccSub.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable SelectUiccSub {
+  int slot;
+  int appIndex;
+  android.hardware.radio.SubscriptionType subType;
+  android.hardware.radio.UiccSubActStatus actStatus;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SendSmsResult.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SendSmsResult.aidl
new file mode 100644
index 0000000..7063db5
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SendSmsResult.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable SendSmsResult {
+  int messageRef;
+  String ackPDU;
+  int errorCode;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SetupDataCallResult.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SetupDataCallResult.aidl
new file mode 100644
index 0000000..ae4493d
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SetupDataCallResult.aidl
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable SetupDataCallResult {
+  android.hardware.radio.DataCallFailCause cause;
+  long suggestedRetryTime;
+  int cid;
+  android.hardware.radio.DataConnActiveStatus active;
+  android.hardware.radio.PdpProtocolType type;
+  String ifname;
+  android.hardware.radio.LinkAddress[] addresses;
+  String[] dnses;
+  String[] gateways;
+  String[] pcscf;
+  int mtuV4;
+  int mtuV6;
+  android.hardware.radio.Qos defaultQos;
+  android.hardware.radio.QosSession[] qosSessions;
+  android.hardware.radio.HandoverFailureMode handoverFailureMode;
+  int pduSessionId;
+  android.hardware.radio.OptionalSliceInfo sliceInfo;
+  android.hardware.radio.TrafficDescriptor[] trafficDescriptors;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SignalMeasurementType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SignalMeasurementType.aidl
new file mode 100644
index 0000000..7f864e5
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SignalMeasurementType.aidl
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum SignalMeasurementType {
+  RSSI = 1,
+  RSCP = 2,
+  RSRP = 3,
+  RSRQ = 4,
+  RSSNR = 5,
+  SSRSRP = 6,
+  SSRSRQ = 7,
+  SSSINR = 8,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SignalStrength.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SignalStrength.aidl
new file mode 100644
index 0000000..7c7eade
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SignalStrength.aidl
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable SignalStrength {
+  android.hardware.radio.GsmSignalStrength gsm;
+  android.hardware.radio.CdmaSignalStrength cdma;
+  android.hardware.radio.EvdoSignalStrength evdo;
+  android.hardware.radio.LteSignalStrength lte;
+  android.hardware.radio.TdscdmaSignalStrength tdscdma;
+  android.hardware.radio.WcdmaSignalStrength wcdma;
+  android.hardware.radio.NrSignalStrength nr;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SignalThresholdInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SignalThresholdInfo.aidl
new file mode 100644
index 0000000..f519d69
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SignalThresholdInfo.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable SignalThresholdInfo {
+  android.hardware.radio.SignalMeasurementType signalMeasurement;
+  int hysteresisMs;
+  int hysteresisDb;
+  int[] thresholds;
+  boolean isEnabled;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SimApdu.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SimApdu.aidl
new file mode 100644
index 0000000..511031a
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SimApdu.aidl
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable SimApdu {
+  int sessionId;
+  int cla;
+  int instruction;
+  int p1;
+  int p2;
+  int p3;
+  String data;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SimLockMultiSimPolicy.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SimLockMultiSimPolicy.aidl
new file mode 100644
index 0000000..ad96794
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SimLockMultiSimPolicy.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum SimLockMultiSimPolicy {
+  NO_MULTISIM_POLICY = 0,
+  ONE_VALID_SIM_MUST_BE_PRESENT = 1,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SimRefreshResult.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SimRefreshResult.aidl
new file mode 100644
index 0000000..720c8a2
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SimRefreshResult.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable SimRefreshResult {
+  android.hardware.radio.SimRefreshType type;
+  int efId;
+  String aid;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SimRefreshType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SimRefreshType.aidl
new file mode 100644
index 0000000..b114ec7
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SimRefreshType.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum SimRefreshType {
+  SIM_FILE_UPDATE = 0,
+  SIM_INIT = 1,
+  SIM_RESET = 2,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SliceInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SliceInfo.aidl
new file mode 100644
index 0000000..8b36380
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SliceInfo.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable SliceInfo {
+  android.hardware.radio.SliceServiceType sst;
+  int sliceDifferentiator;
+  android.hardware.radio.SliceServiceType mappedHplmnSst;
+  int mappedHplmnSD;
+  android.hardware.radio.SliceStatus status;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SliceServiceType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SliceServiceType.aidl
new file mode 100644
index 0000000..d0a9f58
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SliceServiceType.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="byte") @VintfStability
+enum SliceServiceType {
+  NONE = 0,
+  EMBB = 1,
+  URLLC = 2,
+  MIOT = 3,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SliceStatus.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SliceStatus.aidl
new file mode 100644
index 0000000..3fa1ee6
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SliceStatus.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="byte") @VintfStability
+enum SliceStatus {
+  UNKNOWN = 0,
+  CONFIGURED = 1,
+  ALLOWED = 2,
+  REJECTED_NOT_AVAILABLE_IN_PLMN = 3,
+  REJECTED_NOT_AVAILABLE_IN_REG_AREA = 4,
+  DEFAULT_CONFIGURED = 5,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SlicingConfig.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SlicingConfig.aidl
new file mode 100644
index 0000000..9d36338
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SlicingConfig.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable SlicingConfig {
+  android.hardware.radio.UrspRule[] urspRules;
+  android.hardware.radio.SliceInfo[] sliceInfo;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SmsAcknowledgeFailCause.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SmsAcknowledgeFailCause.aidl
new file mode 100644
index 0000000..c5b13b9
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SmsAcknowledgeFailCause.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum SmsAcknowledgeFailCause {
+  MEMORY_CAPACITY_EXCEEDED = 211,
+  UNSPECIFIED_ERROR = 255,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SmsWriteArgs.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SmsWriteArgs.aidl
new file mode 100644
index 0000000..6b0d9bf
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SmsWriteArgs.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable SmsWriteArgs {
+  android.hardware.radio.SmsWriteArgsStatus status;
+  String pdu;
+  String smsc;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SmsWriteArgsStatus.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SmsWriteArgsStatus.aidl
new file mode 100644
index 0000000..31a3f42
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SmsWriteArgsStatus.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum SmsWriteArgsStatus {
+  REC_UNREAD = 0,
+  REC_READ = 1,
+  STO_UNSENT = 2,
+  STO_SENT = 3,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SrvccState.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SrvccState.aidl
new file mode 100644
index 0000000..d4a9417
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SrvccState.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum SrvccState {
+  HANDOVER_STARTED = 0,
+  HANDOVER_COMPLETED = 1,
+  HANDOVER_FAILED = 2,
+  HANDOVER_CANCELED = 3,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SsInfoData.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SsInfoData.aidl
new file mode 100644
index 0000000..10b4c3d
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SsInfoData.aidl
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable SsInfoData {
+  int[] ssInfo;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SsRequestType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SsRequestType.aidl
new file mode 100644
index 0000000..75ad9bb
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SsRequestType.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum SsRequestType {
+  ACTIVATION = 0,
+  DEACTIVATION = 1,
+  INTERROGATION = 2,
+  REGISTRATION = 3,
+  ERASURE = 4,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SsServiceType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SsServiceType.aidl
new file mode 100644
index 0000000..c3506b1
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SsServiceType.aidl
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum SsServiceType {
+  CFU = 0,
+  CF_BUSY = 1,
+  CF_NO_REPLY = 2,
+  CF_NOT_REACHABLE = 3,
+  CF_ALL = 4,
+  CF_ALL_CONDITIONAL = 5,
+  CLIP = 6,
+  CLIR = 7,
+  COLP = 8,
+  COLR = 9,
+  WAIT = 10,
+  BAOC = 11,
+  BAOIC = 12,
+  BAOIC_EXC_HOME = 13,
+  BAIC = 14,
+  BAIC_ROAMING = 15,
+  ALL_BARRING = 16,
+  OUTGOING_BARRING = 17,
+  INCOMING_BARRING = 18,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SsTeleserviceType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SsTeleserviceType.aidl
new file mode 100644
index 0000000..f06014c
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SsTeleserviceType.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum SsTeleserviceType {
+  ALL_TELE_AND_BEARER_SERVICES = 0,
+  ALL_TELESEVICES = 1,
+  TELEPHONY = 2,
+  ALL_DATA_TELESERVICES = 3,
+  SMS_SERVICES = 4,
+  ALL_TELESERVICES_EXCEPT_SMS = 5,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SscMode.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SscMode.aidl
new file mode 100644
index 0000000..e2c3e09
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SscMode.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="byte") @VintfStability
+enum SscMode {
+  MODE_1 = 1,
+  MODE_2 = 2,
+  MODE_3 = 3,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/StkCcUnsolSsResult.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/StkCcUnsolSsResult.aidl
new file mode 100644
index 0000000..1e4f95b
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/StkCcUnsolSsResult.aidl
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable StkCcUnsolSsResult {
+  android.hardware.radio.SsServiceType serviceType;
+  android.hardware.radio.SsRequestType requestType;
+  android.hardware.radio.SsTeleserviceType teleserviceType;
+  android.hardware.radio.SuppServiceClass serviceClass;
+  android.hardware.radio.RadioError result;
+  android.hardware.radio.SsInfoData[] ssInfo;
+  android.hardware.radio.CfData[] cfData;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SubscriptionType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SubscriptionType.aidl
new file mode 100644
index 0000000..f469f2f
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SubscriptionType.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum SubscriptionType {
+  SUBSCRIPTION_1 = 0,
+  SUBSCRIPTION_2 = 1,
+  SUBSCRIPTION_3 = 2,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SuppServiceClass.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SuppServiceClass.aidl
new file mode 100644
index 0000000..e59f40b
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SuppServiceClass.aidl
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum SuppServiceClass {
+  NONE = 0,
+  VOICE = 1,
+  DATA = 2,
+  FAX = 4,
+  SMS = 8,
+  DATA_SYNC = 16,
+  DATA_ASYNC = 32,
+  PACKET = 64,
+  PAD = 128,
+  MAX = 128,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SuppSvcNotification.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SuppSvcNotification.aidl
new file mode 100644
index 0000000..c098e24
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/SuppSvcNotification.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable SuppSvcNotification {
+  boolean isMT;
+  int code;
+  int index;
+  int type;
+  String number;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/TdscdmaSignalStrength.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/TdscdmaSignalStrength.aidl
new file mode 100644
index 0000000..a2ba211
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/TdscdmaSignalStrength.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable TdscdmaSignalStrength {
+  int signalStrength;
+  int bitErrorRate;
+  int rscp;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/TimeStampType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/TimeStampType.aidl
new file mode 100644
index 0000000..ae70522
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/TimeStampType.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum TimeStampType {
+  UNKNOWN = 0,
+  ANTENNA = 1,
+  MODEM = 2,
+  OEM_RIL = 3,
+  JAVA_RIL = 4,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/TrafficDescriptor.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/TrafficDescriptor.aidl
new file mode 100644
index 0000000..9f46848
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/TrafficDescriptor.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable TrafficDescriptor {
+  android.hardware.radio.OptionalDnn dnn;
+  android.hardware.radio.OptionalOsAppId osAppId;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/TtyMode.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/TtyMode.aidl
new file mode 100644
index 0000000..cee3057
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/TtyMode.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum TtyMode {
+  OFF = 0,
+  FULL = 1,
+  HCO = 2,
+  VCO = 3,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/UiccSubActStatus.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/UiccSubActStatus.aidl
new file mode 100644
index 0000000..5ec511e
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/UiccSubActStatus.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum UiccSubActStatus {
+  DEACTIVATE = 0,
+  ACTIVATE = 1,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/UrspRule.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/UrspRule.aidl
new file mode 100644
index 0000000..ababb29
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/UrspRule.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable UrspRule {
+  byte precedence;
+  android.hardware.radio.TrafficDescriptor[] trafficDescriptors;
+  android.hardware.radio.RouteSelectionDescriptor[] routeSelectionDescriptor;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/UssdModeType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/UssdModeType.aidl
new file mode 100644
index 0000000..992a55f
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/UssdModeType.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum UssdModeType {
+  NOTIFY = 0,
+  REQUEST = 1,
+  NW_RELEASE = 2,
+  LOCAL_CLIENT = 3,
+  NOT_SUPPORTED = 4,
+  NW_TIMEOUT = 5,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/UtranBands.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/UtranBands.aidl
new file mode 100644
index 0000000..32cff72
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/UtranBands.aidl
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum UtranBands {
+  BAND_1 = 1,
+  BAND_2 = 2,
+  BAND_3 = 3,
+  BAND_4 = 4,
+  BAND_5 = 5,
+  BAND_6 = 6,
+  BAND_7 = 7,
+  BAND_8 = 8,
+  BAND_9 = 9,
+  BAND_10 = 10,
+  BAND_11 = 11,
+  BAND_12 = 12,
+  BAND_13 = 13,
+  BAND_14 = 14,
+  BAND_19 = 19,
+  BAND_20 = 20,
+  BAND_21 = 21,
+  BAND_22 = 22,
+  BAND_25 = 25,
+  BAND_26 = 26,
+  BAND_A = 101,
+  BAND_B = 102,
+  BAND_C = 103,
+  BAND_D = 104,
+  BAND_E = 105,
+  BAND_F = 106,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/UusDcs.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/UusDcs.aidl
new file mode 100644
index 0000000..cf1baca
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/UusDcs.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum UusDcs {
+  USP = 0,
+  OSIHLP = 1,
+  X244 = 2,
+  RMCF = 3,
+  IA5C = 4,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/UusInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/UusInfo.aidl
new file mode 100644
index 0000000..3551fe3
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/UusInfo.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable UusInfo {
+  android.hardware.radio.UusType uusType;
+  android.hardware.radio.UusDcs uusDcs;
+  String uusData;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/UusType.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/UusType.aidl
new file mode 100644
index 0000000..7176d40
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/UusType.aidl
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="int") @VintfStability
+enum UusType {
+  TYPE1_IMPLICIT = 0,
+  TYPE1_REQUIRED = 1,
+  TYPE1_NOT_REQUIRED = 2,
+  TYPE2_REQUIRED = 3,
+  TYPE2_NOT_REQUIRED = 4,
+  TYPE3_REQUIRED = 5,
+  TYPE3_NOT_REQUIRED = 6,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/VoiceRegStateResult.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/VoiceRegStateResult.aidl
new file mode 100644
index 0000000..a693ff5
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/VoiceRegStateResult.aidl
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable VoiceRegStateResult {
+  android.hardware.radio.RegState regState;
+  int rat;
+  boolean cssSupported;
+  int roamingIndicator;
+  int systemIsInPrl;
+  int defaultRoamingIndicator;
+  int reasonForDenial;
+  android.hardware.radio.CellIdentity cellIdentity;
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/VopsIndicator.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/VopsIndicator.aidl
new file mode 100644
index 0000000..028b719
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/VopsIndicator.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@Backing(type="byte") @VintfStability
+enum VopsIndicator {
+  VOPS_NOT_SUPPORTED = 0,
+  VOPS_OVER_3GPP = 1,
+  VOPS_OVER_NON_3GPP = 2,
+}
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/WcdmaSignalStrength.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/WcdmaSignalStrength.aidl
new file mode 100644
index 0000000..764dded
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/WcdmaSignalStrength.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio;
+@VintfStability
+parcelable WcdmaSignalStrength {
+  int signalStrength;
+  int bitErrorRate;
+  int rscp;
+  int ecno;
+}
diff --git a/radio/aidl/android/hardware/radio/AccessNetwork.aidl b/radio/aidl/android/hardware/radio/AccessNetwork.aidl
new file mode 100644
index 0000000..10b84f4
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/AccessNetwork.aidl
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum AccessNetwork {
+    /**
+     * Unknown access network
+     */
+    UNKNOWN,
+    /**
+     * GSM EDGE Radio Access Network
+     */
+    GERAN,
+    /**
+     * Universal Terrestrial Radio Access Network
+     */
+    UTRAN,
+    /**
+     * Evolved Universal Terrestrial Radio Access Network
+     */
+    EUTRAN,
+    /**
+     * CDMA 2000 network
+     */
+    CDMA2000,
+    /**
+     * Interworking Wireless LAN
+     */
+    IWLAN,
+    /**
+     * Next-Generation Radio Access Network (NGRAN).
+     * Note NGRAN is only for standalone mode. Non-standalone mode uses AccessNetwork EUTRAN.
+     */
+    NGRAN,
+}
diff --git a/radio/aidl/android/hardware/radio/ActivityStatsInfo.aidl b/radio/aidl/android/hardware/radio/ActivityStatsInfo.aidl
new file mode 100644
index 0000000..f1a6e0e
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/ActivityStatsInfo.aidl
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+parcelable ActivityStatsInfo {
+    /**
+     * Total time (in ms) when modem is in a low power or sleep state
+     */
+    int sleepModeTimeMs;
+    /**
+     * Total time (in ms) when modem is awake but neither the transmitter nor receiver are
+     * active/awake
+     */
+    int idleModeTimeMs;
+    /**
+     * Each index represent total time (in ms) during which the transmitter is active/awake for a
+     * particular power range as shown below.
+     * index 0 = tx_power < 0dBm
+     * index 1 = 0dBm < tx_power < 5dBm
+     * index 2 = 5dBm < tx_power < 15dBm
+     * index 3 = 15dBm < tx_power < 20dBm
+     * index 4 = tx_power > 20dBm
+     */
+    int[] txmModetimeMs;
+    /**
+     * Total time (in ms) for which receiver is active/awake and the transmitter is inactive
+     */
+    int rxModeTimeMs;
+}
diff --git a/radio/aidl/android/hardware/radio/AddressProperty.aidl b/radio/aidl/android/hardware/radio/AddressProperty.aidl
new file mode 100644
index 0000000..dbafc17
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/AddressProperty.aidl
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * The properties of the link address. This enum reflects the definition in if_addr.h in
+ * Linux kernel.
+ */
+@VintfStability
+@Backing(type="int")
+enum AddressProperty {
+    NONE = 0,
+    /**
+     * Indicates this address is deprecated
+     */
+    DEPRECATED = 0x20,
+}
diff --git a/radio/aidl/android/hardware/radio/ApnAuthType.aidl b/radio/aidl/android/hardware/radio/ApnAuthType.aidl
new file mode 100644
index 0000000..c836a31
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/ApnAuthType.aidl
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum ApnAuthType {
+    /**
+     * PAP and CHAP is never performed.
+     */
+    NO_PAP_NO_CHAP,
+    /**
+     * PAP may be performed; CHAP is never performed.
+     */
+    PAP_NO_CHAP,
+    /**
+     * CHAP may be performed; PAP is never performed.
+     */
+    NO_PAP_CHAP,
+    /**
+     * PAP / CHAP may be performed - baseband dependent.
+     */
+    PAP_CHAP,
+}
diff --git a/radio/aidl/android/hardware/radio/ApnTypes.aidl b/radio/aidl/android/hardware/radio/ApnTypes.aidl
new file mode 100644
index 0000000..340301f
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/ApnTypes.aidl
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum ApnTypes {
+    /**
+     * None
+     */
+    NONE = 0,
+    /**
+     * APN type for default data traffic
+     */
+    DEFAULT = 1 << 0,
+    /**
+     * APN type for MMS traffic
+     */
+    MMS = 1 << 1,
+    /**
+     * APN type for SUPL assisted GPS
+     */
+    SUPL = 1 << 2,
+    /**
+     * APN type for DUN traffic
+     */
+    DUN = 1 << 3,
+    /**
+     * APN type for HiPri traffic
+     */
+    HIPRI = 1 << 4,
+    /**
+     * APN type for FOTA
+     */
+    FOTA = 1 << 5,
+    /**
+     * APN type for IMS
+     */
+    IMS = 1 << 6,
+    /**
+     * APN type for CBS
+     */
+    CBS = 1 << 7,
+    /**
+     * APN type for IA Initial Attach APN
+     */
+    IA = 1 << 8,
+    /**
+     * APN type for Emergency PDN. This is not an IA apn, but is used for access to carrier services
+     * in an emergency call situation.
+     */
+    EMERGENCY = 1 << 9,
+    /**
+     * Due to the addition of values after EMERGENCY (eg. MCX, XCAP), this value is now deprecated
+     * and should not be used.
+     */
+    ALL = DEFAULT | MMS | SUPL | DUN | HIPRI | FOTA | IMS | CBS | IA | EMERGENCY,
+    /**
+     * APN type for Mission Critical Service
+     * Reference: 3GPP TS 22.280 V15.3.0
+     */
+    MCX = 1 << 10,
+    /**
+     * APN type for XCAP
+     */
+    XCAP = 1 << 11,
+}
diff --git a/radio/aidl/android/hardware/radio/AppState.aidl b/radio/aidl/android/hardware/radio/AppState.aidl
new file mode 100644
index 0000000..9488282
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/AppState.aidl
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum AppState {
+    UNKNOWN,
+    DETECTED,
+    /**
+     * If PIN1 or UPin is required
+     */
+    PIN,
+    /**
+     * If PUK1 or Puk for Upin is required
+     */
+    PUK,
+    /**
+     * perso_substate must be looked at when app_state is assigned to this value
+     */
+    SUBSCRIPTION_PERSO,
+    READY,
+}
diff --git a/radio/aidl/android/hardware/radio/AppStatus.aidl b/radio/aidl/android/hardware/radio/AppStatus.aidl
new file mode 100644
index 0000000..6b62697
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/AppStatus.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.AppState;
+import android.hardware.radio.AppType;
+import android.hardware.radio.PersoSubstate;
+import android.hardware.radio.PinState;
+
+@VintfStability
+parcelable AppStatus {
+    AppType appType;
+    AppState appState;
+    /**
+     * Applicable only if appState == SUBSCRIPTION_PERSO
+     */
+    PersoSubstate persoSubstate;
+    /**
+     * e.g., from 0xA0, 0x00 -> 0x41, 0x30, 0x30, 0x30
+     */
+    String aidPtr;
+    String appLabelPtr;
+    /**
+     * Applicable to USIM, CSIM and ISIM
+     */
+    int pin1Replaced;
+    PinState pin1;
+    PinState pin2;
+}
diff --git a/radio/aidl/android/hardware/radio/AppType.aidl b/radio/aidl/android/hardware/radio/AppType.aidl
new file mode 100644
index 0000000..8403f7d
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/AppType.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum AppType {
+    UNKNOWN,
+    SIM,
+    USIM,
+    RUIM,
+    CSIM,
+    ISIM,
+}
diff --git a/radio/aidl/android/hardware/radio/AudioQuality.aidl b/radio/aidl/android/hardware/radio/AudioQuality.aidl
new file mode 100644
index 0000000..bc4c2f1
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/AudioQuality.aidl
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Audio codec which is used on GSM, UMTS, and CDMA. These values must be opaque to the Android
+ * framework. Only for display.
+ */
+@VintfStability
+@Backing(type="int")
+enum AudioQuality {
+    /**
+     * Unspecified audio codec
+     */
+    UNSPECIFIED,
+    /**
+     * AMR (Narrowband) audio codec
+     */
+    AMR,
+    /**
+     * AMR (Wideband) audio codec
+     */
+    AMR_WB,
+    /**
+     * GSM Enhanced Full-Rate audio codec
+     */
+    GSM_EFR,
+    /**
+     * GSM Full-Rate audio codec
+     */
+    GSM_FR,
+    /**
+     * GSM Half-Rate audio codec
+     */
+    GSM_HR,
+    /**
+     * Enhanced Variable rate codec
+     */
+    EVRC,
+    /**
+     * Enhanced Variable rate codec revision B
+     */
+    EVRC_B,
+    /**
+     * Enhanced Variable rate codec (Wideband)
+     */
+    EVRC_WB,
+    /**
+     * Enhanced Variable rate codec (Narrowband)
+     */
+    EVRC_NW,
+}
diff --git a/radio/aidl/android/hardware/radio/BarringInfo.aidl b/radio/aidl/android/hardware/radio/BarringInfo.aidl
new file mode 100644
index 0000000..c50fa4b
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/BarringInfo.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.BarringInfoBarringType;
+import android.hardware.radio.BarringInfoBarringTypeSpecificInfo;
+import android.hardware.radio.BarringInfoServiceType;
+
+@VintfStability
+parcelable BarringInfo {
+    /**
+     * Combined list of barring services for UTRAN, EUTRAN, and NGRAN.
+     *
+     * Barring information is defined in:
+     * -UTRAN - 3gpp 25.331 Sec 10.2.48.8.6.
+     * -EUTRAN - 3gpp 36.331 Sec 6.3.1 SystemInformationBlockType2
+     * -NGRAN - 3gpp 38.331 Sec 6.3.2 UAC-BarringInfo and 22.261 Sec 6.22.2.[2-3]
+     */
+    BarringInfoServiceType serviceType;
+    /**
+     * The type of barring applied to the service
+     */
+    BarringInfoBarringType barringType;
+    /**
+     * Type-specific barring info if applicable
+     */
+    BarringInfoBarringTypeSpecificInfo barringTypeSpecificInfo;
+}
diff --git a/radio/aidl/android/hardware/radio/BarringInfoBarringType.aidl b/radio/aidl/android/hardware/radio/BarringInfoBarringType.aidl
new file mode 100644
index 0000000..41f5fbb
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/BarringInfoBarringType.aidl
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum BarringInfoBarringType {
+    /**
+     * Device is not barred for the given service
+     */
+    NONE,
+    /**
+     * Device may be barred based on time and probability factors
+     */
+    CONDITIONAL,
+    /*
+     * Device is unconditionally barred
+     */
+    UNCONDITIONAL,
+}
diff --git a/radio/aidl/android/hardware/radio/BarringInfoBarringTypeSpecificInfo.aidl b/radio/aidl/android/hardware/radio/BarringInfoBarringTypeSpecificInfo.aidl
new file mode 100644
index 0000000..18f309d
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/BarringInfoBarringTypeSpecificInfo.aidl
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.BarringInfoBarringTypeSpecificInfoConditional;
+
+@VintfStability
+union BarringInfoBarringTypeSpecificInfo {
+    /**
+     * Barring type is either none or unconditional
+     */
+    boolean noinit;
+    /**
+     * Must be included if barring is conditional
+     */
+    BarringInfoBarringTypeSpecificInfoConditional conditional;
+}
diff --git a/radio/aidl/android/hardware/radio/BarringInfoBarringTypeSpecificInfoConditional.aidl b/radio/aidl/android/hardware/radio/BarringInfoBarringTypeSpecificInfoConditional.aidl
new file mode 100644
index 0000000..e3b7dfa
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/BarringInfoBarringTypeSpecificInfoConditional.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+parcelable BarringInfoBarringTypeSpecificInfoConditional {
+    /**
+     * The barring factor as a percentage 0-100
+     */
+    int factor;
+    /**
+     * The number of seconds between re-evaluations of barring
+     */
+    int timeSeconds;
+    /**
+     * Indicates whether barring is currently being applied.
+     *
+     * <p>True if the UE applies barring to a conditionally barred service based on the conditional
+     * barring parameters.
+     *
+     * <p>False if the service is conditionally barred but barring is not currently applied, which
+     * could be due to either the barring criteria not having been evaluated (if the UE has not
+     * attempted to use the service) or due to the criteria being evaluated and the UE being
+     * permitted to use the service despite conditional barring.
+     */
+    boolean isBarred;
+}
diff --git a/radio/aidl/android/hardware/radio/BarringInfoServiceType.aidl b/radio/aidl/android/hardware/radio/BarringInfoServiceType.aidl
new file mode 100644
index 0000000..1fa52a0
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/BarringInfoServiceType.aidl
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum BarringInfoServiceType {
+    /**
+     * Applicable to UTRAN
+     * Barring for all CS services, including registration
+     */
+    CS_SERVICE,
+    /**
+     * Barring for all PS services, including registration
+     */
+    PS_SERVICE,
+    /**
+     * Barring for mobile-originated circuit-switched voice calls
+     */
+    CS_VOICE,
+    /**
+     * Applicable to EUTRAN, NGRAN
+     * Barring for mobile-originated signalling for any purpose
+     */
+    MO_SIGNALLING,
+    /**
+     * Barring for mobile-originated internet or other interactive data
+     */
+    MO_DATA,
+    /**
+     * Barring for circuit-switched fallback calling
+     */
+    CS_FALLBACK,
+    /**
+     * Barring for IMS voice calling
+     */
+    MMTEL_VOICE,
+    /**
+     * Barring for IMS video calling
+     */
+    MMTEL_VIDEO,
+    /**
+     * Applicable to UTRAN, EUTRAN, NGRAN
+     * Barring for emergency services, either CS or emergency MMTEL
+     */
+    EMERGENCY,
+    /**
+     * Barring for short message services
+     */
+    SMS,
+    /**
+     * Operator-specific barring codes; applicable to NGRAN
+     */
+    OPERATOR_1 = 1001,
+    OPERATOR_2 = 1002,
+    OPERATOR_3 = 1003,
+    OPERATOR_4 = 1004,
+    OPERATOR_5 = 1005,
+    OPERATOR_6 = 1006,
+    OPERATOR_7 = 1007,
+    OPERATOR_8 = 1008,
+    OPERATOR_9 = 1009,
+    OPERATOR_10 = 1010,
+    OPERATOR_11 = 1011,
+    OPERATOR_12 = 1012,
+    OPERATOR_13 = 1013,
+    OPERATOR_14 = 1014,
+    OPERATOR_15 = 1015,
+    OPERATOR_16 = 1016,
+    OPERATOR_17 = 1017,
+    OPERATOR_18 = 1018,
+    OPERATOR_19 = 1019,
+    OPERATOR_20 = 1020,
+    OPERATOR_21 = 1021,
+    OPERATOR_22 = 1022,
+    OPERATOR_23 = 1023,
+    OPERATOR_24 = 1024,
+    OPERATOR_25 = 1025,
+    OPERATOR_26 = 1026,
+    OPERATOR_27 = 1027,
+    OPERATOR_28 = 1028,
+    OPERATOR_29 = 1029,
+    OPERATOR_30 = 1030,
+    OPERATOR_31 = 1031,
+    OPERATOR_32 = 1032,
+}
diff --git a/radio/aidl/android/hardware/radio/Call.aidl b/radio/aidl/android/hardware/radio/Call.aidl
new file mode 100644
index 0000000..38cb3d3
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/Call.aidl
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.AudioQuality;
+import android.hardware.radio.CallPresentation;
+import android.hardware.radio.CallState;
+import android.hardware.radio.UusInfo;
+
+@VintfStability
+parcelable Call {
+    CallState state;
+    /**
+     * Connection index for use with, eg, AT+CHLD
+     */
+    int index;
+    /**
+     * Type of address, eg 145 = intl
+     */
+    int toa;
+    /**
+     * true if is mpty call
+     */
+    boolean isMpty;
+    /**
+     * true if call is mobile terminated
+     */
+    boolean isMT;
+    /**
+     * ALS line indicator if availale (0 = line 1)
+     */
+    byte als;
+    /**
+     * true if this is a voice call
+     */
+    boolean isVoice;
+    /**
+     * true if CDMA voice privacy mode is active
+     */
+    boolean isVoicePrivacy;
+    /**
+     * Remote party nummber
+     */
+    String number;
+    CallPresentation numberPresentation;
+    /**
+     * Remote party name
+     */
+    String name;
+    CallPresentation namePresentation;
+    /**
+     * Vector of User-User Signaling Information
+     */
+    UusInfo[] uusInfo;
+    AudioQuality audioQuality;
+    /**
+     * Forwarded number. It can set only one forwarded number based on 3GPP rule of the CS.
+     * Reference: 3GPP TS 24.008 section 10.5.4.21b
+     */
+    String forwardedNumber;
+}
diff --git a/radio/aidl/android/hardware/radio/CallForwardInfo.aidl b/radio/aidl/android/hardware/radio/CallForwardInfo.aidl
new file mode 100644
index 0000000..91a3055
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CallForwardInfo.aidl
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CallForwardInfoStatus;
+
+/**
+ * See also com.android.internal.telephony.gsm.CallForwardInfo
+ */
+@VintfStability
+parcelable CallForwardInfo {
+    /**
+     * For queryCallForwardStatus() status is DISABLE (Not used by vendor code currently)
+     * For setCallForward() status must be DISABLE, ENABLE, INTERROGATE, REGISTRATION, ERASURE
+     */
+    CallForwardInfoStatus status;
+    /**
+     * From TS 27.007 7.11 "reason"
+     */
+    int reason;
+    /**
+     * From TS 27.007 +CCFC/+CLCK "class". See table for Android mapping from MMI service code.
+     * 0 means user doesn't input class.
+     */
+    int serviceClass;
+    /**
+     * From TS 27.007 7.11 "type"
+     */
+    int toa;
+    /**
+     * From TS 27.007 7.11 "number"
+     */
+    String number;
+    int timeSeconds;
+}
diff --git a/radio/aidl/android/hardware/radio/CallForwardInfoStatus.aidl b/radio/aidl/android/hardware/radio/CallForwardInfoStatus.aidl
new file mode 100644
index 0000000..f4ae503
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CallForwardInfoStatus.aidl
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum CallForwardInfoStatus {
+    DISABLE,
+    ENABLE,
+    INTERROGATE,
+    REGISTRATION,
+    ERASURE,
+}
diff --git a/radio/aidl/android/hardware/radio/CallPresentation.aidl b/radio/aidl/android/hardware/radio/CallPresentation.aidl
new file mode 100644
index 0000000..76b5f21
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CallPresentation.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum CallPresentation {
+    ALLOWED,
+    RESTRICTED,
+    UNKNOWN,
+    PAYPHONE,
+}
diff --git a/radio/aidl/android/hardware/radio/CallState.aidl b/radio/aidl/android/hardware/radio/CallState.aidl
new file mode 100644
index 0000000..4b6f1ac
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CallState.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum CallState {
+    ACTIVE,
+    HOLDING,
+    /**
+     * MO call only
+     */
+    DIALING,
+    /**
+     * MO call only
+     */
+    ALERTING,
+    /**
+     * MT call only
+     */
+    INCOMING,
+    /**
+     * MT call only
+     */
+    WAITING,
+}
diff --git a/radio/aidl/android/hardware/radio/CardPowerState.aidl b/radio/aidl/android/hardware/radio/CardPowerState.aidl
new file mode 100644
index 0000000..23088c9
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CardPowerState.aidl
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum CardPowerState {
+    POWER_DOWN,
+    POWER_UP,
+    POWER_UP_PASS_THROUGH,
+}
diff --git a/radio/aidl/android/hardware/radio/CardState.aidl b/radio/aidl/android/hardware/radio/CardState.aidl
new file mode 100644
index 0000000..c1bbee6
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CardState.aidl
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum CardState {
+    /*
+     * Card is physically absent from device. (Some old modems use CardState.ABSENT when the SIM
+     * is powered off. This is no longer correct, however the platform will still support this
+     * legacy behavior.)
+     */
+    ABSENT,
+    /*
+     * Card is inserted in the device
+     */
+    PRESENT,
+    ERROR,
+    /*
+     * Card is present but not usable due to carrier restrictions
+     */
+    RESTRICTED,
+}
diff --git a/radio/aidl/android/hardware/radio/CardStatus.aidl b/radio/aidl/android/hardware/radio/CardStatus.aidl
new file mode 100644
index 0000000..a8df53d
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CardStatus.aidl
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.AppStatus;
+import android.hardware.radio.CardState;
+import android.hardware.radio.PinState;
+
+@VintfStability
+parcelable CardStatus {
+    CardState cardState;
+    /**
+     * Applicable to USIM and CSIM
+     */
+    PinState universalPinState;
+    /**
+     * Value < RadioConst:CARD_MAX_APPS, -1 if none
+     */
+    int gsmUmtsSubscriptionAppIndex;
+    /**
+     * Value < RadioConst:CARD_MAX_APPS, -1 if none
+     */
+    int cdmaSubscriptionAppIndex;
+    /**
+     * Value < RadioConst:CARD_MAX_APPS, -1 if none
+     */
+    int imsSubscriptionAppIndex;
+    /**
+     * size <= RadioConst::CARD_MAX_APPS
+     */
+    AppStatus[] applications;
+    int physicalSlotId;
+    /**
+     * An Answer To Reset (ATR) is a message output by a Smart Card conforming to ISO/IEC 7816
+     * standards, following electrical reset of the card's chip. The ATR conveys information about
+     * the communication parameters proposed by the card, and the card's nature and state.
+     *
+     * This data is applicable only when cardState is CardState:PRESENT.
+     */
+    String atr;
+    /**
+     * Integrated Circuit Card IDentifier (ICCID) is Unique Identifier of the SIM CARD. File is
+     * located in the SIM card at EFiccid (0x2FE2) as per ETSI 102.221. The ICCID is defined by
+     * the ITU-T recommendation E.118 ISO/IEC 7816.
+     *
+     * This data is applicable only when cardState is CardState:PRESENT.
+     */
+    String iccid;
+    /**
+     * The EID is the eUICC identifier. The EID shall be stored within the ECASD and can be
+     * retrieved by the Device at any time using the standard GlobalPlatform GET DATA command.
+     *
+     * This data is mandatory and applicable only when cardState is CardState:PRESENT and SIM card
+     * supports eUICC.
+     */
+    String eid;
+}
diff --git a/radio/aidl/android/hardware/radio/Carrier.aidl b/radio/aidl/android/hardware/radio/Carrier.aidl
new file mode 100644
index 0000000..be619b9
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/Carrier.aidl
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CarrierMatchType;
+
+@VintfStability
+parcelable Carrier {
+    String mcc;
+    String mnc;
+    /**
+     * Specify match type for the carrier. If it’s ALL, matchData is empty string; otherwise,
+     * matchData is the value for the match type.
+     */
+    CarrierMatchType matchType;
+    String matchData;
+}
diff --git a/radio/aidl/android/hardware/radio/CarrierMatchType.aidl b/radio/aidl/android/hardware/radio/CarrierMatchType.aidl
new file mode 100644
index 0000000..39b9466
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CarrierMatchType.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum CarrierMatchType {
+    /**
+     * Apply to all carrier with the same mcc/mnc
+     */
+    ALL,
+    /**
+     * Use SPN and mcc/mnc to identify the carrier
+     */
+    SPN,
+    /**
+     * Use IMSI prefix and mcc/mnc to identify the carrier
+     */
+    IMSI_PREFIX,
+    /**
+     * Use GID1 and mcc/mnc to identify the carrier
+     */
+    GID1,
+    /**
+     * Use GID2 and mcc/mnc to identify the carrier
+     */
+    GID2,
+}
diff --git a/radio/aidl/android/hardware/radio/CarrierRestrictions.aidl b/radio/aidl/android/hardware/radio/CarrierRestrictions.aidl
new file mode 100644
index 0000000..70df637
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CarrierRestrictions.aidl
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.Carrier;
+
+@VintfStability
+parcelable CarrierRestrictions {
+    /**
+     * Allowed carriers
+     */
+    Carrier[] allowedCarriers;
+    /**
+     * Explicitly excluded carriers which match allowed_carriers. Eg. allowedCarriers match mcc/mnc,
+     * excludedCarriers has same mcc/mnc and gid1 is ABCD. It means except the carrier whose gid1
+     * is ABCD, all carriers with the same mcc/mnc are allowed.
+     */
+    Carrier[] excludedCarriers;
+}
diff --git a/radio/aidl/android/hardware/radio/CarrierRestrictionsWithPriority.aidl b/radio/aidl/android/hardware/radio/CarrierRestrictionsWithPriority.aidl
new file mode 100644
index 0000000..057b016
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CarrierRestrictionsWithPriority.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.Carrier;
+
+@VintfStability
+parcelable CarrierRestrictionsWithPriority {
+    /**
+     * List of allowed carriers.
+     * The character '?' is used as wildcard character to match any value.
+     */
+    Carrier[] allowedCarriers;
+    /**
+     * List of excluded carriers.
+     * The character '?' is used as wildcard character to match any value.
+     */
+    Carrier[] excludedCarriers;
+    /**
+     * True means that only carriers included in the allowed list and not in the excluded list
+     * are permitted. Eg. allowedCarriers match mcc/mnc, excludedCarriers has same mcc/mnc and
+     * gid1 is ABCD. It means except the carrier whose gid1 is ABCD, all carriers with the
+     * same mcc/mnc are allowed.
+     * False means that all carriers are allowed except those included in the excluded list
+     * and not in the allowed list.
+     */
+    boolean allowedCarriersPrioritized;
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaBroadcastSmsConfigInfo.aidl b/radio/aidl/android/hardware/radio/CdmaBroadcastSmsConfigInfo.aidl
new file mode 100644
index 0000000..46f6345
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaBroadcastSmsConfigInfo.aidl
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+parcelable CdmaBroadcastSmsConfigInfo {
+    /**
+     * Defines a broadcast message identifier whose value is 0x0000 - 0xFFFF as defined in
+     * C.R1001G 9.3.1 and 9.3.2.
+     */
+    int serviceCategory;
+    /**
+     * Language code of broadcast message whose value is 0x00 - 0x07 as defined in C.R1001G 9.2.
+     */
+    int language;
+    /**
+     * Selected false means message types specified in serviceCategory are not accepted,
+     * while true means accepted.
+     */
+    boolean selected;
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaCallWaiting.aidl b/radio/aidl/android/hardware/radio/CdmaCallWaiting.aidl
new file mode 100644
index 0000000..3db6ee0
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaCallWaiting.aidl
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CdmaCallWaitingNumberPlan;
+import android.hardware.radio.CdmaCallWaitingNumberPresentation;
+import android.hardware.radio.CdmaCallWaitingNumberType;
+import android.hardware.radio.CdmaSignalInfoRecord;
+
+@VintfStability
+parcelable CdmaCallWaiting {
+    /**
+     * Remote party number
+     */
+    String number;
+    CdmaCallWaitingNumberPresentation numberPresentation;
+    /**
+     * Remote party name
+     */
+    String name;
+    CdmaSignalInfoRecord signalInfoRecord;
+    /**
+     * Required to support International Call Waiting
+     */
+    CdmaCallWaitingNumberType numberType;
+    /**
+     * Required to support International Call Waiting
+     */
+    CdmaCallWaitingNumberPlan numberPlan;
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaCallWaitingNumberPlan.aidl b/radio/aidl/android/hardware/radio/CdmaCallWaitingNumberPlan.aidl
new file mode 100644
index 0000000..76d2197
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaCallWaitingNumberPlan.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum CdmaCallWaitingNumberPlan {
+    UNKNOWN = 0,
+    ISDN = 1,
+    DATA = 3,
+    TELEX = 4,
+    NATIONAL = 8,
+    PRIVATE = 9,
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaCallWaitingNumberPresentation.aidl b/radio/aidl/android/hardware/radio/CdmaCallWaitingNumberPresentation.aidl
new file mode 100644
index 0000000..f9fca96
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaCallWaitingNumberPresentation.aidl
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum CdmaCallWaitingNumberPresentation {
+    ALLOWED,
+    RESTRICTED,
+    UNKNOWN,
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaCallWaitingNumberType.aidl b/radio/aidl/android/hardware/radio/CdmaCallWaitingNumberType.aidl
new file mode 100644
index 0000000..9c5b8ed
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaCallWaitingNumberType.aidl
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum CdmaCallWaitingNumberType {
+    UNKNOWN,
+    INTERNATIONAL,
+    NATIONAL,
+    NETWORK_SPECIFIC,
+    SUBSCRIBER,
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaDisplayInfoRecord.aidl b/radio/aidl/android/hardware/radio/CdmaDisplayInfoRecord.aidl
new file mode 100644
index 0000000..9b11f37
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaDisplayInfoRecord.aidl
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Display Info Rec as defined in C.S0005 section 3.7.5.1. Extended Display Info Rec as defined in
+ * C.S0005 section 3.7.5.16. Note that the Extended Display info rec contains multiple records of
+ * the form: display_tag, display_len, and display_len occurrences of the char field if the
+ * display_tag is not 10000000 or 10000001. To save space, the records are stored consecutively in
+ * a byte buffer. The display_tag, display_len and chari fields are all 1 byte.
+ */
+@VintfStability
+parcelable CdmaDisplayInfoRecord {
+    /**
+     * Max length = RadioConst:CDMA_ALPHA_INFO_BUFFER_LENGTH
+     */
+    String alphaBuf;
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaInfoRecName.aidl b/radio/aidl/android/hardware/radio/CdmaInfoRecName.aidl
new file mode 100644
index 0000000..63ec699
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaInfoRecName.aidl
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Names of the CDMA info records (C.S0005 section 3.7.5)
+ */
+@VintfStability
+@Backing(type="int")
+enum CdmaInfoRecName {
+    DISPLAY,
+    CALLED_PARTY_NUMBER,
+    CALLING_PARTY_NUMBER,
+    CONNECTED_NUMBER,
+    SIGNAL,
+    REDIRECTING_NUMBER,
+    LINE_CONTROL,
+    EXTENDED_DISPLAY,
+    T53_CLIR,
+    T53_RELEASE,
+    T53_AUDIO_CONTROL,
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaInformationRecord.aidl b/radio/aidl/android/hardware/radio/CdmaInformationRecord.aidl
new file mode 100644
index 0000000..7d9cb0a
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaInformationRecord.aidl
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CdmaDisplayInfoRecord;
+import android.hardware.radio.CdmaInfoRecName;
+import android.hardware.radio.CdmaLineControlInfoRecord;
+import android.hardware.radio.CdmaNumberInfoRecord;
+import android.hardware.radio.CdmaRedirectingNumberInfoRecord;
+import android.hardware.radio.CdmaSignalInfoRecord;
+import android.hardware.radio.CdmaT53AudioControlInfoRecord;
+import android.hardware.radio.CdmaT53ClirInfoRecord;
+
+@VintfStability
+parcelable CdmaInformationRecord {
+    /**
+     * Based on CdmaInfoRecName, only one of the below vectors must have size = 1.
+     * All other vectors must have size 0.
+     */
+    CdmaInfoRecName name;
+    /**
+     * Display and extended display info rec
+     */
+    CdmaDisplayInfoRecord[] display;
+    /**
+     * Called party number, calling party number, connected number info rec
+     */
+    CdmaNumberInfoRecord[] number;
+    /**
+     * Signal info rec
+     */
+    CdmaSignalInfoRecord[] signal;
+    /**
+     * Redirecting number info rec
+     */
+    CdmaRedirectingNumberInfoRecord[] redir;
+    /**
+     * Line control info rec
+     */
+    CdmaLineControlInfoRecord[] lineCtrl;
+    /**
+     * T53 CLIR info rec
+     */
+    CdmaT53ClirInfoRecord[] clir;
+    /**
+     * T53 Audio Control info rec
+     */
+    CdmaT53AudioControlInfoRecord[] audioCtrl;
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaInformationRecords.aidl b/radio/aidl/android/hardware/radio/CdmaInformationRecords.aidl
new file mode 100644
index 0000000..dcf0ed2
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaInformationRecords.aidl
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CdmaInformationRecord;
+
+@VintfStability
+parcelable CdmaInformationRecords {
+    /**
+     * Max length = RadioConst:CDMA_MAX_NUMBER_OF_INFO_RECS
+     */
+    CdmaInformationRecord[] infoRec;
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaLineControlInfoRecord.aidl b/radio/aidl/android/hardware/radio/CdmaLineControlInfoRecord.aidl
new file mode 100644
index 0000000..a6178af
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaLineControlInfoRecord.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Line Control Information Record as defined in C.S0005 section 3.7.5.15
+ */
+@VintfStability
+parcelable CdmaLineControlInfoRecord {
+    byte lineCtrlPolarityIncluded;
+    byte lineCtrlToggle;
+    byte lineCtrlReverse;
+    byte lineCtrlPowerDenial;
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaNumberInfoRecord.aidl b/radio/aidl/android/hardware/radio/CdmaNumberInfoRecord.aidl
new file mode 100644
index 0000000..06e8317
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaNumberInfoRecord.aidl
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Called Party Number Info Rec as defined in C.S0005 section 3.7.5.2
+ * Calling Party Number Info Rec as defined in C.S0005 section 3.7.5.3
+ * Connected Number Info Rec as defined in C.S0005 section 3.7.5.4
+ */
+@VintfStability
+parcelable CdmaNumberInfoRecord {
+    /**
+     * Max length = RADIO_CDMA_NUMBER_INFO_BUFFER_LENGTH
+     */
+    String number;
+    byte numberType;
+    byte numberPlan;
+    byte pi;
+    byte si;
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaOtaProvisionStatus.aidl b/radio/aidl/android/hardware/radio/CdmaOtaProvisionStatus.aidl
new file mode 100644
index 0000000..0cb4314
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaOtaProvisionStatus.aidl
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum CdmaOtaProvisionStatus {
+    SPL_UNLOCKED,
+    SPC_RETRIES_EXCEEDED,
+    A_KEY_EXCHANGED,
+    SSD_UPDATED,
+    NAM_DOWNLOADED,
+    MDN_DOWNLOADED,
+    IMSI_DOWNLOADED,
+    PRL_DOWNLOADED,
+    COMMITTED,
+    OTAPA_STARTED,
+    OTAPA_STOPPED,
+    OTAPA_ABORTED,
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaRedirectingNumberInfoRecord.aidl b/radio/aidl/android/hardware/radio/CdmaRedirectingNumberInfoRecord.aidl
new file mode 100644
index 0000000..d15621a
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaRedirectingNumberInfoRecord.aidl
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CdmaNumberInfoRecord;
+import android.hardware.radio.CdmaRedirectingReason;
+
+@VintfStability
+parcelable CdmaRedirectingNumberInfoRecord {
+    CdmaNumberInfoRecord redirectingNumber;
+    /**
+     * Set to UNKNOWN if not included.
+     */
+    CdmaRedirectingReason redirectingReason;
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaRedirectingReason.aidl b/radio/aidl/android/hardware/radio/CdmaRedirectingReason.aidl
new file mode 100644
index 0000000..c86b9b2
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaRedirectingReason.aidl
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Redirecting Number Information Record as defined in C.S0005 section 3.7.5.11
+ */
+@VintfStability
+@Backing(type="int")
+enum CdmaRedirectingReason {
+    UNKNOWN = 0,
+    CALL_FORWARDING_BUSY = 1,
+    CALL_FORWARDING_NO_REPLY = 2,
+    CALLED_DTE_OUT_OF_ORDER = 9,
+    CALL_FORWARDING_BY_THE_CALLED_DTE = 10,
+    CALL_FORWARDING_UNCONDITIONAL = 15,
+    RESERVED,
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaRoamingType.aidl b/radio/aidl/android/hardware/radio/CdmaRoamingType.aidl
new file mode 100644
index 0000000..df09e03
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaRoamingType.aidl
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum CdmaRoamingType {
+    HOME_NETWORK,
+    AFFILIATED_ROAM,
+    ANY_ROAM,
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaSignalInfoRecord.aidl b/radio/aidl/android/hardware/radio/CdmaSignalInfoRecord.aidl
new file mode 100644
index 0000000..36ecb18
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaSignalInfoRecord.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * CDMA Signal Information Record as defined in C.S0005 section 3.7.5.5
+ */
+@VintfStability
+parcelable CdmaSignalInfoRecord {
+    /**
+     * True if signal information record is present
+     */
+    boolean isPresent;
+    /**
+     * Defined in 3.7.5.5-1
+     */
+    byte signalType;
+    /**
+     * Defined in 3.7.5.5-2
+     */
+    byte alertPitch;
+    /**
+     * Defined in 3.7.5.5-3, 3.7.5.5-4 or 3.7.5.5-5
+     */
+    byte signal;
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaSignalStrength.aidl b/radio/aidl/android/hardware/radio/CdmaSignalStrength.aidl
new file mode 100644
index 0000000..e6c2fb5
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaSignalStrength.aidl
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+parcelable CdmaSignalStrength {
+    /**
+     * This value is the actual RSSI value multiplied by -1. Example: If the actual RSSI is -75,
+     * then this response value will be 75. INT_MAX means invalid/unreported.
+     */
+    int dbm;
+    /**
+     * This value is the actual Ec/Io multiplied by -10. Example: If the actual Ec/Io is -12.5 dB,
+     * then this response value will be 125. INT_MAX means invalid/unreported.
+     */
+    int ecio;
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaSmsAck.aidl b/radio/aidl/android/hardware/radio/CdmaSmsAck.aidl
new file mode 100644
index 0000000..b412b70
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaSmsAck.aidl
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CdmaSmsErrorClass;
+
+@VintfStability
+parcelable CdmaSmsAck {
+    CdmaSmsErrorClass errorClass;
+    /**
+     * SMS cause code as defined in N.S00005, 6.5.2.125.
+     * Currently, only 35 (resource shortage) and 39 (other terminal problem) are reported.
+     */
+    int smsCauseCode;
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaSmsAddress.aidl b/radio/aidl/android/hardware/radio/CdmaSmsAddress.aidl
new file mode 100644
index 0000000..83e8839
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaSmsAddress.aidl
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CdmaSmsDigitMode;
+import android.hardware.radio.CdmaSmsNumberMode;
+import android.hardware.radio.CdmaSmsNumberPlan;
+import android.hardware.radio.CdmaSmsNumberType;
+
+@VintfStability
+parcelable CdmaSmsAddress {
+    /**
+     * CdmaSmsDigitMode is of two types : 4 bit and 8 bit.
+     * For 4-bit type, only "digits" field defined below in this struct is used.
+     */
+    CdmaSmsDigitMode digitMode;
+    /**
+     * Used only when digitMode is 8-bit.
+     */
+    CdmaSmsNumberMode numberMode;
+    /**
+     * Used only when digitMode is 8-bit. To specify an international address, use the following:
+     * digitMode = CdmaSmsDigitMode:EIGHT_BIT:
+     * numberMode = CdmaSmsNumberMode:NOT_DATA_NETWORK
+     * numberType = CdmaSmsNumberType:INTERNATIONAL_OR_DATA_IP
+     * numberPlan = CdmaSmsNumberPlan:TELEPHONY
+     * numberOfDigits = number of digits
+     * digits = ASCII digits, e.g. '1', '2', '3', '4', and '5'
+     */
+    CdmaSmsNumberType numberType;
+    /**
+     * Used only when digitMode is 8-bit.
+     */
+    CdmaSmsNumberPlan numberPlan;
+    /**
+     * Each byte in this array represents a 4 bit or 8-bit digit of address data.
+     */
+    byte[] digits;
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaSmsDigitMode.aidl b/radio/aidl/android/hardware/radio/CdmaSmsDigitMode.aidl
new file mode 100644
index 0000000..662311d
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaSmsDigitMode.aidl
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum CdmaSmsDigitMode {
+    /**
+     * DTMF digits
+     */
+    FOUR_BIT,
+    EIGHT_BIT,
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaSmsErrorClass.aidl b/radio/aidl/android/hardware/radio/CdmaSmsErrorClass.aidl
new file mode 100644
index 0000000..ec8c74e
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaSmsErrorClass.aidl
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum CdmaSmsErrorClass {
+    NO_ERROR,
+    ERROR,
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaSmsMessage.aidl b/radio/aidl/android/hardware/radio/CdmaSmsMessage.aidl
new file mode 100644
index 0000000..f38cc5b
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaSmsMessage.aidl
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CdmaSmsAddress;
+import android.hardware.radio.CdmaSmsSubaddress;
+
+@VintfStability
+parcelable CdmaSmsMessage {
+    int teleserviceId;
+    boolean isServicePresent;
+    int serviceCategory;
+    CdmaSmsAddress address;
+    CdmaSmsSubaddress subAddress;
+    /**
+     * 3GPP2 C.S0015-B, v2.0
+     */
+    byte[] bearerData;
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaSmsNumberMode.aidl b/radio/aidl/android/hardware/radio/CdmaSmsNumberMode.aidl
new file mode 100644
index 0000000..e1e96dd
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaSmsNumberMode.aidl
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum CdmaSmsNumberMode {
+    NOT_DATA_NETWORK,
+    DATA_NETWORK,
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaSmsNumberPlan.aidl b/radio/aidl/android/hardware/radio/CdmaSmsNumberPlan.aidl
new file mode 100644
index 0000000..23dea9b
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaSmsNumberPlan.aidl
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum CdmaSmsNumberPlan {
+    UNKNOWN,
+    /**
+     * CCITT E.164 and E.163, including ISDN plan
+     */
+    TELEPHONY,
+    RESERVED_2,
+    /**
+     * CCITT X.121
+     */
+    DATA,
+    /**
+     * CCITT F.69
+     */
+    TELEX,
+    RESERVED_5,
+    RESERVED_6,
+    RESERVED_7,
+    RESERVED_8,
+    PRIVATE,
+    RESERVED_10,
+    RESERVED_11,
+    RESERVED_12,
+    RESERVED_13,
+    RESERVED_14,
+    RESERVED_15,
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaSmsNumberType.aidl b/radio/aidl/android/hardware/radio/CdmaSmsNumberType.aidl
new file mode 100644
index 0000000..e439d1f
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaSmsNumberType.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum CdmaSmsNumberType {
+    UNKNOWN,
+    /**
+     * INTERNATIONAL is used when number mode is not data network address. DATA_IP is used when the
+     * number mode is data network address.
+     */
+    INTERNATIONAL_OR_DATA_IP,
+    /**
+     * NATIONAL is used when the number mode is not data netework address. INTERNET_MAIL is used
+     * when the number mode is data network address. For INTERNET_MAIL, in the address data
+     * "digits", each byte contains an ASCII character. Examples are: "x@y.com,a@b.com"
+     * Ref TIA/EIA-637A 3.4.3.3
+     */
+    NATIONAL_OR_INTERNET_MAIL,
+    NETWORK,
+    SUBSCRIBER,
+    /**
+     * GSM SMS: address value is GSM 7-bit chars
+     */
+    ALPHANUMERIC,
+    ABBREVIATED,
+    RESERVED_7,
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaSmsSubaddress.aidl b/radio/aidl/android/hardware/radio/CdmaSmsSubaddress.aidl
new file mode 100644
index 0000000..4a84c79
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaSmsSubaddress.aidl
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CdmaSmsSubaddressType;
+
+@VintfStability
+parcelable CdmaSmsSubaddress {
+    CdmaSmsSubaddressType subaddressType;
+    /**
+     * True means the last byte's lower 4 bits must be ignored
+     */
+    boolean odd;
+    /**
+     * Each byte represents an 8-bit digit of subaddress data
+     */
+    byte[] digits;
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaSmsSubaddressType.aidl b/radio/aidl/android/hardware/radio/CdmaSmsSubaddressType.aidl
new file mode 100644
index 0000000..60aa37b
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaSmsSubaddressType.aidl
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum CdmaSmsSubaddressType {
+    /**
+     * CCITT X.213 or ISO 8348 AD2
+     */
+    NSAP,
+    /**
+     * e.g. X.25
+     */
+    USER_SPECIFIED,
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaSmsWriteArgs.aidl b/radio/aidl/android/hardware/radio/CdmaSmsWriteArgs.aidl
new file mode 100644
index 0000000..f613e39
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaSmsWriteArgs.aidl
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CdmaSmsMessage;
+import android.hardware.radio.CdmaSmsWriteArgsStatus;
+
+@VintfStability
+parcelable CdmaSmsWriteArgs {
+    /**
+     * Status of message. See TS 27.005 3.1
+     */
+    CdmaSmsWriteArgsStatus status;
+    CdmaSmsMessage message;
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaSmsWriteArgsStatus.aidl b/radio/aidl/android/hardware/radio/CdmaSmsWriteArgsStatus.aidl
new file mode 100644
index 0000000..009e8a9
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaSmsWriteArgsStatus.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum CdmaSmsWriteArgsStatus {
+    REC_UNREAD,
+    REC_READ,
+    STO_UNSENT,
+    STO_SENT,
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaSubscriptionSource.aidl b/radio/aidl/android/hardware/radio/CdmaSubscriptionSource.aidl
new file mode 100644
index 0000000..b83e81a
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaSubscriptionSource.aidl
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum CdmaSubscriptionSource {
+    RUIM_SIM,
+    NV,
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaT53AudioControlInfoRecord.aidl b/radio/aidl/android/hardware/radio/CdmaT53AudioControlInfoRecord.aidl
new file mode 100644
index 0000000..715a2f7
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaT53AudioControlInfoRecord.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * T53 Audio Control Information Record
+ */
+@VintfStability
+parcelable CdmaT53AudioControlInfoRecord {
+    byte upLink;
+    byte downLink;
+}
diff --git a/radio/aidl/android/hardware/radio/CdmaT53ClirInfoRecord.aidl b/radio/aidl/android/hardware/radio/CdmaT53ClirInfoRecord.aidl
new file mode 100644
index 0000000..636d40c
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CdmaT53ClirInfoRecord.aidl
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * T53 CLIR Information Record
+ */
+@VintfStability
+parcelable CdmaT53ClirInfoRecord {
+    byte cause;
+}
diff --git a/radio/aidl/android/hardware/radio/CellConfigLte.aidl b/radio/aidl/android/hardware/radio/CellConfigLte.aidl
new file mode 100644
index 0000000..56a1a10
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CellConfigLte.aidl
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Contains the configuration of the LTE cell tower.
+ */
+@VintfStability
+parcelable CellConfigLte {
+    /**
+     * Indicates that if E-UTRA-NR Dual Connectivity (EN-DC) is supported by the LTE cell.
+     * True if the plmn-InfoList-r15 is present in SIB2 and at least one bit in this list is true,
+     * otherwise this value should be false.
+     * Reference: 3GPP TS 36.331 v15.2.2 6.3.1 System information blocks.
+     */
+    boolean isEndcAvailable;
+}
diff --git a/radio/aidl/android/hardware/radio/CellConnectionStatus.aidl b/radio/aidl/android/hardware/radio/CellConnectionStatus.aidl
new file mode 100644
index 0000000..faa9b28
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CellConnectionStatus.aidl
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum CellConnectionStatus {
+    /**
+     * Cell is not a serving cell.
+     */
+    NONE,
+    /**
+     * UE has connection to cell for signalling and possibly data (3GPP 36.331, 25.331).
+     */
+    PRIMARY_SERVING,
+    /**
+     * UE has connection to cell for data (3GPP 36.331, 25.331).
+     */
+    SECONDARY_SERVING,
+}
diff --git a/radio/aidl/android/hardware/radio/CellIdentity.aidl b/radio/aidl/android/hardware/radio/CellIdentity.aidl
new file mode 100644
index 0000000..abfcc9d
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CellIdentity.aidl
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CellIdentityCdma;
+import android.hardware.radio.CellIdentityGsm;
+import android.hardware.radio.CellIdentityLte;
+import android.hardware.radio.CellIdentityNr;
+import android.hardware.radio.CellIdentityTdscdma;
+import android.hardware.radio.CellIdentityWcdma;
+
+/**
+ * A union representing the CellIdentity of a single cell.
+ */
+@VintfStability
+union CellIdentity {
+    boolean noinit;
+    CellIdentityGsm gsm;
+    CellIdentityWcdma wcdma;
+    CellIdentityTdscdma tdscdma;
+    CellIdentityCdma cdma;
+    CellIdentityLte lte;
+    CellIdentityNr nr;
+}
diff --git a/radio/aidl/android/hardware/radio/CellIdentityCdma.aidl b/radio/aidl/android/hardware/radio/CellIdentityCdma.aidl
new file mode 100644
index 0000000..56867e9
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CellIdentityCdma.aidl
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CellIdentityOperatorNames;
+
+@VintfStability
+parcelable CellIdentityCdma {
+    /**
+     * Network Id 0..65535, INT_MAX if unknown
+     */
+    int networkId;
+    /**
+     * CDMA System Id 0..32767, INT_MAX if unknown
+     */
+    int systemId;
+    /**
+     * Base Station Id 0..65535, INT_MAX if unknown
+     */
+    int baseStationId;
+    /**
+     * Longitude is a decimal number as specified in 3GPP2 C.S0005-A v6.0. It is represented in
+     * units of 0.25 seconds and ranges from -2592000 to 2592000, both values inclusive
+     * (corresponding to a range of -180 to +180 degrees). INT_MAX if unknown
+     */
+    int longitude;
+    /**
+     * Latitude is a decimal number as specified in 3GPP2 C.S0005-A v6.0. It is represented in
+     * units of 0.25 seconds and ranges from -1296000 to 1296000, both values inclusive
+     * (corresponding to a range of -90 to +90 degrees). INT_MAX if unknown
+     */
+    int latitude;
+    CellIdentityOperatorNames operatorNames;
+}
diff --git a/radio/aidl/android/hardware/radio/CellIdentityGsm.aidl b/radio/aidl/android/hardware/radio/CellIdentityGsm.aidl
new file mode 100644
index 0000000..f1c5042
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CellIdentityGsm.aidl
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CellIdentityOperatorNames;
+
+@VintfStability
+parcelable CellIdentityGsm {
+    /**
+     * 3-digit Mobile Country Code, 0..999, empty string if unknown
+     */
+    String mcc;
+    /**
+     * 2 or 3-digit Mobile Network Code, 0..999, empty string if unknown
+     */
+    String mnc;
+    /**
+     * 16-bit Location Area Code, 0..65535, INT_MAX if unknown
+     */
+    int lac;
+    /**
+     * 16-bit GSM Cell Identity described in TS 27.007, 0..65535, INT_MAX if unknown
+     */
+    int cid;
+    /**
+     * 16-bit GSM Absolute RF channel number; this value must be valid
+     */
+    int arfcn;
+    /**
+     * 6-bit Base Station Identity Code, 0xFF if unknown
+     */
+    byte bsic;
+    CellIdentityOperatorNames operatorNames;
+    /**
+     * Additional PLMN-IDs beyond the primary PLMN broadcast for this cell
+     */
+    String[] additionalPlmns;
+}
diff --git a/radio/aidl/android/hardware/radio/CellIdentityLte.aidl b/radio/aidl/android/hardware/radio/CellIdentityLte.aidl
new file mode 100644
index 0000000..f7f8fef
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CellIdentityLte.aidl
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CellIdentityOperatorNames;
+import android.hardware.radio.EutranBands;
+import android.hardware.radio.OptionalCsgInfo;
+
+@VintfStability
+parcelable CellIdentityLte {
+    /**
+     * 3-digit Mobile Country Code, 0..999, empty string if unknown
+     */
+    String mcc;
+    /**
+     * 2 or 3-digit Mobile Network Code, 0..999, empty string if unknown
+     */
+    String mnc;
+    /**
+     * 28-bit Cell Identity described in TS TS 27.007, INT_MAX if unknown
+     */
+    int ci;
+    /**
+     * Physical cell id 0..503; this value must be valid
+     */
+    int pci;
+    /**
+     * 16-bit tracking area code, INT_MAX if unknown
+     */
+    int tac;
+    /**
+     * 18-bit LTE Absolute RF Channel Number; this value must be valid
+     */
+    int earfcn;
+    CellIdentityOperatorNames operatorNames;
+    /**
+     * Cell bandwidth, in kHz.
+     */
+    int bandwidth;
+    /**
+     * Additional PLMN-IDs beyond the primary PLMN broadcast for this cell
+     */
+    String[] additionalPlmns;
+    /**
+     * Information about any closed subscriber group ID for this cell
+     */
+    OptionalCsgInfo optionalCsgInfo;
+    /**
+     * Bands used by the cell.
+     */
+    EutranBands[] bands;
+}
diff --git a/radio/aidl/android/hardware/radio/CellIdentityNr.aidl b/radio/aidl/android/hardware/radio/CellIdentityNr.aidl
new file mode 100644
index 0000000..6879c63
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CellIdentityNr.aidl
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CellIdentityOperatorNames;
+import android.hardware.radio.NgranBands;
+
+/**
+ * The CellIdentity structure should be reported once for each element of the PLMN-IdentityInfoList
+ * broadcast in SIB1 CellAccessRelatedInfo as per 3GPP TS 38.331 Section 6.3.2.
+ */
+@VintfStability
+parcelable CellIdentityNr {
+    /**
+     * 3-digit Mobile Country Code, in range[0, 999]; This value must be valid for registered or
+     *  camped cells; INT_MAX means invalid/unreported.
+     */
+    String mcc;
+    /**
+     * 2 or 3-digit Mobile Network Code, in range [0, 999], This value must be valid for
+     * registered or camped cells; INT_MAX means invalid/unreported.
+     */
+    String mnc;
+    /**
+     * NR Cell Identity in range [0, 68719476735] (36 bits) described in 3GPP TS 38.331, which
+     * unambiguously identifies a cell within a PLMN. This value must be valid for registered or
+     * camped cells; LONG_MAX (2^63-1) means invalid/unreported.
+     */
+    long nci;
+    /**
+     * Physical cell id in range [0, 1007] described in 3GPP TS 38.331. This value must be valid.
+     */
+    int pci;
+    /**
+     * 16-bit tracking area code, INT_MAX means invalid/unreported.
+     */
+    int tac;
+    /**
+     * NR Absolute Radio Frequency Channel Number, in range [0, 3279165].
+     * Reference: 3GPP TS 38.101-1 and 3GPP TS 38.101-2 section 5.4.2.1.
+     * This value must be valid.
+     */
+    int nrarfcn;
+    CellIdentityOperatorNames operatorNames;
+    /**
+     * Additional PLMN-IDs beyond the primary PLMN broadcast for this cell
+     */
+    String[] additionalPlmns;
+    /**
+     * Bands used by the cell.
+     */
+    NgranBands[] bands;
+}
diff --git a/radio/aidl/android/hardware/radio/CellIdentityOperatorNames.aidl b/radio/aidl/android/hardware/radio/CellIdentityOperatorNames.aidl
new file mode 100644
index 0000000..dea9929
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CellIdentityOperatorNames.aidl
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+parcelable CellIdentityOperatorNames {
+    /**
+     * Long alpha operator name string or enhanced operator name string.
+     */
+    String alphaLong;
+    /**
+     * Short alpha operator name string or enhanced operator name string.
+     */
+    String alphaShort;
+}
diff --git a/radio/aidl/android/hardware/radio/CellIdentityTdscdma.aidl b/radio/aidl/android/hardware/radio/CellIdentityTdscdma.aidl
new file mode 100644
index 0000000..8268bba
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CellIdentityTdscdma.aidl
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CellIdentityOperatorNames;
+import android.hardware.radio.OptionalCsgInfo;
+
+@VintfStability
+parcelable CellIdentityTdscdma {
+    /**
+     * 3-digit Mobile Country Code, 0..999, empty string if unknown.
+     */
+    String mcc;
+    /**
+     * 2 or 3-digit Mobile Network Code, 0..999, empty string if unknown.
+     */
+    String mnc;
+    /**
+     * 16-bit Location Area Code, 0..65535, INT_MAX if unknown.
+     */
+    int lac;
+    /**
+     * 28-bit UMTS Cell Identity described in TS 25.331, 0..268435455, INT_MAX if unknown.
+     */
+    int cid;
+    /**
+     * 8-bit Cell Parameters ID described in TS 25.331, 0..127, INT_MAX if unknown.
+     */
+    int cpid;
+    /**
+     * 16-bit UMTS Absolute RF Channel Number defined in TS 25.102 5.4.4; this value must be valid.
+     */
+    int uarfcn;
+    CellIdentityOperatorNames operatorNames;
+    /**
+     * Additional PLMN-IDs beyond the primary PLMN broadcast for this cell.
+     */
+    String[] additionalPlmns;
+    /**
+     * Information about any closed subscriber group ID for this cell.
+     */
+    OptionalCsgInfo optionalCsgInfo;
+}
diff --git a/radio/aidl/android/hardware/radio/CellIdentityWcdma.aidl b/radio/aidl/android/hardware/radio/CellIdentityWcdma.aidl
new file mode 100644
index 0000000..667c15b
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CellIdentityWcdma.aidl
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CellIdentityOperatorNames;
+import android.hardware.radio.OptionalCsgInfo;
+
+@VintfStability
+parcelable CellIdentityWcdma {
+    /**
+     * 3-digit Mobile Country Code, 0..999, empty string if unknown.
+     */
+    String mcc;
+    /**
+     * 2 or 3-digit Mobile Network Code, 0..999, empty string if unknown.
+     */
+    String mnc;
+    /**
+     * 16-bit Location Area Code, 0..65535, INT_MAX if unknown.
+     */
+    int lac;
+    /**
+     * 28-bit UMTS Cell Identity described in TS 25.331, 0..268435455, INT_MAX if unknown.
+     */
+    int cid;
+    /**
+     * 9-bit UMTS Primary Scrambling Code described in TS 25.331, 0..511; this value must be valid.
+     */
+    int psc;
+    /**
+     * 16-bit UMTS Absolute RF Channel Number; this value must be valid.
+     */
+    int uarfcn;
+    CellIdentityOperatorNames operatorNames;
+    /**
+     * Additional PLMN-IDs beyond the primary PLMN broadcast for this cell.
+     */
+    String[] additionalPlmns;
+    /**
+     * Information about any closed subscriber group ID for this cell.
+     */
+    OptionalCsgInfo optionalCsgInfo;
+}
diff --git a/radio/aidl/android/hardware/radio/CellInfo.aidl b/radio/aidl/android/hardware/radio/CellInfo.aidl
new file mode 100644
index 0000000..fe4f330
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CellInfo.aidl
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CellConnectionStatus;
+import android.hardware.radio.CellInfoCellInfoRatSpecificInfo;
+
+@VintfStability
+parcelable CellInfo {
+    /**
+     * True if this cell is registered false if not registered.
+     */
+    boolean registered;
+    /**
+     * Connection status for the cell.
+     */
+    CellConnectionStatus connectionStatus;
+    CellInfoCellInfoRatSpecificInfo ratSpecificInfo;
+}
diff --git a/radio/aidl/android/hardware/radio/CellInfoCdma.aidl b/radio/aidl/android/hardware/radio/CellInfoCdma.aidl
new file mode 100644
index 0000000..27a35d1
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CellInfoCdma.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CdmaSignalStrength;
+import android.hardware.radio.CellIdentityCdma;
+import android.hardware.radio.EvdoSignalStrength;
+
+@VintfStability
+parcelable CellInfoCdma {
+    CellIdentityCdma cellIdentityCdma;
+    CdmaSignalStrength signalStrengthCdma;
+    EvdoSignalStrength signalStrengthEvdo;
+}
diff --git a/radio/aidl/android/hardware/radio/CellInfoCellInfoRatSpecificInfo.aidl b/radio/aidl/android/hardware/radio/CellInfoCellInfoRatSpecificInfo.aidl
new file mode 100644
index 0000000..cdd3386
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CellInfoCellInfoRatSpecificInfo.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CellInfoCdma;
+import android.hardware.radio.CellInfoGsm;
+import android.hardware.radio.CellInfoLte;
+import android.hardware.radio.CellInfoNr;
+import android.hardware.radio.CellInfoTdscdma;
+import android.hardware.radio.CellInfoWcdma;
+
+@VintfStability
+union CellInfoCellInfoRatSpecificInfo {
+    /**
+     * 3gpp CellInfo types.
+     */
+    CellInfoGsm gsm;
+    CellInfoWcdma wcdma;
+    CellInfoTdscdma tdscdma;
+    CellInfoLte lte;
+    CellInfoNr nr;
+    /**
+     * 3gpp2 CellInfo types;
+     */
+    CellInfoCdma cdma;
+}
diff --git a/radio/aidl/android/hardware/radio/CellInfoGsm.aidl b/radio/aidl/android/hardware/radio/CellInfoGsm.aidl
new file mode 100644
index 0000000..16ba857
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CellInfoGsm.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CellIdentityGsm;
+import android.hardware.radio.GsmSignalStrength;
+
+@VintfStability
+parcelable CellInfoGsm {
+    CellIdentityGsm cellIdentityGsm;
+    GsmSignalStrength signalStrengthGsm;
+}
diff --git a/radio/aidl/android/hardware/radio/CellInfoInfo.aidl b/radio/aidl/android/hardware/radio/CellInfoInfo.aidl
new file mode 100644
index 0000000..4d5e12d
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CellInfoInfo.aidl
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CellInfoCdma;
+import android.hardware.radio.CellInfoGsm;
+import android.hardware.radio.CellInfoLte;
+import android.hardware.radio.CellInfoNr;
+import android.hardware.radio.CellInfoTdscdma;
+import android.hardware.radio.CellInfoWcdma;
+
+@VintfStability
+union CellInfoInfo {
+    CellInfoGsm gsm;
+    CellInfoCdma cdma;
+    CellInfoWcdma wcdma;
+    CellInfoTdscdma tdscdma;
+    CellInfoLte lte;
+    CellInfoNr nr;
+}
diff --git a/radio/aidl/android/hardware/radio/CellInfoLte.aidl b/radio/aidl/android/hardware/radio/CellInfoLte.aidl
new file mode 100644
index 0000000..d3389c1
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CellInfoLte.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CellIdentityLte;
+import android.hardware.radio.LteSignalStrength;
+
+@VintfStability
+parcelable CellInfoLte {
+    CellIdentityLte cellIdentityLte;
+    LteSignalStrength signalStrengthLte;
+}
diff --git a/radio/aidl/android/hardware/radio/CellInfoNr.aidl b/radio/aidl/android/hardware/radio/CellInfoNr.aidl
new file mode 100644
index 0000000..b1f311f
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CellInfoNr.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CellIdentityNr;
+import android.hardware.radio.NrSignalStrength;
+
+@VintfStability
+parcelable CellInfoNr {
+    CellIdentityNr cellIdentityNr;
+    NrSignalStrength signalStrengthNr;
+}
diff --git a/radio/aidl/android/hardware/radio/CellInfoTdscdma.aidl b/radio/aidl/android/hardware/radio/CellInfoTdscdma.aidl
new file mode 100644
index 0000000..b7d09bc
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CellInfoTdscdma.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CellIdentityTdscdma;
+import android.hardware.radio.TdscdmaSignalStrength;
+
+@VintfStability
+parcelable CellInfoTdscdma {
+    CellIdentityTdscdma cellIdentityTdscdma;
+    TdscdmaSignalStrength signalStrengthTdscdma;
+}
diff --git a/radio/aidl/android/hardware/radio/CellInfoType.aidl b/radio/aidl/android/hardware/radio/CellInfoType.aidl
new file mode 100644
index 0000000..8e5e8c9
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CellInfoType.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum CellInfoType {
+    NONE,
+    GSM,
+    CDMA,
+    LTE,
+    WCDMA,
+    TD_SCDMA,
+}
diff --git a/radio/aidl/android/hardware/radio/CellInfoWcdma.aidl b/radio/aidl/android/hardware/radio/CellInfoWcdma.aidl
new file mode 100644
index 0000000..03b0863
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CellInfoWcdma.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CellIdentityWcdma;
+import android.hardware.radio.WcdmaSignalStrength;
+
+@VintfStability
+parcelable CellInfoWcdma {
+    CellIdentityWcdma cellIdentityWcdma;
+    WcdmaSignalStrength signalStrengthWcdma;
+}
diff --git a/radio/aidl/android/hardware/radio/CfData.aidl b/radio/aidl/android/hardware/radio/CfData.aidl
new file mode 100644
index 0000000..c6a91b9
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/CfData.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CallForwardInfo;
+
+@VintfStability
+parcelable CfData {
+    /**
+     * This is the response data for SS request to query call forward status.
+     * See getCallForwardStatus(). Max size = RadioConst:NUM_SERVICE_CLASSES.
+     */
+    CallForwardInfo[] cfInfo;
+}
diff --git a/radio/aidl/android/hardware/radio/ClipStatus.aidl b/radio/aidl/android/hardware/radio/ClipStatus.aidl
new file mode 100644
index 0000000..c75c609
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/ClipStatus.aidl
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum ClipStatus {
+    /**
+     * CLIP provisioned
+     */
+    CLIP_PROVISIONED,
+    /**
+     * CLIP not provisioned
+     */
+    CLIP_UNPROVISIONED,
+    /**
+     * Unknown, e.g. no networks etc
+     */
+    UNKNOWN,
+}
diff --git a/radio/aidl/android/hardware/radio/Clir.aidl b/radio/aidl/android/hardware/radio/Clir.aidl
new file mode 100644
index 0000000..a13ff9d
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/Clir.aidl
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum Clir {
+    /**
+     * Use subscription default value
+     */
+    DEFAULT,
+    /**
+     * Restrict CLI presentation
+     */
+    INVOCATION,
+    /**
+     * Allow CLI presentation
+     */
+    SUPPRESSION,
+}
diff --git a/radio/aidl/android/hardware/radio/ClosedSubscriberGroupInfo.aidl b/radio/aidl/android/hardware/radio/ClosedSubscriberGroupInfo.aidl
new file mode 100644
index 0000000..7c6fb7a
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/ClosedSubscriberGroupInfo.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+parcelable ClosedSubscriberGroupInfo {
+    /**
+     * Indicates whether the cell is restricted to only CSG members. A cell not broadcasting the
+     * CSG Indication but reporting CSG information is considered a Hybrid Cell.
+     * Refer to the "csg-Indication" field in 3GPP TS 36.331 section 6.2.2
+     * SystemInformationBlockType1.
+     * Also refer to "CSG Indicator" in 3GPP TS 25.331 section 10.2.48.8.1 and TS 25.304.
+     */
+    boolean csgIndication;
+    /**
+     * The human-readable name of the closed subscriber group operating this cell.
+     * Refer to "hnb-Name" in TS 36.331 section 6.2.2 SystemInformationBlockType9.
+     * Also refer to "HNB Name" in 3GPP TS25.331 section 10.2.48.8.23 and TS 23.003 section 4.8.
+     */
+    String homeNodebName;
+    /**
+     * The identity of the closed subscriber group that the cell belongs to.
+     * Refer to "CSG-Identity" in TS 36.336 section 6.3.4.
+     * Also refer to "CSG Identity" in 3GPP TS 25.331 section 10.3.2.8 and TS 23.003 section 4.7.
+     */
+    int csgIdentity;
+}
diff --git a/radio/aidl/android/hardware/radio/DataCallFailCause.aidl b/radio/aidl/android/hardware/radio/DataCallFailCause.aidl
new file mode 100644
index 0000000..021988b
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/DataCallFailCause.aidl
@@ -0,0 +1,1303 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum DataCallFailCause {
+    /**
+     * An integer cause code defined in TS 24.008 section 6.1.3.1.3 or TS 24.301 Release 8+ Annex B.
+     * If the implementation does not have access to the exact cause codes, then it must return one
+     * of the following values, as the UI layer needs to distinguish these cases for error
+     * notification and potential retries.
+     */
+    NONE = 0,
+    /**
+     * No retry
+     */
+    OPERATOR_BARRED = 0x08,
+    /**
+     * PDP_FAIL_LLC_SNDCP = 0x19
+     */
+    NAS_SIGNALLING = 0x0E,
+    INSUFFICIENT_RESOURCES = 0x1A,
+    /**
+     * No retry
+     */
+    MISSING_UNKNOWN_APN = 0x1B,
+    /**
+     * No retry
+     */
+    UNKNOWN_PDP_ADDRESS_TYPE = 0x1C,
+    /**
+     * No retry
+     */
+    USER_AUTHENTICATION = 0x1D,
+    /**
+     * No retry
+     */
+    ACTIVATION_REJECT_GGSN = 0x1E,
+    ACTIVATION_REJECT_UNSPECIFIED = 0x1F,
+    /**
+     * No retry
+     */
+    SERVICE_OPTION_NOT_SUPPORTED = 0x20,
+    /**
+     * No retry
+     */
+    SERVICE_OPTION_NOT_SUBSCRIBED = 0x21,
+    SERVICE_OPTION_OUT_OF_ORDER = 0x22,
+    /**
+     * No retry
+     */
+    NSAPI_IN_USE = 0x23,
+    /**
+     * Possibly restart radio, based on framework config
+     */
+    REGULAR_DEACTIVATION = 0x24,
+    QOS_NOT_ACCEPTED = 0x25,
+    NETWORK_FAILURE = 0x26,
+    UMTS_REACTIVATION_REQ = 0x27,
+    FEATURE_NOT_SUPP = 0x28,
+    TFT_SEMANTIC_ERROR = 0x29,
+    TFT_SYTAX_ERROR = 0x2A,
+    UNKNOWN_PDP_CONTEXT = 0x2B,
+    FILTER_SEMANTIC_ERROR = 0x2C,
+    FILTER_SYTAX_ERROR = 0x2D,
+    PDP_WITHOUT_ACTIVE_TFT = 0x2E,
+    /**
+     * No retry
+     */
+    ONLY_IPV4_ALLOWED = 0x32,
+    /**
+     * No retry
+     */
+    ONLY_IPV6_ALLOWED = 0x33,
+    ONLY_SINGLE_BEARER_ALLOWED = 0x34,
+    ESM_INFO_NOT_RECEIVED = 0x35,
+    PDN_CONN_DOES_NOT_EXIST = 0x36,
+    MULTI_CONN_TO_SAME_PDN_NOT_ALLOWED = 0x37,
+    MAX_ACTIVE_PDP_CONTEXT_REACHED = 0x41,
+    UNSUPPORTED_APN_IN_CURRENT_PLMN = 0x42,
+    INVALID_TRANSACTION_ID = 0x51,
+    MESSAGE_INCORRECT_SEMANTIC = 0x5F,
+    INVALID_MANDATORY_INFO = 0x60,
+    MESSAGE_TYPE_UNSUPPORTED = 0x61,
+    MSG_TYPE_NONCOMPATIBLE_STATE = 0x62,
+    UNKNOWN_INFO_ELEMENT = 0x63,
+    CONDITIONAL_IE_ERROR = 0x64,
+    MSG_AND_PROTOCOL_STATE_UNCOMPATIBLE = 0x65,
+    /**
+     * No retry
+     */
+    PROTOCOL_ERRORS = 0x6F,
+    APN_TYPE_CONFLICT = 0x70,
+    INVALID_PCSCF_ADDR = 0x71,
+    INTERNAL_CALL_PREEMPT_BY_HIGH_PRIO_APN = 0x72,
+    EMM_ACCESS_BARRED = 0x73,
+    EMERGENCY_IFACE_ONLY = 0x74,
+    IFACE_MISMATCH = 0x75,
+    COMPANION_IFACE_IN_USE = 0x76,
+    IP_ADDRESS_MISMATCH = 0x77,
+    IFACE_AND_POL_FAMILY_MISMATCH = 0x78,
+    EMM_ACCESS_BARRED_INFINITE_RETRY = 0x79,
+    AUTH_FAILURE_ON_EMERGENCY_CALL = 0x7A,
+    OEM_DCFAILCAUSE_1 = 0x1001,
+    OEM_DCFAILCAUSE_2 = 0x1002,
+    OEM_DCFAILCAUSE_3 = 0x1003,
+    OEM_DCFAILCAUSE_4 = 0x1004,
+    OEM_DCFAILCAUSE_5 = 0x1005,
+    OEM_DCFAILCAUSE_6 = 0x1006,
+    OEM_DCFAILCAUSE_7 = 0x1007,
+    OEM_DCFAILCAUSE_8 = 0x1008,
+    OEM_DCFAILCAUSE_9 = 0x1009,
+    OEM_DCFAILCAUSE_10 = 0x100A,
+    OEM_DCFAILCAUSE_11 = 0x100B,
+    OEM_DCFAILCAUSE_12 = 0x100C,
+    OEM_DCFAILCAUSE_13 = 0x100D,
+    OEM_DCFAILCAUSE_14 = 0x100E,
+    OEM_DCFAILCAUSE_15 = 0x100F,
+    /**
+     * Not mentioned in the specification
+     */
+    VOICE_REGISTRATION_FAIL = -1,
+    /**
+     * Not mentioned in the specification
+     */
+    DATA_REGISTRATION_FAIL = -2,
+    /**
+     * Network/modem disonnect
+     */
+    SIGNAL_LOST = -3,
+    /**
+     * Preferred technology has changed, must retry with parameters appropriate for new technology
+     */
+    PREF_RADIO_TECH_CHANGED = -4,
+    /**
+     * Data call was disconnected because radio was resetting, powered off - no retry
+     */
+    RADIO_POWER_OFF = -5,
+    /**
+     * Data call was disconnected by modem because tethered mode was up on same APN/data profile
+     * No retry until tethered call is off
+     */
+    TETHERED_CALL_ACTIVE = -6,
+    ERROR_UNSPECIFIED = 0xffff,
+    /**
+     * Network cannot provide the requested service and PDP context is deactivated because of LLC
+     * or SNDCP failure.
+     */
+    LLC_SNDCP = 0x19,
+    /**
+     * UE requested to modify QoS parameters or the bearer control mode, which is not compatible
+     * with the selected bearer control mode.
+     */
+    ACTIVATION_REJECTED_BCM_VIOLATION = 0x30,
+    /**
+     * Network has already initiated the activation, modification, or deactivation of bearer
+     * resources that was requested by the UE.
+     */
+    COLLISION_WITH_NETWORK_INITIATED_REQUEST = 0x38,
+    /**
+     * Network supports IPv4v6 PDP type only. Non-IP type is not allowed. In LTE mode of operation,
+     * this is a PDN throttling cause code, meaning the UE may throttle further requests to the
+     * same APN.
+     */
+    ONLY_IPV4V6_ALLOWED = 0x39,
+    /**
+     * Network supports non-IP PDP type only. IPv4, IPv6 and IPv4v6 is not allowed. In LTE mode of
+     * operation, this is a PDN throttling cause code, meaning the UE can throttle further requests
+     * to the same APN.
+     */
+    ONLY_NON_IP_ALLOWED = 0x3A,
+    /**
+     * QCI (QoS Class Identifier) indicated in the UE request cannot be supported.
+     */
+    UNSUPPORTED_QCI_VALUE = 0x3B,
+    /**
+     * Procedure requested by the UE was rejected because the bearer handling is not supported.
+     */
+    BEARER_HANDLING_NOT_SUPPORTED = 0x3C,
+    /**
+     * Not receiving a DNS address that was mandatory.
+     */
+    INVALID_DNS_ADDR = 0x7B,
+    /**
+     * Not receiving either a PCSCF or a DNS address, one of them being mandatory.
+     */
+    INVALID_PCSCF_OR_DNS_ADDRESS = 0x7C,
+    /**
+     * Emergency call bring up on a different ePDG.
+     */
+    CALL_PREEMPT_BY_EMERGENCY_APN = 0x7F,
+    /**
+     * UE performs a detach or disconnect PDN action based on TE requirements.
+     */
+    UE_INITIATED_DETACH_OR_DISCONNECT = 0x80,
+    /**
+     * Reason unspecified for foreign agent rejected MIP (Mobile IP) registration.
+     */
+    MIP_FA_REASON_UNSPECIFIED = 0x7D0,
+    /**
+     * Foreign agent administratively prohibited MIP (Mobile IP) registration.
+     */
+    MIP_FA_ADMIN_PROHIBITED = 0x7D1,
+    /**
+     * Foreign agent rejected MIP (Mobile IP) registration because of insufficient resources.
+     */
+    MIP_FA_INSUFFICIENT_RESOURCES = 0x7D2,
+    /**
+     * Foreign agent rejected MIP (Mobile IP) registration because of MN-AAA authenticator was
+     * wrong.
+     */
+    MIP_FA_MOBILE_NODE_AUTHENTICATION_FAILURE = 0x7D3,
+    /**
+     * Foreign agent rejected MIP (Mobile IP) registration because of home agent authentication
+     * failure.
+     */
+    MIP_FA_HOME_AGENT_AUTHENTICATION_FAILURE = 0x7D4,
+    /**
+     * Foreign agent rejected MIP (Mobile IP) registration because of requested lifetime was too
+     * long.
+     */
+    MIP_FA_REQUESTED_LIFETIME_TOO_LONG = 0x7D5,
+    /**
+     * Foreign agent rejected MIP (Mobile IP) registration because of malformed request.
+     */
+    MIP_FA_MALFORMED_REQUEST = 0x7D6,
+    /**
+     * Foreign agent rejected MIP (Mobile IP) registration because of malformed reply.
+     */
+    MIP_FA_MALFORMED_REPLY = 0x7D7,
+    /**
+     * Foreign agent rejected MIP (Mobile IP) registration because of requested encapsulation was
+     * unavailable.
+     */
+    MIP_FA_ENCAPSULATION_UNAVAILABLE = 0x7D8,
+    /**
+     * Foreign agent rejected MIP (Mobile IP) registration of VJ Header Compression was unavailable.
+     */
+    MIP_FA_VJ_HEADER_COMPRESSION_UNAVAILABLE = 0x7D9,
+    /**
+     * Foreign agent rejected MIP (Mobile IP) registration because of reverse tunnel was
+     * unavailable.
+     */
+    MIP_FA_REVERSE_TUNNEL_UNAVAILABLE = 0x7DA,
+    /**
+     * Foreign agent rejected MIP (Mobile IP) registration because of reverse tunnel was mandatory
+     * but not requested by device.
+     */
+    MIP_FA_REVERSE_TUNNEL_IS_MANDATORY = 0x7DB,
+    /**
+     * Foreign agent rejected MIP (Mobile IP) registration because of delivery style was not
+     * supported.
+     */
+    MIP_FA_DELIVERY_STYLE_NOT_SUPPORTED = 0x7DC,
+    /**
+     * Foreign agent rejected MIP (Mobile IP) registration because of missing NAI (Network Access
+     * Identifier).
+     */
+    MIP_FA_MISSING_NAI = 0x7DD,
+    /**
+     * Foreign agent rejected MIP (Mobile IP) registration because of missing Home Agent.
+     */
+    MIP_FA_MISSING_HOME_AGENT = 0x7DE,
+    /**
+     * Foreign agent rejected MIP (Mobile IP) registration because of missing Home Address.
+     */
+    MIP_FA_MISSING_HOME_ADDRESS = 0x7DF,
+    /**
+     * Foreign agent rejected MIP (Mobile IP) registration because of unknown challenge.
+     */
+    MIP_FA_UNKNOWN_CHALLENGE = 0x7E0,
+    /**
+     * Foreign agent rejected MIP (Mobile IP) registration because of missing challenge.
+     */
+    MIP_FA_MISSING_CHALLENGE = 0x7E1,
+    /**
+     * Foreign agent rejected MIP (Mobile IP) registration because of stale challenge.
+     */
+    MIP_FA_STALE_CHALLENGE = 0x7E2,
+    /**
+     * Reason unspecified for home agent rejected MIP (Mobile IP) registration.
+     */
+    MIP_HA_REASON_UNSPECIFIED = 0x7E3,
+    /**
+     * Home agent administratively prohibited MIP (Mobile IP) registration.
+     */
+    MIP_HA_ADMIN_PROHIBITED = 0x7E4,
+    /**
+     * Home agent rejected MIP (Mobile IP) registration because of insufficient resources.
+     */
+    MIP_HA_INSUFFICIENT_RESOURCES = 0x7E5,
+    /**
+     * Home agent rejected MIP (Mobile IP) registration because of MN-HA authenticator was wrong.
+     */
+    MIP_HA_MOBILE_NODE_AUTHENTICATION_FAILURE = 0x7E6,
+    /**
+     * Home agent rejected MIP (Mobile IP) registration because of foreign agent authentication
+     * failure.
+     */
+    MIP_HA_FOREIGN_AGENT_AUTHENTICATION_FAILURE = 0x7E7,
+    /**
+     * Home agent rejected MIP (Mobile IP) registration because of registration id mismatch.
+     */
+    MIP_HA_REGISTRATION_ID_MISMATCH = 0x7E8,
+    /**
+     * Home agent rejected MIP (Mobile IP) registration because of malformed request.
+     */
+    MIP_HA_MALFORMED_REQUEST = 0x7E9,
+    /**
+     * Home agent rejected MIP (Mobile IP) registration because of unknown home agent address.
+     */
+    MIP_HA_UNKNOWN_HOME_AGENT_ADDRESS = 0x7EA,
+    /**
+     * Home agent rejected MIP (Mobile IP) registration because of reverse tunnel was unavailable.
+     */
+    MIP_HA_REVERSE_TUNNEL_UNAVAILABLE = 0x7EB,
+    /**
+     * Home agent rejected MIP (Mobile IP) registration because of reverse tunnel is mandatory but
+     * not requested by device.
+     */
+    MIP_HA_REVERSE_TUNNEL_IS_MANDATORY = 0x7EC,
+    /**
+     * Home agent rejected MIP (Mobile IP) registration because of encapsulation unavailable.
+     */
+    MIP_HA_ENCAPSULATION_UNAVAILABLE = 0x7ED,
+    /**
+     * Tearing down is in progress.
+     */
+    CLOSE_IN_PROGRESS = 0x7EE,
+    /**
+     * Brought down by the network.
+     */
+    NETWORK_INITIATED_TERMINATION = 0x7EF,
+    /**
+     * Another application in modem preempts the data call.
+     */
+    MODEM_APP_PREEMPTED = 0x7F0,
+    /**
+     * IPV4 PDN is in throttled state due to network providing only IPV6 address during the previous
+     * VSNCP bringup (subs_limited_to_v6).
+     */
+    PDN_IPV4_CALL_DISALLOWED = 0x7F1,
+    /**
+     * IPV4 PDN is in throttled state due to previous VSNCP bringup failure(s).
+     */
+    PDN_IPV4_CALL_THROTTLED = 0x7F2,
+    /**
+     * IPV6 PDN is in throttled state due to network providing only IPV4 address during the previous
+     * VSNCP bringup (subs_limited_to_v4).
+     */
+    PDN_IPV6_CALL_DISALLOWED = 0x7F3,
+    /**
+     * IPV6 PDN is in throttled state due to previous VSNCP bringup failure(s).
+     */
+    PDN_IPV6_CALL_THROTTLED = 0x7F4,
+    /**
+     * Modem restart.
+     */
+    MODEM_RESTART = 0x7F5,
+    /**
+     * PDP PPP calls are not supported.
+     */
+    PDP_PPP_NOT_SUPPORTED = 0x7F6,
+    /**
+     * RAT on which the data call is attempted/connected is no longer the preferred RAT.
+     */
+    UNPREFERRED_RAT = 0x7F7,
+    /**
+     * Physical link is in the process of cleanup.
+     */
+    PHYSICAL_LINK_CLOSE_IN_PROGRESS = 0x7F8,
+    /**
+     * Interface bring up is attempted for an APN that is yet to be handed over to target RAT.
+     */
+    APN_PENDING_HANDOVER = 0x7F9,
+    /**
+     * APN bearer type in the profile does not match preferred network mode.
+     */
+    PROFILE_BEARER_INCOMPATIBLE = 0x7FA,
+    /**
+     * Card was refreshed or removed.
+     */
+    SIM_CARD_CHANGED = 0x7FB,
+    /**
+     * Device is going into lower power mode or powering down.
+     */
+    LOW_POWER_MODE_OR_POWERING_DOWN = 0x7FC,
+    /**
+     * APN has been disabled.
+     */
+    APN_DISABLED = 0x7FD,
+    /**
+     * Maximum PPP inactivity timer expired.
+     */
+    MAX_PPP_INACTIVITY_TIMER_EXPIRED = 0x7FE,
+    /**
+     * IPv6 address transfer failed.
+     */
+    IPV6_ADDRESS_TRANSFER_FAILED = 0x7FF,
+    /**
+     * Target RAT swap failed.
+     */
+    TRAT_SWAP_FAILED = 0x800,
+    /**
+     * Device falls back from eHRPD to HRPD.
+     */
+    EHRPD_TO_HRPD_FALLBACK = 0x801,
+    /**
+     * UE is in MIP-only configuration but the MIP configuration fails on call bring up due to
+     * incorrect provisioning.
+     */
+    MIP_CONFIG_FAILURE = 0x802,
+    /**
+     * PDN inactivity timer expired due to no data transmission in a configurable duration of time.
+     */
+    PDN_INACTIVITY_TIMER_EXPIRED = 0x803,
+    /**
+     * IPv4 data call bring up is rejected because the UE already maintains the allotted maximum
+     * number of IPv4 data connections.
+     */
+    MAX_IPV4_CONNECTIONS = 0x804,
+    /**
+     * IPv6 data call bring up is rejected because the UE already maintains the allotted maximum
+     * number of IPv6 data connections.
+     */
+    MAX_IPV6_CONNECTIONS = 0x805,
+    /**
+     * New PDN bring up is rejected during interface selection because the UE has already allotted
+     * the available interfaces for other PDNs.
+     */
+    APN_MISMATCH = 0x806,
+    /**
+     * New call bring up is rejected since the existing data call IP type doesn't match the
+     * requested IP.
+     */
+    IP_VERSION_MISMATCH = 0x807,
+    /**
+     * Dial up networking (DUN) call bring up is rejected since UE is in eHRPD RAT.
+     */
+    DUN_CALL_DISALLOWED = 0x808,
+    /**
+     * Rejected/Brought down since UE is transition between EPC and NONEPC RAT.
+     */
+    INTERNAL_EPC_NONEPC_TRANSITION = 0x809,
+    /**
+     * The current interface is being in use.
+     */
+    INTERFACE_IN_USE = 0x80A,
+    /**
+     * PDN connection to the APN is disallowed on the roaming network.
+     */
+    APN_DISALLOWED_ON_ROAMING = 0x80B,
+    /**
+     * APN-related parameters are changed.
+     */
+    APN_PARAMETERS_CHANGED = 0x80C,
+    /**
+     * PDN is attempted to be brought up with NULL APN but NULL APN is not supported.
+     */
+    NULL_APN_DISALLOWED = 0x80D,
+    /**
+     * Thermal level increases and causes calls to be torn down when normal mode of operation is
+     * not allowed.
+     */
+    THERMAL_MITIGATION = 0x80E,
+    /**
+     * PDN Connection to a given APN is disallowed because data is disabled from the device user
+     * interface settings.
+     */
+    DATA_SETTINGS_DISABLED = 0x80F,
+    /**
+     * PDN Connection to a given APN is disallowed because data roaming is disabled from the device
+     * user interface settings and the UE is roaming.
+     */
+    DATA_ROAMING_SETTINGS_DISABLED = 0x810,
+    /**
+     * DDS (Default data subscription) switch occurs.
+     */
+    DDS_SWITCHED = 0x811,
+    /**
+     * PDN being brought up with an APN that is part of forbidden APN Name list.
+     */
+    FORBIDDEN_APN_NAME = 0x812,
+    /**
+     * Default data subscription switch is in progress.
+     */
+    DDS_SWITCH_IN_PROGRESS = 0x813,
+    /**
+     * Roaming is disallowed during call bring up.
+     */
+    CALL_DISALLOWED_IN_ROAMING = 0x814,
+    /**
+     * UE is unable to bring up a non-IP data call because the device is not camped on a NB1 cell.
+     */
+    NON_IP_NOT_SUPPORTED = 0x815,
+    /**
+     * Non-IP PDN is in throttled state due to previous VSNCP bringup failure(s).
+     */
+    PDN_NON_IP_CALL_THROTTLED = 0x816,
+    /**
+     * Non-IP PDN is in disallowed state due to the network providing only an IP address.
+     */
+    PDN_NON_IP_CALL_DISALLOWED = 0x817,
+    /**
+     * Device in CDMA locked state.
+     */
+    CDMA_LOCK = 0x818,
+    /**
+     * Received an intercept order from the base station.
+     */
+    CDMA_INTERCEPT = 0x819,
+    /**
+     * Receiving a reorder from the base station.
+     */
+    CDMA_REORDER = 0x81A,
+    /**
+     * Receiving a release from the base station with a SO (Service Option) Reject reason.
+     */
+    CDMA_RELEASE_DUE_TO_SO_REJECTION = 0x81B,
+    /**
+     * Receiving an incoming call from the base station.
+     */
+    CDMA_INCOMING_CALL = 0x81C,
+    /**
+     * Received an alert stop from the base station due to incoming only.
+     */
+    CDMA_ALERT_STOP = 0x81D,
+    /**
+     * Channel acquisition failures. This indicates that device has failed acquiring all the
+     * channels in the PRL.
+     */
+    CHANNEL_ACQUISITION_FAILURE = 0x81E,
+    /**
+     * Maximum access probes transmitted.
+     */
+    MAX_ACCESS_PROBE = 0x81F,
+    /**
+     * Concurrent service is not supported by base station.
+     */
+    CONCURRENT_SERVICE_NOT_SUPPORTED_BY_BASE_STATION = 0x820,
+    /**
+     * There was no response received from the base station.
+     */
+    NO_RESPONSE_FROM_BASE_STATION = 0x821,
+    /**
+     * The base station rejecting the call.
+     */
+    REJECTED_BY_BASE_STATION = 0x822,
+    /**
+     * The concurrent services requested were not compatible.
+     */
+    CONCURRENT_SERVICES_INCOMPATIBLE = 0x823,
+    /**
+     * Device does not have CDMA service.
+     */
+    NO_CDMA_SERVICE = 0x824,
+    /**
+     * RUIM not being present.
+     */
+    RUIM_NOT_PRESENT = 0x825,
+    /**
+     * Receiving a retry order from the base station.
+     */
+    CDMA_RETRY_ORDER = 0x826,
+    /**
+     * Access blocked by the base station.
+     */
+    ACCESS_BLOCK = 0x827,
+    /**
+     * Access blocked by the base station for all mobile devices.
+     */
+    ACCESS_BLOCK_ALL = 0x828,
+    /**
+     * Maximum access probes for the IS-707B call.
+     */
+    IS707B_MAX_ACCESS_PROBES = 0x829,
+    /**
+     * Put device in thermal emergency.
+     */
+    THERMAL_EMERGENCY = 0x82A,
+    /**
+     * In favor of a voice call or SMS when concurrent voice and data are not supported.
+     */
+    CONCURRENT_SERVICES_NOT_ALLOWED = 0x82B,
+    /**
+     * The other clients rejected incoming call.
+     */
+    INCOMING_CALL_REJECTED = 0x82C,
+    /**
+     * No service on the gateway.
+     */
+    NO_SERVICE_ON_GATEWAY = 0x82D,
+    /**
+     * GPRS context is not available.
+     */
+    NO_GPRS_CONTEXT = 0x82E,
+    /**
+     * Network refuses service to the MS because either an identity of the MS is not acceptable to
+     * the network or the MS does not pass the authentication check.
+     */
+    ILLEGAL_MS = 0x82F,
+    /**
+     * ME could not be authenticated and the ME used is not acceptable to the network.
+     */
+    ILLEGAL_ME = 0x830,
+    /**
+     * Not allowed to operate either GPRS or non-GPRS services.
+     */
+    GPRS_SERVICES_AND_NON_GPRS_SERVICES_NOT_ALLOWED = 0x831,
+    /**
+     * MS is not allowed to operate GPRS services.
+     */
+    GPRS_SERVICES_NOT_ALLOWED = 0x832,
+    /**
+     * No matching identity or context could be found in the network.
+     */
+    MS_IDENTITY_CANNOT_BE_DERIVED_BY_THE_NETWORK = 0x833,
+    /**
+     * Mobile reachable timer has expired, or the GMM context data related to the subscription does
+     * not exist in the SGSN.
+     */
+    IMPLICITLY_DETACHED = 0x834,
+    /**
+     * UE requests GPRS service, or the network initiates a detach request in a PLMN which does not
+     * offer roaming for GPRS services to that MS.
+     */
+    PLMN_NOT_ALLOWED = 0x835,
+    /**
+     * MS requests service, or the network initiates a detach request, in a location area where the
+     * HPLMN determines that the MS, by subscription, is not allowed to operate.
+     */
+    LOCATION_AREA_NOT_ALLOWED = 0x836,
+    /**
+     * UE requests GPRS service or the network initiates a detach request in a PLMN that does not
+     * offer roaming for GPRS services.
+     */
+    GPRS_SERVICES_NOT_ALLOWED_IN_THIS_PLMN = 0x837,
+    /**
+     * PDP context already exists.
+     */
+    PDP_DUPLICATE = 0x838,
+    /**
+     * RAT change on the UE.
+     */
+    UE_RAT_CHANGE = 0x839,
+    /**
+     * Network cannot serve a request from the MS due to congestion.
+     */
+    CONGESTION = 0x83A,
+    /**
+     * MS requests an establishment of the radio access bearers for all active PDP contexts by
+     * sending a service request message indicating data to the network, but the SGSN does not have
+     * any active PDP context.
+     */
+    NO_PDP_CONTEXT_ACTIVATED = 0x83B,
+    /**
+     * Access class blocking restrictions for the current camped cell.
+     */
+    ACCESS_CLASS_DSAC_REJECTION = 0x83C,
+    /**
+     * SM attempts PDP activation for a maximum of four attempts.
+     */
+    PDP_ACTIVATE_MAX_RETRY_FAILED = 0x83D,
+    /**
+     * Radio access bearer failure.
+     */
+    RADIO_ACCESS_BEARER_FAILURE = 0x83E,
+    /**
+     * Invalid EPS bearer identity in the request.
+     */
+    ESM_UNKNOWN_EPS_BEARER_CONTEXT = 0x83F,
+    /**
+     * Data radio bearer is released by the RRC.
+     */
+    DRB_RELEASED_BY_RRC = 0x840,
+    /**
+     * Indicate the connection was released.
+     */
+    CONNECTION_RELEASED = 0x841,
+    /**
+     * UE is detached.
+     */
+    EMM_DETACHED = 0x842,
+    /**
+     * Attach procedure is rejected by the network.
+     */
+    EMM_ATTACH_FAILED = 0x843,
+    /**
+     * Attach procedure is started for EMC purposes.
+     */
+    EMM_ATTACH_STARTED = 0x844,
+    /**
+     * Service request procedure failure.
+     */
+    LTE_NAS_SERVICE_REQUEST_FAILED = 0x845,
+    /**
+     * Active dedicated bearer was requested using the same default bearer ID.
+     */
+    DUPLICATE_BEARER_ID = 0x846,
+    /**
+     * Collision scenarios for the UE and network-initiated procedures.
+     */
+    ESM_COLLISION_SCENARIOS = 0x847,
+    /**
+     * Bearer must be deactivated to synchronize with the network.
+     */
+    ESM_BEARER_DEACTIVATED_TO_SYNC_WITH_NETWORK = 0x848,
+    /**
+     * Active dedicated bearer was requested for an existing default bearer.
+     */
+    ESM_NW_ACTIVATED_DED_BEARER_WITH_ID_OF_DEF_BEARER = 0x849,
+    /**
+     * Bad OTA message is received from the network.
+     */
+    ESM_BAD_OTA_MESSAGE = 0x84A,
+    /**
+     * Download server rejected the call.
+     */
+    ESM_DOWNLOAD_SERVER_REJECTED_THE_CALL = 0x84B,
+    /**
+     * PDN was disconnected by the downlaod server due to IRAT.
+     */
+    ESM_CONTEXT_TRANSFERRED_DUE_TO_IRAT = 0x84C,
+    /**
+     * Dedicated bearer will be deactivated regardless of the network response.
+     */
+    DS_EXPLICIT_DEACTIVATION = 0x84D,
+    /**
+     * No specific local cause is mentioned, usually a valid OTA cause.
+     */
+    ESM_LOCAL_CAUSE_NONE = 0x84E,
+    /**
+     * Throttling is not needed for this service request failure.
+     */
+    LTE_THROTTLING_NOT_REQUIRED = 0x84F,
+    /**
+     * Access control list check failure at the lower layer.
+     */
+    ACCESS_CONTROL_LIST_CHECK_FAILURE = 0x850,
+    /**
+     * Service is not allowed on the requested PLMN.
+     */
+    SERVICE_NOT_ALLOWED_ON_PLMN = 0x851,
+    /**
+     * T3417 timer expiration of the service request procedure.
+     */
+    EMM_T3417_EXPIRED = 0x852,
+    /**
+     * Extended service request fails due to expiration of the T3417 EXT timer.
+     */
+    EMM_T3417_EXT_EXPIRED = 0x853,
+    /**
+     * Transmission failure of radio resource control (RRC) uplink data.
+     */
+    RRC_UPLINK_DATA_TRANSMISSION_FAILURE = 0x854,
+    /**
+     * Radio resource control (RRC) uplink data delivery failed due to a handover.
+     */
+    RRC_UPLINK_DELIVERY_FAILED_DUE_TO_HANDOVER = 0x855,
+    /**
+     * Radio resource control (RRC) uplink data delivery failed due to a connection release.
+     */
+    RRC_UPLINK_CONNECTION_RELEASE = 0x856,
+    /**
+     * Radio resource control (RRC) uplink data delivery failed due to a radio link failure.
+     */
+    RRC_UPLINK_RADIO_LINK_FAILURE = 0x857,
+    /**
+     * Radio resource control (RRC) is not connected but the non-access stratum (NAS) sends an
+     * uplink data request.
+     */
+    RRC_UPLINK_ERROR_REQUEST_FROM_NAS = 0x858,
+    /**
+     * Radio resource control (RRC) connection failure at access stratum.
+     */
+    RRC_CONNECTION_ACCESS_STRATUM_FAILURE = 0x859,
+    /**
+     * Radio resource control (RRC) connection establishment is aborted due to another procedure.
+     */
+    RRC_CONNECTION_ANOTHER_PROCEDURE_IN_PROGRESS = 0x85A,
+    /**
+     * Radio resource control (RRC) connection establishment failed due to access barrred.
+     */
+    RRC_CONNECTION_ACCESS_BARRED = 0x85B,
+    /**
+     * Radio resource control (RRC) connection establishment failed due to cell reselection at
+     * access stratum.
+     */
+    RRC_CONNECTION_CELL_RESELECTION = 0x85C,
+    /**
+     * Connection establishment failed due to configuration failure at the radio resource control
+     * (RRC).
+     */
+    RRC_CONNECTION_CONFIG_FAILURE = 0x85D,
+    /**
+     * Radio resource control (RRC) connection could not be established in the time limit.
+     */
+    RRC_CONNECTION_TIMER_EXPIRED = 0x85E,
+    /**
+     * Connection establishment failed due to a link failure at the radio resource control (RRC).
+     */
+    RRC_CONNECTION_LINK_FAILURE = 0x85F,
+    /**
+     * Connection establishment failed as the radio resource control (RRC) is not camped on any
+     * cell.
+     */
+    RRC_CONNECTION_CELL_NOT_CAMPED = 0x860,
+    /**
+     * Connection establishment failed due to a service interval failure at the radio resource
+     * control (RRC).
+     */
+    RRC_CONNECTION_SYSTEM_INTERVAL_FAILURE = 0x861,
+    /**
+     * Radio resource control (RRC) connection establishment failed due to the network rejecting the
+     * UE connection request.
+     */
+    RRC_CONNECTION_REJECT_BY_NETWORK = 0x862,
+    /**
+     * Normal radio resource control (RRC) connection release.
+     */
+    RRC_CONNECTION_NORMAL_RELEASE = 0x863,
+    /**
+     * Radio resource control (RRC) connection release failed due to radio link failure conditions.
+     */
+    RRC_CONNECTION_RADIO_LINK_FAILURE = 0x864,
+    /**
+     * Radio resource control (RRC) connection re-establishment failure.
+     */
+    RRC_CONNECTION_REESTABLISHMENT_FAILURE = 0x865,
+    /**
+     * UE is out of service during the call register.
+     */
+    RRC_CONNECTION_OUT_OF_SERVICE_DURING_CELL_REGISTER = 0x866,
+    /**
+     * Connection has been released by the radio resource control (RRC) due to an abort request.
+     */
+    RRC_CONNECTION_ABORT_REQUEST = 0x867,
+    /**
+     * Radio resource control (RRC) connection released due to a system information block read
+     * error.
+     */
+    RRC_CONNECTION_SYSTEM_INFORMATION_BLOCK_READ_ERROR = 0x868,
+    /**
+     * Network-initiated detach with reattach.
+     */
+    NETWORK_INITIATED_DETACH_WITH_AUTO_REATTACH = 0x869,
+    /**
+     * Network-initiated detach without reattach.
+     */
+    NETWORK_INITIATED_DETACH_NO_AUTO_REATTACH = 0x86A,
+    /**
+     * ESM procedure maximum attempt timeout failure.
+     */
+    ESM_PROCEDURE_TIME_OUT = 0x86B,
+    /**
+     * No PDP exists with the given connection ID while modifying or deactivating or activation for
+     * an already active PDP.
+     */
+    INVALID_CONNECTION_ID = 0x86C,
+    /**
+     * Maximum NSAPIs have been exceeded during PDP activation.
+     */
+    MAXIMIUM_NSAPIS_EXCEEDED = 0x86D,
+    /**
+     * Primary context for NSAPI does not exist.
+     */
+    INVALID_PRIMARY_NSAPI = 0x86E,
+    /**
+     * Unable to encode the OTA message for MT PDP or deactivate PDP.
+     */
+    CANNOT_ENCODE_OTA_MESSAGE = 0x86F,
+    /**
+     * Radio access bearer is not established by the lower layers during activation, modification,
+     * or deactivation.
+     */
+    RADIO_ACCESS_BEARER_SETUP_FAILURE = 0x870,
+    /**
+     * Expiration of the PDP establish timer with a maximum of five retries.
+     */
+    PDP_ESTABLISH_TIMEOUT_EXPIRED = 0x871,
+    /**
+     * Expiration of the PDP modify timer with a maximum of four retries.
+     */
+    PDP_MODIFY_TIMEOUT_EXPIRED = 0x872,
+    /**
+     * Expiration of the PDP deactivate timer with a maximum of four retries.
+     */
+    PDP_INACTIVE_TIMEOUT_EXPIRED = 0x873,
+    /**
+     * PDP activation failed due to RRC_ABORT or a forbidden PLMN.
+     */
+    PDP_LOWERLAYER_ERROR = 0x874,
+    /**
+     * MO PDP modify collision when the MT PDP is already in progress.
+     */
+    PDP_MODIFY_COLLISION = 0x875,
+    /**
+     * Maximum size of the L2 message was exceeded.
+     */
+    MAXINUM_SIZE_OF_L2_MESSAGE_EXCEEDED = 0x876,
+    /**
+     * Non-access stratum (NAS) request was rejected by the network.
+     */
+    NAS_REQUEST_REJECTED_BY_NETWORK = 0x877,
+    /**
+     * Radio resource control (RRC) connection establishment failure due to an error in the request
+     * message.
+     */
+    RRC_CONNECTION_INVALID_REQUEST = 0x878,
+    /**
+     * Radio resource control (RRC) connection establishment failure due to a change in the tracking
+     * area ID.
+     */
+    RRC_CONNECTION_TRACKING_AREA_ID_CHANGED = 0x879,
+    /**
+     * Radio resource control (RRC) connection establishment failure due to the RF was unavailable.
+     */
+    RRC_CONNECTION_RF_UNAVAILABLE = 0x87A,
+    /**
+     * Radio resource control (RRC) connection was aborted before deactivating the LTE stack due to
+     * a successful LTE to WCDMA/GSM/TD-SCDMA IRAT change.
+     */
+    RRC_CONNECTION_ABORTED_DUE_TO_IRAT_CHANGE = 0x87B,
+    /**
+     * If the UE has an LTE radio link failure before security is established, the radio resource
+     * control (RRC) connection must be released and the UE must return to idle.
+     */
+    RRC_CONNECTION_RELEASED_SECURITY_NOT_ACTIVE = 0x87C,
+    /**
+     * Radio resource control (RRC) connection was aborted by the non-access stratum (NAS) after an
+     * IRAT to LTE IRAT handover.
+     */
+    RRC_CONNECTION_ABORTED_AFTER_HANDOVER = 0x87D,
+    /**
+     * Radio resource control (RRC) connection was aborted before deactivating the LTE stack after a
+     * successful LTE to GSM/EDGE IRAT cell change order procedure.
+     */
+    RRC_CONNECTION_ABORTED_AFTER_IRAT_CELL_CHANGE = 0x87E,
+    /**
+     * Radio resource control (RRC) connection was aborted in the middle of a LTE to GSM IRAT cell
+     * change order procedure.
+     */
+    RRC_CONNECTION_ABORTED_DURING_IRAT_CELL_CHANGE = 0x87F,
+    /**
+     * IMSI present in the UE is unknown in the home subscriber server.
+     */
+    IMSI_UNKNOWN_IN_HOME_SUBSCRIBER_SERVER = 0x880,
+    /**
+     * IMEI of the UE is not accepted by the network.
+     */
+    IMEI_NOT_ACCEPTED = 0x881,
+    /**
+     * EPS and non-EPS services are not allowed by the network.
+     */
+    EPS_SERVICES_AND_NON_EPS_SERVICES_NOT_ALLOWED = 0x882,
+    /**
+     * EPS services are not allowed in the PLMN.
+     */
+    EPS_SERVICES_NOT_ALLOWED_IN_PLMN = 0x883,
+    /**
+     * Mobile switching center is temporarily unreachable.
+     */
+    MSC_TEMPORARILY_NOT_REACHABLE = 0x884,
+    /**
+     * CS domain is not available.
+     */
+    CS_DOMAIN_NOT_AVAILABLE = 0x885,
+    /**
+     * ESM level failure.
+     */
+    ESM_FAILURE = 0x886,
+    /**
+     * MAC level failure.
+     */
+    MAC_FAILURE = 0x887,
+    /**
+     * Synchronization failure.
+     */
+    SYNCHRONIZATION_FAILURE = 0x888,
+    /**
+     * UE security capabilities mismatch.
+     */
+    UE_SECURITY_CAPABILITIES_MISMATCH = 0x889,
+    /**
+     * Unspecified security mode reject.
+     */
+    SECURITY_MODE_REJECTED = 0x88A,
+    /**
+     * Unacceptable non-EPS authentication.
+     */
+    UNACCEPTABLE_NON_EPS_AUTHENTICATION = 0x88B,
+    /**
+     * CS fallback call establishment is not allowed.
+     */
+    CS_FALLBACK_CALL_ESTABLISHMENT_NOT_ALLOWED = 0x88C,
+    /**
+     * No EPS bearer context was activated.
+     */
+    NO_EPS_BEARER_CONTEXT_ACTIVATED = 0x88D,
+    /**
+     * Invalid EMM state.
+     */
+    INVALID_EMM_STATE = 0x88E,
+    /**
+     * Non-Access Spectrum layer failure.
+     */
+    NAS_LAYER_FAILURE = 0x88F,
+    /**
+     * Multiple PDP call feature is disabled.
+     */
+    MULTIPLE_PDP_CALL_NOT_ALLOWED = 0x890,
+    /**
+     * Data call has been brought down because EMBMS is not enabled at the RRC layer.
+     */
+    EMBMS_NOT_ENABLED = 0x891,
+    /**
+     * Data call was unsuccessfully transferred during the IRAT handover.
+     */
+    IRAT_HANDOVER_FAILED = 0x892,
+    /**
+     * EMBMS data call has been successfully brought down.
+     */
+    EMBMS_REGULAR_DEACTIVATION = 0x893,
+    /**
+     * Test loop-back data call has been successfully brought down.
+     */
+    TEST_LOOPBACK_REGULAR_DEACTIVATION = 0x894,
+    /**
+     * Lower layer registration failure.
+     */
+    LOWER_LAYER_REGISTRATION_FAILURE = 0x895,
+    /**
+     * Network initiates a detach on LTE with error cause "data plan has been replenished or has
+     * expired".
+     */
+    DATA_PLAN_EXPIRED = 0x896,
+    /**
+     * UMTS interface is brought down due to handover from UMTS to iWLAN.
+     */
+    UMTS_HANDOVER_TO_IWLAN = 0x897,
+    /**
+     * Received a connection deny due to general or network busy on EVDO network.
+     */
+    EVDO_CONNECTION_DENY_BY_GENERAL_OR_NETWORK_BUSY = 0x898,
+    /**
+     * Received a connection deny due to billing or authentication failure on EVDO network.
+     */
+    EVDO_CONNECTION_DENY_BY_BILLING_OR_AUTHENTICATION_FAILURE = 0x899,
+    /**
+     * HDR system has been changed due to redirection or the PRL was not preferred.
+     */
+    EVDO_HDR_CHANGED = 0x89A,
+    /**
+     * Device exited HDR due to redirection or the PRL was not preferred.
+     */
+    EVDO_HDR_EXITED = 0x89B,
+    /**
+     * Device does not have an HDR session.
+     */
+    EVDO_HDR_NO_SESSION = 0x89C,
+    /**
+     * It is ending an HDR call origination in favor of a GPS fix.
+     */
+    EVDO_USING_GPS_FIX_INSTEAD_OF_HDR_CALL = 0x89D,
+    /**
+     * Connection setup on the HDR system was time out.
+     */
+    EVDO_HDR_CONNECTION_SETUP_TIMEOUT = 0x89E,
+    /**
+     * Device failed to acquire a co-located HDR for origination.
+     */
+    FAILED_TO_ACQUIRE_COLOCATED_HDR = 0x89F,
+    /**
+     * OTASP commit is in progress.
+     */
+    OTASP_COMMIT_IN_PROGRESS = 0x8A0,
+    /**
+     * Device has no hybrid HDR service.
+     */
+    NO_HYBRID_HDR_SERVICE = 0x8A1,
+    /**
+     * HDR module could not be obtained because of the RF locked.
+     */
+    HDR_NO_LOCK_GRANTED = 0x8A2,
+    /**
+     * DBM or SMS is in progress.
+     */
+    DBM_OR_SMS_IN_PROGRESS = 0x8A3,
+    /**
+     * HDR module released the call due to fade.
+     */
+    HDR_FADE = 0x8A4,
+    /**
+     * HDR system access failure.
+     */
+    HDR_ACCESS_FAILURE = 0x8A5,
+    /**
+     * P_rev supported by 1 base station is less than 6, which is not supported for a 1X data call.
+     * The UE must be in the footprint of BS which has p_rev >= 6 to support this SO33 call.
+     */
+    UNSUPPORTED_1X_PREV = 0x8A6,
+    /**
+     * Client ended the data call.
+     */
+    LOCAL_END = 0x8A7,
+    /**
+     * Device has no service.
+     */
+    NO_SERVICE = 0x8A8,
+    /**
+     * Device lost the system due to fade.
+     */
+    FADE = 0x8A9,
+    /**
+     * Receiving a release from the base station with no reason.
+     */
+    NORMAL_RELEASE = 0x8AA,
+    /**
+     * Access attempt is already in progress.
+     */
+    ACCESS_ATTEMPT_ALREADY_IN_PROGRESS = 0x8AB,
+    /**
+     * Device is in the process of redirecting or handing off to a different target system.
+     */
+    REDIRECTION_OR_HANDOFF_IN_PROGRESS = 0x8AC,
+    /**
+     * Device is operating in Emergency mode.
+     */
+    EMERGENCY_MODE = 0x8AD,
+    /**
+     * Device is in use (e.g., voice call).
+     */
+    PHONE_IN_USE = 0x8AE,
+    /**
+     * Device operational mode is different from the mode requested in the traffic channel bring up.
+     */
+    INVALID_MODE = 0x8AF,
+    /**
+     * SIM was marked by the network as invalid for the circuit and/or packet service domain.
+     */
+    INVALID_SIM_STATE = 0x8B0,
+    /**
+     * There is no co-located HDR.
+     */
+    NO_COLLOCATED_HDR = 0x8B1,
+    /**
+     * UE is entering power save mode.
+     */
+    UE_IS_ENTERING_POWERSAVE_MODE = 0x8B2,
+    /**
+     * Dual switch from single standby to dual standby is in progress.
+     */
+    DUAL_SWITCH = 0x8B3,
+    /**
+     * Data call bring up fails in the PPP setup due to a timeout. (e.g., an LCP conf ack was not
+     * received from the network)
+     */
+    PPP_TIMEOUT = 0x8B4,
+    /**
+     * Data call bring up fails in the PPP setup due to an authorization failure.
+     * (e.g., authorization is required, but not negotiated with the network during an LCP phase)
+     */
+    PPP_AUTH_FAILURE = 0x8B5,
+    /**
+     * Data call bring up fails in the PPP setup due to an option mismatch.
+     */
+    PPP_OPTION_MISMATCH = 0x8B6,
+    /**
+     * Data call bring up fails in the PPP setup due to a PAP failure.
+     */
+    PPP_PAP_FAILURE = 0x8B7,
+    /**
+     * Data call bring up fails in the PPP setup due to a CHAP failure.
+     */
+    PPP_CHAP_FAILURE = 0x8B8,
+    /**
+     * Data call bring up fails in the PPP setup because the PPP is in the process of cleaning the
+     * previous PPP session.
+     */
+    PPP_CLOSE_IN_PROGRESS = 0x8B9,
+    /**
+     * IPv6 interface bring up fails because the network provided only the IPv4 address for the
+     * upcoming PDN permanent client can reattempt a IPv6 call bring up after the IPv4 interface is
+     * also brought down. However, there is no guarantee that the network will provide a IPv6
+     * address.
+     */
+    LIMITED_TO_IPV4 = 0x8BA,
+    /**
+     * IPv4 interface bring up fails because the network provided only the IPv6 address for the
+     * upcoming PDN permanent client can reattempt a IPv4 call bring up after the IPv6 interface is
+     * also brought down. However there is no guarantee that the network will provide a IPv4
+     * address.
+     */
+    LIMITED_TO_IPV6 = 0x8BB,
+    /**
+     * Data call bring up fails in the VSNCP phase due to a VSNCP timeout error.
+     */
+    VSNCP_TIMEOUT = 0x8BC,
+    /**
+     * Data call bring up fails in the VSNCP phase due to a general error. It's used when there is
+     * no other specific error code available to report the failure.
+     */
+    VSNCP_GEN_ERROR = 0x8BD,
+    /**
+     * Data call bring up fails in the VSNCP phase due to a network rejection of the VSNCP
+     * configuration request because the requested APN is unauthorized.
+     */
+    VSNCP_APN_UNAUTHORIZED = 0x8BE,
+    /**
+     * Data call bring up fails in the VSNCP phase due to a network rejection of the VSNCP
+     * configuration request because the PDN limit has been exceeded.
+     */
+    VSNCP_PDN_LIMIT_EXCEEDED = 0x8BF,
+    /**
+     * Data call bring up fails in the VSNCP phase due to the network rejected the VSNCP
+     * configuration request due to no PDN gateway address.
+     */
+    VSNCP_NO_PDN_GATEWAY_ADDRESS = 0x8C0,
+    /**
+     * Data call bring up fails in the VSNCP phase due to a network rejection of the VSNCP
+     * configuration request because the PDN gateway is unreachable.
+     */
+    VSNCP_PDN_GATEWAY_UNREACHABLE = 0x8C1,
+    /**
+     * Data call bring up fails in the VSNCP phase due to a network rejection of the VSNCP
+     * configuration request due to a PDN gateway reject.
+     */
+    VSNCP_PDN_GATEWAY_REJECT = 0x8C2,
+    /**
+     * Data call bring up fails in the VSNCP phase due to a network rejection of the VSNCP
+     * configuration request with the reason of insufficient parameter.
+     */
+    VSNCP_INSUFFICIENT_PARAMETERS = 0x8C3,
+    /**
+     * Data call bring up fails in the VSNCP phase due to a network rejection of the VSNCP
+     * configuration request with the reason of resource unavailable.
+     */
+    VSNCP_RESOURCE_UNAVAILABLE = 0x8C4,
+    /**
+     * Data call bring up fails in the VSNCP phase due to a network rejection of the VSNCP
+     * configuration request with the reason of administratively prohibited at the HSGW.
+     */
+    VSNCP_ADMINISTRATIVELY_PROHIBITED = 0x8C5,
+    /**
+     * Data call bring up fails in the VSNCP phase due to a network rejection of PDN ID in use, or
+     * all existing PDNs are brought down with this end reason because one of the PDN bring up was
+     * rejected by the network with the reason of PDN ID in use.
+     */
+    VSNCP_PDN_ID_IN_USE = 0x8C6,
+    /**
+     * Data call bring up fails in the VSNCP phase due to a network rejection of the VSNCP
+     * configuration request for the reason of subscriber limitation.
+     */
+    VSNCP_SUBSCRIBER_LIMITATION = 0x8C7,
+    /**
+     * Data call bring up fails in the VSNCP phase due to a network rejection of the VSNCP
+     * configuration request because the PDN exists for this APN.
+     */
+    VSNCP_PDN_EXISTS_FOR_THIS_APN = 0x8C8,
+    /**
+     * Data call bring up fails in the VSNCP phase due to a network rejection of the VSNCP
+     * configuration request with reconnect to this PDN not allowed, or an active data call is
+     * terminated by the network because reconnection to this PDN is not allowed. Upon receiving
+     * this error code from the network, the modem infinitely throttles the PDN until the next power
+     * cycle.
+     */
+    VSNCP_RECONNECT_NOT_ALLOWED = 0x8C9,
+    /**
+     * Device failure to obtain the prefix from the network.
+     */
+    IPV6_PREFIX_UNAVAILABLE = 0x8CA,
+    /**
+     * System preference change back to SRAT during handoff
+     */
+    HANDOFF_PREFERENCE_CHANGED = 0x8CB,
+    /**
+     * Data call fail due to the slice not being allowed for the data call.
+     */
+    SLICE_REJECTED = 0x8CC,
+    /**
+     * No matching rule available for the request, and match-all rule is not allowed for it.
+     */
+    MATCH_ALL_RULE_NOT_ALLOWED = 0x8CD,
+    /**
+     * If connection failed for all matching URSP rules.
+     */
+    ALL_MATCHING_RULES_FAILED = 0x8CE,
+}
diff --git a/radio/aidl/android/hardware/radio/DataConnActiveStatus.aidl b/radio/aidl/android/hardware/radio/DataConnActiveStatus.aidl
new file mode 100644
index 0000000..1e83727
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/DataConnActiveStatus.aidl
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Data connection active status
+ */
+@VintfStability
+@Backing(type="int")
+enum DataConnActiveStatus {
+    /**
+     * Indicates the data connection is inactive.
+     */
+    INACTIVE,
+    /**
+     * Indicates the data connection is active with physical link dormant.
+     */
+    DORMANT,
+    /**
+     * Indicates the data connection is active with physical link up.
+     */
+    ACTIVE,
+}
diff --git a/radio/aidl/android/hardware/radio/DataProfileId.aidl b/radio/aidl/android/hardware/radio/DataProfileId.aidl
new file mode 100644
index 0000000..f173f1f
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/DataProfileId.aidl
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum DataProfileId {
+    DEFAULT = 0,
+    TETHERED = 1,
+    IMS = 2,
+    FOTA = 3,
+    CBS = 4,
+    /**
+     * Start of OEM-specific profiles
+     */
+    OEM_BASE = 1000,
+    INVALID = 0xFFFFFFFF,
+}
diff --git a/radio/aidl/android/hardware/radio/DataProfileInfo.aidl b/radio/aidl/android/hardware/radio/DataProfileInfo.aidl
new file mode 100644
index 0000000..5e2d4d2
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/DataProfileInfo.aidl
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.ApnAuthType;
+import android.hardware.radio.ApnTypes;
+import android.hardware.radio.DataProfileId;
+import android.hardware.radio.DataProfileInfoType;
+import android.hardware.radio.PdpProtocolType;
+import android.hardware.radio.RadioAccessFamily;
+
+@VintfStability
+parcelable DataProfileInfo {
+    /**
+     * ID of the data profile.
+     */
+    DataProfileId profileId;
+    /**
+     * The APN name.
+     */
+    String apn;
+    /**
+     * PDP_type values.
+     */
+    PdpProtocolType protocol;
+    /**
+     * PDP_type values used on roaming network.
+     */
+    PdpProtocolType roamingProtocol;
+    /**
+     * APN authentication type.
+     */
+    ApnAuthType authType;
+    /**
+     * The username for APN, or empty string.
+     */
+    String user;
+    /**
+     * The password for APN, or empty string.
+     */
+    String password;
+    /**
+     * Data profile technology type.
+     */
+    DataProfileInfoType type;
+    /**
+     * The period in seconds to limit the maximum connections.
+     */
+    int maxConnsTime;
+    /**
+     * The maximum connections during maxConnsTime.
+     */
+    int maxConns;
+    /**
+     * The required wait time in seconds after a successful UE initiated disconnect of a given PDN
+     * connection before the device can send a new PDN connection request for that given PDN.
+     */
+    int waitTime;
+    /**
+     * True to enable the profile, false to disable.
+     */
+    boolean enabled;
+    /**
+     * Supported APN types bitmap. See ApnTypes for the value of each bit.
+     */
+    ApnTypes supportedApnTypesBitmap;
+    /**
+     * The bearer bitmap. See RadioAccessFamily for the value of each bit.
+     */
+    RadioAccessFamily bearerBitmap;
+    /**
+     * Maximum transmission unit (MTU) size in bytes for IPv4.
+     */
+    int mtuV4;
+    /**
+     * Maximum transmission unit (MTU) size in bytes for IPv6.
+     */
+    int mtuV6;
+    /**
+     * True if this data profile was used to bring up the last default (i.e internet) data
+     * connection successfully.
+     */
+    boolean preferred;
+    /**
+     * If true, modem must persist this data profile and profileId must not be set to
+     * DataProfileId.INVALID. If the same data profile exists, this data profile must overwrite it.
+     */
+    boolean persistent;
+}
diff --git a/radio/aidl/android/hardware/radio/DataProfileInfoType.aidl b/radio/aidl/android/hardware/radio/DataProfileInfoType.aidl
new file mode 100644
index 0000000..df46ef3
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/DataProfileInfoType.aidl
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum DataProfileInfoType {
+    COMMON,
+    THREE_GPP,
+    THREE_GPP2,
+}
diff --git a/radio/aidl/android/hardware/radio/DataRegStateResult.aidl b/radio/aidl/android/hardware/radio/DataRegStateResult.aidl
new file mode 100644
index 0000000..53a3e52
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/DataRegStateResult.aidl
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CellIdentity;
+import android.hardware.radio.DataRegStateResultVopsInfo;
+import android.hardware.radio.NrIndicators;
+import android.hardware.radio.RegState;
+
+@VintfStability
+parcelable DataRegStateResult {
+    /**
+     * Valid reg states are NOT_REG_MT_NOT_SEARCHING_OP, REG_HOME, NOT_REG_MT_SEARCHING_OP,
+     * REG_DENIED, UNKNOWN, REG_ROAMING defined in RegState
+     */
+    RegState regState;
+    /**
+     * Indicates the available data radio technology, valid values as defined by RadioTechnology.
+     */
+    int rat;
+    /**
+     * If registration state is 3 (Registration denied) this is an enumerated reason why
+     * registration was denied. See 3GPP TS 24.008, Annex G.6 "Additional cause codes for GMM".
+     * 7 == GPRS services not allowed
+     * 8 == GPRS services and non-GPRS services not allowed
+     * 9 == MS identity cannot be derived by the network
+     * 10 == Implicitly detached
+     * 14 == GPRS services not allowed in this PLMN
+     * 16 == MSC temporarily not reachable
+     * 40 == No PDP context activated
+     */
+    int reasonDataDenied;
+    /**
+     * The maximum number of simultaneous Data Calls must be established using setupDataCall().
+     */
+    int maxDataCalls;
+    CellIdentity cellIdentity;
+    /**
+     * Network capabilities for voice over PS services. This info is valid only on LTE network and
+     * must be present when device is camped on LTE. vopsInfo must be empty when device is camped
+     * only on 2G/3G.
+     */
+    DataRegStateResultVopsInfo vopsInfo;
+    /**
+     * The parameters of NR 5G Non-Standalone. This value is only valid on E-UTRAN, otherwise
+     * must be empty.
+     */
+    NrIndicators nrIndicators;
+}
diff --git a/radio/aidl/android/hardware/radio/DataRegStateResultVopsInfo.aidl b/radio/aidl/android/hardware/radio/DataRegStateResultVopsInfo.aidl
new file mode 100644
index 0000000..885d5b2
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/DataRegStateResultVopsInfo.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.LteVopsInfo;
+
+@VintfStability
+union DataRegStateResultVopsInfo {
+    boolean noinit;
+    /**
+     * LTE network capability
+     */
+    LteVopsInfo lteVopsInfo;
+}
diff --git a/radio/aidl/android/hardware/radio/DataRequestReason.aidl b/radio/aidl/android/hardware/radio/DataRequestReason.aidl
new file mode 100644
index 0000000..74afdcb
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/DataRequestReason.aidl
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum DataRequestReason {
+    /**
+     * The reason of the data request is normal
+     */
+    NORMAL = 1,
+    /**
+     * The reason of the data request is device shutdown
+     */
+    SHUTDOWN = 2,
+    /**
+     * The reason of the data request is IWLAN data handover to another transport
+     * (e.g. from cellular to wifi or vise versa)
+     */
+    HANDOVER = 3,
+}
diff --git a/radio/aidl/android/hardware/radio/DataThrottlingAction.aidl b/radio/aidl/android/hardware/radio/DataThrottlingAction.aidl
new file mode 100644
index 0000000..1a49762
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/DataThrottlingAction.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="byte")
+enum DataThrottlingAction {
+    /*
+     * Clear all existing data throttling.
+     */
+    NO_DATA_THROTTLING,
+    /**
+     * Enact secondary carrier data throttling and remove any existing data throttling on
+     * anchor carrier.
+     */
+    THROTTLE_SECONDARY_CARRIER,
+    /**
+     * Enact anchor carrier data throttling and disable data on secondary carrier if currently
+     * enabled.
+     */
+    THROTTLE_ANCHOR_CARRIER,
+    /**
+     * Immediately hold on to current level of throttling.
+     */
+    HOLD,
+}
diff --git a/radio/aidl/android/hardware/radio/DeviceStateType.aidl b/radio/aidl/android/hardware/radio/DeviceStateType.aidl
new file mode 100644
index 0000000..e622486
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/DeviceStateType.aidl
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum DeviceStateType {
+    /**
+     * Device power save mode (provided by PowerManager). True indicates the device is in
+     * power save mode.
+     */
+    POWER_SAVE_MODE,
+    /**
+     * Device charging state (provided by BatteryManager). True indicates the device is charging.
+     */
+    CHARGING_STATE,
+    /**
+     * Low data expected mode. True indicates low data traffic is expected, for example, when the
+     * device is idle (e.g. not doing tethering in the background). Note this doesn't mean no data
+     * is expected.
+     */
+    LOW_DATA_EXPECTED,
+}
diff --git a/radio/aidl/android/hardware/radio/Dial.aidl b/radio/aidl/android/hardware/radio/Dial.aidl
new file mode 100644
index 0000000..9056815
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/Dial.aidl
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.Clir;
+import android.hardware.radio.UusInfo;
+
+@VintfStability
+parcelable Dial {
+    String address;
+    Clir clir;
+    /**
+     * Vector of User-User Signaling Information
+     */
+    UusInfo[] uusInfo;
+}
diff --git a/radio/aidl/android/hardware/radio/Domain.aidl b/radio/aidl/android/hardware/radio/Domain.aidl
new file mode 100644
index 0000000..f5e5261
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/Domain.aidl
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum Domain {
+    /**
+     * Circuit-switched
+     */
+    CS = 1 << 0,
+    /**
+     * Packet-switched
+     */
+    PS = 1 << 1,
+}
diff --git a/radio/aidl/android/hardware/radio/EmcIndicator.aidl b/radio/aidl/android/hardware/radio/EmcIndicator.aidl
new file mode 100644
index 0000000..6f0b19f
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/EmcIndicator.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Defines the values for emergency service indicator of NR as per 3gpp spec 24.501 sec 9.10.3.5
+ */
+@VintfStability
+@Backing(type="byte")
+enum EmcIndicator {
+    /**
+     * Emergency services not supported
+     */
+    EMC_NOT_SUPPORTED,
+    /**
+     * Emergency services supported in NR connected to 5GCN only
+     */
+    EMC_NR_CONNECTED_TO_5GCN,
+    /**
+     * Emergency services supported in E-UTRA connected to 5GCN only
+     */
+    EMC_EUTRA_CONNECTED_TO_5GCN,
+    /**
+     * Emergency services supported in NR connected to 5GCN and E-UTRA connected to 5GCN
+     */
+    EMC_BOTH_NR_EUTRA_CONNECTED_TO_5GCN,
+}
diff --git a/radio/aidl/android/hardware/radio/EmergencyCallRouting.aidl b/radio/aidl/android/hardware/radio/EmergencyCallRouting.aidl
new file mode 100644
index 0000000..a915ee6
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/EmergencyCallRouting.aidl
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Indicates how the implementation should handle the emergency call if it is required by Android.
+ */
+@VintfStability
+@Backing(type="int")
+enum EmergencyCallRouting {
+    /**
+     * Indicates Android does not require how to handle the corresponding emergency call; it is
+     * decided by implementation.
+     */
+    UNKNOWN,
+    /**
+     * Indicates the implementation must handle the call through emergency routing.
+     */
+    EMERGENCY,
+    /**
+     * Indicates the implementation must handle the call through normal call routing.
+     */
+    NORMAL,
+}
diff --git a/radio/aidl/android/hardware/radio/EmergencyNumber.aidl b/radio/aidl/android/hardware/radio/EmergencyNumber.aidl
new file mode 100644
index 0000000..ee425f8
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/EmergencyNumber.aidl
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.EmergencyNumberSource;
+import android.hardware.radio.EmergencyServiceCategory;
+
+/**
+ * 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
+ * source(s) that indicate where it comes from.
+ *
+ * If the emergency number is associated with country, field ‘mcc’ must be provided, otherwise
+ * field ‘mcc’ must be an empty string. If the emergency number is associated with network operator,
+ * field ‘mcc’ and 'mnc' must be provided, otherwise field ‘mnc’ must be an empty string. If the
+ * emergency number is specified with emergency service category(s), field 'categories' must be
+ * provided, otherwise field 'categories' must be EmergencyServiceCategories::UNSPECIFIED. If the
+ * emergency number is specified with emergency uniform resource names (URN), field 'urns' must be
+ * provided, otherwise field 'urns' must be an empty list.
+ *
+ * A unique EmergencyNumber has a unique combination of ‘number’, ‘mcc’, 'mnc', 'categories' and
+ * 'urns' fields. Multiple EmergencyNumberSource should be merged into one 'sources' field via
+ * bitwise-OR combination for the same EmergencyNumber.
+ *
+ * Reference: 3gpp 22.101, Section 10 - Emergency Calls;
+ *            3gpp 23.167, Section 6 - Functional description;
+ *            3gpp 24.503, Section 5.1.6.8.1 - General;
+ *            RFC 5031
+ */
+@VintfStability
+parcelable EmergencyNumber {
+    /**
+     * The emergency number. The character in the number string should only be the dial pad
+     * character('0'-'9', '*', or '#'). For example: 911.
+     */
+    String number;
+    /**
+     * 3-digit Mobile Country Code, 0..999. Empty string if not applicable.
+     */
+    String mcc;
+    /**
+     * 2 or 3-digit Mobile Network Code, 0..999. Empty string if not applicable.
+     */
+    String mnc;
+    /**
+     * The bitfield of EmergencyServiceCategory(s). See EmergencyServiceCategory for the value of
+     * each bit.
+     */
+    EmergencyServiceCategory categories;
+    /**
+     * The list of emergency Uniform Resource Names (URN).
+     */
+    String[] urns;
+    /**
+     * The bitfield of EmergencyNumberSource(s). See EmergencyNumberSource for the value of
+     * each bit.
+     */
+    EmergencyNumberSource sources;
+}
diff --git a/radio/aidl/android/hardware/radio/EmergencyNumberSource.aidl b/radio/aidl/android/hardware/radio/EmergencyNumberSource.aidl
new file mode 100644
index 0000000..c2d6547
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/EmergencyNumberSource.aidl
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * The source to tell where the corresponding EmergencyNumber comes from.
+ * Reference: 3gpp 22.101, Section 10 - Emergency Calls
+ */
+@VintfStability
+@Backing(type="int")
+enum EmergencyNumberSource {
+    /**
+     * Indicates the number is from the network signal.
+     */
+    NETWORK_SIGNALING = 1 << 0,
+    /**
+     * Indicates the number is from the sim card.
+     */
+    SIM = 1 << 1,
+    /**
+     * Indicates the number is from the modem config.
+     */
+    MODEM_CONFIG = 1 << 2,
+    /**
+     * Indicates the number is available as default. Per the reference, 112, 911 must always be
+     * available; additionally, 000, 08, 110, 999, 118 and 119 must be available when sim is not
+     * present.
+     */
+    DEFAULT = 1 << 3,
+}
diff --git a/radio/aidl/android/hardware/radio/EmergencyServiceCategory.aidl b/radio/aidl/android/hardware/radio/EmergencyServiceCategory.aidl
new file mode 100644
index 0000000..30d34ab
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/EmergencyServiceCategory.aidl
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Defining Emergency Service Category as follows:
+ * - General emergency call, all categories;
+ * - Police;
+ * - Ambulance;
+ * - Fire Brigade;
+ * - Marine Guard;
+ * - Mountain Rescue;
+ * - Manually Initiated eCall (MIeC);
+ * - Automatically Initiated eCall (AIeC);
+ *
+ * Category UNSPECIFIED (General emergency call, all categories) indicates that no specific
+ * services are associated with this emergency number.
+ *
+ * Reference: 3gpp 22.101, Section 10 - Emergency Calls
+ */
+@VintfStability
+@Backing(type="int")
+enum EmergencyServiceCategory {
+    /**
+     * General emergency call, all categories
+     */
+    UNSPECIFIED = 0,
+    POLICE = 1 << 0,
+    AMBULANCE = 1 << 1,
+    FIRE_BRIGADE = 1 << 2,
+    MARINE_GUARD = 1 << 3,
+    MOUNTAIN_RESCUE = 1 << 4,
+    /**
+     * Manually Initiated eCall (MIeC)
+     */
+    MIEC = 1 << 5,
+    /**
+     * Automatically Initiated eCall (AIeC)
+     */
+    AIEC = 1 << 6,
+}
diff --git a/radio/aidl/android/hardware/radio/EmfIndicator.aidl b/radio/aidl/android/hardware/radio/EmfIndicator.aidl
new file mode 100644
index 0000000..226e684
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/EmfIndicator.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Defines the values for emergency service fallback indicator of NR as per TS 24.501 sec 9.10.3.5.
+ */
+@VintfStability
+@Backing(type="byte")
+enum EmfIndicator {
+    /**
+     * Emergency services fallback not supported
+     */
+    EMF_NOT_SUPPORTED,
+    /**
+     * Emergency services fallback supported in NR connected to 5GCN only
+     */
+    EMF_NR_CONNECTED_TO_5GCN,
+    /**
+     * Emergency services fallback supported in E-UTRA connected to 5GCN only
+     */
+    EMF_EUTRA_CONNECTED_TO_5GCN,
+    /**
+     * Emergency services fallback supported in NR connected to 5GCN and E-UTRA connected to 5GCN.
+     */
+    EMF_BOTH_NR_EUTRA_CONNECTED_TO_5GCN,
+}
diff --git a/radio/aidl/android/hardware/radio/EpsQos.aidl b/radio/aidl/android/hardware/radio/EpsQos.aidl
new file mode 100644
index 0000000..ee4cbdd
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/EpsQos.aidl
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.QosBandwidth;
+
+/**
+ * LTE/EPS Quality of Service parameters as per 3gpp spec 24.301 sec 9.9.4.3.
+ */
+@VintfStability
+parcelable EpsQos {
+    /**
+     * Quality of Service Class Identifier (QCI), see 3GPP TS 23.203 and 29.212.
+     * The allowed values are standard values(1-9, 65-68, 69-70, 75, 79-80, 82-85)
+     * defined in the spec and operator specific values in the range 128-254.
+     */
+    int qci;
+    QosBandwidth downlink;
+    QosBandwidth uplink;
+}
diff --git a/radio/aidl/android/hardware/radio/EutranBands.aidl b/radio/aidl/android/hardware/radio/EutranBands.aidl
new file mode 100644
index 0000000..59fe6c4
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/EutranBands.aidl
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * EUTRAN bands up to V16.4.0
+ */
+@VintfStability
+@Backing(type="int")
+enum EutranBands {
+    BAND_1 = 1,
+    BAND_2 = 2,
+    BAND_3 = 3,
+    BAND_4 = 4,
+    BAND_5 = 5,
+    BAND_6 = 6,
+    BAND_7 = 7,
+    BAND_8 = 8,
+    BAND_9 = 9,
+    BAND_10 = 10,
+    BAND_11 = 11,
+    BAND_12 = 12,
+    BAND_13 = 13,
+    BAND_14 = 14,
+    BAND_17 = 17,
+    BAND_18 = 18,
+    BAND_19 = 19,
+    BAND_20 = 20,
+    BAND_21 = 21,
+    BAND_22 = 22,
+    BAND_23 = 23,
+    BAND_24 = 24,
+    BAND_25 = 25,
+    BAND_26 = 26,
+    BAND_27 = 27,
+    BAND_28 = 28,
+    BAND_30 = 30,
+    BAND_31 = 31,
+    BAND_33 = 33,
+    BAND_34 = 34,
+    BAND_35 = 35,
+    BAND_36 = 36,
+    BAND_37 = 37,
+    BAND_38 = 38,
+    BAND_39 = 39,
+    BAND_40 = 40,
+    BAND_41 = 41,
+    BAND_42 = 42,
+    BAND_43 = 43,
+    BAND_44 = 44,
+    BAND_45 = 45,
+    BAND_46 = 46,
+    BAND_47 = 47,
+    BAND_48 = 48,
+    BAND_65 = 65,
+    BAND_66 = 66,
+    BAND_68 = 68,
+    BAND_70 = 70,
+    BAND_49 = 49,
+    BAND_50 = 50,
+    BAND_51 = 51,
+    BAND_52 = 52,
+    BAND_53 = 53,
+    BAND_71 = 71,
+    BAND_72 = 72,
+    BAND_73 = 73,
+    BAND_74 = 74,
+    BAND_85 = 85,
+    BAND_87 = 87,
+    BAND_88 = 88,
+}
diff --git a/radio/aidl/android/hardware/radio/EvdoSignalStrength.aidl b/radio/aidl/android/hardware/radio/EvdoSignalStrength.aidl
new file mode 100644
index 0000000..ff631f3
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/EvdoSignalStrength.aidl
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+parcelable EvdoSignalStrength {
+    /**
+     * This value is the actual RSSI value multiplied by -1. Example: If the actual RSSI is -75,
+     * then this response value will be 75; INT_MAX means invalid/unreported.
+     */
+    int dbm;
+    /**
+     * This value is the actual Ec/Io multiplied by -10. Example: If the actual Ec/Io is -12.5 dB,
+     * then this response value will be 125; INT_MAX means invalid/unreported.
+     */
+    int ecio;
+    /**
+     * Valid values are 0-8. 8 is the highest signal to noise ratio; INT_MAX means
+     * invalid/unreported.
+     */
+    int signalNoiseRatio;
+}
diff --git a/radio/aidl/android/hardware/radio/FrequencyRange.aidl b/radio/aidl/android/hardware/radio/FrequencyRange.aidl
new file mode 100644
index 0000000..09ec3bc
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/FrequencyRange.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Mapping the frequency to a rough range.
+ */
+@VintfStability
+@Backing(type="int")
+enum FrequencyRange {
+    /**
+     * Indicates the frequency range is below 1GHz.
+     */
+    LOW = 1,
+    /**
+     * Indicates the frequency range is between 1GHz and 3GHz.
+     */
+    MID = 2,
+    /**
+     * Indicates the frequency range is between 3GHz and 6GHz.
+     */
+    HIGH = 3,
+    /**
+     * Indicates the frequency range is above 6GHz (millimeter wave frequency).
+     */
+    MMWAVE = 4,
+}
diff --git a/radio/aidl/android/hardware/radio/GeranBands.aidl b/radio/aidl/android/hardware/radio/GeranBands.aidl
new file mode 100644
index 0000000..d3a7598
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/GeranBands.aidl
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum GeranBands {
+    BAND_T380 = 1,
+    BAND_T410 = 2,
+    BAND_450 = 3,
+    BAND_480 = 4,
+    BAND_710 = 5,
+    BAND_750 = 6,
+    BAND_T810 = 7,
+    BAND_850 = 8,
+    BAND_P900 = 9,
+    BAND_E900 = 10,
+    BAND_R900 = 11,
+    BAND_DCS1800 = 12,
+    BAND_PCS1900 = 13,
+    BAND_ER900 = 14,
+}
diff --git a/radio/aidl/android/hardware/radio/GsmBroadcastSmsConfigInfo.aidl b/radio/aidl/android/hardware/radio/GsmBroadcastSmsConfigInfo.aidl
new file mode 100644
index 0000000..9b08ad9
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/GsmBroadcastSmsConfigInfo.aidl
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Which types of Cell Broadcast Message (CBM) are to be received by the ME
+ */
+@VintfStability
+parcelable GsmBroadcastSmsConfigInfo {
+    /**
+     * Beginning of the range of CBM message identifiers whose value is 0x0000 - 0xFFFF as defined
+     * in TS 23.041 9.4.1.2.2 for GMS and 9.4.4.2.2 for UMTS.
+     * All other values must be treated as empty CBM message ID.
+     */
+    int fromServiceId;
+    /**
+     * End of the range of CBM message identifiers whose value is 0x0000 - 0xFFFF as defined in
+     * TS 23.041 9.4.1.2.2 for GMS and 9.4.4.2.2 for UMTS.
+     * All other values must be treated as empty CBM message ID.
+     */
+    int toServiceId;
+    /**
+     * Beginning of the range of CBM data coding schemes whose value is 0x00 - 0xFF as defined in
+     * TS 23.041 9.4.1.2.3 for GMS and 9.4.4.2.3 for UMTS.
+     * All other values must be treated as empty CBM data coding scheme.
+     */
+    int fromCodeScheme;
+    /**
+     * End of the range of CBM data coding schemes whose value is 0x00 - 0xFF as defined in
+     * TS 23.041 9.4.1.2.3 for GMS and 9.4.4.2.3 for UMTS.
+     * All other values must be treated as empty CBM data coding scheme.
+     */
+    int toCodeScheme;
+    /**
+     * False means message types specified in <fromServiceId, toServiceId>
+     * and <fromCodeScheme, toCodeScheme> are not accepted, while true means accepted.
+     */
+    boolean selected;
+}
diff --git a/radio/aidl/android/hardware/radio/GsmSignalStrength.aidl b/radio/aidl/android/hardware/radio/GsmSignalStrength.aidl
new file mode 100644
index 0000000..65f853a
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/GsmSignalStrength.aidl
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+parcelable GsmSignalStrength {
+    /**
+     * Valid values are (0-61, 99) as defined in TS 27.007 8.69; INT_MAX means invalid/unreported.
+     */
+    int signalStrength;
+    /**
+     * Bit error rate (0-7, 99) as defined in TS 27.007 8.5; INT_MAX means invalid/unreported.
+     */
+    int bitErrorRate;
+    /**
+     * Timing advance in bit periods. 1 bit period = 48/13 us. INT_MAX means invalid/unreported.
+     */
+    int timingAdvance;
+}
diff --git a/radio/aidl/android/hardware/radio/GsmSmsMessage.aidl b/radio/aidl/android/hardware/radio/GsmSmsMessage.aidl
new file mode 100644
index 0000000..248b4be
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/GsmSmsMessage.aidl
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+parcelable GsmSmsMessage {
+    /**
+     * SMSC address in GSM BCD format prefixed by a length byte (as expected by TS 27.005)
+     * or empty string for default SMSC
+     */
+    String smscPdu;
+    /**
+     * SMS in PDU format as an ASCII hex string less the SMSC address.
+     * TP-Layer-Length is be "strlen(pdu)/2
+     */
+    String pdu;
+}
diff --git a/radio/aidl/android/hardware/radio/HandoverFailureMode.aidl b/radio/aidl/android/hardware/radio/HandoverFailureMode.aidl
new file mode 100644
index 0000000..f6918a8
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/HandoverFailureMode.aidl
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * The allowed failure modes on an IWLAN handover failure.
+ */
+@VintfStability
+@Backing(type="byte")
+enum HandoverFailureMode {
+    /**
+     * On data handover failure, fallback to the source data transport when the fail cause is due
+     * to a hand off preference change.
+     */
+    LEGACY,
+    /**
+     * On data handover failure, fallback to the source data transport.
+     */
+    DO_FALLBACK,
+    /**
+     * On data handover failure, retry the handover instead of falling back to the source data
+     * transport.
+     */
+    NO_FALLBACK_RETRY_HANDOVER,
+    /**
+     * On data handover failure, setup a new data connection by sending a normal request to the
+     * underlying data service.
+     */
+    NO_FALLBACK_RETRY_SETUP_NORMAL,
+}
diff --git a/radio/aidl/android/hardware/radio/HardwareConfig.aidl b/radio/aidl/android/hardware/radio/HardwareConfig.aidl
new file mode 100644
index 0000000..d3902af
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/HardwareConfig.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.HardwareConfigModem;
+import android.hardware.radio.HardwareConfigSim;
+import android.hardware.radio.HardwareConfigState;
+import android.hardware.radio.HardwareConfigType;
+
+@VintfStability
+parcelable HardwareConfig {
+    HardwareConfigType type;
+    /**
+     * RadioConst:MAX_UUID_LENGTH is max length of the string
+     */
+    String uuid;
+    HardwareConfigState state;
+    /**
+     * Valid only if type is Modem and size = 1 else must be empty. Only one of modem or sim must
+     * have size = 1 based on the HardwareConfigType, and the other must have size = 0.
+     */
+    HardwareConfigModem[] modem;
+    /**
+     * Valid only if type is SIM and size = 1 else must be empty. Only one of modem or sim must
+     * have size = 1 based on the HardwareConfigType, and the other must have size = 0.
+     */
+    HardwareConfigSim[] sim;
+}
diff --git a/radio/aidl/android/hardware/radio/HardwareConfigModem.aidl b/radio/aidl/android/hardware/radio/HardwareConfigModem.aidl
new file mode 100644
index 0000000..ef348d6
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/HardwareConfigModem.aidl
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+parcelable HardwareConfigModem {
+    int rilModel;
+    /**
+     * bitset - ref. RadioTechnology.
+     */
+    int rat;
+    int maxVoice;
+    int maxData;
+    int maxStandby;
+}
diff --git a/radio/aidl/android/hardware/radio/HardwareConfigSim.aidl b/radio/aidl/android/hardware/radio/HardwareConfigSim.aidl
new file mode 100644
index 0000000..85055de
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/HardwareConfigSim.aidl
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+parcelable HardwareConfigSim {
+    /**
+     * RadioConst:MAX_UUID_LENGTH is max length of the string
+     */
+    String modemUuid;
+}
diff --git a/radio/aidl/android/hardware/radio/HardwareConfigState.aidl b/radio/aidl/android/hardware/radio/HardwareConfigState.aidl
new file mode 100644
index 0000000..05c806d
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/HardwareConfigState.aidl
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum HardwareConfigState {
+    ENABLED,
+    STANDBY,
+    DISABLED,
+}
diff --git a/radio/aidl/android/hardware/radio/HardwareConfigType.aidl b/radio/aidl/android/hardware/radio/HardwareConfigType.aidl
new file mode 100644
index 0000000..5605c2b
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/HardwareConfigType.aidl
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum HardwareConfigType {
+    MODEM,
+    SIM,
+}
diff --git a/radio/aidl/android/hardware/radio/IRadio.aidl b/radio/aidl/android/hardware/radio/IRadio.aidl
new file mode 100644
index 0000000..352cbfb
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/IRadio.aidl
@@ -0,0 +1,2073 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.AccessNetwork;
+import android.hardware.radio.CallForwardInfo;
+import android.hardware.radio.CardPowerState;
+import android.hardware.radio.CarrierRestrictions;
+import android.hardware.radio.CarrierRestrictionsWithPriority;
+import android.hardware.radio.CdmaBroadcastSmsConfigInfo;
+import android.hardware.radio.CdmaRoamingType;
+import android.hardware.radio.CdmaSmsAck;
+import android.hardware.radio.CdmaSmsMessage;
+import android.hardware.radio.CdmaSmsWriteArgs;
+import android.hardware.radio.CdmaSubscriptionSource;
+import android.hardware.radio.DataProfileInfo;
+import android.hardware.radio.DataRequestReason;
+import android.hardware.radio.DataThrottlingAction;
+import android.hardware.radio.DeviceStateType;
+import android.hardware.radio.Dial;
+import android.hardware.radio.EmergencyCallRouting;
+import android.hardware.radio.EmergencyServiceCategory;
+import android.hardware.radio.GsmBroadcastSmsConfigInfo;
+import android.hardware.radio.GsmSmsMessage;
+import android.hardware.radio.IRadioIndication;
+import android.hardware.radio.IRadioResponse;
+import android.hardware.radio.IccIo;
+import android.hardware.radio.ImsSmsMessage;
+import android.hardware.radio.ImsiEncryptionInfo;
+import android.hardware.radio.IndicationFilter;
+import android.hardware.radio.KeepaliveRequest;
+import android.hardware.radio.LinkAddress;
+import android.hardware.radio.NetworkScanRequest;
+import android.hardware.radio.NrDualConnectivityState;
+import android.hardware.radio.NvItem;
+import android.hardware.radio.NvWriteItem;
+import android.hardware.radio.OptionalSliceInfo;
+import android.hardware.radio.OptionalTrafficDescriptor;
+import android.hardware.radio.PersoSubstate;
+import android.hardware.radio.PhonebookRecordInfo;
+import android.hardware.radio.PreferredNetworkType;
+import android.hardware.radio.RadioAccessFamily;
+import android.hardware.radio.RadioAccessNetworks;
+import android.hardware.radio.RadioAccessSpecifier;
+import android.hardware.radio.RadioBandMode;
+import android.hardware.radio.RadioCapability;
+import android.hardware.radio.RadioTechnology;
+import android.hardware.radio.ResetNvType;
+import android.hardware.radio.SelectUiccSub;
+import android.hardware.radio.SignalThresholdInfo;
+import android.hardware.radio.SimApdu;
+import android.hardware.radio.SimLockMultiSimPolicy;
+import android.hardware.radio.SmsAcknowledgeFailCause;
+import android.hardware.radio.SmsWriteArgs;
+import android.hardware.radio.TtyMode;
+
+/**
+ * This interface is used by telephony and telecom to talk to cellular radio.
+ * All the functions have minimum one parameter:
+ * serial: which corresponds to serial no. of request. Serial numbers must only be memorized for the
+ * duration of a method call. If clients provide colliding serials (including passing the same
+ * serial to different methods), multiple responses (one for each method call) must still be served.
+ * setResponseFunctions must work with IRadioResponse and IRadioIndication.
+ */
+@VintfStability
+interface IRadio {
+    /**
+     * Answer incoming call. Must not be called for WAITING calls.
+     * switchWaitingOrHoldingAndActive() must be used in this case instead
+     *
+     * @param serial Serial number of request.
+     *
+     * Response function is IRadioResponse.acceptCallResponse()
+     */
+    oneway void acceptCall(in int serial);
+
+    /**
+     * Acknowledge successful or failed receipt of SMS previously indicated via unsol
+     * responseNewSms(), including acknowledgement TPDU to send as the RP-User-Data element of the
+     * RP-ACK or RP-ERROR PDU.
+     *
+     * @param serial Serial number of request.
+     * @param success true on successful receipt (send RP-ACK)
+     *        false on failed receipt (send RP-ERROR)
+     * @param ackPdu acknowledgement TPDU in hexadecimal format
+     *
+     * Response callback is IRadioResponse.acknowledgeIncomingGsmSmsWithPduResponse()
+     */
+    oneway void acknowledgeIncomingGsmSmsWithPdu(
+            in int serial, in boolean success, in String ackPdu);
+
+    /**
+     * Acknowledge the success or failure in the receipt of SMS previously indicated
+     * via responseCdmaNewSms()
+     *
+     * @param serial Serial number of request.
+     * @param smsAck Cdma Sms ack to be sent described by CdmaSmsAck in types.hal
+     *
+     * Response callback is IRadioResponse.acknowledgeLastIncomingCdmaSmsResponse()
+     */
+    oneway void acknowledgeLastIncomingCdmaSms(in int serial, in CdmaSmsAck smsAck);
+
+    /**
+     * Acknowledge successful or failed receipt of SMS previously indicated via unsolResponseNewSms
+     *
+     * @param serial Serial number of request.
+     * @param success is true on successful receipt
+     *        (basically, AT+CNMA=1 from TS 27.005 is 0 on failed receipt
+     *        (basically, AT+CNMA=2 from TS 27.005)
+     * @param cause: if success is false, this contains the failure cause as defined
+     *        in TS 23.040, 9.2.3.22.
+     *
+     * Response function is IRadioResponse.acknowledgeLastIncomingGsmSmsResponse()
+     */
+    oneway void acknowledgeLastIncomingGsmSms(
+            in int serial, in boolean success, in SmsAcknowledgeFailCause cause);
+
+    /**
+     * Reserves an unallocated pdu session id from the pool of ids. The allocated id is returned
+     * in the response. When the id is no longer needed, call releasePduSessionId to return it to
+     * the pool.
+     *
+     * Reference: 3GPP TS 24.007 section 11.2.3.1b
+     *
+     * @param serial Serial number of request.
+     *
+     * Response function is IRadioResponse.allocatePduSessionIdResponse()
+     */
+    oneway void allocatePduSessionId(in int serial);
+
+    /**
+     * Whether uiccApplications are enabled, or disabled.
+     * By default uiccApplications must be enabled, unless enableUiccApplications() with enable
+     * being false is called.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.areUiccApplicationsEnabledResponse()
+     */
+    oneway void areUiccApplicationsEnabled(in int serial);
+
+    /**
+     * Indicates that a handover was cancelled after a call to IRadio::startHandover.
+     * Since the handover was unsuccessful, the modem retains ownership over any of the resources
+     * being transferred and is still responsible for releasing them.
+     *
+     * @param serial Serial number of request.
+     * @param id callId The identifier of the data call which is provided in SetupDataCallResult
+     *
+     * Response function is IRadioResponse.cancelHandoverResponse()
+     */
+    oneway void cancelHandover(in int serial, in int callId);
+
+    /**
+     * Cancel the current USSD session if one exists.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response function is IRadioResponse.cancelPendingUssdResponse()
+     */
+    oneway void cancelPendingUssd(in int serial);
+
+    /**
+     * Supplies old ICC PIN2 and new PIN2.
+     *
+     * @param serial Serial number of request.
+     * @param oldPin2 Old pin2 value
+     * @param newPin2 New pin2 value
+     * @param aid AID value, See ETSI 102.221 8.1 and 101.220 4, empty string if no value.
+     *
+     * Response function is IRadioResponse.changeIccPin2ForAppResponse()
+     */
+    oneway void changeIccPin2ForApp(
+            in int serial, in String oldPin2, in String newPin2, in String aid);
+
+    /**
+     * Supplies old ICC PIN and new PIN.
+     *
+     * @param serial Serial number of request.
+     * @param oldPin Old pin value
+     * @param newPin New pin value
+     * @param aid AID value, See ETSI 102.221 8.1 and 101.220 4, empty string if no value.
+     *
+     * Response function is IRadioResponse.changeIccPinForAppResponse()
+     */
+    oneway void changeIccPinForApp(
+            in int serial, in String oldPin, in String newPin, in String aid);
+
+    /**
+     * Conference holding and active (like AT+CHLD=3)
+     *
+     * @param serial Serial number of request.
+     *
+     * Response function is IRadioResponse.conferenceResponse()
+     */
+    oneway void conference(in int serial);
+
+    /**
+     * Deactivate packet data connection and remove from the data call list. An
+     * unsolDataCallListChanged() must be sent when data connection is deactivated.
+     *
+     * @param serial Serial number of request.
+     * @param cid Data call id.
+     * @param reason The request reason. Must be normal, handover, or shutdown.
+     *
+     * Response function is IRadioResponse.deactivateDataCallResponse()
+     */
+    oneway void deactivateDataCall(in int serial, in int cid, in DataRequestReason reason);
+
+    /**
+     * Deletes a CDMA SMS message from RUIM memory.
+     *
+     * @param serial Serial number of request.
+     * @param index record index of the message to delete
+     *
+     * Response callback is IRadioResponse.deleteSmsOnRuimResponse()
+     */
+    oneway void deleteSmsOnRuim(in int serial, in int index);
+
+    /**
+     * Deletes a SMS message from SIM memory.
+     *
+     * @param serial Serial number of request.
+     * @param index Record index of the message to delete.
+     *
+     * Response function is IRadioResponse.deleteSmsOnSimResponse()
+     */
+    oneway void deleteSmsOnSim(in int serial, in int index);
+
+    /**
+     * Initiate voice call. This method is never used for supplementary service codes.
+     *
+     * @param serial Serial number of request.
+     * @param dialInfo Dial struct
+     *
+     * Response function is IRadioResponse.dialResponse()
+     */
+    oneway void dial(in int serial, in Dial dialInfo);
+
+    /**
+     * Initiate emergency voice call, with zero or more emergency service category(s), zero or
+     * more emergency Uniform Resource Names (URN), and routing information for handling the call.
+     * Android uses this request to make its emergency call instead of using @1.0::IRadio.dial
+     * if the 'address' in the 'dialInfo' field is identified as an emergency number by Android.
+     *
+     * In multi-sim scenario, if the emergency number is from a specific subscription, this radio
+     * request can still be sent out on the other subscription as long as routing is set to
+     * @1.4::EmergencyNumberRouting#EMERGENCY. This radio request will not be sent on an inactive
+     * (PIN/PUK locked) subscription unless both subscriptions are PIN/PUK locked. In this case,
+     * the request will be sent on the primary subscription.
+     *
+     * Some countries or carriers require some emergency numbers that must be handled with normal
+     * 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
+     * emergency number does not have specified emergency Uniform Resource Names, the 'urns' field
+     * is set to an empty list. If the underlying technology used to request emergency services
+     * does not support the emergency service category or emergency uniform resource names, the
+     * field 'categories' or 'urns' may be ignored.
+     *
+     * In the scenarios that the 'address' in the 'dialInfo' field has other functions besides the
+     * emergency number function, if the 'hasKnownUserIntentEmergency' field is true, the user's
+     * intent for this dial request is emergency call, and the modem must treat this as an actual
+     * emergency dial; if the 'hasKnownUserIntentEmergency' field is false, Android does not know
+     * user's intent for this call.
+     *
+     * If 'isTesting' is true, this request is for testing purpose, and must not be sent to a real
+     * emergency service; otherwise it's for a real emergency call request.
+     *
+     * Reference: 3gpp 22.101, Section 10 - Emergency Calls;
+     *            3gpp 23.167, Section 6 - Functional description;
+     *            3gpp 24.503, Section 5.1.6.8.1 - General;
+     *            RFC 5031
+     *
+     * @param serial Serial number of request.
+     * @param dialInfo the same @1.0::Dial information used by @1.0::IRadio.dial.
+     * @param categories bitfield<@1.4::EmergencyServiceCategory> the Emergency Service Category(s)
+     *        of the call.
+     * @param urns the emergency Uniform Resource Names (URN)
+     * @param routing @1.4::EmergencyCallRouting the emergency call routing information.
+     * @param hasKnownUserIntentEmergency Flag indicating if user's intent for the emergency call
+     *        is known.
+     * @param isTesting Flag indicating if this request is for testing purpose.
+     *
+     * Response function is IRadioResponse.emergencyDialResponse()
+     */
+    oneway void emergencyDial(in int serial, in Dial dialInfo,
+            in EmergencyServiceCategory categories, in String[] urns,
+            in EmergencyCallRouting routing, in boolean hasKnownUserIntentEmergency,
+            in boolean isTesting);
+
+    /**
+     * 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.
+     *
+     * Response function is IRadioResponse.enableModemResponse()
+     */
+    oneway void enableModem(in int serial, in boolean on);
+
+    /**
+     * Enable or disable UiccApplications on the SIM. If disabled:
+     *  - Modem will not register on any network.
+     *  - SIM must be PRESENT, and the IccId of the SIM must still be accessible.
+     *  - The corresponding modem stack is still functional, e.g. able to make emergency calls or
+     *    do network scan.
+     * By default if this API is not called, the uiccApplications must be enabled automatically.
+     * It must work for both single SIM and DSDS cases for UX consistency.
+     * The preference is per SIM, and must be remembered over power cycle, modem reboot, or SIM
+     * insertion / unplug.
+     *
+     * @param serial Serial number of request.
+     * @param enable true if to enable uiccApplications, false to disable.
+     *
+     * Response callback is IRadioResponse.enableUiccApplicationsResponse()
+     */
+    oneway void enableUiccApplications(in int serial, in boolean enable);
+
+    /**
+     * Request the radio's system selection module to exit emergency callback mode. Radio must not
+     * respond with SUCCESS until the modem has completely exited from Emergency Callback Mode.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.exitEmergencyCallbackModeResponse()
+     */
+    oneway void exitEmergencyCallbackMode(in int serial);
+
+    /**
+     * Connects the two calls and disconnects the subscriber from both calls.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.explicitCallTransferResponse()
+     */
+    oneway void explicitCallTransfer(in int serial);
+
+    /**
+     * Get carrier restrictions.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.getAllowedCarriersResponse_1_4()
+     */
+    oneway void getAllowedCarriers(in int serial);
+
+    /**
+     * Requests bitmap representing the currently allowed network types.
+     * getPreferredNetworkType, getPreferredNetworkTypesBitmap will not be called anymore
+     * except for IRadio v1.5 or older devices.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.getAllowedNetworkTypesBitmapResponse()
+     */
+    oneway void getAllowedNetworkTypesBitmap(in int serial);
+
+    /**
+     * Get the list of band modes supported by RF.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response function is IRadioResponse.getAvailableBandModesResponse()
+     */
+    oneway void getAvailableBandModes(in int serial);
+
+    /**
+     * Scans for available networks
+     *
+     * @param serial Serial number of request.
+     *
+     * Response function is IRadioResponse.getAvailableNetworksResponse()
+     */
+    oneway void getAvailableNetworks(in int serial);
+
+    /**
+     * Get all the barring info for the current camped cell applicable to the current user.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.getBarringInfoResponse()
+     */
+    oneway void getBarringInfo(in int serial);
+
+    /**
+     * Return string value indicating baseband version, eg response from AT+CGMR
+     *
+     * @param serial Serial number of request.
+     *
+     * Response function is IRadioResponse.getBasebandVersionResponse()
+     */
+    oneway void getBasebandVersion(in int serial);
+
+    /**
+     * Request the device MDN / H_SID / H_NID. The request is only allowed when CDMA subscription
+     * is available. When CDMA subscription is changed, application layer must re-issue the request
+     * to update the subscription information.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.getCDMASubscriptionResponse()
+     */
+    oneway void getCDMASubscription(in int serial);
+
+    /**
+     * Request call forward status.
+     *
+     * @param serial Serial number of request.
+     * @param callInfo CallForwardInfo
+     *
+     * Response function is IRadioResponse.getCallForwardStatusResponse()
+     */
+    oneway void getCallForwardStatus(in int serial, in CallForwardInfo callInfo);
+
+    /**
+     * Query current call waiting state
+     *
+     * @param serial Serial number of request.
+     * @param serviceClass Service class is the TS 27.007 service class to query
+     *
+     * Response function is IRadioResponse.getCallWaitingResponse()
+     */
+    oneway void getCallWaiting(in int serial, in int serviceClass);
+
+    /**
+     * Request the setting of CDMA Broadcast SMS config
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.getCdmaBroadcastConfigResponse()
+     */
+    oneway void getCdmaBroadcastConfig(in int serial);
+
+    /**
+     * Request the actual setting of the roaming preferences in CDMA in the modem
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.getCdmaRoamingPreferenceResponse()
+     */
+    oneway void getCdmaRoamingPreference(in int serial);
+
+    /**
+     * Request to query the location where the CDMA subscription shall be retrieved.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.getCdmaSubscriptionSourceResponse()
+     */
+    oneway void getCdmaSubscriptionSource(in int serial);
+
+    /**
+     * Request all of the current cell information known to the radio. The radio
+     * must return list of all current cells, including the neighboring cells. If for a particular
+     * cell information isn't known then the appropriate unknown value will be returned.
+     * This does not cause or change the rate of unsolicited cellInfoList().
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.getCellInfoListResponse()
+     */
+    oneway void getCellInfoList(in int serial);
+
+    /**
+     * Queries the status of the CLIP supplementary service (for MMI code "*#30#")
+     *
+     * @param serial Serial number of request.
+     *
+     * Response function is IRadioResponse.getClipResponse()
+     */
+    oneway void getClip(in int serial);
+
+    /**
+     * Gets current CLIR status
+     *
+     * @param serial Serial number of request.
+     *
+     * Response function is IRadioResponse.getClirResponse()
+     */
+    oneway void getClir(in int serial);
+
+    /**
+     * Requests current call list
+     *
+     * @param serial Serial number of request.
+     *
+     * Response function is IRadioResponse.getCurrentCallsResponse_1_6()
+     */
+    oneway void getCurrentCalls(in int serial);
+
+    /**
+     * Returns the data call list. An entry is added when a setupDataCall() is issued and removed
+     * on a deactivateDataCall(). The list is emptied when setRadioPower()  off/on issued or when
+     * the vendor HAL or modem crashes.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response function is IRadioResponse.getDataCallListResponse_1_6()
+     */
+    oneway void getDataCallList(in int serial);
+
+    /**
+     * Request current data registration state.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response function is IRadioResponse.getDataRegistrationStateResponse_1_6()
+     */
+    oneway void getDataRegistrationState(in int serial);
+
+    /**
+     * Request the device ESN / MEID / IMEI / IMEISV. The request is always allowed and contains
+     * GSM and CDMA device identity. When CDMA subscription is changed the ESN/MEID changes.
+     * The application layer must re-issue the request to update the device identity in this case.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.getDeviceIdentityResponse()
+     */
+    oneway void getDeviceIdentity(in int serial);
+
+    /**
+     * Query the status of a facility lock state
+     *
+     * @param serial Serial number of request.
+     * @param facility is the facility string code from TS 27.007 7.4
+     *        (eg "AO" for BAOC, "SC" for SIM lock)
+     * @param password is the password, or "" if not required
+     * @param serviceClass is the TS 27.007 service class bit vector of services to query
+     * @param appId is AID value, See ETSI 102.221 8.1 and 101.220 4, empty string if no value.
+     *        This is only applicable in the case of Fixed Dialing Numbers (FDN) requests.
+     *
+     * Response function is IRadioResponse.getFacilityLockForAppResponse()
+     */
+    oneway void getFacilityLockForApp(in int serial, in String facility, in String password,
+            in int serviceClass, in String appId);
+
+    /**
+     * Request the setting of GSM/WCDMA Cell Broadcast SMS config.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.getGsmBroadcastConfigResponse()
+     */
+    oneway void getGsmBroadcastConfig(in int serial);
+
+    /**
+     * Request all of the current hardware (modem and sim) associated with Radio.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.getHardwareConfigResponse()
+     */
+    oneway void getHardwareConfig(in int serial);
+
+    /**
+     * Requests status of the ICC card
+     *
+     * @param serial Serial number of request.
+     *
+     * Response function is IRadioResponse.getIccCardStatusResponse()
+     *
+     */
+    oneway void getIccCardStatus(in int serial);
+
+    /**
+     * Request current IMS registration state
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.getImsRegistrationStateResponse()
+     */
+    oneway void getImsRegistrationState(in int serial);
+
+    /**
+     * Get the SIM IMSI. Only valid when radio state is "RADIO_STATE_ON"
+     *
+     * @param serial Serial number of request.
+     * @param aid AID value, See ETSI 102.221 8.1 and 101.220 4, empty string if no value.
+     *
+     * Response function is IRadioResponse.getImsiForAppResponse()
+     *
+     */
+    oneway void getImsiForApp(in int serial, in String aid);
+
+    /**
+     * Requests the failure cause code for the most recently terminated call.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response function is IRadioResponse.getLastCallFailCauseResponse()
+     *
+     */
+    oneway void getLastCallFailCause(in int serial);
+
+    /**
+     * Get modem activity information for power consumption estimation. Request clear-on-read
+     * statistics information that is used for estimating the per-millisecond power consumption
+     * of the cellular modem.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.getModemActivityInfoResponse()
+     */
+    oneway void getModemActivityInfo(in int serial);
+
+    /**
+     * 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.
+     *
+     * Response function is IRadioResponse.getModemStackStatusResponse()
+     */
+    oneway void getModemStackStatus(in int serial);
+
+    /**
+     * Queries the current state of the uplink mute setting
+     *
+     * @param serial Serial number of request.
+     *
+     * Response function is IRadioResponse.getMuteResponse()
+     */
+    oneway void getMute(in int serial);
+
+    /**
+     * Request neighboring cell id in GSM network
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.getNeighboringCidsResponse()
+     */
+    oneway void getNeighboringCids(in int serial);
+
+    /**
+     * Query current network selection mode
+     *
+     * @param serial Serial number of request.
+     *
+     * Response function is IRadioResponse.getNetworkSelectionModeResponse()
+     */
+    oneway void getNetworkSelectionMode(in int serial);
+
+    /**
+     * Request current operator ONS or EONS
+     *
+     * @param serial Serial number of request.
+     *
+     * Response function is IRadioResponse.getOperatorResponse()
+     */
+    oneway void getOperator(in int serial);
+
+    /**
+     * Query the preferred network type (CS/PS domain, RAT, and operation mode)
+     * for searching and registering
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.getPreferredNetworkTypeResponse()
+     */
+    oneway void getPreferredNetworkType(in int serial);
+
+    /**
+     * Query the preferred network type bitmap.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.getPreferredNetworkTypeBitmapResponse()
+     */
+    oneway void getPreferredNetworkTypeBitmap(in int serial);
+
+    /**
+     * Request the setting of preferred voice privacy mode.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.getPreferredVoicePrivacyResponse()
+     */
+    oneway void getPreferredVoicePrivacy(in int serial);
+
+    /**
+     * Used to get phone radio capability.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.getRadioCapabilityResponse()
+     */
+    oneway void getRadioCapability(in int serial);
+
+    /**
+     * Requests current signal strength and associated information. Must succeed if radio is on.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response function is IRadioResponse.getSignalStrengthResponse_1_6()
+     */
+    oneway void getSignalStrength(in int serial);
+
+    /**
+     * Get the phone book capacity
+     *
+     * @param serial Serial number of request.
+     *
+     * Response function is defined from IRadioResponse.getSimPhonebookCapacityResponse()
+     */
+    oneway void getSimPhonebookCapacity(in int serial);
+
+    /**
+     * Get the local and global phonebook records from the SIM card.
+     * This should be called again after a simPhonebookChanged notification is received.
+     * The phonebook records are received via IRadioIndication.simPhonebookRecordsReceived()
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.getSimPhonebookRecordsResponse()
+     */
+    oneway void getSimPhonebookRecords(in int serial);
+
+    /**
+     * Request to get the current slicing configuration including URSP rules and NSSAIs
+     * (configured, allowed and rejected). URSP stands for UE route selection policy and is defined
+     * in 3GPP TS 24.526 Section 4.2. An NSSAI is a collection of network slices. Each network slice
+     * is identified by an S-NSSAI and is represented by the struct SliceInfo. NSSAI and S-NSSAI
+     * are defined in 3GPP TS 24.501.
+     *
+     * Response function is IRadioResponse.getSlicingConfigResponse()
+     */
+    oneway void getSlicingConfig(in int serial);
+
+    /**
+     * Get the default Short Message Service Center address on the device.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.getSmscAddressResponse()
+     */
+    oneway void getSmscAddress(in int serial);
+
+    /**
+     * Get which bands the modem's background scan is acting on.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.getSystemSelectionChannelsResponse()
+     */
+    oneway void getSystemSelectionChannels(in int serial);
+
+    /**
+     * Request the setting of TTY mode
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.getTTYModeResponse()
+     */
+    oneway void getTTYMode(in int serial);
+
+    /**
+     * Query the radio technology type (3GPP/3GPP2) used for voice. Query is valid only
+     * when radio state is not RADIO_STATE_UNAVAILABLE
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.getVoiceRadioTechnologyResponse()
+     */
+    oneway void getVoiceRadioTechnology(in int serial);
+
+    /**
+     * Request current voice registration state.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response function is IRadioResponse.getVoiceRegistrationStateResponse()
+     */
+    oneway void getVoiceRegistrationState(in int serial);
+
+    /**
+     * When STK application gets stkCallSetup(), the call actually has been initialized by the
+     * mobile device already. (We could see the call has been in the 'call list'). STK application
+     * needs to accept/reject the call according to user operations.
+     *
+     * @param serial Serial number of request.
+     * @param accept true = accept the call setup, false = reject the call setup
+     *
+     * Response callback is IRadioResponse.handleStkCallSetupRequestFromSimResponse()
+     */
+    oneway void handleStkCallSetupRequestFromSim(in int serial, in boolean accept);
+
+    /**
+     * Hang up a specific line (like AT+CHLD=1x). After this HANGUP request returns, Radio must
+     * show the connection is NOT active anymore in next getCurrentCalls() query.
+     *
+     * @param serial Serial number of request.
+     * @param gsmIndex Connection index (value of 'x' in CHLD above)
+     *
+     * Response function is IRadioResponse.hangupResponse()
+     */
+    oneway void hangup(in int serial, in int gsmIndex);
+
+    /**
+     * Hang up waiting or held (like AT+CHLD=1). After this HANGUP request returns, Radio must show
+     * the connection is NOT active anymore in next getCurrentCalls() query.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response function is IRadioResponse.hangupForegroundResumeBackgroundResponse()
+     */
+    oneway void hangupForegroundResumeBackground(in int serial);
+
+    /**
+     * Hang up waiting or held (like AT+CHLD=0). After this HANGUP request returns, Radio must show
+     * the connection is NOT active anymore in next getCurrentCalls() query.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response function is IRadioResponse.hangupWaitingOrBackgroundResponse()
+     */
+    oneway void hangupWaitingOrBackground(in int serial);
+
+    /**
+     * Close a previously opened logical channel. This command reflects TS 27.007
+     * "close logical channel" operation (+CCHC).
+     *
+     * @param serial Serial number of request.
+     * @param channelId session id of the logical channel (+CCHC).
+     *
+     * Response callback is IRadioResponse.iccCloseLogicalChannelResponse()
+     */
+    oneway void iccCloseLogicalChannel(in int serial, in int channelId);
+
+    /**
+     * Request ICC I/O operation. This is similar to the TS 27.007 "restricted SIM" operation where
+     * it assumes all of the EF selection must be done by the callee. Arguments and responses that
+     * are unused for certain values of "command" must be ignored or set to empty string.
+     * Note that IccIo has a "PIN2" field which may be empty string, or may specify a PIN2 for
+     * operations that require a PIN2 (eg updating FDN records).
+     *
+     * @param serial Serial number of request.
+     * @param iccIo IccIo
+     *
+     * Response function is IRadioResponse.iccIOForAppResponse()
+     */
+    oneway void iccIOForApp(in int serial, in IccIo iccIo);
+
+    /**
+     * Open a new logical channel and select the given application. This command
+     * reflects TS 27.007 "open logical channel" operation (+CCHO).
+     *
+     * @param serial Serial number of request.
+     * @param aid AID value, See ETSI 102.221 and 101.220.
+     * @param p2 P2 value, described in ISO 7816-4. Ignore if equal to P2Constant:NO_P2
+     *
+     * Response callback is IRadioResponse.iccOpenLogicalChannelResponse()
+     */
+    oneway void iccOpenLogicalChannel(in int serial, in String aid, in int p2);
+
+    /**
+     * Request APDU exchange on the basic channel. This command reflects TS 27.007
+     * "generic SIM access" operation (+CSIM). The modem must ensure proper function of GSM/CDMA,
+     * and filter commands appropriately. It must filter channel management and SELECT by DF
+     * name commands. "sessionid" field must be ignored.
+     *
+     * @param serial Serial number of request.
+     * @param message SimApdu as defined in types.hal to be sent
+     *
+     * Response callback is IRadioResponse.iccTransmitApduBasicChannelResponse()
+     */
+    oneway void iccTransmitApduBasicChannel(in int serial, in SimApdu message);
+
+    /**
+     * Exchange APDUs with a UICC over a previously opened logical channel. This command reflects
+     * TS 27.007 "generic logical channel access" operation (+CGLA). The modem must filter channel
+     * management and SELECT by DF name commands.
+     *
+     * @param serial Serial number of request.
+     * @param message SimApdu as defined in types.hal to be sent
+     *
+     * Response callback is IRadioResponse.iccTransmitApduLogicalChannelResponse()
+     */
+    oneway void iccTransmitApduLogicalChannel(in int serial, in SimApdu message);
+
+    /**
+     * Is E-UTRA-NR Dual Connectivity enabled
+     *
+     * @param serial Serial number of request.
+     * Response callback is IRadioResponse.isNrDualConnectivityEnabledResponse()
+     */
+    oneway void isNrDualConnectivityEnabled(in int serial);
+
+    /**
+     * Read one of the radio NV items.
+     * This is used for device configuration by some CDMA operators.
+     *
+     * @param serial Serial number of request.
+     * @param itemId NvItem is radio NV item as defined in types.hal
+     *
+     * Response callback is IRadioResponse.nvReadItemResponse()
+     */
+    oneway void nvReadItem(in int serial, in NvItem itemId);
+
+    /**
+     * Reset the radio NV configuration to the factory state.
+     * This is used for device configuration by some CDMA operators.
+     *
+     * @param serial Serial number of request.
+     * @param resetType ResetNvType as defined in types.hal
+     *
+     * Response callback is IRadioResponse.nvResetConfigResponse()
+     */
+    oneway void nvResetConfig(in int serial, in ResetNvType resetType);
+
+    /**
+     * Update the CDMA Preferred Roaming List (PRL) in the radio NV storage.
+     * This is used for device configuration by some CDMA operators.
+     *
+     * @param serial Serial number of request.
+     * @param prl PRL as a byte array
+     *
+     * Response callback is IRadioResponse.nvWriteCdmaPrlResponse()
+     */
+    oneway void nvWriteCdmaPrl(in int serial, in byte[] prl);
+
+    /**
+     * Write one of the radio NV items.
+     * This is used for device configuration by some CDMA operators.
+     *
+     * @param serial Serial number of request.
+     * @param item NvWriteItem as defined in types.hal
+     *
+     * Response callback is IRadioResponse.nvWriteItemResponse()
+     */
+    oneway void nvWriteItem(in int serial, in NvWriteItem item);
+
+    /**
+     * Pull LCE service for capacity information.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.pullLceDataResponse() which may return
+     * RadioError:REQUEST_NOT_SUPPORTED if @1.2::IRadio or higher is supported.
+     *
+     * DEPRECATED in @1.2 or higher which use the always-on LCE that relies on indications.
+     */
+    oneway void pullLceData(in int serial);
+
+    /**
+     * Send UDUB (user determined user busy) to ringing or waiting call answer)
+     *
+     * @param serial Serial number of request.
+     *
+     * Response function is IRadioResponse.rejectCallResponse()
+     */
+    oneway void rejectCall(in int serial);
+
+    /**
+     * Releases a pdu session id that was previously allocated using allocatePduSessionId.
+     * Reference: 3GPP TS 24.007 section 11.2.3.1b
+     *
+     * @param serial Serial number of request.
+     * @param id Pdu session id to release.
+     *
+     * Response function is IRadioResponse.releasePduSessionIdResponse()
+     */
+    oneway void releasePduSessionId(in int serial, in int id);
+
+    /**
+     * Indicates whether there is storage available for new SMS messages.
+     *
+     * @param serial Serial number of request.
+     * @param available true if memory is available for storing new messages,
+     *        false if memory capacity is exceeded
+     *
+     * Response callback is IRadioResponse.reportSmsMemoryStatusResponse()
+     */
+    oneway void reportSmsMemoryStatus(in int serial, in boolean available);
+
+    /**
+     * Indicates that the StkService is running and is ready to receive unsolicited stk commands.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.reportStkServiceIsRunningResponse()
+     */
+    oneway void reportStkServiceIsRunning(in int serial);
+
+    /**
+     * Returns the response of SIM Authentication through Radio challenge request.
+     *
+     * @param serial Serial number of request.
+     * @param authContext P2 value of authentication command, see P2 parameter in
+     *        3GPP TS 31.102 7.1.2
+     * @param authData the challenge string in Base64 format, see 3GPP TS 31.102 7.1.2
+     * @param aid AID value, See ETSI 102.221 8.1 and 101.220 4, empty string if no value
+     *
+     * Response callback is IRadioResponse.requestIccSimAuthenticationResponse()
+     */
+    oneway void requestIccSimAuthentication(
+            in int serial, in int authContext, in String authData, in String aid);
+
+    /**
+     * Request the ISIM application on the UICC to perform AKA challenge/response algorithm
+     * for IMS authentication
+     *
+     * @param serial Serial number of request.
+     * @param challenge challenge string in Base64 format
+     *
+     * Response callback is IRadioResponse.requestIsimAuthenticationResponse()
+     */
+    oneway void requestIsimAuthentication(in int serial, in String challenge);
+
+    /**
+     * Device is shutting down. All further commands are ignored and RADIO_NOT_AVAILABLE
+     * must be returned.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.requestShutdownResponse()
+     */
+    oneway void requestShutdown(in int serial);
+
+    /**
+     * When response type received from a radio indication or radio response is
+     * RadioIndicationType:UNSOLICITED_ACK_EXP or RadioResponseType:SOLICITED_ACK_EXP respectively,
+     * acknowledge the receipt of those messages by sending responseAcknowledgement().
+     */
+    oneway void responseAcknowledgement();
+
+    /**
+     * Send DTMF string
+     *
+     * @param serial Serial number of request.
+     * @param dtmf DTMF string
+     * @param on DTMF ON length in milliseconds, or 0 to use default
+     * @param off is the DTMF OFF length in milliseconds, or 0 to use default
+     *
+     * Response callback is IRadioResponse.sendBurstDtmfResponse()
+     */
+    oneway void sendBurstDtmf(in int serial, in String dtmf, in int on, in int off);
+
+    /**
+     * Send FLASH command
+     *
+     * @param serial Serial number of request.
+     * @param featureCode String associated with Flash command
+     *
+     * Response callback is IRadioResponse.sendCDMAFeatureCodeResponse()
+     */
+    oneway void sendCDMAFeatureCode(in int serial, in String featureCode);
+
+    /**
+     * Send a CDMA SMS message
+     *
+     * @param serial Serial number of request.
+     * @param sms Cdma Sms to be sent described by CdmaSmsMessage in types.hal
+     *
+     * Response callback is IRadioResponse.sendCdmaSmsResponse()
+     */
+    oneway void sendCdmaSms(in int serial, in CdmaSmsMessage sms);
+
+    /**
+     * Send an SMS message. Identical to sendCdmaSms, except that more messages are expected to be
+     * sent soon.
+     *
+     * @param serial Serial number of request.
+     * @param sms Cdma Sms to be sent described by CdmaSmsMessage in types.hal
+     *
+     * Response callback is IRadioResponse.sendCdmaSMSExpectMoreResponse()
+     */
+    oneway void sendCdmaSmsExpectMore(in int serial, in CdmaSmsMessage sms);
+
+    /**
+     * Send the updated device state. This is providing the device state information for the modem
+     * to perform power saving strategies.
+     *
+     * @param serial Serial number of request.
+     * @param deviceStateType The updated device state type.
+     * @param state The updated state. See the definition of state at DeviceStateType.
+     *
+     * Response callback is IRadioResponse.sendDeviceStateResponse()
+     */
+    oneway void sendDeviceState(
+            in int serial, in DeviceStateType deviceStateType, in boolean state);
+
+    /**
+     * Send a DTMF tone. If the implementation is currently playing a tone requested via
+     * startDtmf(), that tone must be cancelled and the new tone must be played instead.
+     *
+     * @param serial Serial number of request.
+     * @param s string with single char having one of 12 values: 0-9, *, #
+     *
+     * Response function is IRadioResponse.sendDtmfResponse()
+     */
+    oneway void sendDtmf(in int serial, in String s);
+
+    /**
+     * Requests to send a SAT/USAT envelope command to SIM.
+     * The SAT/USAT envelope command refers to 3GPP TS 11.14 and 3GPP TS 31.111
+     *
+     * @param serial Serial number of request.
+     * @param command SAT/USAT command in hexadecimal format string starting with command tag
+     *
+     * Response function is IRadioResponse.sendEnvelopeResponse()
+     */
+    oneway void sendEnvelope(in int serial, in String command);
+
+    /**
+     * Requests to send a SAT/USAT envelope command to SIM. The SAT/USAT envelope command refers to
+     * 3GPP TS 11.14 and 3GPP TS 31.111. This request has one difference from sendEnvelope():
+     * The SW1 and SW2 status bytes from the UICC response are returned along with the response
+     * data, using the same structure as iccIOForApp(). The implementation must perform normal
+     * processing of a '91XX' response in SW1/SW2 to retrieve the pending proactive command and
+     * send it as an unsolicited response, as sendEnvelope() does.
+     *
+     * @param serial Serial number of request.
+     * @param contents SAT/USAT command in hexadecimal format starting with command tag
+     *
+     * Response callback is IRadioResponse.sendEnvelopeWithStatusResponse()
+     */
+    oneway void sendEnvelopeWithStatus(in int serial, in String contents);
+
+    /**
+     * Send a SMS message over IMS. Based on the return error, caller decides to resend if sending
+     * sms fails. SMS_SEND_FAIL_RETRY means retry, and other errors means no retry.
+     * In case of retry, data is encoded based on Voice Technology available.
+     *
+     * @param serial Serial number of request.
+     * @param message ImsSmsMessage as defined in types.hal to be sent
+     *
+     * Response callback is IRadioResponse.sendImsSmsResponse()
+     */
+    oneway void sendImsSms(in int serial, in ImsSmsMessage message);
+
+    /**
+     * Send an SMS message. Identical to sendSms, except that more messages are expected to be sent
+     * soon. If possible, keep SMS relay protocol link open (eg TS 27.005 AT+CMMS command).
+     * Based on the returned error, caller decides to resend if sending sms fails.
+     * RadioError:SMS_SEND_FAIL_RETRY means retry (i.e. error cause is 332) and
+     * RadioError:GENERIC_FAILURE means no retry (i.e. error cause is 500)
+     *
+     * @param serial Serial number of request.
+     * @param message GsmSmsMessage as defined in types.hal
+     *
+     * Response function is IRadioResponse.sendSMSExpectMoreResponse()
+     *
+     * DEPRECATED in @1.6 or higher which uses sendSmsExpectMore().
+     */
+    oneway void sendSMSExpectMore(in int serial, in GsmSmsMessage message);
+
+    /**
+     * Send an SMS message. Based on the returned error, caller decides to resend if sending sms
+     * fails. RadioError:SMS_SEND_FAIL_RETRY means retry (i.e. error cause is 332) and
+     * RadioError:GENERIC_FAILURE means no retry (i.e. error cause is 500)
+     *
+     * @param serial Serial number of request.
+     * @param message GsmSmsMessage as defined in types.hal
+     *
+     * Response function is IRadioResponse.sendSmsResponse()
+     */
+    oneway void sendSms(in int serial, in GsmSmsMessage message);
+
+    /**
+     * Send an SMS message. Identical to sendSms, except that more messages are expected to be sent
+     * soon. If possible, keep SMS relay protocol link open (eg TS 27.005 AT+CMMS command).
+     * Based on the return error, caller decides to resend if sending sms fails.
+     * RadioError:SMS_SEND_FAIL_RETRY means retry (i.e. error cause is 332) and
+     * RadioError:GENERIC_FAILURE means no retry (i.e. error cause is 500)
+     *
+     * @param serial Serial number of request.
+     * @param message GsmSmsMessage as defined in types.hal
+     *
+     * Response function is IRadioResponse.sendSmsExpectMoreResponse()
+     */
+    oneway void sendSmsExpectMore(in int serial, in GsmSmsMessage message);
+
+    /**
+     * Requests to send a terminal response to SIM for a received proactive command
+     *
+     * @param serial Serial number of request.
+     * @param commandResponse SAT/USAT response in hexadecimal format string starting with
+     *        first byte of response data
+     *
+     * Response function is IRadioResponse.sendTerminalResponseResponseToSim()
+     */
+    oneway void sendTerminalResponseToSim(in int serial, in String commandResponse);
+
+    /**
+     * Send a USSD message. If a USSD session already exists, the message must be sent in the
+     * context of that session. Otherwise, a new session must be created. The network reply must be
+     * reported via unsolOnUssd.
+     *
+     * Only one USSD session must exist at a time, and the session is assumed to exist until:
+     * a) The android system invokes cancelUssd()
+     * b) The implementation sends a unsolOnUssd() with a type code of
+     *    "0" (USSD-Notify/no further action) or "2" (session terminated)
+     *
+     * @param serial Serial number of request.
+     * @param ussd string containing the USSD request in UTF-8 format
+     *
+     * Response function is IRadioResponse.sendUssdResponse()
+     *
+     * See also requestCancelUssd, unsolOnUssd
+     */
+    oneway void sendUssd(in int serial, in String ussd);
+
+    /**
+     * Separate a party from a multiparty call placing the multiparty call (less the specified
+     * party) on hold and leaving the specified party as the only other member of the current
+     * (active) call. Like AT+CHLD=2x.
+     *
+     * See TS 22.084 1.3.8.2 (iii)
+     * TS 22.030 6.5.5 "Entering "2X followed by send"
+     * TS 27.007 "AT+CHLD=2x"
+     *
+     * @param serial Serial number of request.
+     * @param gsmIndex contains Connection index (value of 'x' in CHLD above)
+     *
+     * Response function is IRadioResponse.separateConnectionResponse()
+     */
+    oneway void separateConnection(in int serial, in int gsmIndex);
+
+    /**
+     * Set carrier restrictions. Expected modem behavior:
+     *  If never receives this command:
+     *  - Must allow all carriers
+     *  Receives this command:
+     *  - Only allow carriers specified in carriers. The restriction persists across power cycles
+     *    and FDR. If a present SIM is allowed, modem must not reload the SIM. If a present SIM is
+     *    *not* allowed, modem must detach from the registered network and only keep emergency
+     *    service, and notify Android SIM refresh reset with new SIM state being
+     *    CardState:RESTRICTED. Emergency service must be enabled.
+     *
+     * @param serial Serial number of request.
+     * @param carriers CarrierRestrictionsWithPriority consisting allowed and excluded carriers
+     *        as defined in types.hal
+     * @param multiSimPolicy Policy to be used for devices with multiple SIMs.
+     *
+     * Response callback is IRadioResponse.setAllowedCarriersResponse()
+     */
+    oneway void setAllowedCarriers(in int serial, in CarrierRestrictionsWithPriority carriers,
+            in SimLockMultiSimPolicy multiSimPolicy);
+
+    /**
+     * Requests to set the network type for searching and registering. Instruct the radio to
+     * *only* accept the types of network provided. setPreferredNetworkTypesBitmap and
+     * setPreferredNetworkType will not be called anymore except for IRadio v1.5 or older devices.
+     * In case of an emergency call, the modem is authorized to bypass this restriction.
+     *
+     * @param serial Serial number of request.
+     * @param networkTypeBitmap a 32-bit bearer bitmap of RadioAccessFamily
+     *
+     * Response callback is IRadioResponse.setAllowedNetworkTypesBitmapResponse()
+     */
+    oneway void setAllowedNetworkTypesBitmap(in int serial, in RadioAccessFamily networkTypeBitmap);
+
+    /**
+     * Assign a specified band for RF configuration.
+     *
+     * @param serial Serial number of request.
+     * @param mode RadioBandMode defined in types.hal
+     *
+     * Response function is IRadioResponse.setBandModeResponse()
+     */
+    oneway void setBandMode(in int serial, in RadioBandMode mode);
+
+    /**
+     * Change call barring facility password
+     *
+     * @param serial Serial number of request.
+     * @param facility facility string code from TS 27.007 7.4 (eg "AO" for BAOC)
+     * @param oldPassword old password
+     * @param newPassword new password
+     *
+     * Response function is IRadioResponse.setBarringPasswordResponse()
+     */
+    oneway void setBarringPassword(
+            in int serial, in String facility, in String oldPassword, in String newPassword);
+
+    /**
+     * Configure call forward rule
+     *
+     * @param serial Serial number of request.
+     * @param callInfo CallForwardInfo
+     *
+     * Response function is IRadioResponse.setCallForwardResponse()
+     */
+    oneway void setCallForward(in int serial, in CallForwardInfo callInfo);
+
+    /**
+     * Configure current call waiting state
+     *
+     * @param serial Serial number of request.
+     * @param enable is false for "disabled" and true for "enabled"
+     * @param serviceClass is the TS 27.007 service class bit vector of services to modify
+     *
+     * Response function is IRadioResponse.setCallWaitingResponse()
+     */
+    oneway void setCallWaiting(in int serial, in boolean enable, in int serviceClass);
+
+    /**
+     * Provide Carrier specific information to the modem that must be used to encrypt the IMSI and
+     * IMPI. Sent by the framework during boot, carrier switch and everytime the framework receives
+     * a new certificate.
+     *
+     * @param serial Serial number of request.
+     * @param imsiEncryptionInfo ImsiEncryptionInfo as defined in types.hal.
+     *
+     * Response callback is IRadioResponse.setCarrierInfoForImsiEncryptionResponse()
+     */
+    oneway void setCarrierInfoForImsiEncryption(
+            in int serial, in ImsiEncryptionInfo imsiEncryptionInfo);
+
+    /**
+     * Enable or disable the reception of CDMA Cell Broadcast SMS
+     *
+     * @param serial Serial number of request.
+     * @param activate indicates to activate or turn off the reception of CDMA
+     *        Cell Broadcast SMS. true = activate, false = turn off
+     *
+     * Response callback is IRadioResponse.setCdmaBroadcastActivationResponse()
+     */
+    oneway void setCdmaBroadcastActivation(in int serial, in boolean activate);
+
+    /**
+     * Set CDMA Broadcast SMS config
+     *
+     * @param serial Serial number of request.
+     * @param configInfo CDMA Broadcast SMS config to be set.
+     *
+     * Response callback is IRadioResponse.setCdmaBroadcastConfigResponse()
+     */
+    oneway void setCdmaBroadcastConfig(in int serial, in CdmaBroadcastSmsConfigInfo[] configInfo);
+
+    /**
+     * Request to set the roaming preferences in CDMA
+     *
+     * @param serial Serial number of request.
+     * @param type CdmaRoamingType defined in types.hal
+     *
+     * Response callback is IRadioResponse.setCdmaRoamingPreferenceResponse()
+     */
+    oneway void setCdmaRoamingPreference(in int serial, in CdmaRoamingType type);
+
+    /**
+     * Request to set the location where the CDMA subscription shall be retrieved
+     *
+     * @param serial Serial number of request.
+     * @param cdmaSub CdmaSubscriptionSource
+     *
+     * Response callback is IRadioResponse.setCdmaSubscriptionSourceResponse()
+     */
+    oneway void setCdmaSubscriptionSource(in int serial, in CdmaSubscriptionSource cdmaSub);
+
+    /**
+     * Sets the minimum time between when unsolicited cellInfoList() must be invoked.
+     * A value of 0, means invoke cellInfoList() when any of the reported information changes.
+     * Setting the value to INT_MAX(0x7fffffff) means never issue a unsolicited cellInfoList().
+     *
+     * @param serial Serial number of request.
+     * @param rate minimum time in milliseconds to indicate time between unsolicited cellInfoList()
+     *
+     * Response callback is IRadioResponse.setCellInfoListRateResponse()
+     */
+    oneway void setCellInfoListRate(in int serial, in int rate);
+
+    /**
+     * Set current CLIR status
+     *
+     * @param serial Serial number of request.
+     * @param status "n" parameter from TS 27.007 7.7
+     *
+     * Response function is IRadioResponse.setClirResponse()
+     */
+    oneway void setClir(in int serial, in int status);
+
+    /**
+     * Tells the modem whether data calls are allowed or not
+     *
+     * @param serial Serial number of request.
+     * @param allow true to allow data calls, false to disallow data calls
+     *
+     * Response callback is IRadioResponse.setDataAllowedResponse()
+     */
+    oneway void setDataAllowed(in int serial, in boolean allow);
+
+    /**
+     * Send data profiles of the current carrier to the modem.
+     *
+     * @param serial Serial number of request.
+     * @param profiles Array of DataProfileInfo to set.
+     *
+     * Response callback is IRadioResponse.setDataProfileResponse()
+     */
+    oneway void setDataProfile(in int serial, in DataProfileInfo[] profiles);
+
+    /**
+     * Control data throttling at modem.
+     * - DataThrottlingAction:NO_DATA_THROTTLING should clear any existing data throttling within
+     *   the requested completion window.
+     * - DataThrottlingAction:THROTTLE_SECONDARY_CARRIER: Remove any existing throttling on anchor
+     *   carrier and achieve maximum data throttling on secondary carrier within the requested
+     *   completion window.
+     * - DataThrottlingAction:THROTTLE_ANCHOR_CARRIER: disable secondary carrier and achieve maximum
+     *   data throttling on anchor carrier by requested completion window.
+     * - DataThrottlingAction:HOLD: Immediately hold on to current level of throttling.
+     *
+     * @param serial Serial number of request.
+     * @param dataThrottlingAction DataThrottlingAction as defined in types.hal
+     * @param completionDurationMillis window, in milliseconds, in which the requested throttling
+     *        action has to be achieved. This must be 0 when dataThrottlingAction is
+     *        DataThrottlingAction:HOLD.
+     *
+     * Response function is IRadioResponse.setDataThrottlingResponse()
+     */
+    oneway void setDataThrottling(in int serial, in DataThrottlingAction dataThrottlingAction,
+            in long completionDurationMillis);
+
+    /**
+     * Enable/disable one facility lock
+     *
+     * @param serial Serial number of request.
+     * @param facility is the facility string code from TS 27.007 7.4 (eg "AO" for BAOC)
+     * @param lockState false for "unlock" and true for "lock"
+     * @param password is the password
+     * @param serviceClass is string representation of decimal TS 27.007 service class bit vector.
+     *        Eg, the string "1" means "set this facility for voice services"
+     * @param appId is AID value, See ETSI 102.221 8.1 and 101.220 4, empty string if no value.
+     *        This is only applicable in the case of Fixed Dialing Numbers (FDN) requests.
+     *
+     * Response function is IRadioResponse.setFacilityLockForAppResponse()
+     */
+    oneway void setFacilityLockForApp(in int serial, in String facility, in boolean lockState,
+            in String password, in int serviceClass, in String appId);
+
+    /**
+     * Enable or disable the reception of GSM/WCDMA Cell Broadcast SMS
+     *
+     * @param serial Serial number of request.
+     * @param activate indicates to activate or turn off the reception of GSM/WCDMA
+     *        Cell Broadcast SMS. true = activate, false = turn off
+     *
+     * Response callback is IRadioResponse.setGsmBroadcastActivationResponse()
+     */
+    oneway void setGsmBroadcastActivation(in int serial, in boolean activate);
+
+    /**
+     * Set GSM/WCDMA Cell Broadcast SMS config
+     *
+     * @param serial Serial number of request.
+     * @param configInfo Setting of GSM/WCDMA Cell broadcast config
+     *
+     * Response callback is IRadioResponse.setGsmBroadcastConfigResponse()
+     */
+    oneway void setGsmBroadcastConfig(in int serial, in GsmBroadcastSmsConfigInfo[] configInfo);
+
+    /**
+     * Sets the indication filter. Prevents the reporting of specified unsolicited indications from
+     * the radio. This is used for power saving in instances when those indications are not needed.
+     * If unset, defaults to IndicationFilter:ALL.
+     *
+     * @param serial Serial number of request.
+     * @param indicationFilter 32-bit bitmap of IndicationFilter. Bits set to 1 indicate the
+     *        indications are enabled. See IndicationFilter for the definition of each bit.
+     *
+     * Response callback is IRadioResponse.setIndicationFilterResponse()
+     */
+    oneway void setIndicationFilter(in int serial, in IndicationFilter indicationFilter);
+
+    /**
+     * Set an APN to initial attach network.
+     *
+     * @param serial Serial number of request.
+     * @param dataProfileInfo data profile containing APN settings
+     *
+     * Response callback is IRadioResponse.setInitialAttachApnResponse()
+     */
+    oneway void setInitialAttachApn(in int serial, in DataProfileInfo dataProfileInfo);
+
+    /**
+     * Sets the link capacity reporting criteria. The resulting reporting criteria are the AND of
+     * all the supplied criteria. Note that reporting criteria must be individually set for each
+     * RAN. If unset, reporting criteria for that RAN are implementation-defined.
+     *
+     * Response callback is IRadioResponse.setLinkCapacityReportingCriteriaResponse().
+     *
+     * @param serial Serial number of request.
+     * @param hysteresisMs A hysteresis time in milliseconds to prevent flapping. A value of 0
+     *        disables hysteresis.
+     * @param hysteresisDlKbps An interval in kbps defining the required magnitude change between DL
+     *        reports. hysteresisDlKbps must be smaller than the smallest threshold delta. A value
+     *        of 0 disables hysteresis.
+     * @param hysteresisUlKbps An interval in kbps defining the required magnitude change between UL
+     *        reports. hysteresisUlKbps must be smaller than the smallest threshold delta. A value
+     *        of 0 disables hysteresis.
+     * @param thresholdsDownlinkKbps A vector of trigger thresholds in kbps for downlink reports. A
+     *        vector size of 0 disables the use of DL thresholds for reporting.
+     * @param thresholdsUplinkKbps A vector of trigger thresholds in kbps for uplink reports. A
+     *        vector size of 0 disables the use of UL thresholds for reporting.
+     * @param accessNetwork The type of network for which to apply these thresholds.
+     */
+    oneway void setLinkCapacityReportingCriteria(in int serial, in int hysteresisMs,
+            in int hysteresisDlKbps, in int hysteresisUlKbps, in int[] thresholdsDownlinkKbps,
+            in int[] thresholdsUplinkKbps, in AccessNetwork accessNetwork);
+
+    /**
+     * Enables/disables network state change notifications due to changes in LAC and/or CID (for
+     * GSM) or BID/SID/NID/latitude/longitude (for CDMA). Basically +CREG=2 vs. +CREG=1 (TS 27.007).
+     * The Radio implementation must default to "updates enabled" when the screen is on and
+     * "updates disabled" when the screen is off.
+     *
+     * @param serial Serial number of request.
+     * @param enable true=updates enabled (+CREG=2), false=updates disabled (+CREG=1)
+     *
+     * Response callback is IRadioResponse.setLocationUpdatesResponse()
+     */
+    oneway void setLocationUpdates(in int serial, in boolean enable);
+
+    /**
+     * Turn on or off uplink (microphone) mute. Must only be sent while voice call is active.
+     * Must always be reset to "disable mute" when a new voice call is initiated
+     *
+     * @param serial Serial number of request.
+     * @param enable true for "enable mute" and false for "disable mute"
+     *
+     * Response function is IRadioResponse.setMuteResponse()
+     */
+    oneway void setMute(in int serial, in boolean enable);
+
+    /**
+     * Specify that the network must be selected automatically.
+     * This request must not respond until the new operator is selected and registered.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response function is IRadioResponse.setNetworkSelectionModeAutomaticResponse()
+     */
+    oneway void setNetworkSelectionModeAutomatic(in int serial);
+
+    /**
+     * Manually select a specified network. This request must not respond until the new operator is
+     * selected and registered. Per TS 23.122, the RAN is just the initial suggested value.
+     * If registration fails, the RAN is not available afterwards, or the RAN is not within the
+     * network types specified by IRadio::setPreferredNetworkTypeBitmap, then the modem will need to
+     * select the next best RAN for network registration.
+     *
+     * @param serial Serial number of request.
+     * @param operatorNumeric String specifying MCCMNC of network to select (eg "310170").
+     * @param ran Initial suggested radio access network type. If value is UNKNOWN, the modem
+     *        will select the next best RAN for network registration.
+     *
+     * Response function is IRadioResponse.setNetworkSelectionModeManualResponse()
+     */
+    oneway void setNetworkSelectionModeManual(
+            in int serial, in String operatorNumeric, in RadioAccessNetworks ran);
+
+    /**
+     * Enable or disable E-UTRA-NR dual connectivity. If disabled then UE will not connect
+     * to secondary carrier.
+     *
+     * @param serial Serial number of request.
+     * @param nrDualConnectivityState expected NR dual connectivity state.
+     *        1: Enable NR dual connectivity {NrDualConnectivityState:ENABLE}
+     *        2: Disable NR dual connectivity {NrDualConnectivityState:DISABLE}
+     *        3: Disable NR dual connectivity and force secondary cell to be released
+     *           {NrDualConnectivityState:DISABLE_IMMEDIATE}
+     *
+     * Response callback is IRadioResponse.setNRDualConnectivityStateResponse()
+     */
+    oneway void setNrDualConnectivityState(
+            in int serial, in NrDualConnectivityState nrDualConnectivityState);
+
+    /**
+     * Requests to set the preferred network type for searching and registering
+     * (CS/PS domain, RAT, and operation mode)
+     *
+     * @param serial Serial number of request.
+     * @param nwType PreferredNetworkType defined in types.hal
+     *
+     * Response callback is IRadioResponse.setPreferredNetworkTypeResponse()
+     */
+    oneway void setPreferredNetworkType(in int serial, in PreferredNetworkType nwType);
+
+    /**
+     * Requests to set the preferred network type for searching and registering.
+     *
+     * @param serial Serial number of request.
+     * @param networkTypeBitmap a 32-bit bitmap of RadioAccessFamily.
+     *
+     * Response callback is IRadioResponse.setPreferredNetworkTypeBitmapResponse()
+     */
+    oneway void setPreferredNetworkTypeBitmap(
+            in int serial, in RadioAccessFamily networkTypeBitmap);
+
+    /**
+     * Request to set the preferred voice privacy mode used in voice scrambling.
+     *
+     * @param serial Serial number of request.
+     * @param enable false for Standard Privacy Mode (Public Long Code Mask)
+     *        true for Enhanced Privacy Mode (Private Long Code Mask)
+     *
+     * Response callback is IRadioResponse.setPreferredVoicePrivacyResponse()
+     */
+    oneway void setPreferredVoicePrivacy(in int serial, in boolean enable);
+
+    /**
+     * Used to set the phones radio capability. Be VERY careful using this request as it may cause
+     * some vendor modems to reset. Because of the possible modem reset any radio commands after
+     * this one may not be processed.
+     *
+     * @param serial Serial number of request.
+     * @param rc RadioCapability structure to be set
+     *
+     * Response callback is IRadioResponse.setRadioCapabilityResponse()
+     */
+    oneway void setRadioCapability(in int serial, in RadioCapability rc);
+
+    /**
+     * Toggle radio on and off (for "airplane" mode). If the radio is turned off/on the radio modem
+     * subsystem is expected return to an initialized state. For instance, any voice and data calls
+     * must be terminated and all associated lists emptied.
+     * When setting radio power on to exit from airplane mode to place an emergency call on this
+     * logical modem, powerOn, forEmergencyCall and preferredForEmergencyCall must be true. In
+     * this case, this modem is optimized to scan only emergency call bands, until:
+     * 1) Emergency call is completed; or
+     * 2) Another setRadioPower_1_5 is issued with forEmergencyCall being false or
+     *    preferredForEmergencyCall being false; or
+     * 3) Timeout after 30 seconds if dial or emergencyDial is not called.
+     * Once one of these conditions is reached, the modem should move into normal operation.
+     *
+     * @param serial Serial number of request.
+     * @param powerOn To turn on radio -> on = true, to turn off radio -> on = false.
+     * @param forEmergencyCall To indication to radio if this request is due to emergency call.
+     *        No effect if powerOn is false.
+     * @param preferredForEmergencyCall indicate whether the following emergency call will be sent
+     *        on this modem or not. No effect if forEmergencyCall is false, or powerOn is false.
+     *
+     * Response callback is IRadioConfigResponse.setRadioPowerResponse.
+     */
+    oneway void setRadioPower(in int serial, in boolean powerOn, in boolean forEmergencyCall,
+            in boolean preferredForEmergencyCall);
+
+    /**
+     * Set response functions for radio requests & radio indications.
+     *
+     * @param radioResponse Object containing response functions
+     * @param radioIndication Object containing radio indications
+     */
+    void setResponseFunctions(in IRadioResponse radioResponse, in IRadioIndication radioIndication);
+
+    /**
+     * Sets the signal strength reporting criteria. The resulting reporting rules are the AND of all
+     * the supplied criteria. For each RAN the hysteresisDb and thresholds apply to only the
+     * following measured quantities:
+     * -GERAN    - RSSI
+     * -CDMA2000 - RSSI
+     * -UTRAN    - RSCP
+     * -EUTRAN   - RSRP/RSRQ/RSSNR
+     * -NGRAN    - SSRSRP/SSRSRQ/SSSINR
+     * Note that reporting criteria must be individually set for each RAN. For each RAN, if none of
+     * reporting criteria of any measurement is set enabled (see SignalThresholdInfo.isEnabled),
+     * the reporting criteria for this RAN is implementation-defined. For each RAN, if any reporting
+     * criteria of any measure is set enabled, the reporting criteria of the other measures in this
+     * RAN are set disabled (see SignalThresholdInfo.isEnabled) until they are set enabled.
+     *
+     * @param serial Serial number of request.
+     * @param signalThresholdInfo Signal threshold info including the threshold values,
+     *        hysteresisDb, hysteresisMs and isEnabled. See SignalThresholdInfo for details.
+     * @param accessNetwork The type of network for which to apply these thresholds.
+     *
+     * Response callback is IRadioResponse.setSignalStrengthReportingCriteriaResponse()
+     */
+    oneway void setSignalStrengthReportingCriteria(in int serial,
+            in SignalThresholdInfo signalThresholdInfo, in AccessNetwork accessNetwork);
+
+    /**
+     * Set SIM card power state. Request is used to power off or power on the card. It should not
+     * generate a CardState.CARDSTATE_ABSENT indication, since the SIM is still physically inserted.
+     * When SIM card is in POWER_UP_PASS_THROUGH, the modem does not send any command to it (for
+     * example SELECT of MF, or TERMINAL CAPABILITY), and the SIM card is controlled completely by
+     * Telephony sending APDUs directly. The SIM card state must be RIL_CARDSTATE_PRESENT and the
+     * number of card apps will be 0. No new error code is generated. Emergency calls are supported
+     * in the same way as if the SIM card is absent. Pass-through mode is valid only for the
+     * specific card session where it is activated, and normal behavior occurs at the next SIM
+     * initialization, unless POWER_UP_PASS_THROUGH is requested again.
+     * The device is required to power down the SIM card before it can switch the mode between
+     * POWER_UP and POWER_UP_PASS_THROUGH. At device power up, the SIM interface is powered up
+     * automatically. Each subsequent request to this method is processed only after the completion
+     * of the previous one.
+     * When the SIM is in POWER_DOWN, the modem should send an empty vector of AppStatus in
+     * CardStatus.applications. If a SIM in the POWER_DOWN state is removed and a new SIM is
+     * inserted, the new SIM should be in POWER_UP mode by default. If the device is turned off or
+     * restarted while the SIM is in POWER_DOWN, then the SIM should turn on normally in POWER_UP
+     * mode when the device turns back on.
+     *
+     * @param serial Serial number of request
+     * @param powerUp POWER_DOWN if powering down the SIM card
+     *                POWER_UP if powering up the SIM card
+     *                POWER_UP_PASS_THROUGH if powering up the SIM card in pass through mode
+     *
+     * Response callback is IRadioResponse.setSimCardPowerResponse().
+     */
+    oneway void setSimCardPower(in int serial, in CardPowerState powerUp);
+
+    /**
+     * Set the default Short Message Service Center address on the device.
+     *
+     * @param serial Serial number of request.
+     * @param smsc Short Message Service Center address to set
+     *
+     * Response callback is IRadioResponse.setSmscAddressResponse()
+     */
+    oneway void setSmscAddress(in int serial, in String smsc);
+
+    /**
+     * Enables/disables supplementary service related notifications from the network.
+     * Notifications are reported via unsolSuppSvcNotification().
+     *
+     * @param serial Serial number of request.
+     * @param enable true = notifications enabled, false = notifications disabled.
+     *
+     * Response function is IRadioResponse.setSuppServiceNotificationsResponse()
+     */
+    oneway void setSuppServiceNotifications(in int serial, in boolean enable);
+
+    /**
+     * Specify which bands modem's background scan must act on. If specifyChannels is true, it only
+     * scans bands specified in specifiers. If specifyChannels is false, it scans all bands. For
+     * example, CBRS is only on LTE band 48. By specifying this band, modem saves more power.
+     *
+     * @param serial Serial number of request.
+     * @param specifyChannels whether to scan bands defined in specifiers.
+     * @param specifiers which bands to scan. Only used if specifyChannels is true.
+     *
+     * Response callback is IRadioResponse.setSystemSelectionChannelsResponse()
+     */
+    oneway void setSystemSelectionChannels(
+            in int serial, in boolean specifyChannels, in RadioAccessSpecifier[] specifiers);
+
+    /**
+     * Request to set the TTY mode
+     *
+     * @param serial Serial number of request.
+     * @param mode TtyMode
+     *
+     * Response callback is IRadioResponse.setTTYModeResponse()
+     */
+    oneway void setTTYMode(in int serial, in TtyMode mode);
+
+    /**
+     * Selection/de-selection of a subscription from a SIM card
+     *
+     * @param serial Serial number of request.
+     * @param uiccSub SelectUiccSub as defined in types.hal
+     *
+     * Response callback is IRadioResponse.setUiccSubscriptionResponse()
+     */
+    oneway void setUiccSubscription(in int serial, in SelectUiccSub uiccSub);
+
+    /**
+     * Setup a packet data connection. If DataCallResponse.status returns DataCallFailCause:NONE,
+     * the data connection must be added to data calls and a unsolDataCallListChanged() must be
+     * sent. The call remains until removed by subsequent unsolDataCallIstChanged(). It may be lost
+     * due to many factors, including deactivateDataCall() being issued, the radio powered off,
+     * reception lost or even transient factors like congestion. This data call list is returned by
+     * getDataCallList() and dataCallListChanged().
+     * The Radio is expected to:
+     * - Create one data call context.
+     * - Create and configure a dedicated interface for the context.
+     * - The interface must be point to point.
+     * - The interface is configured with one or more addresses and is capable of sending and
+     *   receiving packets. The format is IP address with optional "/" prefix length (The format is
+     *   defined in RFC-4291 section 2.3). For example, "192.0.1.3", "192.0.1.11/16", or
+     *   "2001:db8::1/64". Typically one IPv4 or one IPv6 or one of each. If the prefix length is
+     *   absent, then the addresses are assumed to be point to point with IPv4 with prefix length 32
+     *   or IPv6 with prefix length 128.
+     * - Must not modify routing configuration related to this interface; routing management is
+     *   exclusively within the purview of the Android OS.
+     * - Support simultaneous data call contexts up to DataRegStateResult.maxDataCalls specified in
+     *   the response of getDataRegistrationState.
+     *
+     * @param serial Serial number of request.
+     * @param accessNetwork The access network to setup the data call. If the data connection cannot
+     *        be established on the specified access network then this should respond with an error.
+     * @param dataProfileInfo Data profile info.
+     * @param roamingAllowed Indicates whether or not data roaming is allowed by the user.
+     * @param reason The request reason. Must be DataRequestReason:NORMAL or
+     *        DataRequestReason:HANDOVER.
+     * @param addresses If the reason is DataRequestReason:HANDOVER, this indicates the list of link
+     *        addresses of the existing data connection. This parameter must be ignored unless
+     *        reason is DataRequestReason:HANDOVER.
+     * @param dnses If the reason is DataRequestReason:HANDOVER, this indicates the list of DNS
+     *        addresses of the existing data connection. The format is defined in RFC-4291 section
+     *        2.2. For example, "192.0.1.3" or "2001:db8::1". This parameter must be ignored unless
+     *        reason is DataRequestReason:HANDOVER.
+     * @param pduSessionId The pdu session id to be used for this data call. A value of 0 means no
+     *        pdu session id was attached to this call. Reference: 3GPP TS 24.007 section 11.2.3.1b
+     * @param sliceInfo SliceInfo to be used for the data connection when a handover occurs from
+     *        EPDG to 5G. It is valid only when accessNetwork is AccessNetwork:NGRAN. If the slice
+     *        passed from EPDG is rejected, then the data failure cause must be
+     *        DataCallFailCause:SLICE_REJECTED.
+     * @param trafficDescriptor TrafficDescriptor for which data connection needs to be established.
+     *        It is used for URSP traffic matching as described in TS 24.526 Section 4.2.2.
+     *        It includes an optional DNN which, if present, must be used for traffic matching --
+     *        it does not specify the end point to be used for the data call. The end point is
+     *        specified by DataProfileInfo.apn; DataProfileInfo.apn must be used as the end point if
+     *        one is not specified through URSP rules.
+     * @param matchAllRuleAllowed bool to indicate if using default match-all URSP rule for this
+     *        request is allowed. If false, this request must not use the match-all URSP rule and if
+     *        a non-match-all rule is not found (or if URSP rules are not available) it should
+     *        return failure with cause DataCallFailCause:MATCH_ALL_RULE_NOT_ALLOWED. This is needed
+     *        as some requests need to have a hard failure if the intention cannot be met, for
+     *        example, a zero-rating slice.
+     *
+     * Response function is IRadioResponse.setupDataCallResponse()
+     */
+    oneway void setupDataCall(in int serial, in AccessNetwork accessNetwork,
+            in DataProfileInfo dataProfileInfo, in boolean roamingAllowed,
+            in DataRequestReason reason, in LinkAddress[] addresses, in String[] dnses,
+            in int pduSessionId, in OptionalSliceInfo sliceInfo,
+            in OptionalTrafficDescriptor trafficDescriptor, in boolean matchAllRuleAllowed);
+
+    /**
+     * Start playing a DTMF tone. Continue playing DTMF tone until stopDtmf is received. If a
+     * startDtmf() is received while a tone is currently playing, it must cancel the previous tone
+     * and play the new one.
+     *
+     * @param serial Serial number of request.
+     * @param s string having a single character with one of 12 values: 0-9,*,#
+     *
+     * Response function is IRadioResponse.startDtmfResponse()
+     */
+    oneway void startDtmf(in int serial, in String s);
+
+    /**
+     * Indicates that a handover to the IWLAN transport has begun. Any resources being transferred
+     * to the IWLAN transport cannot be released while a handover is underway. For example, if a
+     * pdu session id needs to be transferred to IWLAN, then the modem should not release the id
+     * while the handover is in progress. If a handover was unsuccessful, then the framework calls
+     * IRadio::cancelHandover. The modem retains ownership over any of the resources being
+     * transferred to IWLAN. If a handover was successful, the framework calls
+     * IRadio::deactivateDataCall with reason HANDOVER. The IWLAN transport now owns the transferred
+     * resources and is responsible for releasing them.
+     *
+     * @param serial Serial number of request.
+     * @param id callId The identifier of the data call which is provided in SetupDataCallResult
+     *
+     * Response function is IRadioResponse.startHandoverResponse()
+     */
+    oneway void startHandover(in int serial, in int callId);
+
+    /**
+     * Start a Keepalive session (for IPsec)
+     *
+     * @param serial Serial number of request.
+     * @param keepalive A request structure containing all necessary info to describe a keepalive
+     *
+     * Response function is IRadioResponse.startKeepaliveResponse()
+     */
+    oneway void startKeepalive(in int serial, in KeepaliveRequest keepalive);
+
+    /**
+     * Start Link Capacity Estimate (LCE) service if supported by the radio.
+     *
+     * @param serial Serial number of request.
+     * @param reportInterval desired reporting interval (ms).
+     * @param pullMode LCE service mode. true: PULL; false: PUSH.
+     *
+     * Response callback is IRadioResponse.startLceServiceResponse()
+     *
+     * DEPRECATED in @1.2 or higher which use the always-on LCE that relies on indications.
+     */
+    oneway void startLceService(in int serial, in int reportInterval, in boolean pullMode);
+
+    /**
+     * Starts a network scan.
+     *
+     * @param serial Serial number of request.
+     * @param request Defines the radio networks/bands/channels which need to be scanned.
+     *
+     * Response function is IRadioResponse.startNetworkScanResponse()
+     */
+    oneway void startNetworkScan(in int serial, in NetworkScanRequest request);
+
+    /**
+     * Stop playing a currently playing DTMF tone.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response function is IRadioResponse.stopDtmfResponse()
+     */
+    oneway void stopDtmf(in int serial);
+
+    /**
+     * Stop an ongoing Keepalive session (for IPsec)
+     *
+     * @param serial Serial number of request.
+     * @param sessionHandle The handle that was provided by IRadioResponse.startKeepaliveResponse
+     *
+     * Response function is IRadioResponse.stopKeepaliveResponse()
+     */
+    oneway void stopKeepalive(in int serial, in int sessionHandle);
+
+    /**
+     * Stop Link Capacity Estimate (LCE) service, the STOP operation must be idempotent for the
+     * radio modem.
+     *
+     * @param serial Serial number of request.
+     *
+     * Response callback is IRadioResponse.stopLceServiceResponse()
+     *
+     * DEPRECATED in @1.2 or higher which use the always-on LCE that relies on indications.
+     */
+    oneway void stopLceService(in int serial);
+
+    /**
+     * Stops ongoing network scan
+     *
+     * @param serial Serial number of request.
+     *
+     * Response function is IRadioResponse.stopNetworkScanResponse()
+     */
+    oneway void stopNetworkScan(in int serial);
+
+    /**
+     * Supplies ICC PIN2. Only called following operation where SIM_PIN2 was returned as a failure
+     * from a previous operation.
+     *
+     * @param serial Serial number of request.
+     * @param pin2 PIN2 value
+     * @param aid AID value, See ETSI 102.221 8.1 and 101.220 4, empty string if no value.
+     *
+     * Response function is IRadioResponse.supplyIccPin2ForAppResponse()
+     */
+    oneway void supplyIccPin2ForApp(in int serial, in String pin2, in String aid);
+
+    /**
+     * Supplies ICC PIN. Only called if CardStatus has AppState.PIN state
+     *
+     * @param serial Serial number of request.
+     * @param pin PIN value
+     * @param aid AID value, See ETSI 102.221 8.1 and 101.220 4, empty string if no value.
+     *
+     * Response function is IRadioResponse.supplyIccPinForAppResponse()
+     */
+    oneway void supplyIccPinForApp(in int serial, in String pin, in String aid);
+
+    /**
+     * Supplies ICC PUK2 and new PIN2.
+     *
+     * @param serial Serial number of request.
+     * @param puk2 PUK2 value
+     * @param pin2 New PIN2 value
+     * @param aid AID value, See ETSI 102.221 8.1 and 101.220 4, empty string if no value.
+     *
+     * Response function is IRadioResponse.supplyIccPuk2ForAppResponse()
+     */
+    oneway void supplyIccPuk2ForApp(in int serial, in String puk2, in String pin2, in String aid);
+
+    /**
+     * Supplies ICC PUK and new PIN.
+     *
+     * @param serial Serial number of request.
+     * @param puk PUK value
+     * @param pin New PIN value
+     * @param aid AID value, See ETSI 102.221 8.1 and 101.220 4, empty string if no value.
+     *
+     * Response function is IRadioResponse.supplyIccPukForAppResponse()
+     */
+    oneway void supplyIccPukForApp(in int serial, in String puk, in String pin, in String aid);
+
+    /**
+     * Requests that network personalization be deactivated
+     *
+     * @param serial Serial number of request.
+     * @param netPin Network depersonlization code
+     *
+     * Response function is IRadioResponse.supplyNetworkDepersonalizationResponse()
+     */
+    oneway void supplyNetworkDepersonalization(in int serial, in String netPin);
+
+    /**
+     * Request that deactivates one category of device personalization. Device personalization
+     * generally binds the device so it can only be used on one carrier or even one carrier subnet
+     * (See TS 22.022). When the user has gained the rights to unbind the device (at the end of a
+     * contract period or other event), the controlKey will be delivered to either the user for
+     * manual entry or to a carrier app on the device for automatic entry.
+     *
+     * @param serial Serial number of request.
+     * @param persoType SIM personalization type.
+     * @param controlKey the unlock code for removing persoType personalization from this device
+     *
+     * Response function is IRadioResponse.supplySimDepersonalizationResponse()
+     */
+    oneway void supplySimDepersonalization(
+            in int serial, in PersoSubstate persoType, in String controlKey);
+
+    /**
+     * Switch waiting or holding call and active call (like AT+CHLD=2).
+     * Call transitions must happen as shown below.
+     *   BEFORE                               AFTER
+     * Call 1   Call 2                 Call 1       Call 2
+     * ACTIVE   HOLDING                HOLDING     ACTIVE
+     * ACTIVE   WAITING                HOLDING     ACTIVE
+     * HOLDING  WAITING                HOLDING     ACTIVE
+     * ACTIVE   IDLE                   HOLDING     IDLE
+     * IDLE     IDLE                   IDLE        IDLE
+     *
+     * @param serial Serial number of request.
+     *
+     * Response function is IRadioResponse.switchWaitingOrHoldingAndActiveResponse()
+     */
+    oneway void switchWaitingOrHoldingAndActive(in int serial);
+
+    /**
+     * Insert, delete or update a phonebook record on the SIM card. If the index of recordInfo is 0,
+     * the phonebook record will be added to global or local phonebook, and global phonebook has
+     * higher priority than local phonebook. If the fields in the recordInfo are all empty except
+     * for the index, the phonebook record specified by the index will be deleted. The indication
+     * simPhonebookChanged will be called after every successful call of updateSimPhonebookRecords.
+     *
+     * @param serial Serial number of request.
+     * @param recordInfo Details of the record to insert, delete or update.
+     *
+     * Response callback is IRadioResponse.updateSimPhonebookRecordsResponse()
+     */
+    oneway void updateSimPhonebookRecords(in int serial, in PhonebookRecordInfo recordInfo);
+
+    /**
+     * Stores a CDMA SMS message to RUIM memory.
+     *
+     * @param serial Serial number of request.
+     * @param cdmaSms CDMA message as defined by CdmaSmsWriteArgs in types.hal
+     *
+     * Response callback is IRadioResponse.writeSmsToRuimResponse()
+     */
+    oneway void writeSmsToRuim(in int serial, in CdmaSmsWriteArgs cdmaSms);
+
+    /**
+     * Stores a SMS message to SIM memory.
+     *
+     * @param serial Serial number of request.
+     * @param smsWriteArgs SmsWriteArgs defined in types.hal
+     *
+     * Response function is IRadioResponse.writeSmsToSimResponse()
+     */
+    oneway void writeSmsToSim(in int serial, in SmsWriteArgs smsWriteArgs);
+}
diff --git a/radio/aidl/android/hardware/radio/IRadioIndication.aidl b/radio/aidl/android/hardware/radio/IRadioIndication.aidl
new file mode 100644
index 0000000..054a53e
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/IRadioIndication.aidl
@@ -0,0 +1,632 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.BarringInfo;
+import android.hardware.radio.CdmaCallWaiting;
+import android.hardware.radio.CdmaInformationRecords;
+import android.hardware.radio.CdmaOtaProvisionStatus;
+import android.hardware.radio.CdmaSignalInfoRecord;
+import android.hardware.radio.CdmaSmsMessage;
+import android.hardware.radio.CdmaSubscriptionSource;
+import android.hardware.radio.CellIdentity;
+import android.hardware.radio.CellInfo;
+import android.hardware.radio.Domain;
+import android.hardware.radio.EmergencyNumber;
+import android.hardware.radio.HardwareConfig;
+import android.hardware.radio.KeepaliveStatus;
+import android.hardware.radio.LceDataInfo;
+import android.hardware.radio.LinkCapacityEstimate;
+import android.hardware.radio.NetworkScanResult;
+import android.hardware.radio.PbReceivedStatus;
+import android.hardware.radio.PcoDataInfo;
+import android.hardware.radio.PhoneRestrictedState;
+import android.hardware.radio.PhonebookRecordInfo;
+import android.hardware.radio.PhysicalChannelConfig;
+import android.hardware.radio.RadioCapability;
+import android.hardware.radio.RadioIndicationType;
+import android.hardware.radio.RadioState;
+import android.hardware.radio.RadioTechnology;
+import android.hardware.radio.SetupDataCallResult;
+import android.hardware.radio.SignalStrength;
+import android.hardware.radio.SimRefreshResult;
+import android.hardware.radio.SrvccState;
+import android.hardware.radio.StkCcUnsolSsResult;
+import android.hardware.radio.SuppSvcNotification;
+import android.hardware.radio.UssdModeType;
+
+/**
+ * Interface declaring unsolicited radio indications.
+ */
+@VintfStability
+interface IRadioIndication {
+    /**
+     * Indicate barring information for the user’s access category / access class and PLMN.
+     *
+     * <p>Provide information about the barring status of the cell for the user. The information
+     * provided should describe all barring configurations that are applicable to the current user,
+     * even if the user is not currently barred (due to conditional barring). This informs Android
+     * of likely future (statistical) barring for specific services.
+     *
+     * <p>This indication should be sent whenever the cell’s barring config changes for the current
+     * user, or if the user’s conditional barring status changes due to re-evaluation of the
+     * barring conditions. Barring status will likely change when the device camps for service,
+     * when PLMN selection is completed, when the device attempts to access a conditionally barred
+     * service, and when the System Information including barring info for a camped cell is updated.
+     */
+    oneway void barringInfoChanged(in RadioIndicationType type, in CellIdentity cellIdentity,
+            in BarringInfo[] barringInfos);
+
+    /**
+     * Ring indication for an incoming call (eg, RING or CRING event). There must be at least one
+     * callRing() at the beginning of a call and sending multiple is optional. If the system
+     * property ro.telephony.call_ring.multiple is false then the upper layers must generate the
+     * multiple events internally. Otherwise the vendor code must generate multiple callRing() if
+     * ro.telephony.call_ring.multiple is true or if it is absent.
+     * The rate of these events is controlled by ro.telephony.call_ring.delay and has a default
+     * value of 3000 (3 seconds) if absent.
+     *
+     * @param type Type of radio indication
+     * @param isGsm true for GSM & false for CDMA
+     * @param record Cdma Signal Information
+     */
+    oneway void callRing(
+            in RadioIndicationType type, in boolean isGsm, in CdmaSignalInfoRecord record);
+
+    /**
+     * Indicates when call state has changed. Callee must invoke IRadio.getCurrentCalls(). Must be
+     * invoked on, for example, "RING", "BUSY", "NO CARRIER", and also call state transitions
+     * (DIALING->ALERTING ALERTING->ACTIVE). Redundent or extraneous invocations are tolerated.
+     *
+     * @param type Type of radio indication
+     */
+    oneway void callStateChanged(in RadioIndicationType type);
+
+    /**
+     * Indicates that the modem requires the Carrier info for IMSI/IMPI encryption. This might
+     * happen when the modem restarts or for some reason it's cache has been invalidated.
+     *
+     * @param type Type of radio indication
+     */
+    oneway void carrierInfoForImsiEncryption(in RadioIndicationType info);
+
+    /**
+     * Indicates when CDMA radio receives a call waiting indication.
+     *
+     * @param type Type of radio indication
+     * @param callWaitingRecord Cdma CallWaiting information
+     */
+    oneway void cdmaCallWaiting(in RadioIndicationType type, in CdmaCallWaiting callWaitingRecord);
+
+    /**
+     * Indicates when CDMA radio receives one or more info recs.
+     *
+     * @param type Type of radio indication
+     * @param records New Cdma Information
+     */
+    oneway void cdmaInfoRec(in RadioIndicationType type, in CdmaInformationRecords records);
+
+    /**
+     * Indicates when new CDMA SMS is received. Callee must subsequently confirm the receipt of the
+     * SMS with acknowledgeLastIncomingCdmaSms(). Server must not send cdmaNewSms() messages until
+     * acknowledgeLastIncomingCdmaSms() has been received.
+     *
+     * @param type Type of radio indication
+     * @param msg Cdma Sms Message
+     */
+    oneway void cdmaNewSms(in RadioIndicationType type, in CdmaSmsMessage msg);
+
+    /**
+     * Indicates when CDMA radio receives an update of the progress of an OTASP/OTAPA call.
+     *
+     * @param type Type of radio indication
+     * @param status Cdma OTA provision status
+     */
+    oneway void cdmaOtaProvisionStatus(
+            in RadioIndicationType type, in CdmaOtaProvisionStatus status);
+
+    /**
+     * Indicates when PRL (preferred roaming list) changes.
+     *
+     * @param type Type of radio indication
+     * @param version PRL version after PRL changes
+     */
+    oneway void cdmaPrlChanged(in RadioIndicationType type, in int version);
+
+    /**
+     * Indicates that SMS storage on the RUIM is full. Messages cannot be saved on the RUIM until
+     * space is freed.
+     *
+     * @param type Type of radio indication
+     */
+    oneway void cdmaRuimSmsStorageFull(in RadioIndicationType type);
+
+    /**
+     * Indicates when CDMA subscription source changed.
+     *
+     * @param type Type of radio indication
+     * @param cdmaSource New Cdma SubscriptionSource
+     */
+    oneway void cdmaSubscriptionSourceChanged(
+            in RadioIndicationType type, in CdmaSubscriptionSource cdmaSource);
+
+    /**
+     * Report all of the current cell information known to the radio.
+     *
+     * @param type Type of radio indication
+     * @param records Current cell information
+     */
+    oneway void cellInfoList(in RadioIndicationType type, in CellInfo[] records);
+
+    /**
+     * Report the current list of emergency numbers. Each emergency number in the emergency number
+     * list contains a dialing number, zero or more service category(s), zero or more emergency
+     * uniform resource names, mobile country code, mobile network code, and source(s) that indicate
+     * where it comes from.
+     * Radio must report all the valid emergency numbers with known mobile country code, mobile
+     * network code, emergency service categories, and emergency uniform resource names from all
+     * available sources including network signaling, sim, modem/oem configuration, and default
+     * configuration (112 and 911 must be always available; additionally, 000, 08, 110, 999, 118
+     * and 119 must be available when sim is not present). Radio shall not report emergency numbers
+     * that are invalid in the current locale. The reported emergency number list must not have
+     * duplicate EmergencyNumber entries. Please refer the documentation of EmergencyNumber to
+     * construct each emergency number to report.
+     * Radio must report the complete list of emergency numbers whenever the emergency numbers in
+     * the list are changed or whenever the client and the radio server are connected.
+     *
+     * Reference: 3gpp 22.101, Section 10 - Emergency Calls;
+     *            3gpp 24.008, Section 9.2.13.4 - Emergency Number List
+     *
+     * @param type Type of radio indication
+     * @param emergencyNumberList Current list of emergency numbers known to radio.
+     */
+    oneway void currentEmergencyNumberList(
+            in RadioIndicationType type, in EmergencyNumber[] emergencyNumberList);
+
+    /**
+     * Indicates current link capacity estimate. This indication is sent whenever the reporting
+     * criteria, as set by IRadio.setLinkCapacityReportingCriteria, are met and the indication is
+     * not suppressed by IRadio.setIndicationFilter().
+     *
+     * @param type Type of radio indication
+     * @param lce LinkCapacityEstimate
+     */
+    oneway void currentLinkCapacityEstimate(
+            in RadioIndicationType type, in LinkCapacityEstimate lce);
+
+    /**
+     * Indicates physical channel configurations. An empty configs list shall be returned when the
+     * radio is in idle mode (i.e. RRC idle).
+     *
+     * @param type Type of radio indication
+     * @param configs Vector of PhysicalChannelConfigs
+     */
+    oneway void currentPhysicalChannelConfigs(
+            in RadioIndicationType type, in PhysicalChannelConfig[] configs);
+
+    /**
+     * Indicates current signal strength of the radio.
+     *
+     * @param type Type of radio indication
+     * @param signalStrength SignalStrength information
+     */
+    oneway void currentSignalStrength(
+            in RadioIndicationType type, in SignalStrength signalStrength);
+
+    /**
+     * Indicates data call contexts have changed.
+     *
+     * @param type Type of radio indication
+     * @param dcList Array of SetupDataCallResult identical to that returned by
+     *        IRadio.getDataCallList(). It is the complete list of current data contexts including
+     *        new contexts that have been activated. A data call is only removed from this list
+     *        when any of the below conditions is matched:
+     *        - The framework sends a IRadio.deactivateDataCall().
+     *        - The radio is powered off/on.
+     *        - Unsolicited disconnect from either modem or network side.
+     */
+    oneway void dataCallListChanged(in RadioIndicationType type, in SetupDataCallResult[] dcList);
+
+    /**
+     * Indicates that the radio system selection module has autonomously entered emergency
+     * callback mode.
+     *
+     * @param type Type of radio indication
+     */
+    oneway void enterEmergencyCallbackMode(in RadioIndicationType type);
+
+    /**
+     * Indicates when Emergency Callback Mode Ends. Indicates that the radio system selection module
+     * has proactively exited emergency callback mode.
+     *
+     * @param type Type of radio indication
+     */
+    oneway void exitEmergencyCallbackMode(in RadioIndicationType type);
+
+    /**
+     * Indicates when the hardware configuration associated with the RILd changes.
+     *
+     * @param type Type of radio indication
+     * @param configs Array of hardware configs
+     */
+    oneway void hardwareConfigChanged(in RadioIndicationType type, in HardwareConfig[] configs);
+
+    /**
+     * Indicates when IMS registration state has changed. To get IMS registration state and IMS SMS
+     * format, callee needs to invoke getImsRegistrationState().
+     *
+     * @param type Type of radio indication
+     */
+    oneway void imsNetworkStateChanged(in RadioIndicationType type);
+
+    /**
+     * Indicates that nework doesn't have in-band information, need to play out-band tone.
+     *
+     * @param type Type of radio indication
+     * @param start true = start play ringback tone, false = stop playing ringback tone
+     */
+    oneway void indicateRingbackTone(in RadioIndicationType type, in boolean start);
+
+    /**
+     * Indicates a status update for a particular Keepalive session. This must include a handle for
+     * a previous session and should include a status update regarding the state of a keepalive.
+     * Unsolicited keepalive status reports should never be PENDING as unsolicited status should
+     * only be sent when known.
+     *
+     * @param type Type of radio indication
+     * @param status Status information for a Keepalive session
+     */
+    oneway void keepaliveStatus(in RadioIndicationType type, in KeepaliveStatus status);
+
+    /**
+     * Indicates when there is an incoming Link Capacity Estimate (LCE) info report.
+     *
+     * @param type Type of radio indication
+     * @param lce LceData information
+     *
+     * DEPRECATED in @1.2 and above, use IRadioIndication.currentLinkCapacityEstimate() instead.
+     */
+    oneway void lceData(in RadioIndicationType type, in LceDataInfo lce);
+
+    /**
+     * Indicates when there is a modem reset.
+     * When modem restarts, one of the following radio state transitions must happen
+     * 1) RadioState:ON->RadioState:UNAVAILABLE->RadioState:ON or
+     * 2) RadioState:OFF->RadioState:UNAVAILABLE->RadioState:OFF
+     * This message must be sent either just before the Radio State changes to
+     * RadioState:UNAVAILABLE or just after but must never be sent after the Radio State changes
+     * from RadioState:UNAVAILABLE to RadioState:ON/RadioState:OFF again. It must NOT be sent after
+     * the Radio state changes to RadioState:ON/RadioState:OFF after the modem restart as that may
+     * be interpreted as a second modem reset by the framework.
+     *
+     * @param type Type of radio indication
+     * @param reason the reason for the reset. It may be a crash signature if the restart was due to
+     *        a crash or some string such as "user-initiated restart" or "AT command initiated
+     *        restart" that explains the cause of the modem restart
+     */
+    oneway void modemReset(in RadioIndicationType type, in String reason);
+
+    /**
+     * Incremental network scan results.
+     *
+     * @param type Type of radio indication
+     * @param result the result of the network scan
+     */
+    oneway void networkScanResult(in RadioIndicationType type, in NetworkScanResult result);
+
+    /**
+     * Indicates when voice or data network state changed. Callee must invoke
+     * IRadio.getVoiceRegistrationState(), IRadio.getDataRegistrationState(), and
+     * IRadio.getOperator()
+     *
+     * @param type Type of radio indication
+     */
+    oneway void networkStateChanged(in RadioIndicationType type);
+
+    /**
+     * Indicates when new Broadcast SMS is received
+     *
+     * @param type Type of radio indication
+     * @param data If received from GSM network, "data" is byte array of 88 bytes which indicates
+     *        each page of a CBS Message sent to the MS by the BTS as coded in 3GPP 23.041 Section
+     *        9.4.1.2. If received from UMTS network, "data" is byte array of 90 up to 1252 bytes
+     *        which contain between 1 and 15 CBS Message pages sent as one packet to the MS by the
+     *        BTS as coded in 3GPP 23.041 Section 9.4.2.2
+     */
+    oneway void newBroadcastSms(in RadioIndicationType type, in byte[] data);
+
+    /**
+     * Indicates when new SMS is received. Callee must subsequently confirm the receipt of the SMS
+     * with a acknowledgeLastIncomingGsmSms(). Server must not send newSms() or newSmsStatusReport()
+     * messages until an acknowledgeLastIncomingGsmSms() has been received.
+     *
+     * @param type Type of radio indication
+     * @param pdu PDU of SMS-DELIVER represented as byte array.
+     *        The PDU starts with the SMSC address per TS 27.005 (+CMT:)
+     */
+    oneway void newSms(in RadioIndicationType type, in byte[] pdu);
+
+    /**
+     * Indicates when new SMS has been stored on SIM card
+     *
+     * @param type Type of radio indication
+     * @param recordNumber Record number on the sim
+     */
+    oneway void newSmsOnSim(in RadioIndicationType type, in int recordNumber);
+
+    /**
+     * Indicates when new SMS Status Report is received. Callee must subsequently confirm the
+     * receipt of the SMS with a acknowledgeLastIncomingGsmSms(). Server must not send newSms() or
+     * newSmsStatusReport() messages until an acknowledgeLastIncomingGsmSms() has been received
+     *
+     * @param type Type of radio indication
+     * @param pdu PDU of SMS-STATUS-REPORT represented as byte array.
+     *        The PDU starts with the SMSC address per TS 27.005 (+CMT:)
+     */
+    oneway void newSmsStatusReport(in RadioIndicationType type, in byte[] pdu);
+
+    /**
+     * Indicates when radio has received a NITZ time message.
+     *
+     * @param type Type of radio indication
+     * @param nitzTime NITZ time string in the form "yy/mm/dd,hh:mm:ss(+/-)tz,dt"
+     * @param receivedTime milliseconds since boot that the NITZ time was received
+     */
+    oneway void nitzTimeReceived(
+            in RadioIndicationType type, in String nitzTime, in long receivedTime);
+
+    /**
+     * Indicates when Supplementary service(SS) response is received when DIAL/USSD/SS is changed to
+     * SS by call control.
+     *
+     * @param type Type of radio indication
+     */
+    oneway void onSupplementaryServiceIndication(
+            in RadioIndicationType type, in StkCcUnsolSsResult ss);
+
+    /**
+     * Indicates when a new USSD message is received. The USSD session is assumed to persist if the
+     * type code is REQUEST, otherwise the current session (if any) is assumed to have terminated.
+     *
+     * @param type Type of radio indication
+     * @param modeType USSD type code
+     * @param msg Message string in UTF-8, if applicable
+     */
+    oneway void onUssd(in RadioIndicationType type, in UssdModeType modeType, in String msg);
+
+    /**
+     * Indicates when there is new Carrier PCO data received for a data call. Ideally only new data
+     * must be forwarded, though this is not required. Multiple boxes of carrier PCO data for a
+     * given call must result in a series of pcoData() calls.
+     *
+     * @param type Type of radio indication
+     * @param pco New PcoData
+     */
+    oneway void pcoData(in RadioIndicationType type, in PcoDataInfo pco);
+
+    /**
+     * Sent when setRadioCapability() completes. Returns the phone radio capability exactly as
+     * getRadioCapability() and must be the same set as sent by setRadioCapability().
+     *
+     * @param type Type of radio indication
+     * @param rc Current radio capability
+     */
+    oneway void radioCapabilityIndication(in RadioIndicationType type, in RadioCapability rc);
+
+    /**
+     * Indicates when radio state changes.
+     *
+     * @param type Type of radio indication
+     * @param radioState Current radio state
+     */
+    oneway void radioStateChanged(in RadioIndicationType type, in RadioState radioState);
+
+    /**
+     * Report that Registration or a Location/Routing/Tracking Area update has failed.
+     *
+     * <p>Indicate whenever a registration procedure, including a location, routing, or tracking
+     * area update fails. This includes procedures that do not necessarily result in a change of
+     * the modem's registration status. If the modem's registration status changes, that is
+     * reflected in the onNetworkStateChanged() and subsequent get{Voice/Data}RegistrationState().
+     *
+     * @param cellIdentity the CellIdentity, which must include the globally unique identifier for
+     *        the cell (for example, all components of the CGI or ECGI).
+     * @param chosenPlmn a 5 or 6 digit alphanumeric PLMN (MCC|MNC) among those broadcast by the
+     *        cell that was chosen for the failed registration attempt.
+     * @param domain Domain::CS, Domain::PS, or both in case of a combined procedure.
+     * @param causeCode the primary failure cause code of the procedure.
+     *        For GSM/UMTS (MM), values are in TS 24.008 Sec 10.5.95
+     *        For GSM/UMTS (GMM), values are in TS 24.008 Sec 10.5.147
+     *        For LTE (EMM), cause codes are TS 24.301 Sec 9.9.3.9
+     *        For NR (5GMM), cause codes are TS 24.501 Sec 9.11.3.2
+     *        MAX_INT if this value is unused.
+     * @param additionalCauseCode the cause code of any secondary/combined procedure if appropriate.
+     *        For UMTS, if a combined attach succeeds for PS only, then the GMM cause code shall be
+     *        included as an additionalCauseCode.
+     *        For LTE (ESM), cause codes are in TS 24.301 9.9.4.4
+     *        MAX_INT if this value is unused.
+     */
+    oneway void registrationFailed(in RadioIndicationType type, in CellIdentity cellIdentity,
+            in String chosenPlmn, in Domain domain, in int causeCode, in int additionalCauseCode);
+
+    /**
+     * Indicates that framework/application must reset the uplink mute state.
+     *
+     * @param type Type of radio indication
+     */
+    oneway void resendIncallMute(in RadioIndicationType type);
+
+    /**
+     * Indicates a restricted state change (eg, for Domain Specific Access Control).
+     * Radio must send this msg after radio off/on cycle no matter it is changed or not.
+     *
+     * @param type Type of radio indication
+     * @param state Bitmask of restricted state as defined by PhoneRestrictedState
+     */
+    oneway void restrictedStateChanged(in RadioIndicationType type, in PhoneRestrictedState state);
+
+    /**
+     * Indicates the ril connects and returns the version
+     *
+     * @param type Type of radio indication
+     */
+    oneway void rilConnected(in RadioIndicationType type);
+
+    /**
+     * Indicates whether SIM phonebook is changed. This indication is sent whenever the SIM
+     * phonebook is changed, including SIM is inserted or removed and updated by
+     * IRadio.updateSimPhonebookRecords.
+     *
+     * @param type Type of radio indication
+     */
+    oneway void simPhonebookChanged(in RadioIndicationType type);
+
+    /**
+     * Indicates the content of all the used records in the SIM phonebook. This indication is
+     * associated with the API getSimPhonebookRecords and might be received more than once that is
+     * replying on the record count.
+     *
+     * @param type Type of radio indication
+     * @param status Status of PbReceivedStatus
+     * @param records Vector of PhonebookRecordInfo
+     */
+    oneway void simPhonebookRecordsReceived(in RadioIndicationType type, in PbReceivedStatus status,
+            in PhonebookRecordInfo[] records);
+
+    /**
+     * Indicates that file(s) on the SIM have been updated, or the SIM has been reinitialized.
+     * If the SIM state changes as a result of the SIM refresh (eg, SIM_READY ->
+     * SIM_LOCKED_OR_ABSENT), simStatusChanged() must be sent.
+     *
+     * @param type Type of radio indication
+     * @param refreshResult Result of sim refresh
+     */
+    oneway void simRefresh(in RadioIndicationType type, in SimRefreshResult refreshResult);
+
+    /**
+     * Indicates that SMS storage on the SIM is full. Sent when the network attempts to deliver a
+     * new SMS message. Messages cannot be saved on the SIM until space is freed. In particular,
+     * incoming Class 2 messages must not be stored.
+     *
+     * @param type Type of radio indication
+     */
+    oneway void simSmsStorageFull(in RadioIndicationType type);
+
+    /**
+     * Indicates that SIM state changes. Callee must invoke getIccCardStatus().
+     *
+     * @param type Type of radio indication
+     */
+    oneway void simStatusChanged(in RadioIndicationType type);
+
+    /**
+     * Indicates when Single Radio Voice Call Continuity (SRVCC) progress state has changed.
+     *
+     * @param type Type of radio indication
+     * @param state New Srvcc State
+     */
+    oneway void srvccStateNotify(in RadioIndicationType type, in SrvccState state);
+
+    /**
+     * Indicates when there is an ALPHA from UICC during Call Control.
+     *
+     * @param type Type of radio indication
+     * @param alpha ALPHA string from UICC in UTF-8 format
+     */
+    oneway void stkCallControlAlphaNotify(in RadioIndicationType type, in String alpha);
+
+    /**
+     * Indicates when SIM wants application to setup a voice call.
+     *
+     * @param type Type of radio indication
+     * @param timeout Timeout value in millisec for setting up voice call
+     */
+    oneway void stkCallSetup(in RadioIndicationType type, in long timeout);
+
+    /**
+     * Indicates when SIM notifies applcations some event happens.
+     *
+     * @param type Type of radio indication
+     * @param cmd SAT/USAT commands or responses sent by ME to SIM or commands handled by ME,
+     *        represented as byte array starting with first byte of response data for command tag.
+     *        Refer to TS 102.223 section 9.4 for command types
+     */
+    oneway void stkEventNotify(in RadioIndicationType type, in String cmd);
+
+    /**
+     * Indicates when SIM issue a STK proactive command to applications
+     *
+     * @param type Type of radio indication
+     * @param cmd SAT/USAT proactive represented as byte array starting with command tag.
+     *        Refer to TS 102.223 section 9.4 for command types
+     */
+    oneway void stkProactiveCommand(in RadioIndicationType type, in String cmd);
+
+    /**
+     * Indicates when STK session is terminated by SIM.
+     *
+     * @param type Type of radio indication
+     */
+    oneway void stkSessionEnd(in RadioIndicationType type);
+
+    /**
+     * Indicated when there is a change in subscription status.
+     * This event must be sent in the following scenarios
+     * - subscription readiness at modem, which was selected by telephony layer
+     * - when subscription is deactivated by modem due to UICC card removal
+     * - when network invalidates the subscription i.e. attach reject due to authentication reject
+     *
+     * @param type Type of radio indication
+     * @param activate false for subscription deactivated, true for subscription activated
+     */
+    oneway void subscriptionStatusChanged(in RadioIndicationType type, in boolean activate);
+
+    /**
+     * Reports supplementary service related notification from the network.
+     *
+     * @param type Type of radio indication
+     * @param suppSvc SuppSvcNotification as defined in types.hal
+     */
+    oneway void suppSvcNotify(in RadioIndicationType type, in SuppSvcNotification suppSvc);
+
+    /**
+     * Report change of whether uiccApplications are enabled, or disabled.
+     *
+     * @param type Type of radio indication
+     * @param enabled whether uiccApplications are enabled, or disabled
+     */
+    oneway void uiccApplicationsEnablementChanged(in RadioIndicationType type, in boolean enabled);
+
+    /**
+     * The modem can explicitly set SetupDataCallResult::suggestedRetryTime after a failure in
+     * IRadio.SetupDataCall. During that time, no new calls are allowed to IRadio.SetupDataCall that
+     * use the same APN. When IRadioIndication.unthrottleApn is sent, AOSP will no longer throttle
+     * calls to IRadio.SetupDataCall for the given APN.
+     *
+     * @param type Type of radio indication
+     * @param apn Apn to unthrottle
+     */
+    oneway void unthrottleApn(in RadioIndicationType type, in String apn);
+
+    /**
+     * Indicates that voice technology has changed. Responds with new rat.
+     *
+     * @param type Type of radio indication
+     * @param rat Current new voice rat
+     */
+    oneway void voiceRadioTechChanged(in RadioIndicationType type, in RadioTechnology rat);
+}
diff --git a/radio/aidl/android/hardware/radio/IRadioResponse.aidl b/radio/aidl/android/hardware/radio/IRadioResponse.aidl
new file mode 100644
index 0000000..9ae6495
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/IRadioResponse.aidl
@@ -0,0 +1,3055 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.ActivityStatsInfo;
+import android.hardware.radio.BarringInfo;
+import android.hardware.radio.Call;
+import android.hardware.radio.CallForwardInfo;
+import android.hardware.radio.CardStatus;
+import android.hardware.radio.CarrierRestrictions;
+import android.hardware.radio.CarrierRestrictionsWithPriority;
+import android.hardware.radio.CdmaBroadcastSmsConfigInfo;
+import android.hardware.radio.CdmaRoamingType;
+import android.hardware.radio.CdmaSubscriptionSource;
+import android.hardware.radio.CellIdentity;
+import android.hardware.radio.CellInfo;
+import android.hardware.radio.ClipStatus;
+import android.hardware.radio.DataRegStateResult;
+import android.hardware.radio.GsmBroadcastSmsConfigInfo;
+import android.hardware.radio.HardwareConfig;
+import android.hardware.radio.IccIoResult;
+import android.hardware.radio.KeepaliveStatus;
+import android.hardware.radio.LastCallFailCauseInfo;
+import android.hardware.radio.LceDataInfo;
+import android.hardware.radio.LceStatusInfo;
+import android.hardware.radio.NeighboringCell;
+import android.hardware.radio.OperatorInfo;
+import android.hardware.radio.PersoSubstate;
+import android.hardware.radio.PhonebookCapacity;
+import android.hardware.radio.PreferredNetworkType;
+import android.hardware.radio.RadioAccessFamily;
+import android.hardware.radio.RadioAccessSpecifier;
+import android.hardware.radio.RadioBandMode;
+import android.hardware.radio.RadioCapability;
+import android.hardware.radio.RadioResponseInfo;
+import android.hardware.radio.RadioTechnology;
+import android.hardware.radio.RadioTechnologyFamily;
+import android.hardware.radio.RegStateResult;
+import android.hardware.radio.SendSmsResult;
+import android.hardware.radio.SetupDataCallResult;
+import android.hardware.radio.SignalStrength;
+import android.hardware.radio.SimLockMultiSimPolicy;
+import android.hardware.radio.SlicingConfig;
+import android.hardware.radio.TtyMode;
+import android.hardware.radio.VoiceRegStateResult;
+
+/**
+ * Interface declaring response functions to solicited radio requests.
+ */
+@VintfStability
+interface IRadioResponse {
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_STATE
+     *   RadioError:NO_MEMORY
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:INVALID_CALL_ID
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void acceptCallResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void acknowledgeIncomingGsmSmsWithPduResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_SMS_TO_ACK
+     *   RadioError:INVALID_STATE
+     *   RadioError:NO_MEMORY
+     *   RadioError:REQUEST_RATE_LIMITED
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:NETWORK_NOT_READY
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void acknowledgeLastIncomingCdmaSmsResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void acknowledgeLastIncomingGsmSmsResponse(in RadioResponseInfo info);
+
+    /**
+     * Acknowledge the receipt of radio request sent to the vendor. This must be sent only for
+     * radio request which take long time to respond. For more details, refer
+     * https://source.android.com/devices/tech/connect/ril.html
+     *
+     * @param serial Serial no. of the request whose acknowledgement is sent.
+     */
+    oneway void acknowledgeRequest(in int serial);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param id The allocated id. On an error, this is set to 0.
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_RESOURCES- Indicates that no pdu session ids are available
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void allocatePduSessionIdResponse(in RadioResponseInfo info, in int id);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param enabled whether Uicc applications are enabled.
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:SIM_ABSENT
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     */
+    oneway void areUiccApplicationsEnabledResponse(in RadioResponseInfo info, in boolean enabled);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param dcResponse Attributes of data call
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_RESOURCES
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:INVALID_CALL_ID
+     */
+    oneway void cancelHandoverResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:SIM_BUSY
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:INVALID_STATE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void cancelPendingUssdResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param remainingRetries Number of retries remaining, must be equal to -1 if unknown.
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE (radio resetting)
+     *   RadioError:PASSWORD_INCORRECT (old PIN2 is invalid)
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:INVALID_SIM_STATE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:SIM_PUK2
+     */
+    oneway void changeIccPin2ForAppResponse(in RadioResponseInfo info, in int remainingRetries);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param remainingRetries Number of retries remaining, must be equal to -1 if unknown.
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE (radio resetting)
+     *   RadioError:PASSWORD_INCORRECT
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:INVALID_SIM_STATE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void changeIccPinForAppResponse(in RadioResponseInfo info, in int remainingRetries);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE (radio resetting)
+     *   RadioError:NO_MEMORY
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:INVALID_STATE
+     *   RadioError:INVALID_CALL_ID
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void conferenceResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:REQUEST_NOT_SUPPORTED may be returned when HAL 1.2 or higher is supported.
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_CALL_ID
+     *   RadioError:INVALID_STATE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:SIM_ABSENT
+     */
+    oneway void deactivateDataCallResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_MEMORY
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:NO_SUCH_ENTRY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:SIM_ABSENT
+     */
+    oneway void deleteSmsOnRuimResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:SIM_FULL
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_MEMORY
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:NO_SUCH_ENTRY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:SIM_ABSENT
+     */
+    oneway void deleteSmsOnSimResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE (radio resetting)
+     *   RadioError:DIAL_MODIFIED_TO_USSD
+     *   RadioError:DIAL_MODIFIED_TO_SS
+     *   RadioError:DIAL_MODIFIED_TO_DIAL
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_MEMORY
+     *   RadioError:INVALID_STATE
+     *   RadioError:NO_RESOURCES
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:FDN_CHECK_FAILURE
+     *   RadioError:MODEM_ERR
+     *   RadioError:NO_SUBSCRIPTION
+     *   RadioError:NO_NETWORK_FOUND
+     *   RadioError:INVALID_CALL_ID
+     *   RadioError:DEVICE_IN_USE
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:ABORTED
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:CANCELLED
+     */
+    oneway void dialResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE (radio resetting)
+     *   RadioError:DIAL_MODIFIED_TO_USSD
+     *   RadioError:DIAL_MODIFIED_TO_SS
+     *   RadioError:DIAL_MODIFIED_TO_DIAL
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_RESOURCES
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:FDN_CHECK_FAILURE
+     *   RadioError:MODEM_ERR
+     *   RadioError:NO_SUBSCRIPTION
+     *   RadioError:NO_NETWORK_FOUND
+     *   RadioError:INVALID_CALL_ID
+     *   RadioError:DEVICE_IN_USE
+     *   RadioError:ABORTED
+     *   RadioError:INVALID_MODEM_STATE
+     */
+    oneway void emergencyDialResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:MODEM_ERR
+     *   RadioError:INVALID_STATE: this is for the case that the API is called in a single-sim
+     *              mode, or when there is only one modem available, as this API should only
+     *              be called in multi sim status.
+     */
+    oneway void enableModemResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:SIM_ABSENT
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:BUSY
+     */
+    oneway void enableUiccApplicationsResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:OPERATION_NO_ALLOWED
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:SIM_ABSENT
+     */
+    oneway void exitEmergencyCallbackModeResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:INVALID_STATE
+     *   RadioError:NO_RESOURCES
+     *   RadioError:NO_MEMORY
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:INVALID_CALL_ID
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void explicitCallTransferResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param carriers Carrier restriction information.
+     * @param multiSimPolicy Policy used for devices with multiple SIM cards.
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void getAllowedCarriersResponse(in RadioResponseInfo info,
+            in CarrierRestrictionsWithPriority carriers, in SimLockMultiSimPolicy multiSimPolicy);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param networkTypeBitmap a 32-bit bitmap of RadioAccessFamily.
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:MODE_NOT_SUPPORTED
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     */
+    oneway void getAllowedNetworkTypesBitmapResponse(
+            in RadioResponseInfo info, in RadioAccessFamily networkTypeBitmap);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param bandModes List of RadioBandMode listing supported modes
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void getAvailableBandModesResponse(
+            in RadioResponseInfo info, in RadioBandMode[] bandModes);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param networkInfos List of network operator information as OperatorInfos defined in
+     *        types.hal
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:ABORTED
+     *   RadioError:DEVICE_IN_USE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:CANCELLED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:INTERNAL_ERR
+     */
+    oneway void getAvailableNetworksResponse(
+            in RadioResponseInfo info, in OperatorInfo[] networkInfos);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param cellIdentity CellIdentity for the barring infos.
+     * @param barringInfos a vector of barring info for all barring service types
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:MODEM_ERR
+     */
+    oneway void getBarringInfoResponse(
+            in RadioResponseInfo info, in CellIdentity cellIdentity, in BarringInfo[] barringInfos);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param version string containing version string for log reporting
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:EMPTY_RECORD
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:NOT_PROVISIONED
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void getBasebandVersionResponse(in RadioResponseInfo info, in String version);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param mdn MDN if CDMA subscription is available
+     * @param hSid is a comma separated list of H_SID (Home SID) if CDMA subscription is available,
+     *        in decimal format
+     * @param hNid is a comma separated list of H_NID (Home NID) if CDMA subscription is available,
+     *        in decimal format
+     * @param min MIN (10 digits, MIN2+MIN1) if CDMA subscription is available
+     * @param prl PRL version if CDMA subscription is available
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:SUBSCRIPTION_NOT_AVAILABLE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:NOT_PROVISIONED
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:SIM_ABSENT
+     */
+    oneway void getCDMASubscriptionResponse(in RadioResponseInfo info, in String mdn,
+            in String hSid, in String hNid, in String min, in String prl);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param callForwardInfos points to a vector of CallForwardInfo, one for each distinct
+     *        registered phone number. For example, if data is forwarded to +18005551212 and voice
+     *        is forwarded to +18005559999, then two separate CallForwardInfo's must be returned.
+     *        However, if both data and voice are forwarded to +18005551212, then a single
+     *        CallForwardInfo must be returned with the service class set to "data + voice = 3".
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:SS_MODIFIED_TO_DIAL
+     *   RadioError:SS_MODIFIED_TO_USSD
+     *   RadioError:SS_MODIFIED_TO_SS
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_MEMORY
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:FDN_CHECK_FAILURE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void getCallForwardStatusResponse(
+            in RadioResponseInfo info, in CallForwardInfo[] callForwardInfos);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param enable If current call waiting state is disabled, enable = false else true
+     * @param serviceClass If enable, then callWaitingResp[1] must follow, with the TS 27.007
+     *        service class bit vector of services for which call waiting is enabled. For example,
+     *        if callWaitingResp[0] is 1 and callWaitingResp[1] is 3, then call waiting is enabled
+     *        for data and voice and disabled for everything else.
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:SS_MODIFIED_TO_DIAL
+     *   RadioError:SS_MODIFIED_TO_USSD
+     *   RadioError:SS_MODIFIED_TO_SS
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_MEMORY
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:FDN_CHECK_FAILURE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void getCallWaitingResponse(
+            in RadioResponseInfo info, in boolean enable, in int serviceClass);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param configs Vector of CDMA Broadcast SMS configs.
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:INVALID_STATE
+     *   RadioError:NO_MEMORY
+     *   RadioError:REQUEST_RATE_LIMITED
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:NO_RESOURCES
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:INVALID_MODEM_STATE
+     */
+    oneway void getCdmaBroadcastConfigResponse(
+            in RadioResponseInfo info, in CdmaBroadcastSmsConfigInfo[] configs);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param type CdmaRoamingType defined in types.hal
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:SIM_ABSENT
+     */
+    oneway void getCdmaRoamingPreferenceResponse(
+            in RadioResponseInfo info, in CdmaRoamingType type);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param source CDMA subscription source
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:SUBSCRIPTION_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:SIM_ABSENT
+     */
+    oneway void getCdmaSubscriptionSourceResponse(
+            in RadioResponseInfo info, in CdmaSubscriptionSource source);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param cellInfo List of current cell information known to radio
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     */
+    oneway void getCellInfoListResponse(in RadioResponseInfo info, in CellInfo[] cellInfo);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param status indicates CLIP status
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_MEMORY
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:FDN_CHECK_FAILURE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void getClipResponse(in RadioResponseInfo info, in ClipStatus status);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param n is "n" parameter from TS 27.007 7.7
+     * @param m is "m" parameter from TS 27.007 7.7
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:SS_MODIFIED_TO_DIAL
+     *   RadioError:SS_MODIFIED_TO_USSD
+     *   RadioError:SS_MODIFIED_TO_SS
+     *   RadioError:NO_MEMORY
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:FDN_CHECK_FAILURE
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void getClirResponse(in RadioResponseInfo info, in int n, in int m);
+
+    /**
+     * @param info Response info struct containing respontype, serial no. and error
+     * @param calls Current call list
+     *
+     * Valid errors returned:
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void getCurrentCallsResponse(in RadioResponseInfo info, in Call[] calls);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param dcResponse List of SetupDataCallResult as defined in types.hal
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SIM_ABSENT
+     */
+    oneway void getDataCallListResponse(
+            in RadioResponseInfo info, in SetupDataCallResult[] dcResponse);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param dataRegResponse Current Data registration response as defined by RegStateResult in
+     *        types.hal
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NOT_PROVISIONED
+     */
+    oneway void getDataRegistrationStateResponse(
+            in RadioResponseInfo info, in RegStateResult dataRegResponse);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param imei IMEI if GSM subscription is available
+     * @param imeisv IMEISV if GSM subscription is available
+     * @param esn ESN if CDMA subscription is available
+     * @param meid MEID if CDMA subscription is available
+     *
+     * If a empty string value is returned for any of the device id, it means that there was error
+     * accessing the device.
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:NOT_PROVISIONED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void getDeviceIdentityResponse(in RadioResponseInfo info, in String imei,
+            in String imeisv, in String esn, in String meid);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param response 0 is the TS 27.007 service class bit vector of services for which the
+     *        specified barring facility is active. "0" means "disabled for all"
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:SS_MODIFIED_TO_DIAL
+     *   RadioError:SS_MODIFIED_TO_USSD
+     *   RadioError:SS_MODIFIED_TO_SS
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_MEMORY
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:FDN_CHECK_FAILURE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void getFacilityLockForAppResponse(in RadioResponseInfo info, in int response);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param configs Vector of GSM/WCDMA Cell broadcast configs
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:INVALID_STATE
+     *   RadioError:NO_MEMORY
+     *   RadioError:REQUEST_RATE_LIMITED
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:NO_RESOURCES
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:INVALID_MODEM_STATE
+     */
+    oneway void getGsmBroadcastConfigResponse(
+            in RadioResponseInfo info, in GsmBroadcastSmsConfigInfo[] configs);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param config Array of HardwareConfig of the radio.
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void getHardwareConfigResponse(in RadioResponseInfo info, in HardwareConfig[] config);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param imsi String containing the IMSI
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE (radio resetting)
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:INVALID_SIM_STATE
+     *   RadioError:SIM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void getIMSIForAppResponse(in RadioResponseInfo info, in String imsi);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param cardStatus ICC card status as defined by CardStatus in types.hal
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_RESOURCES
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void getIccCardStatusResponse(in RadioResponseInfo info, in CardStatus cardStatus);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param isRegistered false = not registered, true = registered
+     * @param ratFamily RadioTechnologyFamily as defined in types.hal. This value is valid only if
+     *        isRegistered is true.
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void getImsRegistrationStateResponse(
+            in RadioResponseInfo info, in boolean isRegistered, in RadioTechnologyFamily ratFamily);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param failCauseInfo Contains LastCallFailCause and vendor cause code.
+     *
+     * The vendor cause code must be used for debugging purpose only. The implementation must return
+     * one of the values of LastCallFailCause as mentioned below.
+     * GSM failure reasons codes for the cause codes defined in TS 24.008 Annex H where possible.
+     * CDMA failure reasons codes for the possible call failure scenarios described in the
+     * "CDMA IS-2000 Release A (C.S0005-A v6.0)" standard.
+     * Any of the following reason codes if the call is failed or dropped due to reason mentioned
+     * with in the braces.
+     *   LastCallFailCause:RADIO_OFF (Radio is OFF)
+     *   LastCallFailCause:OUT_OF_SERVICE (No cell coverage)
+     *   LastCallFailCause:NO_VALID_SIM (No valid SIM)
+     *   LastCallFailCause:RADIO_INTERNAL_ERROR (Modem hit unexpected error scenario)
+     *   LastCallFailCause:NETWORK_RESP_TIMEOUT (No response from network)
+     *   LastCallFailCause:NETWORK_REJECT (Explicit network reject)
+     *   LastCallFailCause:RADIO_ACCESS_FAILURE (RRC connection failure. Eg.RACH)
+     *   LastCallFailCause:RADIO_LINK_FAILURE (Radio Link Failure)
+     *   LastCallFailCause:RADIO_LINK_LOST (Radio link lost due to poor coverage)
+     *   LastCallFailCause:RADIO_UPLINK_FAILURE (Radio uplink failure)
+     *   LastCallFailCause:RADIO_SETUP_FAILURE (RRC connection setup failure)
+     *   LastCallFailCause:RADIO_RELEASE_NORMAL (RRC connection release, normal)
+     *   LastCallFailCause:RADIO_RELEASE_ABNORMAL (RRC connection release, abnormal)
+     *   LastCallFailCause:ACCESS_CLASS_BLOCKED (Access class barring)
+     *   LastCallFailCause:NETWORK_DETACH (Explicit network detach)
+     *   OEM causes (LastCallFailCause:OEM_CAUSE_XX) must be used for debug purpose only
+     *
+     * If the implementation does not have access to the exact cause codes, then it must return one
+     * of the values listed in LastCallFailCause, as the UI layer needs to distinguish these cases
+     * for tone generation or error notification.
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:NO_MEMORY
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void getLastCallFailCauseResponse(
+            in RadioResponseInfo info, in LastCallFailCauseInfo failCauseinfo);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param activityInfo modem activity information
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:NOT_PROVISIONED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void getModemActivityInfoResponse(
+            in RadioResponseInfo info, in ActivityStatsInfo activityInfo);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:MODEM_ERR
+     */
+    oneway void getModemStackStatusResponse(in RadioResponseInfo info, in boolean isEnabled);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param enable true for "mute enabled" and false for "mute disabled"
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:SS_MODIFIED_TO_DIAL
+     *   RadioError:SS_MODIFIED_TO_USSD
+     *   RadioError:SS_MODIFIED_TO_SS
+     *   RadioError:NO_MEMORY
+     *   RadioError:REQUEST_RATE_LIMITED
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void getMuteResponse(in RadioResponseInfo info, in boolean enable);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param cells Vector of neighboring radio cell
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:NO_NETWORK_FOUND
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void getNeighboringCidsResponse(in RadioResponseInfo info, in NeighboringCell[] cells);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param selection false for automatic selection, true for manual selection
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void getNetworkSelectionModeResponse(in RadioResponseInfo info, in boolean manual);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param longName is long alpha ONS or EONS or empty string if unregistered
+     * @param shortName is short alpha ONS or EONS or empty string if unregistered
+     * @param numeric is 5 or 6 digit numeric code (MCC + MNC) or empty string if unregistered
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void getOperatorResponse(
+            in RadioResponseInfo info, in String longName, in String shortName, in String numeric);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param networkTypeBitmap a 32-bit bitmap of RadioAccessFamily.
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     */
+    oneway void getPreferredNetworkTypeBitmapResponse(
+            in RadioResponseInfo info, in RadioAccessFamily networkTypeBitmap);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param nwType RadioPreferredNetworkType defined in types.hal
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void getPreferredNetworkTypeResponse(
+            in RadioResponseInfo info, in PreferredNetworkType nwType);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param enable false for Standard Privacy Mode (Public Long Code Mask)
+     *        true for Enhanced Privacy Mode (Private Long Code Mask)
+     *
+     * Valid errors:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void getPreferredVoicePrivacyResponse(in RadioResponseInfo info, in boolean enable);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param rc Radio capability as defined by RadioCapability in types.hal
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:INVALID_STATE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void getRadioCapabilityResponse(in RadioResponseInfo info, in RadioCapability rc);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param signalStrength Current signal strength
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     */
+    oneway void getSignalStrengthResponse(
+            in RadioResponseInfo info, in SignalStrength signalStrength);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param capacity Response capacity enum indicating response processing status
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:INVALID_SIM_STATE
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     * REQUEST_NOT_SUPPORTED may only be returned on devices that don't support this API,
+     * indicated by the HAL capability CAPABILITY_SIM_PHONEBOOK_IN_MODEM.
+     */
+    oneway void getSimPhonebookCapacityResponse(
+            in RadioResponseInfo info, in PhonebookCapacity capacity);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:INVALID_SIM_STATE
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     * REQUEST_NOT_SUPPORTED may only be returned on devices that don't support this API,
+     * indicated by the HAL capability CAPABILITY_SIM_PHONEBOOK_IN_MODEM.
+     */
+    oneway void getSimPhonebookRecordsResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param slicingConfig Current slicing configuration
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:MODEM_ERR
+     */
+    oneway void getSlicingConfigResponse(in RadioResponseInfo info, in SlicingConfig slicingConfig);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param smsc Short Message Service Center address on the device
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_RATE_LIMITED
+     *   RadioError:MODEM_ERR
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:NOT_PROVISIONED
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:SIM_ABSENT
+     */
+    oneway void getSmscAddressResponse(in RadioResponseInfo info, in String smsc);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param specifiers List of RadioAccessSpecifiers that are scanned.
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     */
+    oneway void getSystemSelectionChannelsResponse(
+            in RadioResponseInfo info, in RadioAccessSpecifier[] specifiers);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param mode TtyMode
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void getTTYModeResponse(in RadioResponseInfo info, in TtyMode mode);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param rat Current voice RAT
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void getVoiceRadioTechnologyResponse(in RadioResponseInfo info, in RadioTechnology rat);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param voiceRegResponse Current Voice registration response as defined by RegStateResult
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     */
+    oneway void getVoiceRegistrationStateResponse(
+            in RadioResponseInfo info, in RegStateResult voiceRegResponse);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:SIM_ABSENT
+     */
+    oneway void handleStkCallSetupRequestFromSimResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE (radio resetting)
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_MEMORY
+     *   RadioError:INVALID_STATE
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:INVALID_CALL_ID
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void hangupConnectionResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE (radio resetting)
+     *   RadioError:INVALID_STATE
+     *   RadioError:NO_MEMORY
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:INVALID_CALL_ID
+     *   RadioError:NO_RESOURCES
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void hangupForegroundResumeBackgroundResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE (radio resetting)
+     *   RadioError:INVALID_STATE
+     *   RadioError:NO_MEMORY
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:INVALID_CALL_ID
+     *   RadioError:NO_RESOURCES
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:CANCELLED
+     */
+    oneway void hangupWaitingOrBackgroundResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void iccCloseLogicalChannelResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param iccIo ICC io operation response as defined by IccIoResult in types.hal
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:SIM_PIN2
+     *   RadioError:SIM_PUK2
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:INVALID_SIM_STATE
+     *   RadioError:SIM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void iccIOForAppResponse(in RadioResponseInfo info, in IccIoResult iccIo);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param channelId session id of the logical channel.
+     * @param selectResponse Contains the select response for the open channel command with one
+     *        byte per integer
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:MISSING_RESOURCE
+     *   RadioError:NO_SUCH_ELEMENT
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:SIM_ERR
+     *   RadioError:INVALID_SIM_STATE
+     *   RadioError:MISSING_RESOURCE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void iccOpenLogicalChannelResponse(
+            in RadioResponseInfo info, in int channelId, in byte[] selectResponse);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param result IccIoResult as defined in types.hal
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void iccTransmitApduBasicChannelResponse(
+            in RadioResponseInfo info, in IccIoResult result);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param result IccIoResult as defined in types.hal
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void iccTransmitApduLogicalChannelResponse(
+            in RadioResponseInfo info, in IccIoResult result);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param isEnabled Indicates whether NR dual connectivity is enabled or not, True if enabled
+     *        else false.
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void isNrDualConnectivityEnabledResponse(
+            in RadioResponseInfo info, in boolean isEnabled);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param result string containing the contents of the NV item
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void nvReadItemResponse(in RadioResponseInfo info, in String result);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void nvResetConfigResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void nvWriteCdmaPrlResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void nvWriteItemResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param lceInfo LceDataInfo indicating LCE data
+     *
+     * Valid errors returned:
+     *   RadioError:REQUEST_NOT_SUPPORTED may be returned when HAL 1.2 or higher is supported.
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:LCE_NOT_SUPPORTED
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:SIM_ABSENT
+     */
+    oneway void pullLceDataResponse(in RadioResponseInfo info, in LceDataInfo lceInfo);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE (radio resetting)
+     *   RadioError:INVALID_STATE
+     *   RadioError:NO_RESOURCES
+     *   RadioError:NO_MEMORY
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:INVALID_CALL_ID
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void rejectCallResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_RESOURCES
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void releasePduSessionIdResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_MEMORY
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_RATE_LIMITED
+     *   RadioError:MODEM_ERR
+     *   RadioError:INVALID_STATE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:SIM_ABSENT
+     */
+    oneway void reportSmsMemoryStatusResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void reportStkServiceIsRunningResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param result IccIoResult as defined in types.hal
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:SIM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void requestIccSimAuthenticationResponse(
+            in RadioResponseInfo info, in IccIoResult result);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param response response string of the challenge/response algo for ISIM auth in base64 format
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:SIM_ABSENT
+     */
+    oneway void requestIsimAuthenticationResponse(in RadioResponseInfo info, in String response);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void requestShutdownResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:INVALID_CALL_ID
+     *   RadioError:INVALID_STATE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:OPERATION_NOT_ALLOWED
+     */
+    oneway void sendBurstDtmfResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:INVALID_CALL_ID
+     *   RadioError:INVALID_STATE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:OPERATION_NOT_ALLOWED
+     */
+    oneway void sendCDMAFeatureCodeResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param sms Response to sms sent as defined by SendSmsResult in types.hal
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:SMS_SEND_FAIL_RETRY
+     *   RadioError:NETWORK_REJECT
+     *   RadioError:INVALID_STATE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_MEMORY
+     *   RadioError:REQUEST_RATE_LIMITED
+     *   RadioError:INVALID_SMS_FORMAT
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:FDN_CHECK_FAILURE
+     *   RadioError:ENCODING_ERR
+     *   RadioError:INVALID_SMSC_ADDRESS
+     *   RadioError:MODEM_ERR
+     *   RadioError:NETWORK_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:NETWORK_NOT_READY
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:SIM_ABSENT
+     *   RadioError:SIMULTANEOUS_SMS_AND_CALL_NOT_ALLOWED
+     *   RadioError:ACCESS_BARRED
+     *   RadioError:BLOCKED_DUE_TO_CALL
+     */
+    oneway void sendCdmaSmsExpectMoreResponse(in RadioResponseInfo info, in SendSmsResult sms);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param sms Sms result struct as defined by SendSmsResult in types.hal
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:SMS_SEND_FAIL_RETRY
+     *   RadioError:NETWORK_REJECT
+     *   RadioError:INVALID_STATE
+     *   RadioError:NO_MEMORY
+     *   RadioError:REQUEST_RATE_LIMITED
+     *   RadioError:INVALID_SMS_FORMAT
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:FDN_CHECK_FAILURE
+     *   RadioError:MODEM_ERR
+     *   RadioError:NETWORK_ERR
+     *   RadioError:ENCODING_ERR
+     *   RadioError:INVALID_SMSC_ADDRESS
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:ENCODING_ERR
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:SIM_ABSENT
+     *   RadioError:SIMULTANEOUS_SMS_AND_CALL_NOT_ALLOWED
+     *   RadioError:ACCESS_BARRED
+     *   RadioError:BLOCKED_DUE_TO_CALL
+     */
+    oneway void sendCdmaSmsResponse(in RadioResponseInfo info, in SendSmsResult sms);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void sendDeviceStateResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_RESOURCES
+     *   RadioError:NO_MEMORY
+     *   RadioError:MODEM_ERR
+     *   RadioError:INVALID_CALL_ID
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:CANCELLED
+     *   RadioError:INVALID_MODEM_STATE
+     */
+    oneway void sendDtmfResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param commandResponse SAT/USAT response in hexadecimal format string starting with first
+     *        byte of response
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:SIM_BUSY
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:SIM_ABSENT
+     */
+    oneway void sendEnvelopeResponse(in RadioResponseInfo info, in String commandResponse);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param iccIo IccIoResult as defined in types.hal corresponding to ICC IO response
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:SIM_BUSY
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:SIM_ABSENT
+     */
+    oneway void sendEnvelopeWithStatusResponse(in RadioResponseInfo info, in IccIoResult iccIo);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param sms Response to sms sent as defined by SendSmsResult in types.hal
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:SMS_SEND_FAIL_RETRY
+     *   RadioError:FDN_CHECK_FAILURE
+     *   RadioError:NETWORK_REJECT
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:INVALID_STATE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INVALID_SMS_FORMAT
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_RATE_LIMITED
+     *   RadioError:MODEM_ERR
+     *   RadioError:NETWORK_ERR
+     *   RadioError:ENCODING_ERR
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NETWORK_NOT_READY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void sendImsSmsResponse(in RadioResponseInfo info, in SendSmsResult sms);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param sms Response to sms sent as defined by SendSmsResult in types.hal
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:SMS_SEND_FAIL_RETRY
+     *   RadioError:NETWORK_REJECT
+     *   RadioError:INVALID_STATE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_MEMORY
+     *   RadioError:REQUEST_RATE_LIMITED
+     *   RadioError:INVALID_SMS_FORMAT
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:FDN_CHECK_FAILURE
+     *   RadioError:ENCODING_ERR
+     *   RadioError:INVALID_SMSC_ADDRESS
+     *   RadioError:MODEM_ERR
+     *   RadioError:NETWORK_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:NETWORK_NOT_READY
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:SIM_ABSENT
+     */
+    oneway void sendSMSExpectMoreResponse(in RadioResponseInfo info, in SendSmsResult sms);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param sms Response to sms sent as defined by SendSmsResult in types.hal
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:SMS_SEND_FAIL_RETRY
+     *   RadioError:NETWORK_REJECT
+     *   RadioError:INVALID_STATE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_MEMORY
+     *   RadioError:REQUEST_RATE_LIMITED
+     *   RadioError:INVALID_SMS_FORMAT
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:FDN_CHECK_FAILURE
+     *   RadioError:ENCODING_ERR
+     *   RadioError:INVALID_SMSC_ADDRESS
+     *   RadioError:MODEM_ERR
+     *   RadioError:NETWORK_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:NETWORK_NOT_READY
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:SIM_ABSENT
+     *   RadioError:ACCESS_BARRED
+     *   RadioError:BLOCKED_DUE_TO_CALL
+     */
+    oneway void sendSmsExpectMoreResponse(in RadioResponseInfo info, in SendSmsResult sms);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param sms Response to sms sent as defined by SendSmsResult in types.hal
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:SMS_SEND_FAIL_RETRY
+     *   RadioError:NETWORK_REJECT
+     *   RadioError:INVALID_STATE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_MEMORY
+     *   RadioError:REQUEST_RATE_LIMITED
+     *   RadioError:INVALID_SMS_FORMAT
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:ENCODING_ERR
+     *   RadioError:INVALID_SMSC_ADDRESS
+     *   RadioError:MODEM_ERR
+     *   RadioError:NETWORK_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:NETWORK_NOT_READY
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:SIM_ABSENT
+     *   RadioError:ACCESS_BARRED
+     *   RadioError:BLOCKED_DUE_TO_CALL
+     */
+    oneway void sendSmsResponse(in RadioResponseInfo info, in SendSmsResult sms);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:SIM_ABSENT
+     */
+    oneway void sendTerminalResponseToSimResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:FDN_CHECK_FAILURE
+     *   RadioError:USSD_MODIFIED_TO_DIAL
+     *   RadioError:USSD_MODIFIED_TO_SS
+     *   RadioError:USSD_MODIFIED_TO_USSD
+     *   RadioError:SIM_BUSY
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_MEMORY
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:ABORTED
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_STATE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void sendUssdResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:INVALID_STATE
+     *   RadioError:NO_RESOURCES
+     *   RadioError:NO_MEMORY
+     *   RadioError:MODEM_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:INVALID_CALL_ID
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:CANCELLED
+     */
+    oneway void separateConnectionResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void setAllowedCarriersResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:MODE_NOT_SUPPORTED
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     */
+    oneway void setAllowedNetworkTypesBitmapResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void setBandModeResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:SS_MODIFIED_TO_DIAL
+     *   RadioError:SS_MODIFIED_TO_USSD
+     *   RadioError:SS_MODIFIED_TO_SS
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_MEMORY
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:FDN_CHECK_FAILURE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void setBarringPasswordResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:SS_MODIFIED_TO_DIAL
+     *   RadioError:SS_MODIFIED_TO_USSD
+     *   RadioError:SS_MODIFIED_TO_SS
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_MEMORY
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:INVALID_STATE
+     *   RadioError:FDN_CHECK_FAILURE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void setCallForwardResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:SS_MODIFIED_TO_DIAL
+     *   RadioError:SS_MODIFIED_TO_USSD
+     *   RadioError:SS_MODIFIED_TO_SS
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_MEMORY
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:INVALID_STATE
+     *   RadioError:FDN_CHECK_FAILURE
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void setCallWaitingResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:RIL_E_SUCCESS
+     *   RadioError:RIL_E_RADIO_NOT_AVAILABLE
+     *   RadioError:SIM_ABSENT
+     *   RadioError:RIL_E_REQUEST_NOT_SUPPORTED
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_INTERNAL_FAILURE
+     */
+    oneway void setCarrierInfoForImsiEncryptionResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:INVALID_STATE
+     *   RadioError:NO_MEMORY
+     *   RadioError:REQUEST_RATE_LIMITED
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:INVALID_MODEM_STATE
+     */
+    oneway void setCdmaBroadcastActivationResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:INVALID_STATE
+     *   RadioError:NO_MEMORY
+     *   RadioError:REQUEST_RATE_LIMITED
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:INVALID_MODEM_STATE
+     */
+    oneway void setCdmaBroadcastConfigResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:SIM_ABSENT
+     */
+    oneway void setCdmaRoamingPreferenceResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:SIM_ABSENT
+     *   RadioError:SUBSCRIPTION_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void setCdmaSubscriptionSourceResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void setCellInfoListRateResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:SS_MODIFIED_TO_DIAL
+     *   RadioError:SS_MODIFIED_TO_USSD
+     *   RadioError:SS_MODIFIED_TO_SS
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void setClirResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:DEVICE_IN_USE
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void setDataAllowedResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:SUBSCRIPTION_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:SIM_ABSENT
+     */
+    oneway void setDataProfileResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     *  Valid errors returned:
+     *  RadioError:NONE
+     *  RadioError:RADIO_NOT_AVAILABLE
+     *  RadioError:MODEM_ERR
+     *  RadioError:INVALID_ARGUMENTS
+     *  RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void setDataThrottlingResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param retry 0 is the number of retries remaining, or -1 if unknown
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:SS_MODIFIED_TO_DIAL
+     *   RadioError:SS_MODIFIED_TO_USSD
+     *   RadioError:SS_MODIFIED_TO_SS
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_MEMORY
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_STATE
+     *   RadioError:FDN_CHECK_FAILURE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void setFacilityLockForAppResponse(in RadioResponseInfo info, in int retry);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:INVALID_STATE
+     *   RadioError:NO_MEMORY
+     *   RadioError:REQUEST_RATE_LIMITED
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:INVALID_MODEM_STATE
+     */
+    oneway void setGsmBroadcastActivationResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:INVALID_STATE
+     *   RadioError:NO_MEMORY
+     *   RadioError:REQUEST_RATE_LIMITED
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:INVALID_MODEM_STATE
+     */
+    oneway void setGsmBroadcastConfigResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     */
+    oneway void setIndicationFilterResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:SUBSCRIPTION_NOT_AVAILABLE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NOT_PROVISIONED
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void setInitialAttachApnResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     */
+    oneway void setLinkCapacityReportingCriteriaResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:SIM_ABSENT
+     */
+    oneway void setLocationUpdatesResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_MEMORY
+     *   RadioError:REQUEST_RATE_LIMITED
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void setMuteResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:ILLEGAL_SIM_OR_ME
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *
+     * Returns RadioError:ILLEGAL_SIM_OR_ME when the failure is permanent and
+     * no retries needed, such as illegal SIM or ME.
+     */
+    oneway void setNetworkSelectionModeAutomaticResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:ILLEGAL_SIM_OR_ME
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:INVALID_STATE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *
+     * Returns RadioError:ILLEGAL_SIM_OR_ME when the failure is permanent and
+     * no retries needed, such as illegal SIM or ME.
+     */
+    oneway void setNetworkSelectionModeManualResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:INVALID_STATE
+     */
+    oneway void setNrDualConnectivityStateResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:MODE_NOT_SUPPORTED
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     */
+    oneway void setPreferredNetworkTypeBitmapResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:MODE_NOT_SUPPORTED
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void setPreferredNetworkTypeResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:INVALID_CALL_ID
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void setPreferredVoicePrivacyResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param rc Radio capability as defined by RadioCapability in types.hal used to
+     *        feedback return status
+     *
+     * Valid errors returned:
+     *   RadioError:NONE means a unsol radioCapability() will be sent within 30 seconds.
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:INVALID_STATE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void setRadioCapabilityResponse(in RadioResponseInfo info, in RadioCapability rc);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:RF_HARDWARE_ISSUE
+     *   RadioError:NO_RF_CALIBRATION_INFO
+     */
+    oneway void setRadioPowerResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:RADIO_NOT_AVAILABLE
+     */
+    oneway void setSignalStrengthReportingCriteriaResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:SIM_ERR (indicates a timeout or other issue making the SIM unresponsive)
+     */
+    oneway void setSimCardPowerResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:INVALID_SMS_FORMAT
+     *   RadioError:NO_MEMORY
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_RATE_LIMITED
+     *   RadioError:MODEM_ERR
+     *   RadioError:NO_RESOURCES
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:SIM_ABSENT
+     */
+    oneway void setSmscAddressResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:SIM_BUSY
+     *   RadioError:NO_MEMORY
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:SIM_ABSENT
+     */
+    oneway void setSuppServiceNotificationsResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     */
+    oneway void setSystemSelectionChannelsResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void setTTYModeResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:SUBSCRIPTION_NOT_SUPPORTED
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void setUiccSubscriptionResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param dcResponse SetupDataCallResult defined in types.hal
+     *
+     * Valid errors returned:
+     *   RadioError:NONE must be returned on both success and failure of setup with the
+     *              DataCallResponse.status containing the actual status
+     *              For all other errors the DataCallResponse is ignored.
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:OP_NOT_ALLOWED_BEFORE_REG_TO_NW
+     *   RadioError:OP_NOT_ALLOWED_DURING_VOICE_CALL
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_RESOURCES if the vendor is unable handle due to resources are full.
+     *   RadioError:SIM_ABSENT
+     */
+    oneway void setupDataCallResponse(in RadioResponseInfo info, in SetupDataCallResult dcResponse);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_RESOURCES
+     *   RadioError:NO_MEMORY
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:INVALID_CALL_ID
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:CANCELLED
+     *   RadioError:INVALID_MODEM_STATE
+     */
+    oneway void startDtmfResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_RESOURCES
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:INVALID_CALL_ID
+     */
+    oneway void startHandoverResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param status Status object containing a new handle and a current status. The status returned
+     *        here may be PENDING to indicate that the radio has not yet processed the keepalive
+     *        request.
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:NO_RESOURCES
+     *   RadioError:INVALID_ARGUMENTS
+     */
+    oneway void startKeepaliveResponse(in RadioResponseInfo info, in KeepaliveStatus status);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param statusInfo LceStatusInfo indicating LCE status
+     *
+     * Valid errors returned:
+     *   RadioError:REQUEST_NOT_SUPPORTED may be returned when HAL 1.2 or higher is supported.
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:LCE_NOT_SUPPORTED
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void startLceServiceResponse(in RadioResponseInfo info, in LceStatusInfo statusInfo);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:DEVICE_IN_USE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     */
+    oneway void startNetworkScanResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_RESOURCES
+     *   RadioError:NO_MEMORY
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:INVALID_CALL_ID
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:CANCELLED
+     *   RadioError:INVALID_MODEM_STATE
+     */
+    oneway void stopDtmfResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:INVALID_ARGUMENTS
+     */
+    oneway void stopKeepaliveResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param statusInfo LceStatusInfo indicating LCE status
+     *
+     * Valid errors returned:
+     *   RadioError:REQUEST_NOT_SUPPORTED may be returned when HAL 1.2 or higher is supported.
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:LCE_NOT_SUPPORTED
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:SIM_ABSENT
+     */
+    oneway void stopLceServiceResponse(in RadioResponseInfo info, in LceStatusInfo statusInfo);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:MODEM_ERR
+     */
+    oneway void stopNetworkScanResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param remainingRetries Number of retries remaining, must be equal to -1 if unknown.
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE (radio resetting)
+     *   RadioError:PASSWORD_INCORRECT
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:INVALID_SIM_STATE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:SIM_PUK2
+     */
+    oneway void supplyIccPin2ForAppResponse(in RadioResponseInfo info, in int remainingRetries);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param remainingRetries Number of retries remaining, must be equal to -1 if unknown.
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE (radio resetting)
+     *   RadioError:PASSWORD_INCORRECT
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:INVALID_SIM_STATE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void supplyIccPinForAppResponse(in RadioResponseInfo info, in int remainingRetries);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param remainingRetries Number of retries remaining, must be equal to -1 if unknown.
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE (radio resetting)
+     *   RadioError:PASSWORD_INCORRECT (PUK is invalid)
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:INVALID_SIM_STATE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void supplyIccPuk2ForAppResponse(in RadioResponseInfo info, in int remainingRetries);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param remainingRetries Number of retries remaining, must be equal to -1 if unknown.
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE (radio resetting)
+     *   RadioError:PASSWORD_INCORRECT (PUK is invalid)
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:INVALID_SIM_STATE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void supplyIccPukForAppResponse(in RadioResponseInfo info, in int remainingRetries);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param remainingRetries Number of retries remaining, must be equal to -1 if unknown.
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:PASSWORD_INCORRECT (code is invalid)
+     *   RadioError:NO_MEMORY
+     *   RadioError:INVALID_SIM_STATE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:SIM_ABSENT
+     */
+    oneway void supplyNetworkDepersonalizationResponse(
+            in RadioResponseInfo info, in int remainingRetries);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param persoType SIM Personalisation type
+     * @param remainingRetries postiive values indicates number of retries remaining, must be equal
+     *        to -1 if number of retries is infinite.
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:PASSWORD_INCORRECT (code is invalid)
+     *   RadioError:NO_MEMORY
+     *   RadioError:INVALID_SIM_STATE
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_RESOURCES
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     */
+    oneway void supplySimDepersonalizationResponse(
+            in RadioResponseInfo info, in PersoSubstate persoType, in int remainingRetries);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE (radio resetting)
+     *   RadioError:INVALID_STATE
+     *   RadioError:NO_MEMORY
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:INVALID_STATE
+     *   RadioError:INVALID_CALL_ID
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     */
+    oneway void switchWaitingOrHoldingAndActiveResponse(in RadioResponseInfo info);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param updatedRecordIndex The index of the updated or inserted record in the phonebook and
+     *        the minimum value is 1
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:INVALID_SIM_STATE
+     *   RadioError:MODEM_ERR
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SIM_ERR
+     *   RadioError:NO_SUCH_ENTRY
+     *   RadioError:NO_RESOURCES
+     * REQUEST_NOT_SUPPORTED may only be returned on devices that don't support this API,
+     * indicated by the HAL capability CAPABILITY_SIM_PHONEBOOK_IN_MODEM.
+     */
+    oneway void updateSimPhonebookRecordsResponse(
+            in RadioResponseInfo info, in int updatedRecordIndex);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param index record index where the cmda sms message is stored
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:INVALID_SMS_FORMAT
+     *   RadioError:SIM_FULL
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:ENCODING_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:INVALID_SMSC_ADDRESS
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:NO_RESOURCES
+     *   RadioError:CANCELLED
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:SIM_ABSENT
+     */
+    oneway void writeSmsToRuimResponse(in RadioResponseInfo info, in int index);
+
+    /**
+     * @param info Response info struct containing response type, serial no. and error
+     * @param index record index where the message is stored
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:SIM_FULL
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:INVALID_SMS_FORMAT
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:ENCODING_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:NO_RESOURCES
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:INVALID_SMSC_ADDRESS
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:CANCELLED
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:SIM_ABSENT
+     */
+    oneway void writeSmsToSimResponse(in RadioResponseInfo info, in int index);
+}
diff --git a/radio/aidl/android/hardware/radio/ISap.aidl b/radio/aidl/android/hardware/radio/ISap.aidl
new file mode 100644
index 0000000..55950fd
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/ISap.aidl
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.ISapCallback;
+import android.hardware.radio.SapApduType;
+import android.hardware.radio.SapTransferProtocol;
+
+/**
+ * Empty top level interface.
+ */
+@VintfStability
+interface ISap {
+    /**
+     * TRANSFER_APDU_REQ from SAP 1.1 spec 5.1.6
+     *
+     * @param token Id to match req-resp. Resp must include same token.
+     * @param type APDU command type
+     * @param command CommandAPDU/CommandAPDU7816 parameter depending on type
+     */
+    oneway void apduReq(in int token, in SapApduType type, in byte[] command);
+
+    /**
+     * CONNECT_REQ from SAP 1.1 spec 5.1.1
+     *
+     * @param token Id to match req-resp. Resp must include same token.
+     * @param maxMsgSize MaxMsgSize to be used for SIM Access Profile connection
+     */
+    oneway void connectReq(in int token, in int maxMsgSize);
+
+    /**
+     * DISCONNECT_REQ from SAP 1.1 spec 5.1.3
+     *
+     * @param token Id to match req-resp. Resp must include same token.
+     */
+    oneway void disconnectReq(in int token);
+
+    /**
+     * POWER_SIM_OFF_REQ and POWER_SIM_ON_REQ from SAP 1.1 spec 5.1.10 + 5.1.12
+     *
+     * @param token Id to match req-resp. Resp must include same token.
+     * @param state true for on, false for off
+     */
+    oneway void powerReq(in int token, in boolean state);
+
+    /**
+     * RESET_SIM_REQ from SAP 1.1 spec 5.1.14
+     *
+     * @param token Id to match req-resp. Resp must include same token.
+     */
+    oneway void resetSimReq(in int token);
+
+    /**
+     * Set callback that has response and unsolicited indication functions
+     *
+     * @param sapCallback Object containing response and unosolicited indication callbacks
+     */
+    void setCallback(in ISapCallback sapCallback);
+
+    /**
+     * SET_TRANSPORT_PROTOCOL_REQ from SAP 1.1 spec 5.1.20
+     *
+     * @param token Id to match req-resp. Resp must include same token.
+     * @param transferProtocol Transport Protocol
+     */
+    oneway void setTransferProtocolReq(in int token, in SapTransferProtocol transferProtocol);
+
+    /**
+     * TRANSFER_ATR_REQ from SAP 1.1 spec 5.1.8
+     *
+     * @param token Id to match req-resp. Resp must include same token.
+     */
+    oneway void transferAtrReq(in int token);
+
+    /**
+     * TRANSFER_CARD_READER_STATUS_REQ from SAP 1.1 spec 5.1.17
+     *
+     * @param token Id to match req-resp. Resp must include same token.
+     */
+    oneway void transferCardReaderStatusReq(in int token);
+}
diff --git a/radio/aidl/android/hardware/radio/ISapCallback.aidl b/radio/aidl/android/hardware/radio/ISapCallback.aidl
new file mode 100644
index 0000000..e7a4bac
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/ISapCallback.aidl
@@ -0,0 +1,152 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.SapConnectRsp;
+import android.hardware.radio.SapDisconnectType;
+import android.hardware.radio.SapResultCode;
+import android.hardware.radio.SapStatus;
+
+@VintfStability
+interface ISapCallback {
+    /**
+     * TRANSFER_APDU_RESP from SAP 1.1 spec 5.1.7
+     *
+     * @param token Id to match req-resp. Value must match the one in req.
+     * @param resultCode ResultCode to indicate if command was processed correctly
+     *        Possible values:
+     *        SapResultCode:SUCCESS,
+     *        SapResultCode:GENERIC_FAILURE,
+     *        SapResultCode:CARD_NOT_ACCESSSIBLE,
+     *        SapResultCode:CARD_ALREADY_POWERED_OFF,
+     *        SapResultCode:CARD_REMOVED
+     * @param apduRsp APDU Response. Valid only if command was processed correctly and no error
+     *        occurred.
+     */
+    oneway void apduResponse(in int token, in SapResultCode resultCode, in byte[] apduRsp);
+
+    /**
+     * CONNECT_RESP from SAP 1.1 spec 5.1.2
+     *
+     * @param token Id to match req-resp. Value must match the one in req.
+     * @param sapConnectRsp Connection Status
+     * @param maxMsgSize MaxMsgSize supported by server if request cannot be fulfilled.
+     *        Valid only if connectResponse is SapConnectResponse:MSG_SIZE_TOO_LARGE.
+     */
+    oneway void connectResponse(in int token, in SapConnectRsp sapConnectRsp, in int maxMsgSize);
+
+    /**
+     * DISCONNECT_IND from SAP 1.1 spec 5.1.5
+     *
+     * @param token Id to match req-resp. Value must match the one in req.
+     * @param disconnectType Disconnect Type to indicate if shutdown is graceful or immediate
+     */
+    oneway void disconnectIndication(in int token, in SapDisconnectType disconnectType);
+
+    /**
+     * DISCONNECT_RESP from SAP 1.1 spec 5.1.4
+     *
+     * @param token Id to match req-resp. Value must match the one in req.
+     */
+    oneway void disconnectResponse(in int token);
+
+    /**
+     * ERROR_RESP from SAP 1.1 spec 5.1.19
+     *
+     * @param token Id to match req-resp. Value must match the one in req.
+     */
+    oneway void errorResponse(in int token);
+
+    /**
+     * POWER_SIM_OFF_RESP and POWER_SIM_ON_RESP from SAP 1.1 spec 5.1.11 + 5.1.13
+     *
+     * @param token Id to match req-resp. Value must match the one in req.
+     * @param resultCode ResultCode to indicate if command was processed correctly
+     *        Possible values:
+     *        SapResultCode:SUCCESS,
+     *        SapResultCode:GENERIC_FAILURE,
+     *        SapResultCode:CARD_NOT_ACCESSSIBLE, (possible only for power on req)
+     *        SapResultCode:CARD_ALREADY_POWERED_OFF, (possible only for power off req)
+     *        SapResultCode:CARD_REMOVED,
+     *        SapResultCode:CARD_ALREADY_POWERED_ON (possible only for power on req)
+     */
+    oneway void powerResponse(in int token, in SapResultCode resultCode);
+
+    /**
+     * RESET_SIM_RESP from SAP 1.1 spec 5.1.15
+     *
+     * @param token Id to match req-resp. Value must match the one in req.
+     * @param resultCode ResultCode to indicate if command was processed correctly
+     *        Possible values:
+     *        SapResultCode:SUCCESS,
+     *        SapResultCode:GENERIC_FAILURE,
+     *        SapResultCode:CARD_NOT_ACCESSSIBLE,
+     *        SapResultCode:CARD_ALREADY_POWERED_OFF,
+     *        SapResultCode:CARD_REMOVED
+     */
+    oneway void resetSimResponse(in int token, in SapResultCode resultCode);
+
+    /**
+     * STATUS_IND from SAP 1.1 spec 5.1.16
+     *
+     * @param token Id to match req-resp. Value must match the one in req.
+     * @param status Parameter to indicate reason for the status change.
+     */
+    oneway void statusIndication(in int token, in SapStatus status);
+
+    /**
+     * TRANSFER_ATR_RESP from SAP 1.1 spec 5.1.9
+     *
+     * @param token Id to match req-resp. Value must match the one in req.
+     * @param resultCode ResultCode to indicate if command was processed correctly
+     *        Possible values:
+     *        SapResultCode:SUCCESS,
+     *        SapResultCode:GENERIC_FAILURE,
+     *        SapResultCode:CARD_ALREADY_POWERED_OFF,
+     *        SapResultCode:CARD_REMOVED,
+     *        SapResultCode:DATA_NOT_AVAILABLE
+     * @param atr Answer to Reset from the subscription module. Included only if no error occurred,
+     *        otherwise empty.
+     */
+    oneway void transferAtrResponse(in int token, in SapResultCode resultCode, in byte[] atr);
+
+    /**
+     * TRANSFER_CARD_READER_STATUS_REQ from SAP 1.1 spec 5.1.18
+     *
+     * @param token Id to match req-resp. Value must match the one in req.
+     * @param resultCode ResultCode to indicate if command was processed correctly
+     *        Possible values:
+     *        SapResultCode:SUCCESS,
+     *        SapResultCode:GENERIC_FAILURE
+     *        SapResultCode:DATA_NOT_AVAILABLE
+     * @param cardReaderStatus Card Reader Status coded as described in 3GPP TS 11.14 Section 12.33
+     *        and TS 31.111 Section 8.33
+     */
+    oneway void transferCardReaderStatusResponse(
+            in int token, in SapResultCode resultCode, in int cardReaderStatus);
+
+    /**
+     * SET_TRANSPORT_PROTOCOL_RESP from SAP 1.1 spec 5.1.21
+     *
+     * @param token Id to match req-resp. Value must match the one in req.
+     * @param resultCode ResultCode to indicate if command was processed correctly
+     *        Possible values:
+     *        SapResultCode:SUCCESS
+     *        SapResultCode:NOT_SUPPORTED
+     */
+    oneway void transferProtocolResponse(in int token, in SapResultCode resultCode);
+}
diff --git a/radio/aidl/android/hardware/radio/IccIo.aidl b/radio/aidl/android/hardware/radio/IccIo.aidl
new file mode 100644
index 0000000..7441758
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/IccIo.aidl
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+parcelable IccIo {
+    /**
+     * One of the commands listed for TS 27.007 +CRSM
+     */
+    int command;
+    /**
+     * EF ID
+     */
+    int fileId;
+    /**
+     * "pathid" from TS 27.007 +CRSM command. Path is in hex ASCII format eg "7f205f70"
+     * Path must always be provided.
+     */
+    String path;
+    /**
+     * Value of p1 defined as per 3GPP TS 51.011
+     */
+    int p1;
+    /**
+     * Value of p2 defined as per 3GPP TS 51.011
+     */
+    int p2;
+    /**
+     * Value of p3 defined as per 3GPP TS 51.011
+     */
+    int p3;
+    /**
+     * Information to be written to the SIM
+     */
+    String data;
+    String pin2;
+    /**
+     * AID value, See ETSI 102.221 8.1 and 101.220 4, empty string if no value.
+     */
+    String aid;
+}
diff --git a/radio/aidl/android/hardware/radio/IccIoResult.aidl b/radio/aidl/android/hardware/radio/IccIoResult.aidl
new file mode 100644
index 0000000..94377b4
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/IccIoResult.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+parcelable IccIoResult {
+    int sw1;
+    int sw2;
+    /**
+     * In hex string format ([a-fA-F0-9]*), except for SIM_AUTHENTICATION response for which it is
+     * in Base64 format, see 3GPP TS 31.102 7.1.2
+     */
+    String simResponse;
+}
diff --git a/radio/aidl/android/hardware/radio/ImsSmsMessage.aidl b/radio/aidl/android/hardware/radio/ImsSmsMessage.aidl
new file mode 100644
index 0000000..3b4efe6
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/ImsSmsMessage.aidl
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CdmaSmsMessage;
+import android.hardware.radio.GsmSmsMessage;
+import android.hardware.radio.RadioTechnologyFamily;
+
+@VintfStability
+parcelable ImsSmsMessage {
+    RadioTechnologyFamily tech;
+    /**
+     * Retry if true
+     */
+    boolean retry;
+    /**
+     * Valid field if retry is set to true.
+     * Contains messageRef from SendSmsResult struct corresponding to failed MO SMS.
+     */
+    int messageRef;
+    /**
+     * Valid field if tech is 3GPP2 and size = 1 else must be empty. Only one of cdmaMessage and
+     * gsmMessage must be of size 1 based on the RadioTechnologyFamily and the other must be size 0.
+     */
+    CdmaSmsMessage[] cdmaMessage;
+    /**
+     * Valid field if tech is 3GPP and size = 1 else must be empty. Only one of cdmaMessage and
+     * gsmMessage must be of size 1 based on the RadioTechnologyFamily and the other must be size 0.
+     */
+    GsmSmsMessage[] gsmMessage;
+}
diff --git a/radio/aidl/android/hardware/radio/ImsiEncryptionInfo.aidl b/radio/aidl/android/hardware/radio/ImsiEncryptionInfo.aidl
new file mode 100644
index 0000000..dbb0a9e
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/ImsiEncryptionInfo.aidl
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.PublicKeyType;
+
+/**
+ * Carrier specific Information sent by the carrier, which will be used to encrypt IMSI and IMPI.
+ */
+@VintfStability
+parcelable ImsiEncryptionInfo {
+    /**
+     * MCC of the Carrier.
+     */
+    String mcc;
+    /**
+     * MNC of the Carrier.
+     */
+    String mnc;
+    /**
+     * Carrier specific key to be used for encryption. It must be opaque to the framework.
+     * This is the byte-stream representation of the key. This is an external encoded form for the
+     * key used when a standard representation of the key is needed outside the Java Virtual
+     * Machine, as when transmitting the key to some other party. The key is encoded according to a
+     * standard format (such as X.509 SubjectPublicKeyInfo or PKCS#8), and is returned using the
+     * getEncoded method as defined on the java.security.Key interface.
+     */
+    byte[] carrierKey;
+    /**
+     * This is an opaque value we're given by the carrier and is returned to the carrier.
+     * This is used by the server to help it locate the private key to decrypt the
+     * permanent identity.
+     */
+    String keyIdentifier;
+    /**
+     * Date-time in UTC when the key will expire.
+     */
+    long expirationTime;
+    /**
+     * Public key type.
+     */
+    PublicKeyType keyType;
+}
diff --git a/radio/aidl/android/hardware/radio/IncrementalResultsPeriodicityRange.aidl b/radio/aidl/android/hardware/radio/IncrementalResultsPeriodicityRange.aidl
new file mode 100644
index 0000000..4a863a7
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/IncrementalResultsPeriodicityRange.aidl
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Values are in seconds.
+ */
+@VintfStability
+@Backing(type="int")
+enum IncrementalResultsPeriodicityRange {
+    MIN = 1,
+    MAX = 10,
+}
diff --git a/radio/aidl/android/hardware/radio/IndicationFilter.aidl b/radio/aidl/android/hardware/radio/IndicationFilter.aidl
new file mode 100644
index 0000000..826c8c1
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/IndicationFilter.aidl
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum IndicationFilter {
+    NONE = 0,
+    ALL = ~0,
+    /**
+     * When this bit is set, modem must send the signal strength update through
+     * IRadioIndication.currentSignalStrength() when all criteria specified by
+     * IRadio.setSignalStrengthReportingCriteria() are met.
+     */
+    SIGNAL_STRENGTH = 1 << 0,
+    /**
+     * When this bit is set, modem must invoke IRadioIndication.networkStateChanged() when any field
+     * in VoiceRegStateResult or DataRegStateResult changes. When this bit is not set, modem must
+     * suppress IRadioIndication.networkStateChanged() when there are only changes from
+     * insignificant fields. Modem must invoke IRadioIndication.networkStateChanged() when
+     * significant fields are updated regardless of whether this bit is set.
+     *
+     * The following fields are considered significant: VoiceRegStateResult.regState,
+     * VoiceRegStateResult.rat, DataRegStateResult.regState, DataRegStateResult.rat.
+     */
+    FULL_NETWORK_STATE = 1 << 1,
+    /**
+     * When this bit is set, modem must send IRadioIndication.dataCallListChanged() whenever any
+     * field in ITypes.SetupDataCallResult changes. When this bit is not set, modem must suppress
+     * the indication when the only changed field is 'active' (for data dormancy). For all other
+     * field changes, the modem must send IRadioIndication.dataCallListChanged() regardless of
+     * whether this bit is set.
+     */
+    DATA_CALL_DORMANCY_CHANGED = 1 << 2,
+    /**
+     * When this bit is set, modem must send the link capacity update through
+     * IRadioIndication.currentLinkCapacityEstimate() when all criteria specified by
+     * IRadio.setLinkCapacityReportingCriteria() are met.
+     */
+    LINK_CAPACITY_ESTIMATE = 1 << 3,
+    /**
+     * When this bit is set, the modem must send the physical channel configuration update through
+     * IRadioIndication.currentPhysicalChannelConfigs() when the configuration has changed. It is
+     * recommended that this be reported whenever link capacity or signal strength is reported.
+     */
+    PHYSICAL_CHANNEL_CONFIG = 1 << 4,
+    /**
+     * Control the unsolicited sending of registration failure reports via onRegistrationFailed
+     */
+    REGISTRATION_FAILURE = 1 << 5,
+    /**
+     * Control the unsolicited sending of barring info updates via onBarringInfo
+     */
+    BARRING_INFO = 1 << 6,
+}
diff --git a/radio/aidl/android/hardware/radio/KeepaliveRequest.aidl b/radio/aidl/android/hardware/radio/KeepaliveRequest.aidl
new file mode 100644
index 0000000..ef594ad
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/KeepaliveRequest.aidl
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.KeepaliveType;
+
+@VintfStability
+parcelable KeepaliveRequest {
+    /**
+     * The format of the keepalive packet
+     */
+    KeepaliveType type;
+    /**
+     * Source address with type = family, in network byte order
+     */
+    byte[] sourceAddress;
+    /**
+     * Source port if relevant for the given type
+     * INT_MAX: 0x7FFFFFFF denotes that the field is unused
+     */
+    int sourcePort;
+    /**
+     * Destination address with type = family, in network byte order
+     */
+    byte[] destinationAddress;
+    /**
+     * Destination if relevant for the given type
+     * INT_MAX: 0x7FFFFFFF denotes that the field is unused
+     */
+    int destinationPort;
+    /**
+     * The max interval between packets, in milliseconds
+     */
+    int maxKeepaliveIntervalMillis;
+    /**
+     * Context ID, returned in setupDataCallResponse that uniquely identifies the data call to which
+     * this keepalive must applied.
+     */
+    int cid;
+}
diff --git a/radio/aidl/android/hardware/radio/KeepaliveStatus.aidl b/radio/aidl/android/hardware/radio/KeepaliveStatus.aidl
new file mode 100644
index 0000000..911cdae
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/KeepaliveStatus.aidl
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.KeepaliveStatusCode;
+
+@VintfStability
+parcelable KeepaliveStatus {
+    /**
+     * The sessionHandle provided by the API
+     */
+    int sessionHandle;
+    /**
+     * Status for the given keepalive
+     */
+    KeepaliveStatusCode code;
+}
diff --git a/radio/aidl/android/hardware/radio/KeepaliveStatusCode.aidl b/radio/aidl/android/hardware/radio/KeepaliveStatusCode.aidl
new file mode 100644
index 0000000..ed4b327
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/KeepaliveStatusCode.aidl
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum KeepaliveStatusCode {
+    /**
+     * Keepalive is currently active
+     */
+    ACTIVE,
+    /**
+     * Keepalive is inactive, which indicates an error
+     */
+    INACTIVE,
+    /**
+     * Requested keepalive has not yet been processed by the modem.
+     * Only allowed in a RESPONSE message to a REQUEST
+     */
+    PENDING,
+}
diff --git a/radio/aidl/android/hardware/radio/KeepaliveType.aidl b/radio/aidl/android/hardware/radio/KeepaliveType.aidl
new file mode 100644
index 0000000..86b1509
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/KeepaliveType.aidl
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum KeepaliveType {
+    /**
+     * Keepalive specified by RFC 3948 Sec. 2.3 using IPv4
+     */
+    NATT_IPV4,
+    /**
+     * Keepalive specified by RFC 3948 Sec. 2.3 using IPv6
+     */
+    NATT_IPV6,
+}
diff --git a/radio/aidl/android/hardware/radio/LastCallFailCause.aidl b/radio/aidl/android/hardware/radio/LastCallFailCause.aidl
new file mode 100644
index 0000000..e5a5145
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/LastCallFailCause.aidl
@@ -0,0 +1,177 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum LastCallFailCause {
+    UNOBTAINABLE_NUMBER = 1,
+    NO_ROUTE_TO_DESTINATION = 3,
+    CHANNEL_UNACCEPTABLE = 6,
+    OPERATOR_DETERMINED_BARRING = 8,
+    NORMAL = 16,
+    BUSY = 17,
+    NO_USER_RESPONDING = 18,
+    NO_ANSWER_FROM_USER = 19,
+    CALL_REJECTED = 21,
+    NUMBER_CHANGED = 22,
+    PREEMPTION = 25,
+    DESTINATION_OUT_OF_ORDER = 27,
+    INVALID_NUMBER_FORMAT = 28,
+    FACILITY_REJECTED = 29,
+    RESP_TO_STATUS_ENQUIRY = 30,
+    NORMAL_UNSPECIFIED = 31,
+    CONGESTION = 34,
+    NETWORK_OUT_OF_ORDER = 38,
+    TEMPORARY_FAILURE = 41,
+    SWITCHING_EQUIPMENT_CONGESTION = 42,
+    ACCESS_INFORMATION_DISCARDED = 43,
+    REQUESTED_CIRCUIT_OR_CHANNEL_NOT_AVAILABLE = 44,
+    RESOURCES_UNAVAILABLE_OR_UNSPECIFIED = 47,
+    QOS_UNAVAILABLE = 49,
+    REQUESTED_FACILITY_NOT_SUBSCRIBED = 50,
+    INCOMING_CALLS_BARRED_WITHIN_CUG = 55,
+    BEARER_CAPABILITY_NOT_AUTHORIZED = 57,
+    BEARER_CAPABILITY_UNAVAILABLE = 58,
+    SERVICE_OPTION_NOT_AVAILABLE = 63,
+    BEARER_SERVICE_NOT_IMPLEMENTED = 65,
+    ACM_LIMIT_EXCEEDED = 68,
+    REQUESTED_FACILITY_NOT_IMPLEMENTED = 69,
+    ONLY_DIGITAL_INFORMATION_BEARER_AVAILABLE = 70,
+    SERVICE_OR_OPTION_NOT_IMPLEMENTED = 79,
+    INVALID_TRANSACTION_IDENTIFIER = 81,
+    USER_NOT_MEMBER_OF_CUG = 87,
+    INCOMPATIBLE_DESTINATION = 88,
+    INVALID_TRANSIT_NW_SELECTION = 91,
+    SEMANTICALLY_INCORRECT_MESSAGE = 95,
+    INVALID_MANDATORY_INFORMATION = 96,
+    MESSAGE_TYPE_NON_IMPLEMENTED = 97,
+    MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 98,
+    INFORMATION_ELEMENT_NON_EXISTENT = 99,
+    CONDITIONAL_IE_ERROR = 100,
+    MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 101,
+    RECOVERY_ON_TIMER_EXPIRED = 102,
+    PROTOCOL_ERROR_UNSPECIFIED = 111,
+    INTERWORKING_UNSPECIFIED = 127,
+    CALL_BARRED = 240,
+    FDN_BLOCKED = 241,
+    IMSI_UNKNOWN_IN_VLR = 242,
+    IMEI_NOT_ACCEPTED = 243,
+    /**
+     * STK Call Control
+     */
+    DIAL_MODIFIED_TO_USSD = 244,
+    DIAL_MODIFIED_TO_SS = 245,
+    DIAL_MODIFIED_TO_DIAL = 246,
+    /**
+     * Radio is off
+     */
+    RADIO_OFF = 247,
+    /**
+     * No cellular coverage
+     */
+    OUT_OF_SERVICE = 248,
+    /**
+     * No valid SIM is present
+     */
+    NO_VALID_SIM = 249,
+    /**
+     * Internal error at modem
+     */
+    RADIO_INTERNAL_ERROR = 250,
+    /**
+     * No response from network
+     */
+    NETWORK_RESP_TIMEOUT = 251,
+    /**
+     * Explicit network reject
+     */
+    NETWORK_REJECT = 252,
+    /**
+     * RRC connection failure. Eg.RACH
+     */
+    RADIO_ACCESS_FAILURE = 253,
+    /**
+     * Radio link failure
+     */
+    RADIO_LINK_FAILURE = 254,
+    /**
+     * Radio link lost due to poor coverage
+     */
+    RADIO_LINK_LOST = 255,
+    /**
+     * Radio uplink failure
+     */
+    RADIO_UPLINK_FAILURE = 256,
+    /**
+     * RRC connection setup failure
+     */
+    RADIO_SETUP_FAILURE = 257,
+    /**
+     * RRC connection release, normal
+     */
+    RADIO_RELEASE_NORMAL = 258,
+    /**
+     * RRC connection release, abnormal
+     */
+    RADIO_RELEASE_ABNORMAL = 259,
+    /**
+     * Access class barring
+     */
+    ACCESS_CLASS_BLOCKED = 260,
+    /**
+     * Explicit network detach
+     */
+    NETWORK_DETACH = 261,
+    CDMA_LOCKED_UNTIL_POWER_CYCLE = 1000,
+    CDMA_DROP = 1001,
+    CDMA_INTERCEPT = 1002,
+    CDMA_REORDER = 1003,
+    CDMA_SO_REJECT = 1004,
+    CDMA_RETRY_ORDER = 1005,
+    CDMA_ACCESS_FAILURE = 1006,
+    CDMA_PREEMPTED = 1007,
+    /**
+     * For non-emergency number dialed during emergency callback mode
+     */
+    CDMA_NOT_EMERGENCY = 1008,
+    CDMA_ACCESS_BLOCKED = 1009,
+    /**
+     * OEM specific error codes. Used to distinguish error from
+     * CALL_FAIL_ERROR_UNSPECIFIED and help assist debugging
+     */
+    OEM_CAUSE_1 = 0xf001,
+    OEM_CAUSE_2 = 0xf002,
+    OEM_CAUSE_3 = 0xf003,
+    OEM_CAUSE_4 = 0xf004,
+    OEM_CAUSE_5 = 0xf005,
+    OEM_CAUSE_6 = 0xf006,
+    OEM_CAUSE_7 = 0xf007,
+    OEM_CAUSE_8 = 0xf008,
+    OEM_CAUSE_9 = 0xf009,
+    OEM_CAUSE_10 = 0xf00a,
+    OEM_CAUSE_11 = 0xf00b,
+    OEM_CAUSE_12 = 0xf00c,
+    OEM_CAUSE_13 = 0xf00d,
+    OEM_CAUSE_14 = 0xf00e,
+    OEM_CAUSE_15 = 0xf00f,
+    /**
+     * This error will be deprecated soon, vendor code must make sure to map error code to specific
+     * error
+     */
+    ERROR_UNSPECIFIED = 0xffff,
+}
diff --git a/radio/aidl/android/hardware/radio/LastCallFailCauseInfo.aidl b/radio/aidl/android/hardware/radio/LastCallFailCauseInfo.aidl
new file mode 100644
index 0000000..6866e99
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/LastCallFailCauseInfo.aidl
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.LastCallFailCause;
+
+@VintfStability
+parcelable LastCallFailCauseInfo {
+    LastCallFailCause causeCode;
+    String vendorCause;
+}
diff --git a/radio/aidl/android/hardware/radio/LceDataInfo.aidl b/radio/aidl/android/hardware/radio/LceDataInfo.aidl
new file mode 100644
index 0000000..68521b5
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/LceDataInfo.aidl
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+parcelable LceDataInfo {
+    /**
+     * Last-hop cellular capacity: kilobits/second.
+     */
+    int lastHopCapacityKbps;
+    /**
+     * Capacity estimate confidence: 0-100.
+     */
+    byte confidenceLevel;
+    /**
+     * Whether the LCE report is going to be suspended (e.g., radio moves to inactive state or
+     * network type changes).
+     */
+    boolean lceSuspended;
+}
diff --git a/radio/aidl/android/hardware/radio/LceStatus.aidl b/radio/aidl/android/hardware/radio/LceStatus.aidl
new file mode 100644
index 0000000..0d3a27e
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/LceStatus.aidl
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum LceStatus {
+    NOT_SUPPORTED,
+    STOPPED,
+    ACTIVE,
+}
diff --git a/radio/aidl/android/hardware/radio/LceStatusInfo.aidl b/radio/aidl/android/hardware/radio/LceStatusInfo.aidl
new file mode 100644
index 0000000..e2b35e1
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/LceStatusInfo.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.LceStatus;
+
+@VintfStability
+parcelable LceStatusInfo {
+    LceStatus lceStatus;
+    /**
+     * Actual LCE reporting interval, meaningful only if LceStatus = ACTIVE.
+     */
+    byte actualIntervalMs;
+}
diff --git a/radio/aidl/android/hardware/radio/LinkAddress.aidl b/radio/aidl/android/hardware/radio/LinkAddress.aidl
new file mode 100644
index 0000000..6fc12c7
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/LinkAddress.aidl
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.AddressProperty;
+
+/**
+ * Describes a data link address for mobile data connection.
+ */
+@VintfStability
+parcelable LinkAddress {
+    /**
+     * The format is IP address with optional "/" prefix length (The format is defined in RFC-4291
+     * section 2.3). For example, "192.0.1.3", "192.0.1.11/16", or "2001:db8::1/64". Typically one
+     * IPv4 or one IPv6 or one of each. If the prefix length is absent, then the addresses are
+     * assumed to be point to point with IPv4 with prefix length 32 or IPv6 with prefix length 128.
+     */
+    String address;
+    /**
+     * The properties of the link address
+     */
+    AddressProperty properties;
+    /**
+     * The time, as reported by SystemClock.elapsedRealtime(), when this link address will be or
+     * was deprecated. -1 indicates this information is not available. At the time existing
+     * connections can still use this address until it expires, but new connections should use the
+     * new address. LONG_MAX(0x7FFFFFFFFFFFFFFF) indicates this link address will never be
+     * deprecated.
+     */
+    long deprecationTime;
+    /**
+     * The time, as reported by SystemClock.elapsedRealtime(), when this link address will expire
+     * and be removed from the interface. -1 indicates this information is not available.
+     * LONG_MAX(0x7FFFFFFFFFFFFFFF) indicates this link address will never expire.
+     */
+    long expirationTime;
+}
diff --git a/radio/aidl/android/hardware/radio/LinkCapacityEstimate.aidl b/radio/aidl/android/hardware/radio/LinkCapacityEstimate.aidl
new file mode 100644
index 0000000..78ddee2
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/LinkCapacityEstimate.aidl
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+parcelable LinkCapacityEstimate {
+    /**
+     * Estimated downlink capacity in kbps. In case of a dual connected network, this includes
+     * capacity of both primary and secondary. This bandwidth estimate shall be the estimated
+     * maximum sustainable link bandwidth (as would be measured at the Upper PDCP or SNDCP SAP).
+     * If the DL Aggregate Maximum Bit Rate is known, this value shall not exceed the DL-AMBR for
+     * the Internet PDN connection. This must be filled with 0 if network is not connected.
+     */
+    int downlinkCapacityKbps;
+    /**
+     * Estimated uplink capacity in kbps. In case of a dual connected network, this includes
+     * capacity of both primary and secondary. This bandwidth estimate shall be the estimated
+     * maximum sustainable link bandwidth (as would be measured at the Upper PDCP or SNDCP SAP).
+     * If the UL Aggregate Maximum Bit Rate is known, this value shall not exceed the UL-AMBR for
+     * the Internet PDN connection. This must be filled with 0 if network is not connected.
+     */
+    int uplinkCapacityKbps;
+    /**
+     * Estimated downlink capacity of secondary carrier in a dual connected NR mode in kbps. This
+     * bandwidth estimate shall be the estimated maximum sustainable link bandwidth (as would be
+     * measured at the Upper PDCP or SNDCP SAP). This is valid only in if device is connected to
+     * both primary and secodary in dual connected mode. This must be filled with 0 if secondary is
+     * not connected or if modem does not support this feature.
+     */
+    int secondaryDownlinkCapacityKbps;
+    /**
+     * Estimated uplink capacity secondary carrier in a dual connected NR mode in kbps. This
+     * bandwidth estimate shall be the estimated maximum sustainable link bandwidth (as would be
+     * measured at the Upper PDCP or SNDCP SAP). This is valid only in if device is connected to
+     * both primary and secodary in dual connected mode.This must be filled with 0 if secondary is
+     * not connected or if modem does not support this feature.
+     */
+    int secondaryUplinkCapacityKbps;
+}
diff --git a/radio/aidl/android/hardware/radio/LteSignalStrength.aidl b/radio/aidl/android/hardware/radio/LteSignalStrength.aidl
new file mode 100644
index 0000000..699925d
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/LteSignalStrength.aidl
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+parcelable LteSignalStrength {
+    /**
+     * Valid values are (0-31, 99) as defined in TS 27.007 8.5; INT_MAX means invalid/unreported.
+     */
+    int signalStrength;
+    /**
+     * The current Reference Signal Receive Power in dBm multiplied by -1. Range: 44 to 140 dBm;
+     * INT_MAX: 0x7FFFFFFF denotes invalid/unreported value. Reference: 3GPP TS 36.133 9.1.4
+     */
+    int rsrp;
+    /**
+     * The current Reference Signal Receive Quality in dB multiplied by -1. Range: 20 to 3 dB;
+     * INT_MAX: 0x7FFFFFFF denotes invalid/unreported value. Reference: 3GPP TS 36.133 9.1.7
+     */
+    int rsrq;
+    /**
+     * The current reference signal signal-to-noise ratio in 0.1 dB units.
+     * Range: -200 to +300 (-200 = -20.0 dB, +300 = 30dB).
+     * INT_MAX: 0x7FFFFFFF denotes invalid/unreported value. Reference: 3GPP TS 36.101 8.1.1
+     */
+    int rssnr;
+    /**
+     * The current Channel Quality Indicator. Range: 0 to 15.
+     * INT_MAX: 0x7FFFFFFF denotes invalid/unreported value. Reference: 3GPP TS 36.101 9.2, 9.3, A.4
+     */
+    int cqi;
+    /**
+     * Timing advance in micro seconds for a one way trip from cell to device. Approximate distance
+     * is calculated using 300m/us * timingAdvance. Range: 0 to 1282 inclusive.
+     * INT_MAX: 0x7FFFFFFF denotes invalid/unreported value. Reference: 3GPP 36.213 section 4.2.3
+     */
+    int timingAdvance;
+    /**
+     * CSI channel quality indicator (CQI) table index. There are multiple CQI tables.
+     * The definition of CQI in each table is different.
+     * Reference: 3GPP TS 136.213 section 7.2.3.
+     * Range [1, 6], INT_MAX means invalid/unreported.
+     */
+    int cqiTableIndex;
+}
diff --git a/radio/aidl/android/hardware/radio/LteVopsInfo.aidl b/radio/aidl/android/hardware/radio/LteVopsInfo.aidl
new file mode 100644
index 0000000..b487a8f
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/LteVopsInfo.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Type to define the LTE specific network capabilities for voice over PS including emergency and
+ * normal voice calls.
+ */
+@VintfStability
+parcelable LteVopsInfo {
+    /**
+     * This indicates if camped network support VoLTE services. This information is received from
+     * LTE network during LTE NAS registration procedure through LTE ATTACH ACCEPT/TAU ACCEPT.
+     * Refer 3GPP 24.301 EPS network feature support -> IMS VoPS
+     */
+    boolean isVopsSupported;
+    /**
+     * This indicates if camped network support VoLTE emergency bearers. This information is
+     * received from LTE network through two sources:
+     * a. During LTE NAS registration procedure through LTE ATTACH ACCEPT/TAU ACCEPT. Refer
+     *    3GPP 24.301 EPS network feature support -> EMC BS
+     * b. In case device is not registered on network. Refer 3GPP 25.331 LTE RRC
+     *    SIB1 : ims-EmergencySupport-r9
+     * If device is registered on LTE, then this field indicates (a).
+     * In case of limited service on LTE this field indicates (b).
+     */
+    boolean isEmcBearerSupported;
+}
diff --git a/radio/aidl/android/hardware/radio/MaxSearchTimeRange.aidl b/radio/aidl/android/hardware/radio/MaxSearchTimeRange.aidl
new file mode 100644
index 0000000..babbd3c
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/MaxSearchTimeRange.aidl
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Values are in seconds.
+ */
+@VintfStability
+@Backing(type="int")
+enum MaxSearchTimeRange {
+    MIN = 60,
+    MAX = 3600,
+}
diff --git a/radio/aidl/android/hardware/radio/MaybePort.aidl b/radio/aidl/android/hardware/radio/MaybePort.aidl
new file mode 100644
index 0000000..169f90f
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/MaybePort.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.PortRange;
+
+/**
+ * Port is optional, contains either single port or range of ports
+ */
+@VintfStability
+union MaybePort {
+    boolean noinit;
+    PortRange range;
+}
diff --git a/radio/aidl/android/hardware/radio/MvnoType.aidl b/radio/aidl/android/hardware/radio/MvnoType.aidl
new file mode 100644
index 0000000..0f0df62
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/MvnoType.aidl
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum MvnoType {
+    /**
+     * None
+     */
+    NONE,
+    /**
+     * The matching data is based on IMSI.
+     */
+    IMSI,
+    /**
+     * The matching data is based on group id.
+     */
+    GID,
+    /**
+     * The matching data is based service provider name.
+     */
+    SPN,
+}
diff --git a/radio/aidl/android/hardware/radio/NeighboringCell.aidl b/radio/aidl/android/hardware/radio/NeighboringCell.aidl
new file mode 100644
index 0000000..b48a2d4
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/NeighboringCell.aidl
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+parcelable NeighboringCell {
+    /**
+     * Combination of LAC and cell ID in 32 bits in GSM. Upper 16 bits is LAC and lower 16 bits is
+     * CID (as described in TS 27.005).
+     */
+    String cid;
+    /**
+     * Received RSSI in GSM, level index of CPICH Received Signal Code Power in UMTS
+     */
+    int rssi;
+}
diff --git a/radio/aidl/android/hardware/radio/NetworkScanRequest.aidl b/radio/aidl/android/hardware/radio/NetworkScanRequest.aidl
new file mode 100644
index 0000000..7659b89
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/NetworkScanRequest.aidl
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.RadioAccessSpecifier;
+import android.hardware.radio.ScanType;
+
+@VintfStability
+parcelable NetworkScanRequest {
+    ScanType type;
+    /**
+     * Time interval in seconds between the completion of one scan and the start of a subsequent
+     * scan. Implementations may ignore this field unless the 'type' is 'PERIODIC'.
+     * Range: ScanIntervalRange:MIN to ScanIntervalRange:MAX.
+     */
+    int interval;
+    /**
+     * Networks with bands/channels to scan.
+     * Maximum length of the vector is RadioConst:RADIO_ACCESS_SPECIFIER_MAX_SIZE.
+     */
+    RadioAccessSpecifier[] specifiers;
+    /**
+     * Maximum duration of the periodic search (in seconds). If the search lasts maxSearchTime, it
+     * must be terminated. Range: MaxSearchTimeRange:MIN to MaxSearchTimeRange:MAX
+     */
+    int maxSearchTime;
+    /**
+     * Whether the modem must report incremental results of the network scan to the client.
+     * FALSE – Incremental results must not be reported.
+     * TRUE  – Incremental must be reported.
+     */
+    boolean incrementalResults;
+    /**
+     * Indicates the periodicity with which the modem must report incremental results to the client
+     * (in seconds). Implementations may ignore this value if the incremental results are not
+     * requested. This value must be less than or equal to maxSearchTime.
+     * Range: IncrementalResultsPeriodicityRange:MIN to IncrementalResultsPeriodicityRange:MAX
+     */
+    int incrementalResultsPeriodicity;
+    /**
+     * Describes the List of PLMN ids (MCC-MNC). If any PLMN of this list is found, search must end
+     * at that point and results with all PLMN found until that point should be sent as response.
+     * If the list is not sent, search to be completed until end and all PLMNs found to be reported.
+     */
+    String[] mccMncs;
+}
diff --git a/radio/aidl/android/hardware/radio/NetworkScanResult.aidl b/radio/aidl/android/hardware/radio/NetworkScanResult.aidl
new file mode 100644
index 0000000..c542a47
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/NetworkScanResult.aidl
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CellInfo;
+import android.hardware.radio.RadioError;
+import android.hardware.radio.ScanStatus;
+
+@VintfStability
+parcelable NetworkScanResult {
+    /**
+     * The status of the scan.
+     */
+    ScanStatus status;
+    /**
+     * The error code of the incremental result.
+     */
+    RadioError error;
+    /**
+     * List of network information as CellInfo.
+     */
+    CellInfo[] networkInfos;
+}
diff --git a/radio/aidl/android/hardware/radio/NgranBands.aidl b/radio/aidl/android/hardware/radio/NgranBands.aidl
new file mode 100644
index 0000000..7887011
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/NgranBands.aidl
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * NGRAN bands up to V16.5.0
+ */
+@VintfStability
+@Backing(type="int")
+enum NgranBands {
+    /**
+     * 3GPP TS 38.101-1, Table 5.2-1: FR1 bands
+     */
+    BAND_1 = 1,
+    BAND_2 = 2,
+    BAND_3 = 3,
+    BAND_5 = 5,
+    BAND_7 = 7,
+    BAND_8 = 8,
+    BAND_12 = 12,
+    BAND_14 = 14,
+    BAND_18 = 18,
+    BAND_20 = 20,
+    BAND_25 = 25,
+    BAND_26 = 26,
+    BAND_28 = 28,
+    BAND_29 = 29,
+    BAND_30 = 30,
+    BAND_34 = 34,
+    BAND_38 = 38,
+    BAND_39 = 39,
+    BAND_40 = 40,
+    BAND_41 = 41,
+    BAND_46 = 46,
+    BAND_48 = 48,
+    BAND_50 = 50,
+    BAND_51 = 51,
+    BAND_53 = 53,
+    BAND_65 = 65,
+    BAND_66 = 66,
+    BAND_70 = 70,
+    BAND_71 = 71,
+    BAND_74 = 74,
+    BAND_75 = 75,
+    BAND_76 = 76,
+    BAND_77 = 77,
+    BAND_78 = 78,
+    BAND_79 = 79,
+    BAND_80 = 80,
+    BAND_81 = 81,
+    BAND_82 = 82,
+    BAND_83 = 83,
+    BAND_84 = 84,
+    BAND_86 = 86,
+    BAND_89 = 89,
+    BAND_90 = 90,
+    BAND_91 = 91,
+    BAND_92 = 92,
+    BAND_93 = 93,
+    BAND_94 = 94,
+    BAND_95 = 95,
+    BAND_96 = 96,
+    /**
+     * 3GPP TS 38.101-2, Table 5.2-1: FR2 bands
+     */
+    BAND_257 = 257,
+    BAND_258 = 258,
+    BAND_260 = 260,
+    BAND_261 = 261,
+}
diff --git a/radio/aidl/android/hardware/radio/NrDualConnectivityState.aidl b/radio/aidl/android/hardware/radio/NrDualConnectivityState.aidl
new file mode 100644
index 0000000..52bd048
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/NrDualConnectivityState.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * NR Dual connectivity state
+ */
+@VintfStability
+@Backing(type="byte")
+enum NrDualConnectivityState {
+    /**
+     * Enable NR dual connectivity. Enabled state does not mean dual connectivity is active.
+     * It means device is allowed to connect to both primary and secondary.
+     */
+    ENABLE = 1,
+    /**
+     * Disable NR dual connectivity. Disabled state does not mean secondary cell is released.
+     * Modem will release it only if current bearer is released to avoid radio link failure.
+     */
+    DISABLE = 2,
+    /**
+     * Disable NR dual connectivity and force secondary cell to be released if dual connectivity
+     * was active. This may result in radio link failure.
+     */
+    DISABLE_IMMEDIATE = 3,
+}
diff --git a/radio/aidl/android/hardware/radio/NrIndicators.aidl b/radio/aidl/android/hardware/radio/NrIndicators.aidl
new file mode 100644
index 0000000..2a1dfec
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/NrIndicators.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * The parameters of NR 5G Non-Standalone.
+ */
+@VintfStability
+parcelable NrIndicators {
+    /**
+     * Indicates that if E-UTRA-NR Dual Connectivity (EN-DC) is supported by the primary serving
+     * cell. True the primary serving cell is LTE cell and the plmn-InfoList-r15 is present in SIB2
+     * and at least one bit in this list is true, otherwise this value should be false.
+     * Reference: 3GPP TS 36.331 v15.2.2 6.3.1 System information blocks.
+     */
+    boolean isEndcAvailable;
+    /**
+     * True if use of dual connectivity with NR is restricted.
+     * Reference: 3GPP TS 24.301 v15.03 section 9.3.3.12A.
+     */
+    boolean isDcNrRestricted;
+    /**
+     * True if the bit N is in the PLMN-InfoList-r15 is true and the selected PLMN is present in
+     * plmn-IdentityList at position N.
+     * Reference: 3GPP TS 36.331 v15.2.2 section 6.3.1 PLMN-InfoList-r15.
+     *            3GPP TS 36.331 v15.2.2 section 6.2.2 SystemInformationBlockType1 message.
+     */
+    boolean isNrAvailable;
+}
diff --git a/radio/aidl/android/hardware/radio/NrQos.aidl b/radio/aidl/android/hardware/radio/NrQos.aidl
new file mode 100644
index 0000000..3d0278c
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/NrQos.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.QosBandwidth;
+
+/**
+ * 5G Quality of Service parameters as per 3gpp spec 24.501 sec 9.11.4.12
+ */
+@VintfStability
+parcelable NrQos {
+    /**
+     * 5G QOS Identifier (5QI), see 3GPP TS 24.501 and 23.501. The allowed values are standard
+     * values (1-9, 65-68, 69-70, 75, 79-80, 82-85) defined in the spec and operator specific values
+     * in the range 128-254.
+     */
+    int fiveQi;
+    QosBandwidth downlink;
+    QosBandwidth uplink;
+    /**
+     * QOS flow identifier of the QOS flow description in the range
+     * (QosFlowIdRange::MIN, QosFlowIdRange::MAX)
+     */
+    byte qfi;
+    char averagingWindowMs;
+}
diff --git a/radio/aidl/android/hardware/radio/NrSignalStrength.aidl b/radio/aidl/android/hardware/radio/NrSignalStrength.aidl
new file mode 100644
index 0000000..40c6c3e
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/NrSignalStrength.aidl
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+parcelable NrSignalStrength {
+    /**
+     * SS reference signal received power, multiplied by -1.
+     * Reference: 3GPP TS 38.215.
+     * Range [44, 140], INT_MAX means invalid/unreported.
+     */
+    int ssRsrp;
+    /**
+     * SS reference signal received quality, multiplied by -1.
+     * Reference: 3GPP TS 38.215, 3GPP TS 38.133 section 10.
+     * Range [-20 dB, 43 dB], INT_MAX means invalid/unreported.
+     */
+    int ssRsrq;
+    /**
+     * SS signal-to-noise and interference ratio.
+     * Reference: 3GPP TS 38.215 section 5.1.*, 3GPP TS 38.133 section 10.1.16.1.
+     * Range [-23, 40], INT_MAX means invalid/unreported.
+     */
+    int ssSinr;
+    /**
+     * CSI reference signal received power, multiplied by -1.
+     * Reference: 3GPP TS 38.215.
+     * Range [44, 140], INT_MAX means invalid/unreported.
+     */
+    int csiRsrp;
+    /**
+     * CSI reference signal received quality, multiplied by -1.
+     * Reference: 3GPP TS 38.215.
+     * Range [3, 20], INT_MAX means invalid/unreported.
+     */
+    int csiRsrq;
+    /**
+     * CSI signal-to-noise and interference ratio.
+     * Reference: 3GPP TS 138.215 section 5.1.*, 3GPP TS 38.133 section 10.1.16.1.
+     * Range [-23, 40], INT_MAX means invalid/unreported.
+     */
+    int csiSinr;
+    /**
+     * CSI channel quality indicator (CQI) table index. There are multiple CQI tables.
+     * The definition of CQI in each table is different.
+     * Reference: 3GPP TS 138.214 section 5.2.2.1.
+     * Range [1, 3], INT_MAX means invalid/unreported.
+     */
+    int csiCqiTableIndex;
+    /**
+     * CSI channel quality indicator (CQI) for all subbands. If the CQI report is for the entire
+     * wideband, a single CQI index is provided. If the CQI report is for all subbands, one CQI
+     * index is provided for each subband, in ascending order of subband index. If CQI is not
+     * available, the CQI report is empty.
+     * Reference: 3GPP TS 138.214 section 5.2.2.1.
+     * Range [0, 15], 0xFF means invalid/unreported.
+     */
+    byte[] csiCqiReport;
+}
diff --git a/radio/aidl/android/hardware/radio/NrVopsInfo.aidl b/radio/aidl/android/hardware/radio/NrVopsInfo.aidl
new file mode 100644
index 0000000..4d80f32
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/NrVopsInfo.aidl
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.EmcIndicator;
+import android.hardware.radio.EmfIndicator;
+import android.hardware.radio.VopsIndicator;
+
+/**
+ * Type to define the NR specific network capabilities for voice over PS including emergency and
+ * normal voice calls.
+ */
+@VintfStability
+parcelable NrVopsInfo {
+    /**
+     * This indicates if the camped network supports VoNR services, and what kind of services
+     * it supports. This information is received from NR network during NR NAS registration
+     * procedure through NR REGISTRATION ACCEPT.
+     * Refer 3GPP 24.501 EPS 5GS network feature support -> IMS VoPS
+     */
+    VopsIndicator vopsSupported;
+    /**
+     * This indicates if the camped network supports VoNR emergency service. This information
+     * is received from NR network through two sources:
+     * a. During NR NAS registration procedure through NR REGISTRATION ACCEPT.
+     *    Refer 3GPP 24.501 EPS 5GS network feature support -> EMC
+     * b. In case the device is not registered on the network.
+     *    Refer 3GPP 38.331 SIB1 : ims-EmergencySupport
+     *    If device is registered on NR, then this field indicates whether the cell
+     *    supports IMS emergency bearer services for UEs in limited service mode.
+     */
+    EmcIndicator emcSupported;
+    /**
+     * This indicates if the camped network supports VoNR emergency service fallback. This
+     * information is received from NR network during NR NAS registration procedure through
+     * NR REGISTRATION ACCEPT.
+     * Refer 3GPP 24.501 EPS 5GS network feature support -> EMF
+     */
+    EmfIndicator emfSupported;
+}
diff --git a/radio/aidl/android/hardware/radio/NvItem.aidl b/radio/aidl/android/hardware/radio/NvItem.aidl
new file mode 100644
index 0000000..0d4f79f
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/NvItem.aidl
@@ -0,0 +1,191 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum NvItem {
+    /**
+     * CDMA radio and account information (items 1-10)
+     * CDMA MEID (hex)
+     */
+    CDMA_MEID = 1,
+    /**
+     * CDMA MIN (MSID)
+     */
+    CDMA_MIN = 2,
+    /**
+     * CDMA MDN
+     */
+    CDMA_MDN = 3,
+    /**
+     * CDMA access overload control
+     */
+    CDMA_ACCOLC = 4,
+    /**
+     * Carrier device provisioning (items 11-30)
+     * Device MSL
+     */
+    DEVICE_MSL = 11,
+    /**
+     * RTN reconditioned status
+     */
+    RTN_RECONDITIONED_STATUS = 12,
+    /**
+     * RTN activation date
+     */
+    RTN_ACTIVATION_DATE = 13,
+    /**
+     * RTN life timer
+     */
+    RTN_LIFE_TIMER = 14,
+    /**
+     * RTN life calls
+     */
+    RTN_LIFE_CALLS = 15,
+    /**
+     * RTN life data TX
+     */
+    RTN_LIFE_DATA_TX = 16,
+    /**
+     * RTN life data RX
+     */
+    RTN_LIFE_DATA_RX = 17,
+    /**
+     * HFA in progress
+     */
+    OMADM_HFA_LEVEL = 18,
+    /**
+     * Mobile IP profile information (items 31-50)
+     * NAI realm
+     */
+    MIP_PROFILE_NAI = 31,
+    /**
+     * MIP home address
+     */
+    MIP_PROFILE_HOME_ADDRESS = 32,
+    /**
+     * AAA auth
+     */
+    MIP_PROFILE_AAA_AUTH = 33,
+    /**
+     * HA auth
+     */
+    MIP_PROFILE_HA_AUTH = 34,
+    /**
+     * Primary HA address
+     */
+    MIP_PROFILE_PRI_HA_ADDR = 35,
+    /**
+     * Secondary HA address
+     */
+    MIP_PROFILE_SEC_HA_ADDR = 36,
+    /**
+     * Reverse TUN preference
+     */
+    MIP_PROFILE_REV_TUN_PREF = 37,
+    /**
+     * HA SPI
+     */
+    MIP_PROFILE_HA_SPI = 38,
+    /**
+     * AAA SPI
+     */
+    MIP_PROFILE_AAA_SPI = 39,
+    /**
+     * HA shared secret
+     */
+    MIP_PROFILE_MN_HA_SS = 40,
+    /**
+     * AAA shared secret
+     */
+    MIP_PROFILE_MN_AAA_SS = 41,
+    /**
+     * CDMA network and band config (items 51-70)
+     * CDMA PRL version
+     */
+    CDMA_PRL_VERSION = 51,
+    /**
+     * CDMA band class 10
+     */
+    CDMA_BC10 = 52,
+    /**
+     * CDMA band class 14
+     */
+    CDMA_BC14 = 53,
+    /**
+     * CDMA SO68
+     */
+    CDMA_SO68 = 54,
+    /**
+     * CDMA SO73 COP0
+     */
+    CDMA_SO73_COP0 = 55,
+    /**
+     * CDMA SO73 COP1-7
+     */
+    CDMA_SO73_COP1TO7 = 56,
+    /**
+     * CDMA 1X Advanced enabled
+     */
+    CDMA_1X_ADVANCED_ENABLED = 57,
+    /**
+     * CDMA eHRPD enabled
+     */
+    CDMA_EHRPD_ENABLED = 58,
+    /**
+     * CDMA eHRPD forced
+     */
+    CDMA_EHRPD_FORCED = 59,
+    /**
+     * LTE network and band config (items 71-90)
+     * LTE band 25 enabled
+     */
+    LTE_BAND_ENABLE_25 = 71,
+    /**
+     * LTE band 26 enabled
+     */
+    LTE_BAND_ENABLE_26 = 72,
+    /**
+     * LTE band 41 enabled
+     */
+    LTE_BAND_ENABLE_41 = 73,
+    /**
+     * LTE band 25 scan priority
+     */
+    LTE_SCAN_PRIORITY_25 = 74,
+    /**
+     * LTE band 26 scan priority
+     */
+    LTE_SCAN_PRIORITY_26 = 75,
+    /**
+     * LTE band 41 scan priority
+     */
+    LTE_SCAN_PRIORITY_41 = 76,
+    /**
+     * LTE hidden band 25 priority
+     */
+    LTE_HIDDEN_BAND_PRIORITY_25 = 77,
+    /**
+     * LTE hidden band 26 priority
+     */
+    LTE_HIDDEN_BAND_PRIORITY_26 = 78,
+    /**
+     * LTE hidden band 41 priority
+     */
+    LTE_HIDDEN_BAND_PRIORITY_41 = 79,
+}
diff --git a/radio/aidl/android/hardware/radio/NvWriteItem.aidl b/radio/aidl/android/hardware/radio/NvWriteItem.aidl
new file mode 100644
index 0000000..f306161
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/NvWriteItem.aidl
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.NvItem;
+
+@VintfStability
+parcelable NvWriteItem {
+    NvItem itemId;
+    String value;
+}
diff --git a/radio/aidl/android/hardware/radio/OperatorInfo.aidl b/radio/aidl/android/hardware/radio/OperatorInfo.aidl
new file mode 100644
index 0000000..4475ff5
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/OperatorInfo.aidl
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.OperatorStatus;
+
+@VintfStability
+parcelable OperatorInfo {
+    /**
+     * Long alpha ONS or EONS
+     */
+    String alphaLong;
+    /**
+     * Short alpha ONS or EONS
+     */
+    String alphaShort;
+    /**
+     * 5 or 6 digit numeric code (MCC + MNC)
+     */
+    String operatorNumeric;
+    OperatorStatus status;
+}
diff --git a/radio/aidl/android/hardware/radio/OperatorStatus.aidl b/radio/aidl/android/hardware/radio/OperatorStatus.aidl
new file mode 100644
index 0000000..fcc31ec
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/OperatorStatus.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum OperatorStatus {
+    UNKNOWN,
+    AVAILABLE,
+    CURRENT,
+    FORBIDDEN,
+}
diff --git a/radio/aidl/android/hardware/radio/OptionalCsgInfo.aidl b/radio/aidl/android/hardware/radio/OptionalCsgInfo.aidl
new file mode 100644
index 0000000..f785693
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/OptionalCsgInfo.aidl
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.ClosedSubscriberGroupInfo;
+
+@VintfStability
+union OptionalCsgInfo {
+    /**
+     * If no CSG info is provided by the cell, then this structure shall be present.
+     */
+    boolean noinit;
+    /**
+     * If CSG info is provided by the cell, this structure shall be present.
+     */
+    ClosedSubscriberGroupInfo csgInfo;
+}
diff --git a/radio/aidl/android/hardware/radio/OptionalDnn.aidl b/radio/aidl/android/hardware/radio/OptionalDnn.aidl
new file mode 100644
index 0000000..1c38a71
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/OptionalDnn.aidl
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * This safe_union represents an optional DNN. DNN stands for Data Network Name and represents
+ * an APN as defined in 3GPP TS 23.003.
+ */
+@VintfStability
+union OptionalDnn {
+    boolean noinit;
+    String value;
+}
diff --git a/radio/aidl/android/hardware/radio/OptionalOsAppId.aidl b/radio/aidl/android/hardware/radio/OptionalOsAppId.aidl
new file mode 100644
index 0000000..4614601
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/OptionalOsAppId.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.OsAppId;
+
+/**
+ * This safe_union represents an optional OsAppId.
+ */
+@VintfStability
+union OptionalOsAppId {
+    boolean noinit;
+    OsAppId value;
+}
diff --git a/radio/aidl/android/hardware/radio/OptionalPdpProtocolType.aidl b/radio/aidl/android/hardware/radio/OptionalPdpProtocolType.aidl
new file mode 100644
index 0000000..7e51b83
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/OptionalPdpProtocolType.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.PdpProtocolType;
+
+/**
+ * This safe_union represents an optional PdpProtocolType.
+ */
+@VintfStability
+union OptionalPdpProtocolType {
+    boolean noinit;
+    PdpProtocolType value;
+}
diff --git a/radio/aidl/android/hardware/radio/OptionalSliceInfo.aidl b/radio/aidl/android/hardware/radio/OptionalSliceInfo.aidl
new file mode 100644
index 0000000..cfc309c
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/OptionalSliceInfo.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.SliceInfo;
+
+/**
+ * This safe_union represents an optional slice info.
+ */
+@VintfStability
+union OptionalSliceInfo {
+    boolean noinit;
+    SliceInfo value;
+}
diff --git a/radio/aidl/android/hardware/radio/OptionalSscMode.aidl b/radio/aidl/android/hardware/radio/OptionalSscMode.aidl
new file mode 100644
index 0000000..22933b9
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/OptionalSscMode.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.SscMode;
+
+/**
+ * This safe_union represents an optional SscMode.
+ */
+@VintfStability
+union OptionalSscMode {
+    boolean noinit;
+    SscMode value;
+}
diff --git a/radio/aidl/android/hardware/radio/OptionalTrafficDescriptor.aidl b/radio/aidl/android/hardware/radio/OptionalTrafficDescriptor.aidl
new file mode 100644
index 0000000..b524cb3
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/OptionalTrafficDescriptor.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.TrafficDescriptor;
+
+/**
+ * This safe_union represents an optional TrafficDescriptor.
+ */
+@VintfStability
+union OptionalTrafficDescriptor {
+    boolean noinit;
+    TrafficDescriptor value;
+}
diff --git a/radio/aidl/android/hardware/radio/OsAppId.aidl b/radio/aidl/android/hardware/radio/OsAppId.aidl
new file mode 100644
index 0000000..57dfc80
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/OsAppId.aidl
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * This struct represents the OsId + OsAppId as defined in TS 24.526 Section 5.2
+ */
+@VintfStability
+parcelable OsAppId {
+    /**
+     * Byte array representing OsId + OsAppId. The minimum length of the array is 18 and maximum
+     * length is 272 (16 bytes for OsId + 1 byte for OsAppId length + up to 255 bytes for OsAppId).
+     */
+    byte[] osAppId;
+}
diff --git a/radio/aidl/android/hardware/radio/P2Constant.aidl b/radio/aidl/android/hardware/radio/P2Constant.aidl
new file mode 100644
index 0000000..d40a446
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/P2Constant.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum P2Constant {
+    /**
+     * No P2 value is provided
+     */
+    NO_P2 = -1,
+}
diff --git a/radio/aidl/android/hardware/radio/PbReceivedStatus.aidl b/radio/aidl/android/hardware/radio/PbReceivedStatus.aidl
new file mode 100644
index 0000000..44ed4d9
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/PbReceivedStatus.aidl
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Enum representing the status of the received PB indication.
+ */
+@VintfStability
+@Backing(type="byte")
+enum PbReceivedStatus {
+    /**
+     * Indicates that retrieval is fine.
+     */
+    PB_RECEIVED_OK = 1,
+    /**
+     * Indicates that an error happened. In general, the process can't be restored soon.
+     */
+    PB_RECEIVED_ERROR = 2,
+    /**
+     * Indicates that the process is interrupted. In this case, the modem might need resources and
+     * interrupt the current process, or it is timed out to receive all indications, and client can
+     * retry soon.
+     */
+    PB_RECEIVED_ABORT = 3,
+    /**
+     * Indicates that the whole process is finished with a full chunk of phonebook data, meaning
+     * this is the last indication with the remaining data.
+     */
+    PB_RECEIVED_FINAL = 4,
+}
diff --git a/radio/aidl/android/hardware/radio/PcoDataInfo.aidl b/radio/aidl/android/hardware/radio/PcoDataInfo.aidl
new file mode 100644
index 0000000..7b600e6
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/PcoDataInfo.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+parcelable PcoDataInfo {
+    /**
+     * Context ID, uniquely identifies this call
+     */
+    int cid;
+    /**
+     * One of the PDP_type values in TS 27.007 section 10.1.1. For example, "IP", "IPV6", "IPV4V6"
+     */
+    String bearerProto;
+    /**
+     * The protocol ID for this box. Note that only IDs from FF00H - FFFFH are accepted.
+     * If more than one is included from the network, multiple calls must be made to send
+     * all of them.
+     */
+    int pcoId;
+    /**
+     * Carrier-defined content. It is binary, opaque and loosely defined in LTE Layer 3 spec 24.008
+     */
+    byte[] contents;
+}
diff --git a/radio/aidl/android/hardware/radio/PdpProtocolType.aidl b/radio/aidl/android/hardware/radio/PdpProtocolType.aidl
new file mode 100644
index 0000000..e74b1e3
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/PdpProtocolType.aidl
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Specifies the type of packet data protocol which is defined in TS 27.007 section 10.1.1.
+ */
+@VintfStability
+@Backing(type="int")
+enum PdpProtocolType {
+    /**
+     * Unknown protocol
+     */
+    UNKNOWN = -1,
+    /**
+     * Internet protocol
+     */
+    IP = 0,
+    /**
+     * Internet protocol, version 6
+     */
+    IPV6 = 1,
+    /**
+     * Virtual PDP type introduced to handle dual IP stack UE capability.
+     */
+    IPV4V6 = 2,
+    /**
+     * Point to point protocol
+     */
+    PPP = 3,
+    /**
+     * Transfer of Non-IP data to external packet data network
+     */
+    NON_IP = 4,
+    /**
+     * Transfer of Unstructured data to the Data Network via N6
+     */
+    UNSTRUCTURED = 5,
+}
diff --git a/radio/aidl/android/hardware/radio/PersoSubstate.aidl b/radio/aidl/android/hardware/radio/PersoSubstate.aidl
new file mode 100644
index 0000000..93b2af5
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/PersoSubstate.aidl
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Additional personalization categories in addition to those specified in 3GPP TS 22.022 and
+ * 3GPP2 C.S0068-0.
+ */
+@VintfStability
+@Backing(type="int")
+enum PersoSubstate {
+    /**
+     * Initial state
+     */
+    UNKNOWN,
+    /**
+     * In between each lock transition
+     */
+    IN_PROGRESS,
+    /**
+     * When either SIM or RUIM Perso is finished since each app must only have 1 active perso
+     * involved.
+     */
+    READY,
+    SIM_NETWORK,
+    SIM_NETWORK_SUBSET,
+    SIM_CORPORATE,
+    SIM_SERVICE_PROVIDER,
+    SIM_SIM,
+    /**
+     * The corresponding perso lock is blocked
+     */
+    SIM_NETWORK_PUK,
+    SIM_NETWORK_SUBSET_PUK,
+    SIM_CORPORATE_PUK,
+    SIM_SERVICE_PROVIDER_PUK,
+    SIM_SIM_PUK,
+    RUIM_NETWORK1,
+    RUIM_NETWORK2,
+    RUIM_HRPD,
+    RUIM_CORPORATE,
+    RUIM_SERVICE_PROVIDER,
+    RUIM_RUIM,
+    /**
+     * The corresponding perso lock is blocked
+     */
+    RUIM_NETWORK1_PUK,
+    RUIM_NETWORK2_PUK,
+    RUIM_HRPD_PUK,
+    RUIM_CORPORATE_PUK,
+    RUIM_SERVICE_PROVIDER_PUK,
+    RUIM_RUIM_PUK,
+    /**
+     * The device is personalized using the content of the Service Provider Name (SPN) in the SIM
+     * card.
+     */
+    SIM_SPN,
+    SIM_SPN_PUK,
+    /**
+     * Service Provider and Equivalent Home PLMN. The device is personalized using both the content
+     * of the GID1 (equivalent to service provider personalization) and the content of the
+     * Equivalent Home PLMN (EHPLMN) in the SIM card. If the GID1 in the SIM is absent, then just
+     * the content of the Equivalent Home PLMN is matched.
+     */
+    SIM_SP_EHPLMN,
+    SIM_SP_EHPLMN_PUK,
+    /**
+     * Device is personalized using the first digits of the ICCID of the SIM card.
+     */
+    SIM_ICCID,
+    SIM_ICCID_PUK,
+    /**
+     * Device is personalized using the content of the IMPI in the ISIM.
+     */
+    SIM_IMPI,
+    SIM_IMPI_PUK,
+    /**
+     * Network Subset and Service Provider. Device is personalized using both the content of GID1
+     * (equivalent to service provider personalization) and the first digits of the IMSI (equivalent
+     * to network subset personalization).
+     */
+    SIM_NS_SP,
+    SIM_NS_SP_PUK,
+}
diff --git a/radio/aidl/android/hardware/radio/PhoneRestrictedState.aidl b/radio/aidl/android/hardware/radio/PhoneRestrictedState.aidl
new file mode 100644
index 0000000..5f5f1b8
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/PhoneRestrictedState.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum PhoneRestrictedState {
+    /**
+     * No restriction at all including voice/SMS/USSD/SS/AV64 and packet data.
+     */
+    NONE = 0x00,
+    /**
+     * Block emergency call due to restriction. But allow all normal voice/SMS/USSD/SS/AV64.
+     */
+    CS_EMERGENCY = 0x01,
+    /**
+     * Block all normal voice/SMS/USSD/SS/AV64 due to restriction. Only Emergency call allowed.
+     */
+    CS_NORMAL = 0x02,
+    /**
+     * Block all voice/SMS/USSD/SS/AV64 including emergency call due to restriction.
+     */
+    CS_ALL = 0x04,
+    /**
+     * Block packet data access due to restriction.
+     */
+    PS_ALL = 0x10,
+}
diff --git a/radio/aidl/android/hardware/radio/PhonebookCapacity.aidl b/radio/aidl/android/hardware/radio/PhonebookCapacity.aidl
new file mode 100644
index 0000000..c141411
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/PhonebookCapacity.aidl
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+parcelable PhonebookCapacity {
+    /**
+     * Maximum number of ADN records possible in the SIM phonebook. Needs to be non-negative.
+     */
+    int maxAdnRecords;
+    /**
+     * Used ADN records in the SIM phonebook. Needs to be non-negative.
+     */
+    int usedAdnRecords;
+    /**
+     * Maximum email records possible in the SIM phonebook. Needs to be non-negative.
+     */
+    int maxEmailRecords;
+    /**
+     * Used email records in the SIM phonebook. Needs to be non-negative.
+     */
+    int usedEmailRecords;
+    /**
+     * Maximum additional number records possible in the SIM phonebook. Needs to be non-negative.
+     */
+    int maxAdditionalNumberRecords;
+    /**
+     * Used additional number records in the SIM phonebook. Needs to be non-negative.
+     */
+    int usedAdditionalNumberRecords;
+    /**
+     * Maximum name length possible in the SIM phonebook. Needs to be non-negative.
+     */
+    int maxNameLen;
+    /**
+     * Maximum number length possible in the SIM phonebook. Needs to be non-negative.
+     */
+    int maxNumberLen;
+    /**
+     * Maximum email length possible in the SIM phonebook. Needs to be non-negative.
+     */
+    int maxEmailLen;
+    /**
+     * Maximum additional number length possible in the SIM phonebook. Needs to be non-negative.
+     */
+    int maxAdditionalNumberLen;
+}
diff --git a/radio/aidl/android/hardware/radio/PhonebookRecordInfo.aidl b/radio/aidl/android/hardware/radio/PhonebookRecordInfo.aidl
new file mode 100644
index 0000000..eb0c880
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/PhonebookRecordInfo.aidl
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Phonebook-record-information specified by EF_ADN (Abbreviated dialing numbers) record of SIM
+ * as per 3GPP spec 31.102 v15 Section-4.4.2.3.
+ */
+@VintfStability
+parcelable PhonebookRecordInfo {
+    /**
+     * Record index. 0 is used to insert a record
+     */
+    int recordId;
+    /**
+     * Alpha identifier, empty string if no value
+     */
+    String name;
+    /**
+     * Dialling number, empty string if no value
+     */
+    String number;
+    /**
+     * Email addresses
+     */
+    String[] emails;
+    /**
+     * Additional numbers
+     */
+    String[] additionalNumbers;
+}
diff --git a/radio/aidl/android/hardware/radio/PhysicalChannelConfig.aidl b/radio/aidl/android/hardware/radio/PhysicalChannelConfig.aidl
new file mode 100644
index 0000000..05b31e5
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/PhysicalChannelConfig.aidl
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CellConnectionStatus;
+import android.hardware.radio.PhysicalChannelConfigBand;
+import android.hardware.radio.RadioTechnology;
+
+@VintfStability
+parcelable PhysicalChannelConfig {
+    /**
+     * Connection status for cell. Valid values are PRIMARY_SERVING and SECONDARY_SERVING
+     */
+    CellConnectionStatus status;
+    /**
+     * The radio technology for this physical channel
+     */
+    RadioTechnology rat;
+    /**
+     * Downlink Absolute Radio Frequency Channel Number
+     */
+    int downlinkChannelNumber;
+    /**
+     * Uplink Absolute Radio Frequency Channel Number
+     */
+    int uplinkChannelNumber;
+    /**
+     * Downlink cell bandwidth, in kHz
+     */
+    int cellBandwidthDownlinkKhz;
+    /**
+     * Uplink cell bandwidth, in kHz
+     */
+    int cellBandwidthUplinkKhz;
+    /**
+     * A list of data calls mapped to this physical channel. The context id must match the cid of
+     * SetupDataCallResult. An empty list means the physical channel has no data call mapped to it.
+     */
+    int[] contextIds;
+    /**
+     * The physical cell identifier for this cell.
+     * In UTRAN, this value is primary scrambling code. The range is [0, 511].
+     * Reference: 3GPP TS 25.213 section 5.2.2.
+     * In EUTRAN, this value is physical layer cell identity. The range is [0, 503].
+     * Reference: 3GPP TS 36.211 section 6.11.
+     * In NGRAN, this value is physical layer cell identity. The range is [0, 1007].
+     * Reference: 3GPP TS 38.211 section 7.4.2.1.
+     */
+    int physicalCellId;
+    /**
+     * The frequency band to scan.
+     */
+    PhysicalChannelConfigBand band;
+}
diff --git a/radio/aidl/android/hardware/radio/PhysicalChannelConfigBand.aidl b/radio/aidl/android/hardware/radio/PhysicalChannelConfigBand.aidl
new file mode 100644
index 0000000..953b1c4
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/PhysicalChannelConfigBand.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.EutranBands;
+import android.hardware.radio.GeranBands;
+import android.hardware.radio.NgranBands;
+import android.hardware.radio.UtranBands;
+
+@VintfStability
+union PhysicalChannelConfigBand {
+    boolean noinit;
+    /**
+     * Valid only if radioAccessNetwork = GERAN.
+     */
+    GeranBands geranBand;
+    /**
+     * Valid only if radioAccessNetwork = UTRAN.
+     */
+    UtranBands utranBand;
+    /**
+     * Valid only if radioAccessNetwork = EUTRAN.
+     */
+    EutranBands eutranBand;
+    /**
+     * Valid only if radioAccessNetwork = NGRAN.
+     */
+    NgranBands ngranBand;
+}
diff --git a/radio/aidl/android/hardware/radio/PinState.aidl b/radio/aidl/android/hardware/radio/PinState.aidl
new file mode 100644
index 0000000..cb42ff2
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/PinState.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum PinState {
+    UNKNOWN,
+    ENABLED_NOT_VERIFIED,
+    ENABLED_VERIFIED,
+    DISABLED,
+    ENABLED_BLOCKED,
+    ENABLED_PERM_BLOCKED,
+}
diff --git a/radio/aidl/android/hardware/radio/PortRange.aidl b/radio/aidl/android/hardware/radio/PortRange.aidl
new file mode 100644
index 0000000..932d54a
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/PortRange.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Defines range of ports. start and end are the first and last port numbers (inclusive) in the
+ * range. Both start and end are in QosPortRange.MIN to QosPortRange.MAX range. A single port shall
+ * be represented by the same start and end value.
+ */
+@VintfStability
+parcelable PortRange {
+    int start;
+    int end;
+}
diff --git a/radio/aidl/android/hardware/radio/PreferredNetworkType.aidl b/radio/aidl/android/hardware/radio/PreferredNetworkType.aidl
new file mode 100644
index 0000000..7ca38c6
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/PreferredNetworkType.aidl
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum PreferredNetworkType {
+    /**
+     * GSM/WCDMA (WCDMA preferred)
+     */
+    GSM_WCDMA,
+    /**
+     * GSM only
+     */
+    GSM_ONLY,
+    /**
+     * WCDMA
+     */
+    WCDMA,
+    /**
+     * GSM/WCDMA (auto mode, according to PRL)
+     */
+    GSM_WCDMA_AUTO,
+    /**
+     * CDMA and EvDo (auto mode, according to PRL)
+     */
+    CDMA_EVDO_AUTO,
+    /**
+     * CDMA only
+     */
+    CDMA_ONLY,
+    /**
+     * EvDo only
+     */
+    EVDO_ONLY,
+    /**
+     * GSM/WCDMA, CDMA, and EvDo (auto mode, according to PRL)
+     */
+    GSM_WCDMA_CDMA_EVDO_AUTO,
+    /**
+     * LTE, CDMA and EvDo
+     */
+    LTE_CDMA_EVDO,
+    /**
+     * LTE, GSM/WCDMA
+     */
+    LTE_GSM_WCDMA,
+    /**
+     * LTE, CDMA, EvDo, GSM/WCDMA
+     */
+    LTE_CMDA_EVDO_GSM_WCDMA,
+    /**
+     * LTE only
+     */
+    LTE_ONLY,
+    /**
+     * LTE/WCDMA only
+     */
+    LTE_WCDMA,
+    /**
+     * TD-SCDMA only
+     */
+    TD_SCDMA_ONLY,
+    /**
+     * TD-SCDMA and WCDMA
+     */
+    TD_SCDMA_WCDMA,
+    /**
+     * TD-SCDMA and LTE
+     */
+    TD_SCDMA_LTE,
+    /**
+     * TD-SCDMA and GSM
+     */
+    TD_SCDMA_GSM,
+    /**
+     * TD-SCDMA,GSM and LTE
+     */
+    TD_SCDMA_GSM_LTE,
+    /**
+     * TD-SCDMA, GSM/WCDMA
+     */
+    TD_SCDMA_GSM_WCDMA,
+    /**
+     * TD-SCDMA, WCDMA and LTE
+     */
+    TD_SCDMA_WCDMA_LTE,
+    /**
+     * TD-SCDMA, GSM/WCDMA and LTE
+     */
+    TD_SCDMA_GSM_WCDMA_LTE,
+    /**
+     * TD-SCDMA, GSM/WCDMA, CDMA and EvDo
+     */
+    TD_SCDMA_GSM_WCDMA_CDMA_EVDO_AUTO,
+    /**
+     * TD-SCDMA, LTE, CDMA, EvDo GSM/WCDMA
+     */
+    TD_SCDMA_LTE_CDMA_EVDO_GSM_WCDMA,
+}
diff --git a/radio/aidl/android/hardware/radio/PrlIndicator.aidl b/radio/aidl/android/hardware/radio/PrlIndicator.aidl
new file mode 100644
index 0000000..acd870e
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/PrlIndicator.aidl
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum PrlIndicator {
+    NOT_REGISTERED = -1,
+    NOT_IN_PRL = 0,
+    IN_PRL = 1,
+}
diff --git a/radio/aidl/android/hardware/radio/PublicKeyType.aidl b/radio/aidl/android/hardware/radio/PublicKeyType.aidl
new file mode 100644
index 0000000..c1babc4
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/PublicKeyType.aidl
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Public key type from carrier certificate.
+ */
+@VintfStability
+@Backing(type="byte")
+enum PublicKeyType {
+    /**
+     * Key type to be used for ePDG
+     */
+    EPDG = 1,
+    /**
+     * Key type to be used for WLAN
+     */
+    WLAN = 2,
+}
diff --git a/radio/aidl/android/hardware/radio/Qos.aidl b/radio/aidl/android/hardware/radio/Qos.aidl
new file mode 100644
index 0000000..0f84ad1
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/Qos.aidl
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.EpsQos;
+import android.hardware.radio.NrQos;
+
+/**
+ * EPS or NR QOS parameters
+ */
+@VintfStability
+union Qos {
+    boolean noinit;
+    EpsQos eps;
+    NrQos nr;
+}
diff --git a/radio/aidl/android/hardware/radio/QosBandwidth.aidl b/radio/aidl/android/hardware/radio/QosBandwidth.aidl
new file mode 100644
index 0000000..344b796
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/QosBandwidth.aidl
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+parcelable QosBandwidth {
+    /**
+     * Maximum bit rate possible on the bearer
+     */
+    int maxBitrateKbps;
+    /**
+     * Minimum bit rate that is guaranteed to be provided by the network
+     */
+    int guaranteedBitrateKbps;
+}
diff --git a/radio/aidl/android/hardware/radio/QosFilter.aidl b/radio/aidl/android/hardware/radio/QosFilter.aidl
new file mode 100644
index 0000000..717944a
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/QosFilter.aidl
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.MaybePort;
+import android.hardware.radio.QosFilterDirection;
+import android.hardware.radio.QosFilterIpsecSpi;
+import android.hardware.radio.QosFilterIpv6FlowLabel;
+import android.hardware.radio.QosFilterTypeOfService;
+import android.hardware.radio.QosProtocol;
+
+/**
+ * See 3gpp 24.008 10.5.6.12 and 3gpp 24.501 9.11.4.13
+ */
+@VintfStability
+parcelable QosFilter {
+    /**
+     * Local and remote IP addresses, typically one IPv4 or one IPv6 or one of each. Addresses could
+     * be with optional "/" prefix length, e.g.,"192.0.1.3" or "192.0.1.11/16 2001:db8::1/64".
+     * If the prefix length is absent the addresses are assumed to be point to point with IPv4
+     * having a prefix length of 32 and IPv6 128.
+     */
+    String[] localAddresses;
+    String[] remoteAddresses;
+    /**
+     * Local and remote port/ranges
+     */
+    MaybePort localPort;
+    MaybePort remotePort;
+    /**
+     * QoS protocol
+     */
+    QosProtocol protocol;
+    /**
+     * Type of service value or mask as defined in RFC 1349
+     */
+    QosFilterTypeOfService tos;
+    /**
+     * IPv6 flow label as defined in RFC 6437
+     */
+    QosFilterIpv6FlowLabel flowLabel;
+    /**
+     * IPSec security parameter index
+     */
+    QosFilterIpsecSpi spi;
+    /**
+     * Filter direction
+     */
+    QosFilterDirection direction;
+    /**
+     * Specifies the order in which the filter needs to be matched. A lower numerical (positive)
+     * value has a higher precedence. Set -1 when unspecified.
+     */
+    int precedence;
+}
diff --git a/radio/aidl/android/hardware/radio/QosFilterDirection.aidl b/radio/aidl/android/hardware/radio/QosFilterDirection.aidl
new file mode 100644
index 0000000..7693c8c
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/QosFilterDirection.aidl
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="byte")
+enum QosFilterDirection {
+    DOWNLINK,
+    UPLINK,
+    BIDIRECTIONAL,
+}
diff --git a/radio/aidl/android/hardware/radio/QosFilterIpsecSpi.aidl b/radio/aidl/android/hardware/radio/QosFilterIpsecSpi.aidl
new file mode 100644
index 0000000..e213402
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/QosFilterIpsecSpi.aidl
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+union QosFilterIpsecSpi {
+    boolean noinit;
+    int value;
+}
diff --git a/radio/aidl/android/hardware/radio/QosFilterIpv6FlowLabel.aidl b/radio/aidl/android/hardware/radio/QosFilterIpv6FlowLabel.aidl
new file mode 100644
index 0000000..d5c5a6c
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/QosFilterIpv6FlowLabel.aidl
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+union QosFilterIpv6FlowLabel {
+    boolean noinit;
+    int value;
+}
diff --git a/radio/aidl/android/hardware/radio/QosFilterTypeOfService.aidl b/radio/aidl/android/hardware/radio/QosFilterTypeOfService.aidl
new file mode 100644
index 0000000..b91323c
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/QosFilterTypeOfService.aidl
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+union QosFilterTypeOfService {
+    boolean noinit;
+    byte value;
+}
diff --git a/radio/aidl/android/hardware/radio/QosFlowIdRange.aidl b/radio/aidl/android/hardware/radio/QosFlowIdRange.aidl
new file mode 100644
index 0000000..df2398b
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/QosFlowIdRange.aidl
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Allowed values for 5G QOS flow identifier
+ */
+@VintfStability
+@Backing(type="byte")
+enum QosFlowIdRange {
+    MIN = 1,
+    MAX = 63,
+}
diff --git a/radio/aidl/android/hardware/radio/QosPortRange.aidl b/radio/aidl/android/hardware/radio/QosPortRange.aidl
new file mode 100644
index 0000000..f3df19f
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/QosPortRange.aidl
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Allowed port numbers
+ */
+@VintfStability
+@Backing(type="int")
+enum QosPortRange {
+    MIN = 20,
+    MAX = 65535,
+}
diff --git a/radio/aidl/android/hardware/radio/QosProtocol.aidl b/radio/aidl/android/hardware/radio/QosProtocol.aidl
new file mode 100644
index 0000000..05cd670
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/QosProtocol.aidl
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Next header protocol numbers defined by IANA, RFC 5237
+ */
+@VintfStability
+@Backing(type="byte")
+enum QosProtocol {
+    /**
+     * No protocol specified
+     */
+    UNSPECIFIED = -1,
+    /**
+     * Transmission Control Protocol
+     */
+    TCP = 6,
+    /**
+     * User Datagram Protocol
+     */
+    UDP = 17,
+    /**
+     * Encapsulating Security Payload Protocol
+     */
+    ESP = 50,
+    /**
+     * Authentication Header
+     */
+    AH = 51,
+}
diff --git a/radio/aidl/android/hardware/radio/QosSession.aidl b/radio/aidl/android/hardware/radio/QosSession.aidl
new file mode 100644
index 0000000..2620ac5
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/QosSession.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.Qos;
+import android.hardware.radio.QosFilter;
+
+/**
+ * QOS session associated with a dedicated bearer
+ */
+@VintfStability
+parcelable QosSession {
+    /**
+     * Unique ID of the QoS session within the data call
+     */
+    int qosSessionId;
+    /**
+     * QOS attributes
+     */
+    Qos qos;
+    /**
+     * List of QOS filters associated with this session
+     */
+    QosFilter[] qosFilters;
+}
diff --git a/radio/aidl/android/hardware/radio/RadioAccessFamily.aidl b/radio/aidl/android/hardware/radio/RadioAccessFamily.aidl
new file mode 100644
index 0000000..719837d
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/RadioAccessFamily.aidl
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.RadioTechnology;
+
+@VintfStability
+@Backing(type="int")
+enum RadioAccessFamily {
+    UNKNOWN = 1 << RadioTechnology.UNKNOWN,
+    GPRS = 1 << RadioTechnology.GPRS,
+    EDGE = 1 << RadioTechnology.EDGE,
+    UMTS = 1 << RadioTechnology.UMTS,
+    IS95A = 1 << RadioTechnology.IS95A,
+    IS95B = 1 << RadioTechnology.IS95B,
+    ONE_X_RTT = 1 << RadioTechnology.ONE_X_RTT,
+    EVDO_0 = 1 << RadioTechnology.EVDO_0,
+    EVDO_A = 1 << RadioTechnology.EVDO_A,
+    HSDPA = 1 << RadioTechnology.HSDPA,
+    HSUPA = 1 << RadioTechnology.HSUPA,
+    HSPA = 1 << RadioTechnology.HSPA,
+    EVDO_B = 1 << RadioTechnology.EVDO_B,
+    EHRPD = 1 << RadioTechnology.EHRPD,
+    LTE = 1 << RadioTechnology.LTE,
+    HSPAP = 1 << RadioTechnology.HSPAP,
+    GSM = 1 << RadioTechnology.GSM,
+    TD_SCDMA = 1 << RadioTechnology.TD_SCDMA,
+    LTE_CA = 1 << RadioTechnology.LTE_CA,
+    /**
+     * 5G NR. This is only use in 5G Standalone mode.
+     */
+    NR = 1 << RadioTechnology.NR,
+}
diff --git a/radio/aidl/android/hardware/radio/RadioAccessNetworks.aidl b/radio/aidl/android/hardware/radio/RadioAccessNetworks.aidl
new file mode 100644
index 0000000..3757233
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/RadioAccessNetworks.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum RadioAccessNetworks {
+    UNKNOWN,
+    /**
+     * GSM EDGE Radio Access Network
+     */
+    GERAN,
+    /**
+     * Universal Terrestrial Radio Access Network
+     */
+    UTRAN,
+    /**
+     * Evolved Universal Terrestrial Radio Access Network
+     */
+    EUTRAN,
+    /**
+     * Next Generation Radio Access Network
+     */
+    NGRAN,
+    /**
+     * CDMA 2000 Network
+     */
+    CDMA2000,
+}
diff --git a/radio/aidl/android/hardware/radio/RadioAccessSpecifier.aidl b/radio/aidl/android/hardware/radio/RadioAccessSpecifier.aidl
new file mode 100644
index 0000000..889124a
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/RadioAccessSpecifier.aidl
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.RadioAccessNetworks;
+import android.hardware.radio.RadioAccessSpecifierBands;
+
+@VintfStability
+parcelable RadioAccessSpecifier {
+    /**
+     * The type of network to scan.
+     */
+    RadioAccessNetworks radioAccessNetwork;
+    /**
+     * The frequency bands to scan. Maximum length of the vector is 8.
+     */
+    RadioAccessSpecifierBands bands;
+    /**
+     * The radio channels to scan as defined in 3GPP TS 25.101 and 36.101.
+     * Maximum length of the vector is 32.
+     */
+    int[] channels;
+}
diff --git a/radio/aidl/android/hardware/radio/RadioAccessSpecifierBands.aidl b/radio/aidl/android/hardware/radio/RadioAccessSpecifierBands.aidl
new file mode 100644
index 0000000..dde4626
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/RadioAccessSpecifierBands.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.EutranBands;
+import android.hardware.radio.GeranBands;
+import android.hardware.radio.NgranBands;
+import android.hardware.radio.UtranBands;
+
+@VintfStability
+union RadioAccessSpecifierBands {
+    boolean noinit;
+    /**
+     * Valid only if radioAccessNetwork = GERAN.
+     */
+    GeranBands[] geranBands;
+    /**
+     * Valid only if radioAccessNetwork = UTRAN.
+     */
+    UtranBands[] utranBands;
+    /**
+     * Valid only if radioAccessNetwork = EUTRAN.
+     */
+    EutranBands[] eutranBands;
+    /**
+     * Valid only if radioAccessNetwork = NGRAN.
+     */
+    NgranBands[] ngranBands;
+}
diff --git a/radio/aidl/android/hardware/radio/RadioBandMode.aidl b/radio/aidl/android/hardware/radio/RadioBandMode.aidl
new file mode 100644
index 0000000..e6064c4
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/RadioBandMode.aidl
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum RadioBandMode {
+    /**
+     * "Unspecified" (selected by baseband automatically)
+     */
+    BAND_MODE_UNSPECIFIED,
+    /**
+     * "EURO band" (GSM-900 / DCS-1800 / WCDMA-IMT-2000)
+     */
+    BAND_MODE_EURO,
+    /**
+     * "US band" (GSM-850 / PCS-1900 / WCDMA-850 / WCDMA-PCS-1900)
+     */
+    BAND_MODE_USA,
+    /**
+     * "JPN band" (WCDMA-800 / WCDMA-IMT-2000)
+     */
+    BAND_MODE_JPN,
+    /**
+     * "AUS band" (GSM-900 / DCS-1800 / WCDMA-850 / WCDMA-IMT-2000)
+     */
+    BAND_MODE_AUS,
+    /**
+     * "AUS band 2" (GSM-900 / DCS-1800 / WCDMA-850)
+     */
+    BAND_MODE_AUS_2,
+    /**
+     * "Cellular" (800-MHz Band)
+     */
+    BAND_MODE_CELL_800,
+    /**
+     * "PCS" (1900-MHz Band)
+     */
+    BAND_MODE_PCS,
+    /**
+     * "Band Class 3" (JTACS Band)
+     */
+    BAND_MODE_JTACS,
+    /**
+     * "Band Class 4" (Korean PCS Band)
+     */
+    BAND_MODE_KOREA_PCS,
+    /**
+     * "Band Class 5" (450-MHz Band)
+     */
+    BAND_MODE_5_450M,
+    /**
+     * "Band Class 6" (2-GMHz IMT2000 Band)
+     */
+    BAND_MODE_IMT2000,
+    /**
+     * "Band Class 7" (Upper 700-MHz Band)
+     */
+    BAND_MODE_7_700M_2,
+    /**
+     * "Band Class 8" (1800-MHz Band)
+     */
+    BAND_MODE_8_1800M,
+    /**
+     * "Band Class 9" (900-MHz Band)
+     */
+    BAND_MODE_9_900M,
+    /**
+     * "Band Class 10" (Secondary 800-MHz Band)
+     */
+    BAND_MODE_10_800M_2,
+    /**
+     * "Band Class 11" (400-MHz European PAMR Band)
+     */
+    BAND_MODE_EURO_PAMR_400M,
+    /**
+     * "Band Class 15" (AWS Band)
+     */
+    BAND_MODE_AWS,
+    /**
+     * "Band Class 16" (US 2.5-GHz Band)
+     */
+    BAND_MODE_USA_2500M,
+}
diff --git a/radio/aidl/android/hardware/radio/RadioCapability.aidl b/radio/aidl/android/hardware/radio/RadioCapability.aidl
new file mode 100644
index 0000000..d911b6f
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/RadioCapability.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.RadioAccessFamily;
+import android.hardware.radio.RadioCapabilityPhase;
+import android.hardware.radio.RadioCapabilityStatus;
+
+@VintfStability
+parcelable RadioCapability {
+    /**
+     * Unique session value defined by framework returned in all "responses/unslo".
+     */
+    int session;
+    RadioCapabilityPhase phase;
+    /**
+     * 32-bit bitmap of RadioAccessFamily.
+     */
+    RadioAccessFamily raf;
+    /**
+     * A UUID typically "com.xxxx.lmX" where X is the logical modem.
+     * RadioConst:MAX_UUID_LENGTH is the max length.
+     */
+    String logicalModemUuid;
+    RadioCapabilityStatus status;
+}
diff --git a/radio/aidl/android/hardware/radio/RadioCapabilityPhase.aidl b/radio/aidl/android/hardware/radio/RadioCapabilityPhase.aidl
new file mode 100644
index 0000000..a586300
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/RadioCapabilityPhase.aidl
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum RadioCapabilityPhase {
+    /**
+     * Logical Modem's (LM) initial value and value after FINISH completes
+     */
+    CONFIGURED,
+    /**
+     * START is sent before APPLY and indicates that an APPLY is forthcoming with these same
+     * parameters.
+     */
+    START,
+    /**
+     * APPLY is sent after all LM's receive START and returned RadioCapability.status = 0.
+     * If any START's fail, hal implementation must not send APPLY.
+     */
+    APPLY,
+    /**
+     * UNSOL_RSP is sent with unsolicited radioCapability()
+     */
+    UNSOL_RSP,
+    /**
+     * FINISH is sent after all commands have completed. If an error occurs in any previous command,
+     * the RadioAccessFamily and logicalModemUuid fields must be the prior configuration thus
+     * restoring the configuration to the previous value. An error returned by FINISH will generally
+     * be ignored or may cause that LM to be removed from service.
+     */
+    FINISH,
+}
diff --git a/radio/aidl/android/hardware/radio/RadioCapabilityStatus.aidl b/radio/aidl/android/hardware/radio/RadioCapabilityStatus.aidl
new file mode 100644
index 0000000..5b90f38
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/RadioCapabilityStatus.aidl
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum RadioCapabilityStatus {
+    /**
+     * This parameter has no meaning with RadioCapabilityPhase:START, RadioCapabilityPhase:APPLY
+     */
+    NONE,
+    /**
+     * Tell modem the action transaction of set radio capability was successful with
+     * RadioCapabilityPhase:FINISH
+     */
+    SUCCESS,
+    /**
+     * Tell modem the action transaction of set radio capability failed with
+     * RadioCapabilityPhase:FINISH
+     */
+    FAIL,
+}
diff --git a/radio/aidl/android/hardware/radio/RadioCdmaSmsConst.aidl b/radio/aidl/android/hardware/radio/RadioCdmaSmsConst.aidl
new file mode 100644
index 0000000..f480077
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/RadioCdmaSmsConst.aidl
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum RadioCdmaSmsConst {
+    ADDRESS_MAX = 36,
+    SUBADDRESS_MAX = 36,
+    BEARER_DATA_MAX = 255,
+    UDH_MAX_SND_SIZE = 128,
+    UDH_EO_DATA_SEGMENT_MAX = 131,
+    MAX_UD_HEADERS = 7,
+    USER_DATA_MAX = 229,
+    UDH_LARGE_PIC_SIZE = 128,
+    UDH_SMALL_PIC_SIZE = 32,
+    UDH_VAR_PIC_SIZE = 134,
+    UDH_ANIM_NUM_BITMAPS = 4,
+    UDH_LARGE_BITMAP_SIZE = 32,
+    UDH_SMALL_BITMAP_SIZE = 8,
+    UDH_OTHER_SIZE = 226,
+    IP_ADDRESS_SIZE = 4,
+}
diff --git a/radio/aidl/android/hardware/radio/RadioConst.aidl b/radio/aidl/android/hardware/radio/RadioConst.aidl
new file mode 100644
index 0000000..815b3b9
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/RadioConst.aidl
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum RadioConst {
+    CDMA_ALPHA_INFO_BUFFER_LENGTH = 64,
+    CDMA_NUMBER_INFO_BUFFER_LENGTH = 81,
+    MAX_RILDS = 3,
+    MAX_SOCKET_NAME_LENGTH = 6,
+    MAX_CLIENT_ID_LENGTH = 2,
+    MAX_DEBUG_SOCKET_NAME_LENGTH = 12,
+    MAX_QEMU_PIPE_NAME_LENGTH = 11,
+    MAX_UUID_LENGTH = 64,
+    CARD_MAX_APPS = 8,
+    CDMA_MAX_NUMBER_OF_INFO_RECS = 10,
+    SS_INFO_MAX = 4,
+    NUM_SERVICE_CLASSES = 7,
+    NUM_TX_POWER_LEVELS = 5,
+    RADIO_ACCESS_SPECIFIER_MAX_SIZE = 8,
+}
diff --git a/radio/aidl/android/hardware/radio/RadioError.aidl b/radio/aidl/android/hardware/radio/RadioError.aidl
new file mode 100644
index 0000000..a708d2b
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/RadioError.aidl
@@ -0,0 +1,299 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum RadioError {
+    /**
+     * Success
+     */
+    NONE = 0,
+    /**
+     * If radio did not start or is resetting
+     */
+    RADIO_NOT_AVAILABLE = 1,
+    GENERIC_FAILURE = 2,
+    /**
+     * For PIN/PIN2 methods only
+     */
+    PASSWORD_INCORRECT = 3,
+    /**
+     * Operation requires SIM PIN2 to be entered
+     */
+    SIM_PIN2 = 4,
+    /**
+     * Operation requires SIM PUK2 to be entered
+     */
+    SIM_PUK2 = 5,
+    REQUEST_NOT_SUPPORTED = 6,
+    CANCELLED = 7,
+    /**
+     * Data ops are not allowed during voice call on a Class C GPRS device
+     */
+    OP_NOT_ALLOWED_DURING_VOICE_CALL = 8,
+    /**
+     * Data ops are not allowed before device registers in network
+     */
+    OP_NOT_ALLOWED_BEFORE_REG_TO_NW = 9,
+    /**
+     * Fail to send SMS and need to retry
+     */
+    SMS_SEND_FAIL_RETRY = 10,
+    /**
+     * Fail to set the location where CDMA subscription shall be retrieved because of SIM or
+     * RUIM card absent
+     */
+    SIM_ABSENT = 11,
+    /**
+     * Fail to find CDMA subscription from specified location
+     */
+    SUBSCRIPTION_NOT_AVAILABLE = 12,
+    /**
+     * HW does not support preferred network type
+     */
+    MODE_NOT_SUPPORTED = 13,
+    /**
+     * Command failed becausee recipient is not on FDN list
+     */
+    FDN_CHECK_FAILURE = 14,
+    /**
+     * Network selection failed due to illegal SIM or ME
+     */
+    ILLEGAL_SIM_OR_ME = 15,
+    /**
+     * No logical channel available
+     */
+    MISSING_RESOURCE = 16,
+    /**
+     * Application not found on SIM
+     */
+    NO_SUCH_ELEMENT = 17,
+    /**
+     * DIAL request modified to USSD
+     */
+    DIAL_MODIFIED_TO_USSD = 18,
+    /**
+     * DIAL request modified to SS
+     */
+    DIAL_MODIFIED_TO_SS = 19,
+    /**
+     * DIAL request modified to DIAL with different data
+     */
+    DIAL_MODIFIED_TO_DIAL = 20,
+    /**
+     * USSD request modified to DIAL
+     */
+    USSD_MODIFIED_TO_DIAL = 21,
+    /**
+     * USSD request modified to SS
+     */
+    USSD_MODIFIED_TO_SS = 22,
+    /**
+     * USSD request modified to different USSD request
+     */
+    USSD_MODIFIED_TO_USSD = 23,
+    /**
+     * SS request modified to DIAL
+     */
+    SS_MODIFIED_TO_DIAL = 24,
+    /**
+     * SS request modified to USSD
+     */
+    SS_MODIFIED_TO_USSD = 25,
+    /**
+     * Subscription not supported by RIL
+     */
+    SUBSCRIPTION_NOT_SUPPORTED = 26,
+    /**
+     * SS request modified to different SS request
+     */
+    SS_MODIFIED_TO_SS = 27,
+    /**
+     * LCE service not supported(36 in RILConstants.java)
+     */
+    LCE_NOT_SUPPORTED = 36,
+    /**
+     * Not sufficieent memory to process the request
+     */
+    NO_MEMORY = 37,
+    /**
+     * Modem hit unexpected error scenario while handling this request
+     */
+    INTERNAL_ERR = 38,
+    /**
+     * Hit platform or system error
+     */
+    SYSTEM_ERR = 39,
+    /**
+     * Vendor RIL got unexpected or incorrect response from modem for this request
+     */
+    MODEM_ERR = 40,
+    /**
+     * Unexpected request for the current state
+     */
+    INVALID_STATE = 41,
+    /**
+     * Not sufficient resource to process the request
+     */
+    NO_RESOURCES = 42,
+    /**
+     * Received error from SIM card
+     */
+    SIM_ERR = 43,
+    /**
+     * Received invalid arguments in request
+     */
+    INVALID_ARGUMENTS = 44,
+    /**
+     * Cannot process the request in current SIM state
+     */
+    INVALID_SIM_STATE = 45,
+    /**
+     * Cannot process the request in current modem state
+     */
+    INVALID_MODEM_STATE = 46,
+    /**
+     * Received invalid call ID in request
+     */
+    INVALID_CALL_ID = 47,
+    /**
+     * ACK received when there is no SMS to ack
+     */
+    NO_SMS_TO_ACK = 48,
+    /**
+     * Received error from network
+     */
+    NETWORK_ERR = 49,
+    /**
+     * Operation denied due to overly-frequent requests
+     */
+    REQUEST_RATE_LIMITED = 50,
+    /**
+     * SIM is busy
+     */
+    SIM_BUSY = 51,
+    /**
+     * The target EF is full
+     */
+    SIM_FULL = 52,
+    /**
+     * Request is rejected by network
+     */
+    NETWORK_REJECT = 53,
+    /**
+     * Not allowed the request not
+     */
+    OPERATION_NOT_ALLOWED = 54,
+    /**
+     * The request record is empty
+     */
+    EMPTY_RECORD = 55,
+    /**
+     * Invalid SMS format
+     */
+    INVALID_SMS_FORMAT = 56,
+    /**
+     * Message not encoded properly
+     */
+    ENCODING_ERR = 57,
+    /**
+     * SMSC addrss specified is invalid
+     */
+    INVALID_SMSC_ADDRESS = 58,
+    /**
+     * No such entry present to perform the request
+     */
+    NO_SUCH_ENTRY = 59,
+    /**
+     * Network is not ready to perform the request
+     */
+    NETWORK_NOT_READY = 60,
+    /**
+     * Device does not have this value provisioned
+     */
+    NOT_PROVISIONED = 61,
+    /**
+     * Device does not have subscription
+     */
+    NO_SUBSCRIPTION = 62,
+    /**
+     * Network cannot be found
+     */
+    NO_NETWORK_FOUND = 63,
+    /**
+     * Operation cannot be performed because the device is currently in use
+     */
+    DEVICE_IN_USE = 64,
+    /**
+     * Operation aborted
+     */
+    ABORTED = 65,
+    /**
+     * Response from vendor had invalid data
+     */
+    INVALID_RESPONSE = 66,
+    OEM_ERROR_1 = 501,
+    OEM_ERROR_2 = 502,
+    OEM_ERROR_3 = 503,
+    OEM_ERROR_4 = 504,
+    OEM_ERROR_5 = 505,
+    OEM_ERROR_6 = 506,
+    OEM_ERROR_7 = 507,
+    OEM_ERROR_8 = 508,
+    OEM_ERROR_9 = 509,
+    OEM_ERROR_10 = 510,
+    OEM_ERROR_11 = 511,
+    OEM_ERROR_12 = 512,
+    OEM_ERROR_13 = 513,
+    OEM_ERROR_14 = 514,
+    OEM_ERROR_15 = 515,
+    OEM_ERROR_16 = 516,
+    OEM_ERROR_17 = 517,
+    OEM_ERROR_18 = 518,
+    OEM_ERROR_19 = 519,
+    OEM_ERROR_20 = 520,
+    OEM_ERROR_21 = 521,
+    OEM_ERROR_22 = 522,
+    OEM_ERROR_23 = 523,
+    OEM_ERROR_24 = 524,
+    OEM_ERROR_25 = 525,
+    /**
+     * 1X voice and SMS are not allowed simulteneously.
+     */
+    SIMULTANEOUS_SMS_AND_CALL_NOT_ALLOWED = 67,
+    /**
+     * Access is barred.
+     */
+    ACCESS_BARRED = 68,
+    /**
+     * SMS is blocked due to call control, e.g., resource unavailable
+     * in the SMR entity.
+     */
+    BLOCKED_DUE_TO_CALL = 69,
+    /**
+     * Returned from setRadioPowerResponse when detecting RF HW issues. Some RF Front-End (RFFE)
+     * components like antenna are considered critical for modem to provide telephony service.
+     * This RadioError is used when modem detect such RFFE problem.
+     */
+    RF_HARDWARE_ISSUE = 70,
+    /**
+     * Returned from setRadioPowerResponse when detecting no RF calibration issue.
+     * Unlike RF_HARDWARE_ISSUE, this is a SW problem and no HW repair is needed.
+     */
+    NO_RF_CALIBRATION_INFO = 71,
+}
diff --git a/radio/aidl/android/hardware/radio/RadioFrequencyInfo.aidl b/radio/aidl/android/hardware/radio/RadioFrequencyInfo.aidl
new file mode 100644
index 0000000..e5aa9fb
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/RadioFrequencyInfo.aidl
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.FrequencyRange;
+
+@VintfStability
+union RadioFrequencyInfo {
+    boolean noinit;
+    /**
+     * A rough frequency range.
+     */
+    FrequencyRange range;
+    /**
+     * The Absolute Radio Frequency Channel Number.
+     */
+    int channelNumber;
+}
diff --git a/radio/aidl/android/hardware/radio/RadioIndicationType.aidl b/radio/aidl/android/hardware/radio/RadioIndicationType.aidl
new file mode 100644
index 0000000..aa5215f
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/RadioIndicationType.aidl
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum RadioIndicationType {
+    UNSOLICITED,
+    UNSOLICITED_ACK_EXP,
+}
diff --git a/radio/aidl/android/hardware/radio/RadioResponseInfo.aidl b/radio/aidl/android/hardware/radio/RadioResponseInfo.aidl
new file mode 100644
index 0000000..d81c49c
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/RadioResponseInfo.aidl
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.RadioError;
+import android.hardware.radio.RadioResponseType;
+
+@VintfStability
+parcelable RadioResponseInfo {
+    /**
+     * Response type
+     */
+    RadioResponseType type;
+    /**
+     * Serial number of the request
+     */
+    int serial;
+    /**
+     * Response error
+     */
+    RadioError error;
+}
diff --git a/radio/aidl/android/hardware/radio/RadioResponseInfoModem.aidl b/radio/aidl/android/hardware/radio/RadioResponseInfoModem.aidl
new file mode 100644
index 0000000..8c7b94c
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/RadioResponseInfoModem.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.RadioError;
+import android.hardware.radio.RadioResponseType;
+
+@VintfStability
+parcelable RadioResponseInfoModem {
+    /**
+     * Response type
+     */
+    RadioResponseType type;
+    /**
+     * Serial number of the request
+     */
+    int serial;
+    /**
+     * Response error
+     */
+    RadioError error;
+    /**
+     * Whether the modem is enabled or not
+     */
+    boolean isEnabled;
+}
diff --git a/radio/aidl/android/hardware/radio/RadioResponseType.aidl b/radio/aidl/android/hardware/radio/RadioResponseType.aidl
new file mode 100644
index 0000000..882c759
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/RadioResponseType.aidl
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum RadioResponseType {
+    SOLICITED,
+    SOLICITED_ACK,
+    SOLICITED_ACK_EXP,
+}
diff --git a/radio/aidl/android/hardware/radio/RadioState.aidl b/radio/aidl/android/hardware/radio/RadioState.aidl
new file mode 100644
index 0000000..1915870
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/RadioState.aidl
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum RadioState {
+    /**
+     * Radio explicitly powered off (eg CFUN=0)
+     */
+    OFF = 0,
+    /**
+     * Radio unavailable (eg, resetting or not booted)
+     */
+    UNAVAILABLE = 1,
+    /**
+     * Radio is on
+     */
+    ON = 10,
+}
diff --git a/radio/aidl/android/hardware/radio/RadioTechnology.aidl b/radio/aidl/android/hardware/radio/RadioTechnology.aidl
new file mode 100644
index 0000000..d439866
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/RadioTechnology.aidl
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum RadioTechnology {
+    UNKNOWN,
+    GPRS,
+    EDGE,
+    UMTS,
+    IS95A,
+    IS95B,
+    ONE_X_RTT,
+    EVDO_0,
+    EVDO_A,
+    HSDPA,
+    HSUPA,
+    HSPA,
+    EVDO_B,
+    EHRPD,
+    LTE,
+    /**
+     * HSPA+
+     */
+    HSPAP,
+    /**
+     * Only supports voice
+     */
+    GSM,
+    TD_SCDMA,
+    IWLAN,
+    LTE_CA,
+    /**
+     * 5G NR. This is only used in 5G Standalone mode.
+     */
+    NR,
+}
diff --git a/radio/aidl/android/hardware/radio/RadioTechnologyFamily.aidl b/radio/aidl/android/hardware/radio/RadioTechnologyFamily.aidl
new file mode 100644
index 0000000..37a1df2
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/RadioTechnologyFamily.aidl
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum RadioTechnologyFamily {
+    /**
+     * 3GPP Technologies - GSM, WCDMA
+     */
+    THREE_GPP,
+    /**
+     * 3GPP2 Technologies - CDMA
+     */
+    THREE_GPP2,
+}
diff --git a/radio/aidl/android/hardware/radio/RegState.aidl b/radio/aidl/android/hardware/radio/RegState.aidl
new file mode 100644
index 0000000..91fd239
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/RegState.aidl
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Please note that registration state UNKNOWN is treated as "out of service" in Android telephony.
+ * Registration state REG_DENIED must be returned if Location Update Reject (with cause 17 - Network
+ * Failure) is received repeatedly from the network, to facilitate "managed roaming".
+ */
+@VintfStability
+@Backing(type="int")
+enum RegState {
+    /**
+     * Not registered, MT is not currently searching for a new operator to register
+     */
+    NOT_REG_MT_NOT_SEARCHING_OP = 0,
+    /**
+     * Registered, home network
+     */
+    REG_HOME = 1,
+    /**
+     * Not registered, but MT is currently searching for a new operator to register
+     */
+    NOT_REG_MT_SEARCHING_OP = 2,
+    /**
+     * Registration denied
+     */
+    REG_DENIED = 3,
+    /**
+     * Unknown
+     */
+    UNKNOWN = 4,
+    /**
+     * Registered, roaming
+     */
+    REG_ROAMING = 5,
+    /**
+     * Same as NOT_REG_MT_NOT_SEARCHING_OP but indicates that emergency calls are enabled
+     */
+    NOT_REG_MT_NOT_SEARCHING_OP_EM = 10,
+    /**
+     * Same as NOT_REG_MT_SEARCHING_OP but indicatees that emergency calls are enabled
+     */
+    NOT_REG_MT_SEARCHING_OP_EM = 12,
+    /**
+     * Same as REG_DENIED but indicates that emergency calls are enabled
+     */
+    REG_DENIED_EM = 13,
+    /**
+     * Same as UNKNOWN but indicates that emergency calls are enabled
+     */
+    UNKNOWN_EM = 14,
+}
diff --git a/radio/aidl/android/hardware/radio/RegStateResult.aidl b/radio/aidl/android/hardware/radio/RegStateResult.aidl
new file mode 100644
index 0000000..4bc55c4
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/RegStateResult.aidl
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CellIdentity;
+import android.hardware.radio.RadioTechnology;
+import android.hardware.radio.RegState;
+import android.hardware.radio.RegStateResultAccessTechnologySpecificInfo;
+import android.hardware.radio.RegistrationFailCause;
+
+@VintfStability
+parcelable RegStateResult {
+    /**
+     * Registration state. If the RAT is indicated as a GERAN, UTRAN, or CDMA2000 technology, this
+     * value reports registration in the Circuit-switched domain. If the RAT is indicated as an
+     * EUTRAN, NGRAN, or another technology that does not support circuit-switched services, this
+     * value reports registration in the Packet-switched domain.
+     */
+    RegState regState;
+    /**
+     * Indicates the available voice radio technology, valid values as defined by RadioTechnology,
+     * except LTE_CA, which is no longer a valid value on 1.5 or above. When the device is on
+     * carrier aggregation, vendor RIL service should properly report multiple PhysicalChannelConfig
+     * elements through IRadio::currentPhysicalChannelConfigs.
+     */
+    RadioTechnology rat;
+    /**
+     * Cause code reported by the network in case registration fails. This will be a mobility
+     * management cause code defined for MM, GMM, MME or equivalent as appropriate for the RAT.
+     */
+    RegistrationFailCause reasonForDenial;
+    /**
+     * CellIdentity
+     */
+    CellIdentity cellIdentity;
+    /**
+     * The most-recent PLMN-ID upon which the UE registered (or attempted to register if a failure
+     * is reported in the reasonForDenial field). This PLMN shall be in standard format consisting
+     * of a 3 digit MCC concatenated with a 2 or 3 digit MNC.
+     */
+    String registeredPlmn;
+    /**
+     * Access-technology-specific registration information, such as for CDMA2000.
+     */
+    RegStateResultAccessTechnologySpecificInfo accessTechnologySpecificInfo;
+}
diff --git a/radio/aidl/android/hardware/radio/RegStateResultAccessTechnologySpecificInfo.aidl b/radio/aidl/android/hardware/radio/RegStateResultAccessTechnologySpecificInfo.aidl
new file mode 100644
index 0000000..b22e413
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/RegStateResultAccessTechnologySpecificInfo.aidl
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.NrVopsInfo;
+import android.hardware.radio.RegStateResultAccessTechnologySpecificInfoCdma2000RegistrationInfo;
+import android.hardware.radio.RegStateResultAccessTechnologySpecificInfoEutranRegistrationInfo;
+
+@VintfStability
+union RegStateResultAccessTechnologySpecificInfo {
+    boolean noinit;
+    RegStateResultAccessTechnologySpecificInfoCdma2000RegistrationInfo cdmaInfo;
+    RegStateResultAccessTechnologySpecificInfoEutranRegistrationInfo eutranInfo;
+    /**
+     * Network capabilities for voice over PS services. This info is valid only on NR network and
+     * must be present when the device is camped on NR. VopsInfo must be empty when the device is
+     * not camped on NR.
+     */
+    NrVopsInfo ngranNrVopsInfo;
+    /**
+     * True if the dual transfer mode is supported. Refer to 3GPP TS 44.108 section 3.4.25.3
+     */
+    boolean geranDtmSupported;
+}
diff --git a/radio/aidl/android/hardware/radio/RegStateResultAccessTechnologySpecificInfoCdma2000RegistrationInfo.aidl b/radio/aidl/android/hardware/radio/RegStateResultAccessTechnologySpecificInfoCdma2000RegistrationInfo.aidl
new file mode 100644
index 0000000..14f68ec
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/RegStateResultAccessTechnologySpecificInfoCdma2000RegistrationInfo.aidl
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.PrlIndicator;
+
+@VintfStability
+parcelable RegStateResultAccessTechnologySpecificInfoCdma2000RegistrationInfo {
+    /**
+     * Concurrent services support indicator. if registered on a CDMA system.
+     * false - Concurrent services not supported,
+     * true - Concurrent services supported
+     */
+    boolean cssSupported;
+    /**
+     * TSB-58 Roaming Indicator if registered on a CDMA or EVDO system or -1 if not.
+     * Valid values are 0-255.
+     */
+    int roamingIndicator;
+    /**
+     * Indicates whether the current system is in the PRL if registered on a CDMA or EVDO system
+     * or -1 if not. 0=not in the PRL, 1=in the PRL.
+     */
+    PrlIndicator systemIsInPrl;
+    /**
+     * Default Roaming Indicator from the PRL if registered on a CDMA or EVDO system or -1 if not.
+     * Valid values are 0-255.
+     */
+    int defaultRoamingIndicator;
+}
diff --git a/radio/aidl/android/hardware/radio/RegStateResultAccessTechnologySpecificInfoEutranRegistrationInfo.aidl b/radio/aidl/android/hardware/radio/RegStateResultAccessTechnologySpecificInfoEutranRegistrationInfo.aidl
new file mode 100644
index 0000000..5b942f4
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/RegStateResultAccessTechnologySpecificInfoEutranRegistrationInfo.aidl
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.LteVopsInfo;
+import android.hardware.radio.NrIndicators;
+
+@VintfStability
+parcelable RegStateResultAccessTechnologySpecificInfoEutranRegistrationInfo {
+    /**
+     * Network capabilities for voice over PS services. This info is valid only on LTE network and
+     * must be present when device is camped on LTE. VopsInfo must be empty when device is camped
+     * only on 2G/3G.
+     */
+    LteVopsInfo lteVopsInfo;
+    /**
+     * The parameters of NR 5G Non-Standalone. This value is only valid on E-UTRAN, otherwise must
+     * be empty.
+     */
+    NrIndicators nrIndicators;
+}
diff --git a/radio/aidl/android/hardware/radio/RegistrationFailCause.aidl b/radio/aidl/android/hardware/radio/RegistrationFailCause.aidl
new file mode 100644
index 0000000..d9c7f23
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/RegistrationFailCause.aidl
@@ -0,0 +1,189 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Call fail causes for Circuit-switched service enumerated in 3GPP TS 24.008, 10.5.3.6 and
+ * 10.5.147. Additional detail is available in 3GPP TS 24.008 Annex G.
+ */
+@VintfStability
+@Backing(type="int")
+enum RegistrationFailCause {
+    /**
+     * 0 - None
+     */
+    NONE = 0,
+    /**
+     * 2 - IMSI unknown in HLR
+     */
+    IMSI_UNKNOWN_IN_HLR = 2,
+    /**
+     * 3 - Illegal MS
+     */
+    ILLEGAL_MS = 3,
+    /**
+     * 4 - Illegal ME
+     */
+    IMSI_UNKNOWN_IN_VLR = 4,
+    /**
+     * 5 - PLMN not allowed
+     */
+    IMEI_NOT_ACCEPTED = 5,
+    /**
+     * 6 - Location area not allowed
+     */
+    ILLEGAL_ME = 6,
+    /**
+     * 7 - Roaming not allowed
+     */
+    GPRS_SERVICES_NOT_ALLOWED = 7,
+    /**
+     * 8 - No Suitable Cells in this Location Area
+     */
+    GPRS_AND_NON_GPRS_SERVICES_NOT_ALLOWED = 8,
+    /**
+     * 9 - Network failure
+     */
+    MS_IDENTITY_CANNOT_BE_DERIVED_BY_NETWORK = 9,
+    /**
+     * 10 - Persistent location update reject
+     */
+    IMPLICITLY_DETACHED = 10,
+    /**
+     * 11 - PLMN not allowed
+     */
+    PLMN_NOT_ALLOWED = 11,
+    /**
+     * 12 - Location area not allowed
+     */
+    LOCATION_AREA_NOT_ALLOWED = 12,
+    /**
+     * 13 - Roaming not allowed in this Location Area
+     */
+    ROAMING_NOT_ALLOWED = 13,
+    /**
+     * 14 - GPRS Services not allowed in this PLMN
+     */
+    GPRS_SERVICES_NOT_ALLOWED_IN_PLMN = 14,
+    /**
+     * 15 - No Suitable Cells in this Location Area
+     */
+    NO_SUITABLE_CELLS = 15,
+    /**
+     * 16 - MSC temporarily not reachable
+     */
+    MSC_TEMPORARILY_NOT_REACHABLE = 15,
+    /**
+     * 17 - Network Failure
+     */
+    NETWORK_FAILURE = 17,
+    /**
+     * 20 - MAC Failure
+     */
+    MAC_FAILURE = 20,
+    /**
+     * 21 - Sync Failure
+     */
+    SYNC_FAILURE = 21,
+    /**
+     * 22 - Congestion
+     */
+    CONGESTION = 22,
+    /**
+     * 23 - GSM Authentication unacceptable
+     */
+    GSM_AUTHENTICATION_UNACCEPTABLE = 23,
+    /**
+     * 25 - Not Authorized for this CSG
+     */
+    NOT_AUTHORIZED_FOR_THIS_CSG = 25,
+    /**
+     * 28 SMS provided via GPRS in this routing area
+     */
+    SMS_PROVIDED_BY_GPRS_IN_ROUTING_AREA,
+    /**
+     * 32 - Service option not supported
+     */
+    SERVICE_OPTION_NOT_SUPPORTED = 32,
+    /**
+     * 33 - Requested service option not subscribed
+     */
+    SERVICE_OPTION_NOT_SUBSCRIBED = 33,
+    /**
+     * 34 - Service option temporarily out of order
+     */
+    SERVICE_OPTION_TEMPORARILY_OUT_OF_ORDER = 34,
+    /**
+     * 38 - Call cannot be identified
+     */
+    CALL_CANNOT_BE_IDENTIFIED = 38,
+    /**
+     * 40 No PDP context activated
+     */
+    NO_PDP_CONTEXT_ACTIVATED = 40,
+    /**
+     * 48-63 - Retry upon entry into a new cell
+     */
+    RETRY_UPON_ENTRY_INTO_NEW_CELL_1 = 48,
+    RETRY_UPON_ENTRY_INTO_NEW_CELL_2 = 49,
+    RETRY_UPON_ENTRY_INTO_NEW_CELL_3 = 50,
+    RETRY_UPON_ENTRY_INTO_NEW_CELL_4 = 51,
+    RETRY_UPON_ENTRY_INTO_NEW_CELL_5 = 52,
+    RETRY_UPON_ENTRY_INTO_NEW_CELL_6 = 53,
+    RETRY_UPON_ENTRY_INTO_NEW_CELL_7 = 54,
+    RETRY_UPON_ENTRY_INTO_NEW_CELL_8 = 55,
+    RETRY_UPON_ENTRY_INTO_NEW_CELL_9 = 56,
+    RETRY_UPON_ENTRY_INTO_NEW_CELL_10 = 57,
+    RETRY_UPON_ENTRY_INTO_NEW_CELL_11 = 58,
+    RETRY_UPON_ENTRY_INTO_NEW_CELL_12 = 59,
+    RETRY_UPON_ENTRY_INTO_NEW_CELL_13 = 60,
+    RETRY_UPON_ENTRY_INTO_NEW_CELL_14 = 61,
+    RETRY_UPON_ENTRY_INTO_NEW_CELL_15 = 62,
+    RETRY_UPON_ENTRY_INTO_NEW_CELL_16 = 63,
+    /**
+     * 95 - Semantically incorrect message
+     */
+    SEMANTICALLY_INCORRECT_MESSAGE = 95,
+    /**
+     * 96 - Invalid mandatory information
+     */
+    INVALID_MANDATORY_INFORMATION = 96,
+    /**
+     * 97 - Message type non-existent or not implemented
+     */
+    MESSAGE_TYPE_NON_EXISTENT_OR_NOT_IMPLEMENTED = 97,
+    /**
+     * 98 - Message type not compatible with protocol state
+     */
+    MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 98,
+    /**
+     * 99 - Information element non-existent or not implemented
+     */
+    INFORMATION_ELEMENT_NON_EXISTENT_OR_NOT_IMPLEMENTED = 99,
+    /**
+     * 100 - Conditional IE error
+     */
+    CONDITIONAL_IE_ERROR = 100,
+    /**
+     * 101 - Message not compatible with protocol state
+     */
+    MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 101,
+    /**
+     * 111 - Protocol error, unspecified
+     */
+    PROTOCOL_ERROR_UNSPECIFIED = 111,
+}
diff --git a/radio/aidl/android/hardware/radio/ResetNvType.aidl b/radio/aidl/android/hardware/radio/ResetNvType.aidl
new file mode 100644
index 0000000..59c74da
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/ResetNvType.aidl
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum ResetNvType {
+    /**
+     * Reload all NV items
+     */
+    RELOAD,
+    /**
+     * Erase NV reset (SCRTN)
+     */
+    ERASE,
+    /**
+     * Factory reset (RTN)
+     */
+    FACTORY_RESET,
+}
diff --git a/radio/aidl/android/hardware/radio/RestrictedState.aidl b/radio/aidl/android/hardware/radio/RestrictedState.aidl
new file mode 100644
index 0000000..1cf8be2
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/RestrictedState.aidl
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum RestrictedState {
+    NONE = 0x00,
+    CS_EMERGENCY = 0x01,
+    CS_NORMAL = 0x02,
+    CS_ALL = 0x04,
+    PS_ALL = 0x10,
+}
diff --git a/radio/aidl/android/hardware/radio/RouteSelectionDescriptor.aidl b/radio/aidl/android/hardware/radio/RouteSelectionDescriptor.aidl
new file mode 100644
index 0000000..14591a0
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/RouteSelectionDescriptor.aidl
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.OptionalPdpProtocolType;
+import android.hardware.radio.OptionalSscMode;
+import android.hardware.radio.SliceInfo;
+
+/**
+ * This struct represents a single route selection descriptor as defined in 3GPP TS 24.526.
+ */
+@VintfStability
+parcelable RouteSelectionDescriptor {
+    /**
+     * Precedence value in the range of 0 to 255. Higher value has lower precedence.
+     */
+    byte precedence;
+    /**
+     * Valid values are IP, IPV6 and IPV4V6.
+     */
+    OptionalPdpProtocolType sessionType;
+    OptionalSscMode sscMode;
+    /**
+     * There can be 0 or more SliceInfo specified in a route descriptor.
+     */
+    SliceInfo[] sliceInfo;
+    /**
+     * DNN stands for Data Network Name and represents an APN as defined in 3GPP TS 23.003.
+     * There can be 0 or more DNNs specified in a route descriptor.
+     */
+    String[] dnn;
+}
diff --git a/radio/aidl/android/hardware/radio/SapApduType.aidl b/radio/aidl/android/hardware/radio/SapApduType.aidl
new file mode 100644
index 0000000..f697e58
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SapApduType.aidl
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum SapApduType {
+    APDU,
+    APDU7816,
+}
diff --git a/radio/aidl/android/hardware/radio/SapConnectRsp.aidl b/radio/aidl/android/hardware/radio/SapConnectRsp.aidl
new file mode 100644
index 0000000..d2046d2
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SapConnectRsp.aidl
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum SapConnectRsp {
+    SUCCESS,
+    CONNECT_FAILURE,
+    MSG_SIZE_TOO_LARGE,
+    MSG_SIZE_TOO_SMALL,
+    CONNECT_OK_CALL_ONGOING,
+}
diff --git a/radio/aidl/android/hardware/radio/SapDisconnectType.aidl b/radio/aidl/android/hardware/radio/SapDisconnectType.aidl
new file mode 100644
index 0000000..30a04bd
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SapDisconnectType.aidl
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum SapDisconnectType {
+    GRACEFUL,
+    IMMEDIATE,
+}
diff --git a/radio/aidl/android/hardware/radio/SapResultCode.aidl b/radio/aidl/android/hardware/radio/SapResultCode.aidl
new file mode 100644
index 0000000..db87374
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SapResultCode.aidl
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum SapResultCode {
+    SUCCESS,
+    GENERIC_FAILURE,
+    CARD_NOT_ACCESSSIBLE,
+    CARD_ALREADY_POWERED_OFF,
+    CARD_REMOVED,
+    CARD_ALREADY_POWERED_ON,
+    DATA_NOT_AVAILABLE,
+    NOT_SUPPORTED,
+}
diff --git a/radio/aidl/android/hardware/radio/SapStatus.aidl b/radio/aidl/android/hardware/radio/SapStatus.aidl
new file mode 100644
index 0000000..0a6b4a7
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SapStatus.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum SapStatus {
+    UNKNOWN_ERROR,
+    CARD_RESET,
+    CARD_NOT_ACCESSIBLE,
+    CARD_REMOVED,
+    CARD_INSERTED,
+    RECOVERED,
+}
diff --git a/radio/aidl/android/hardware/radio/SapTransferProtocol.aidl b/radio/aidl/android/hardware/radio/SapTransferProtocol.aidl
new file mode 100644
index 0000000..7f385de
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SapTransferProtocol.aidl
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum SapTransferProtocol {
+    T0,
+    T1,
+}
diff --git a/radio/aidl/android/hardware/radio/ScanIntervalRange.aidl b/radio/aidl/android/hardware/radio/ScanIntervalRange.aidl
new file mode 100644
index 0000000..7ea4d12
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/ScanIntervalRange.aidl
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Values are in seconds
+ */
+@VintfStability
+@Backing(type="int")
+enum ScanIntervalRange {
+    MIN = 5,
+    MAX = 300,
+}
diff --git a/radio/aidl/android/hardware/radio/ScanStatus.aidl b/radio/aidl/android/hardware/radio/ScanStatus.aidl
new file mode 100644
index 0000000..c9c436e
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/ScanStatus.aidl
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum ScanStatus {
+    /**
+     * The result contains a part of the scan results
+     */
+    PARTIAL = 1,
+    /**
+     * The result contains the last part of the scan results
+     */
+    COMPLETE = 2,
+}
diff --git a/radio/aidl/android/hardware/radio/ScanType.aidl b/radio/aidl/android/hardware/radio/ScanType.aidl
new file mode 100644
index 0000000..66ed451
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/ScanType.aidl
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum ScanType {
+    /**
+     * Performs the scan only once
+     */
+    ONE_SHOT,
+    /**
+     * Performs the scan periodically until cancelled
+     */
+    PERIODIC,
+}
diff --git a/radio/aidl/android/hardware/radio/SelectUiccSub.aidl b/radio/aidl/android/hardware/radio/SelectUiccSub.aidl
new file mode 100644
index 0000000..4db5e66
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SelectUiccSub.aidl
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.SubscriptionType;
+import android.hardware.radio.UiccSubActStatus;
+
+@VintfStability
+parcelable SelectUiccSub {
+    int slot;
+    /**
+     * Array subscriptor from applications[RadioConst:CARD_MAX_APPS] in getIccCardStatus()
+     */
+    int appIndex;
+    SubscriptionType subType;
+    UiccSubActStatus actStatus;
+}
diff --git a/radio/aidl/android/hardware/radio/SendSmsResult.aidl b/radio/aidl/android/hardware/radio/SendSmsResult.aidl
new file mode 100644
index 0000000..3186563
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SendSmsResult.aidl
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+parcelable SendSmsResult {
+    /**
+     * TP-Message-Reference for GSM, and BearerData MessageId for CDMA.
+     * See 3GPP2 C.S0015-B, v2.0, table 4.5-1
+     */
+    int messageRef;
+    /**
+     * Ack PDU or empty string if n/a
+     */
+    String ackPDU;
+    /**
+     * See 3GPP 27.005, 3.2.5 for GSM/UMTS, 3GPP2 N.S0005 (IS-41C) Table 171 for CDMA.
+     * -1 if unknown or not applicable.
+     */
+    int errorCode;
+}
diff --git a/radio/aidl/android/hardware/radio/SetupDataCallResult.aidl b/radio/aidl/android/hardware/radio/SetupDataCallResult.aidl
new file mode 100644
index 0000000..5fc017c
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SetupDataCallResult.aidl
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.DataCallFailCause;
+import android.hardware.radio.DataConnActiveStatus;
+import android.hardware.radio.HandoverFailureMode;
+import android.hardware.radio.LinkAddress;
+import android.hardware.radio.OptionalSliceInfo;
+import android.hardware.radio.PdpProtocolType;
+import android.hardware.radio.Qos;
+import android.hardware.radio.QosSession;
+import android.hardware.radio.TrafficDescriptor;
+
+@VintfStability
+parcelable SetupDataCallResult {
+    /**
+     * Data call fail cause. DataCallFailCause.NONE if no error.
+     */
+    DataCallFailCause cause;
+    /**
+     * If cause is not DataCallFailCause.NONE, this field indicates the network suggested data
+     * retry back-off time in milliseconds. Negative value indicates network does not give any
+     * suggestion. 0 indicates retry should be performed immediately. 0x7fffffffffffffff indicates
+     * the device should not retry data setup anymore. During this time, no calls to
+     * IRadio.setupDataCall for this APN will be made unless IRadioIndication.unthrottleApn is sent
+     * with the same APN.
+     */
+    long suggestedRetryTime;
+    /**
+     * Context ID, uniquely identifies this data connection.
+     */
+    int cid;
+    /**
+     * Data connection active status.
+     */
+    DataConnActiveStatus active;
+    /**
+     * PDP protocol type. If cause is DataCallFailCause.ONLY_SINGLE_BEARER_ALLOWED, this is the
+     * protocol type supported, such as "IP" or "IPV6".
+     */
+    PdpProtocolType type;
+    /**
+     * The network interface name.
+     */
+    String ifname;
+    /**
+     * List of link address.
+     */
+    LinkAddress[] addresses;
+    /**
+     * List of DNS server addresses, e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1". Empty if no dns
+     * server addresses returned.
+     */
+    String[] dnses;
+    /**
+     * List of default gateway addresses, e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1".
+     * When empty, the addresses represent point to point connections.
+     */
+    String[] gateways;
+    /**
+     * List of P-CSCF (Proxy Call State Control Function) addresses via PCO (Protocol Configuration
+     * Option), e.g., "2001:db8::1 2001:db8::2 2001:db8::3". Empty if not IMS client.
+     */
+    String[] pcscf;
+    /**
+     * MTU received from network for IPv4.
+     * Value <= 0 means network has either not sent a value or sent an invalid value.
+     */
+    int mtuV4;
+    /**
+     * MTU received from network for IPv6.
+     * Value <= 0 means network has either not sent a value or sent an invalid value.
+     */
+    int mtuV6;
+    /**
+     * Default bearer QoS. Applicable to LTE and NR
+     */
+    Qos defaultQos;
+    /**
+     * Active QOS sessions of the dedicated bearers. Applicable to PDNs that support dedicated
+     * bearers.
+     */
+    QosSession[] qosSessions;
+    /**
+     * Specifies the fallback mode on an IWLAN handover failure.
+     */
+    HandoverFailureMode handoverFailureMode;
+    /**
+     * The allocated pdu session id for this data call. A value of 0 means no pdu session id was
+     * attached to this call. Reference: 3GPP TS 24.007 section 11.2.3.1b.
+     */
+    int pduSessionId;
+    /**
+     * Slice used for this data call. It is valid only when this data call is on AccessNetwork:NGRAN
+     */
+    OptionalSliceInfo sliceInfo;
+    /**
+     * TrafficDescriptors for which this data call must be used. It only includes the TDs for which
+     * a data call has been requested so far; it is not an exhaustive list.
+     */
+    TrafficDescriptor[] trafficDescriptors;
+}
diff --git a/radio/aidl/android/hardware/radio/SignalMeasurementType.aidl b/radio/aidl/android/hardware/radio/SignalMeasurementType.aidl
new file mode 100644
index 0000000..d92ae91
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SignalMeasurementType.aidl
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Defining signal strength type.
+ */
+@VintfStability
+@Backing(type="int")
+enum SignalMeasurementType {
+    /**
+     * Received Signal Strength Indication.
+     * Range: -113 dBm and -51 dBm
+     * Used RAN: GERAN, CDMA2000
+     * Reference: 3GPP TS 27.007 section 8.5.
+     */
+    RSSI = 1,
+    /**
+     * Received Signal Code Power.
+     * Range: -120 dBm to -25 dBm;
+     * Used RAN: UTRAN
+     * Reference: 3GPP TS 25.123, section 9.1.1.1
+     */
+    RSCP = 2,
+    /**
+     * Reference Signal Received Power.
+     * Range: -140 dBm to -44 dBm;
+     * Used RAN: EUTRAN
+     * Reference: 3GPP TS 36.133 9.1.4
+     */
+    RSRP = 3,
+    /**
+     * Reference Signal Received Quality
+     * Range: -34 dB to 3 dB;
+     * Used RAN: EUTRAN
+     * Reference: 3GPP TS 36.133 v12.6.0 section 9.1.7
+     */
+    RSRQ = 4,
+    /**
+     * Reference Signal Signal to Noise Ratio
+     * Range: -20 dB to 30 dB;
+     * Used RAN: EUTRAN
+     * Note: This field is optional; how to support it can be decided by the corresponding vendor.
+     * Though the response code is not enforced, vendor's implementation must ensure this interface
+     * does not crash.
+     */
+    RSSNR = 5,
+    /**
+     * 5G SS reference signal received power.
+     * Range: -140 dBm to -44 dBm.
+     * Used RAN: NGRAN
+     * Reference: 3GPP TS 38.215.
+     */
+    SSRSRP = 6,
+    /**
+     * 5G SS reference signal received quality.
+     * Range: -43 dB to 20 dB.
+     * Used RAN: NGRAN
+     * Reference: 3GPP TS 38.215, 3GPP TS 38.133 section 10
+     */
+    SSRSRQ = 7,
+    /**
+     * 5G SS signal-to-noise and interference ratio.
+     * Range: -23 dB to 40 dB
+     * Used RAN: NGRAN
+     * Reference: 3GPP TS 38.215 section 5.1.*, 3GPP TS 38.133 section 10.1.16.1.
+     */
+    SSSINR = 8,
+}
diff --git a/radio/aidl/android/hardware/radio/SignalStrength.aidl b/radio/aidl/android/hardware/radio/SignalStrength.aidl
new file mode 100644
index 0000000..0ffdaa3
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SignalStrength.aidl
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CdmaSignalStrength;
+import android.hardware.radio.EvdoSignalStrength;
+import android.hardware.radio.GsmSignalStrength;
+import android.hardware.radio.LteSignalStrength;
+import android.hardware.radio.NrSignalStrength;
+import android.hardware.radio.TdscdmaSignalStrength;
+import android.hardware.radio.WcdmaSignalStrength;
+
+@VintfStability
+parcelable SignalStrength {
+    /**
+     * If GSM measurements are provided, this structure must contain valid measurements; otherwise
+     * all fields should be set to INT_MAX to mark them as invalid.
+     */
+    GsmSignalStrength gsm;
+    /**
+     * If CDMA measurements are provided, this structure must contain valid measurements; otherwise
+     * all fields should be set to INT_MAX to mark them as invalid.
+     */
+    CdmaSignalStrength cdma;
+    /**
+     * If EvDO measurements are provided, this structure must contain valid measurements; otherwise
+     * all fields should be set to INT_MAX to mark them as invalid.
+     */
+    EvdoSignalStrength evdo;
+    /**
+     * If LTE measurements are provided, this structure must contain valid measurements; otherwise
+     * all fields should be set to INT_MAX to mark them as invalid.
+     */
+    LteSignalStrength lte;
+    /**
+     * If TD-SCDMA measurements are provided, this structure must contain valid measurements;
+     * otherwise all fields should be set to INT_MAX to mark them as invalid.
+     */
+    TdscdmaSignalStrength tdscdma;
+    /**
+     * If WCDMA measurements are provided, this structure must contain valid measurements; otherwise
+     * all fields should be set to INT_MAX to mark them as invalid.
+     */
+    WcdmaSignalStrength wcdma;
+    /**
+     * If NR 5G measurements are provided, this structure must contain valid measurements; otherwise
+     * all fields should be set to INT_MAX to mark them as invalid.
+     */
+    NrSignalStrength nr;
+}
diff --git a/radio/aidl/android/hardware/radio/SignalThresholdInfo.aidl b/radio/aidl/android/hardware/radio/SignalThresholdInfo.aidl
new file mode 100644
index 0000000..9274b42
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SignalThresholdInfo.aidl
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.SignalMeasurementType;
+
+/**
+ * Contains the threshold values of each signal measurement type.
+ */
+@VintfStability
+parcelable SignalThresholdInfo {
+    /**
+     * Signal Measurement Type
+     */
+    SignalMeasurementType signalMeasurement;
+    /**
+     * A hysteresis time in milliseconds to prevent flapping. A value of 0 disables hysteresis.
+     */
+    int hysteresisMs;
+    /**
+     * An interval in dB defining the required magnitude change between reports. This must be
+     * smaller than the smallest threshold delta. An interval value of 0 disables hysteresis.
+     */
+    int hysteresisDb;
+    /**
+     * List of threshold values. Range and unit must reference specific SignalMeasurementType.
+     * The threshold values for which to apply criteria. A vector size of 0 disables the use of
+     * thresholds for reporting.
+     */
+    int[] thresholds;
+    /**
+     * Indicates whether the reporting criteria of the corresponding measurement is enabled
+     * (true) or disabled (false). If enabled, modem must trigger the report based on the criteria.
+     * If disabled, modem must not trigger the report based on the criteria.
+     */
+    boolean isEnabled;
+}
diff --git a/radio/aidl/android/hardware/radio/SimApdu.aidl b/radio/aidl/android/hardware/radio/SimApdu.aidl
new file mode 100644
index 0000000..65dae4c
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SimApdu.aidl
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+parcelable SimApdu {
+    /**
+     * "sessionid" from TS 27.007 +CGLA command. Must be ignored for +CSIM command.
+     */
+    int sessionId;
+    /**
+     * Used to derive the APDU ("command" and "length" values in TS 27.007 +CSIM and +CGLA commands)
+     */
+    int cla;
+    /**
+     * Used to derive the APDU ("command" and "length" values in TS 27.007 +CSIM and +CGLA commands)
+     */
+    int instruction;
+    /**
+     * Used to derive the APDU ("command" and "length" values in TS 27.007 +CSIM and +CGLA commands)
+     */
+    int p1;
+    /**
+     * Used to derive the APDU ("command" and "length" values in TS 27.007 +CSIM and +CGLA commands)
+     */
+    int p2;
+    /**
+     * Used to derive the APDU ("command" and "length" values in TS 27.007 +CSIM and +CGLA commands)
+     * A negative P3 implies a 4 byte APDU.
+     */
+    int p3;
+    /**
+     * Used to derive the APDU ("command" and "length" values in TS 27.007 +CSIM and +CGLA commands)
+     * In hex string format ([a-fA-F0-9]*)
+     */
+    String data;
+}
diff --git a/radio/aidl/android/hardware/radio/SimLockMultiSimPolicy.aidl b/radio/aidl/android/hardware/radio/SimLockMultiSimPolicy.aidl
new file mode 100644
index 0000000..89e13fd
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SimLockMultiSimPolicy.aidl
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum SimLockMultiSimPolicy {
+    /**
+     * Indicates that configuration applies to each slot independently.
+     */
+    NO_MULTISIM_POLICY,
+    /**
+     * Indicates that any SIM card can be used as far as one valid card is present in the device.
+     * For the modem, a SIM card is valid when its content (i.e. MCC, MNC, GID, SPN) matches the
+     * carrier restriction configuration.
+     */
+    ONE_VALID_SIM_MUST_BE_PRESENT,
+}
diff --git a/radio/aidl/android/hardware/radio/SimRefreshResult.aidl b/radio/aidl/android/hardware/radio/SimRefreshResult.aidl
new file mode 100644
index 0000000..f480888
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SimRefreshResult.aidl
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.SimRefreshType;
+
+@VintfStability
+parcelable SimRefreshResult {
+    SimRefreshType type;
+    /**
+     * EFID of the updated file if the result is SIM_FILE_UPDATE or 0 for any other result.
+     */
+    int efId;
+    /**
+     * AID(application ID) of the card application. See ETSI 102.221 8.1 and 101.220 4.
+     * For SIM_FILE_UPDATE result it must be set to AID of application in which updated EF resides
+     * or it must be empty string if EF is outside of an application. For SIM_INIT result this field
+     * is set to AID of application that caused REFRESH. For SIM_RESET result it is empty string.
+     */
+    String aid;
+}
diff --git a/radio/aidl/android/hardware/radio/SimRefreshType.aidl b/radio/aidl/android/hardware/radio/SimRefreshType.aidl
new file mode 100644
index 0000000..996cdce
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SimRefreshType.aidl
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum SimRefreshType {
+    /**
+     * A file on SIM has been updated.
+     */
+    SIM_FILE_UPDATE,
+    /**
+     * SIM initialized. All files should be re-read.
+     */
+    SIM_INIT,
+    /**
+     * SIM reset. SIM power required, SIM may be locked and all files must be re-read.
+     */
+    SIM_RESET,
+}
diff --git a/radio/aidl/android/hardware/radio/SliceInfo.aidl b/radio/aidl/android/hardware/radio/SliceInfo.aidl
new file mode 100644
index 0000000..91b0067
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SliceInfo.aidl
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.SliceServiceType;
+import android.hardware.radio.SliceStatus;
+
+/**
+ * This struct represents a S-NSSAI as defined in 3GPP TS 24.501.
+ */
+@VintfStability
+parcelable SliceInfo {
+    /**
+     * The type of service provided by the slice. See: 3GPP TS 24.501 Section 9.11.2.8.
+     */
+    SliceServiceType sst;
+    /**
+     * Slice differentiator is the identifier of a slice that has SliceServiceType as SST. A value
+     * of -1 indicates that there is no corresponding SliceInfo of the HPLMN.
+     * See: 3GPP TS 24.501 Section 9.11.2.8.
+     */
+    int sliceDifferentiator;
+    /**
+     * This SST corresponds to a SliceInfo (S-NSSAI) of the HPLMN; the SST is mapped to this value.
+     * See: 3GPP TS 24.501 Section 9.11.2.8.
+     */
+    SliceServiceType mappedHplmnSst;
+    /**
+     * Present only if both sliceDifferentiator and mappedHplmnSst are also present. This SD
+     * corresponds to a SliceInfo (S-NSSAI) of the HPLMN; sliceDifferentiator is mapped to this
+     * value. A value of -1 indicates that there is no corresponding SliceInfo of the HPLMN.
+     * See: 3GPP TS 24.501 Section 9.11.2.8.
+     */
+    int mappedHplmnSD;
+    /**
+     * Field to indicate the current status of the slice.
+     */
+    SliceStatus status;
+}
diff --git a/radio/aidl/android/hardware/radio/SliceServiceType.aidl b/radio/aidl/android/hardware/radio/SliceServiceType.aidl
new file mode 100644
index 0000000..624dfb1
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SliceServiceType.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Slice/Service Type as defined in 3GPP TS 23.501.
+ */
+@VintfStability
+@Backing(type="byte")
+enum SliceServiceType {
+    /*
+     * Not specified
+     */
+    NONE,
+    /*
+     * Slice suitable for the handling of 5G enhanced Mobile Broadband
+     */
+    EMBB,
+    /**
+     * Slice suitable for the handling of ultra-reliable low latency communications
+     */
+    URLLC,
+    /*
+     * Slice suitable for the handling of massive IoT
+     */
+    MIOT,
+}
diff --git a/radio/aidl/android/hardware/radio/SliceStatus.aidl b/radio/aidl/android/hardware/radio/SliceStatus.aidl
new file mode 100644
index 0000000..076e23b
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SliceStatus.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="byte")
+enum SliceStatus {
+    UNKNOWN,
+    /**
+     * Configured but not allowed or rejected yet
+     */
+    CONFIGURED,
+    /**
+     * Allowed to be used
+     */
+    ALLOWED,
+    /**
+     * Rejected because not available in PLMN
+     */
+    REJECTED_NOT_AVAILABLE_IN_PLMN,
+    /**
+     * Rejected because not available in reg area
+     */
+    REJECTED_NOT_AVAILABLE_IN_REG_AREA,
+    /**
+     * Considered valid when configured/allowed slices are not available
+     */
+    DEFAULT_CONFIGURED,
+}
diff --git a/radio/aidl/android/hardware/radio/SlicingConfig.aidl b/radio/aidl/android/hardware/radio/SlicingConfig.aidl
new file mode 100644
index 0000000..d8d0885
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SlicingConfig.aidl
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.SliceInfo;
+import android.hardware.radio.UrspRule;
+
+/**
+ * This struct represents the current slicing configuration.
+ */
+@VintfStability
+parcelable SlicingConfig {
+    /**
+     * This vector contains the current URSP rules. Empty vector indicates no rules are configured.
+     */
+    UrspRule[] urspRules;
+    /**
+     * List of all slices.
+     */
+    SliceInfo[] sliceInfo;
+}
diff --git a/radio/aidl/android/hardware/radio/SmsAcknowledgeFailCause.aidl b/radio/aidl/android/hardware/radio/SmsAcknowledgeFailCause.aidl
new file mode 100644
index 0000000..265a109
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SmsAcknowledgeFailCause.aidl
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum SmsAcknowledgeFailCause {
+    MEMORY_CAPACITY_EXCEEDED = 0xD3,
+    UNSPECIFIED_ERROR = 0XFF,
+}
diff --git a/radio/aidl/android/hardware/radio/SmsWriteArgs.aidl b/radio/aidl/android/hardware/radio/SmsWriteArgs.aidl
new file mode 100644
index 0000000..f7a3fd4
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SmsWriteArgs.aidl
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.SmsWriteArgsStatus;
+
+@VintfStability
+parcelable SmsWriteArgs {
+    /**
+     * Status of message. See TS 27.005 3.1.
+     */
+    SmsWriteArgsStatus status;
+    /**
+     * PDU of message to write, as an ASCII hex string less the SMSC address, the TP-layer length
+     * is strlen(pdu)/2.
+     */
+    String pdu;
+    /**
+     * SMSC address in GSM BCD format prefixed by a length byte (as expected by TS 27.005)
+     * or NULL for default SMSC.
+     */
+    String smsc;
+}
diff --git a/radio/aidl/android/hardware/radio/SmsWriteArgsStatus.aidl b/radio/aidl/android/hardware/radio/SmsWriteArgsStatus.aidl
new file mode 100644
index 0000000..095c71e
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SmsWriteArgsStatus.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum SmsWriteArgsStatus {
+    REC_UNREAD,
+    REC_READ,
+    STO_UNSENT,
+    STO_SENT,
+}
diff --git a/radio/aidl/android/hardware/radio/SrvccState.aidl b/radio/aidl/android/hardware/radio/SrvccState.aidl
new file mode 100644
index 0000000..d428314
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SrvccState.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum SrvccState {
+    HANDOVER_STARTED,
+    HANDOVER_COMPLETED,
+    HANDOVER_FAILED,
+    HANDOVER_CANCELED,
+}
diff --git a/radio/aidl/android/hardware/radio/SsInfoData.aidl b/radio/aidl/android/hardware/radio/SsInfoData.aidl
new file mode 100644
index 0000000..6ee3da0
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SsInfoData.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+parcelable SsInfoData {
+    /**
+     * This is the response data for all of the SS GET/SET Radio requests.
+     * E.g. IRadio.getClir() returns two ints, so first two values of ssInfo[] will be used for
+     * response if serviceType is SS_CLIR and requestType is SS_INTERROGATION.
+     * Max size = RadioConst:SS_INFO_MAX
+     */
+    int[] ssInfo;
+}
diff --git a/radio/aidl/android/hardware/radio/SsRequestType.aidl b/radio/aidl/android/hardware/radio/SsRequestType.aidl
new file mode 100644
index 0000000..f3decbe
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SsRequestType.aidl
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum SsRequestType {
+    ACTIVATION,
+    DEACTIVATION,
+    INTERROGATION,
+    REGISTRATION,
+    ERASURE,
+}
diff --git a/radio/aidl/android/hardware/radio/SsServiceType.aidl b/radio/aidl/android/hardware/radio/SsServiceType.aidl
new file mode 100644
index 0000000..eb344f4
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SsServiceType.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum SsServiceType {
+    CFU,
+    CF_BUSY,
+    CF_NO_REPLY,
+    CF_NOT_REACHABLE,
+    CF_ALL,
+    CF_ALL_CONDITIONAL,
+    CLIP,
+    CLIR,
+    COLP,
+    COLR,
+    WAIT,
+    BAOC,
+    BAOIC,
+    BAOIC_EXC_HOME,
+    BAIC,
+    BAIC_ROAMING,
+    ALL_BARRING,
+    OUTGOING_BARRING,
+    INCOMING_BARRING,
+}
diff --git a/radio/aidl/android/hardware/radio/SsTeleserviceType.aidl b/radio/aidl/android/hardware/radio/SsTeleserviceType.aidl
new file mode 100644
index 0000000..c11bbfa
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SsTeleserviceType.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum SsTeleserviceType {
+    ALL_TELE_AND_BEARER_SERVICES,
+    ALL_TELESEVICES,
+    TELEPHONY,
+    ALL_DATA_TELESERVICES,
+    SMS_SERVICES,
+    ALL_TELESERVICES_EXCEPT_SMS,
+}
diff --git a/radio/aidl/android/hardware/radio/SscMode.aidl b/radio/aidl/android/hardware/radio/SscMode.aidl
new file mode 100644
index 0000000..8722048
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SscMode.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Enum representing session and service continuity mode as defined in 3GPP TS 23.501.
+ */
+@VintfStability
+@Backing(type="byte")
+enum SscMode {
+    MODE_1 = 1,
+    MODE_2 = 2,
+    MODE_3 = 3,
+}
diff --git a/radio/aidl/android/hardware/radio/StkCcUnsolSsResult.aidl b/radio/aidl/android/hardware/radio/StkCcUnsolSsResult.aidl
new file mode 100644
index 0000000..0895f98
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/StkCcUnsolSsResult.aidl
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CfData;
+import android.hardware.radio.RadioError;
+import android.hardware.radio.SsInfoData;
+import android.hardware.radio.SsRequestType;
+import android.hardware.radio.SsServiceType;
+import android.hardware.radio.SsTeleserviceType;
+import android.hardware.radio.SuppServiceClass;
+
+@VintfStability
+parcelable StkCcUnsolSsResult {
+    SsServiceType serviceType;
+    SsRequestType requestType;
+    SsTeleserviceType teleserviceType;
+    SuppServiceClass serviceClass;
+    RadioError result;
+    /**
+     * Valid only for all SsServiceType except SsServiceType:CF_* else empty.
+     * Only one of ssInfo and cfData may contain values and the other must be empty.
+     */
+    SsInfoData[] ssInfo;
+    /**
+     * Valid for SsServiceType:CF_* else empty
+     * Only one of ssInfo and cfData may contain values and the other must be empty.
+     */
+    CfData[] cfData;
+}
diff --git a/radio/aidl/android/hardware/radio/SubscriptionType.aidl b/radio/aidl/android/hardware/radio/SubscriptionType.aidl
new file mode 100644
index 0000000..47c54f7
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SubscriptionType.aidl
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum SubscriptionType {
+    SUBSCRIPTION_1,
+    SUBSCRIPTION_2,
+    SUBSCRIPTION_3,
+}
diff --git a/radio/aidl/android/hardware/radio/SuppServiceClass.aidl b/radio/aidl/android/hardware/radio/SuppServiceClass.aidl
new file mode 100644
index 0000000..79e73ce
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SuppServiceClass.aidl
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum SuppServiceClass {
+    NONE = 0,
+    VOICE = 1 << 0,
+    DATA = 1 << 1,
+    FAX = 1 << 2,
+    SMS = 1 << 3,
+    DATA_SYNC = 1 << 4,
+    DATA_ASYNC = 1 << 5,
+    PACKET = 1 << 6,
+    PAD = 1 << 7,
+    MAX = 1 << 7,
+}
diff --git a/radio/aidl/android/hardware/radio/SuppSvcNotification.aidl b/radio/aidl/android/hardware/radio/SuppSvcNotification.aidl
new file mode 100644
index 0000000..b41292b
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/SuppSvcNotification.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+parcelable SuppSvcNotification {
+    /**
+     * Notification type
+     * false = MO intermediate result code
+     * true = MT unsolicited result code
+     */
+    boolean isMT;
+    /**
+     * Result code. See 27.007 7.17.
+     */
+    int code;
+    /**
+     * CUG index. See 27.007 7.17.
+     */
+    int index;
+    /**
+     * "type" from 27.007 7.17 (MT only).
+     */
+    int type;
+    /**
+     * "number" from 27.007 7.17. MT only, may be empty string.
+     */
+    String number;
+}
diff --git a/radio/aidl/android/hardware/radio/TdscdmaSignalStrength.aidl b/radio/aidl/android/hardware/radio/TdscdmaSignalStrength.aidl
new file mode 100644
index 0000000..baed68a
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/TdscdmaSignalStrength.aidl
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+parcelable TdscdmaSignalStrength {
+    /**
+     * UTRA carrier RSSI as defined in TS 25.225 5.1.4. Valid values are (0-31, 99) as defined in
+     * TS 27.007 8.5. INT_MAX denotes that the value is invalid/unreported.
+     */
+    int signalStrength;
+    /**
+     * Transport Channel BER as defined in TS 25.225 5.2.5. Valid values are (0-7, 99) as defined in
+     * TS 27.007 8.5. INT_MAX denotes that the value is invalid/unreported.
+     */
+    int bitErrorRate;
+    /**
+     * P-CCPCH RSCP as defined in TS 25.225 5.1.1. Valid values are (0-96, 255) as defined in
+     * TS 27.007 8.69. INT_MAX denotes that the value is invalid/unreported.
+     */
+    int rscp;
+}
diff --git a/radio/aidl/android/hardware/radio/TimeStampType.aidl b/radio/aidl/android/hardware/radio/TimeStampType.aidl
new file mode 100644
index 0000000..f76a032
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/TimeStampType.aidl
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum TimeStampType {
+    UNKNOWN,
+    ANTENNA,
+    MODEM,
+    OEM_RIL,
+    JAVA_RIL,
+}
diff --git a/radio/aidl/android/hardware/radio/TrafficDescriptor.aidl b/radio/aidl/android/hardware/radio/TrafficDescriptor.aidl
new file mode 100644
index 0000000..4c41e8c
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/TrafficDescriptor.aidl
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.OptionalDnn;
+import android.hardware.radio.OptionalOsAppId;
+
+/**
+ * This struct represents a traffic descriptor. A valid struct must have at least one of the
+ * optional values present. This is based on the definition of traffic descriptor in
+ * TS 24.526 Section 5.2.
+ */
+@VintfStability
+parcelable TrafficDescriptor {
+    /**
+     * DNN stands for Data Network Name and represents an APN as defined in 3GPP TS 23.003.
+     */
+    OptionalDnn dnn;
+    /**
+     * Indicates the OsId + OsAppId (used as category in Android).
+     */
+    OptionalOsAppId osAppId;
+}
diff --git a/radio/aidl/android/hardware/radio/Translate.java b/radio/aidl/android/hardware/radio/Translate.java
new file mode 100644
index 0000000..a5d32b4
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/Translate.java
@@ -0,0 +1,2520 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import java.util.List;
+
+public class Translate {
+    static public android.hardware.radio.IccIo h2aTranslate(android.hardware.radio.V1_0.IccIo in) {
+        android.hardware.radio.IccIo out = new android.hardware.radio.IccIo();
+        out.command = in.command;
+        out.fileId = in.fileId;
+        out.path = in.path;
+        out.p1 = in.p1;
+        out.p2 = in.p2;
+        out.p3 = in.p3;
+        out.data = in.data;
+        out.pin2 = in.pin2;
+        out.aid = in.aid;
+        return out;
+    }
+
+    static public android.hardware.radio.NeighboringCell h2aTranslate(
+            android.hardware.radio.V1_0.NeighboringCell in) {
+        android.hardware.radio.NeighboringCell out = new android.hardware.radio.NeighboringCell();
+        out.cid = in.cid;
+        out.rssi = in.rssi;
+        return out;
+    }
+
+    static public android.hardware.radio.UusInfo h2aTranslate(
+            android.hardware.radio.V1_0.UusInfo in) {
+        android.hardware.radio.UusInfo out = new android.hardware.radio.UusInfo();
+        out.uusType = in.uusType;
+        out.uusDcs = in.uusDcs;
+        out.uusData = in.uusData;
+        return out;
+    }
+
+    static public android.hardware.radio.Dial h2aTranslate(android.hardware.radio.V1_0.Dial in) {
+        android.hardware.radio.Dial out = new android.hardware.radio.Dial();
+        out.address = in.address;
+        out.clir = in.clir;
+        if (in.uusInfo != null) {
+            out.uusInfo = new android.hardware.radio.UusInfo[in.uusInfo.size()];
+            for (int i = 0; i < in.uusInfo.size(); i++) {
+                out.uusInfo[i] = h2aTranslate(in.uusInfo.get(i));
+            }
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.LastCallFailCauseInfo h2aTranslate(
+            android.hardware.radio.V1_0.LastCallFailCauseInfo in) {
+        android.hardware.radio.LastCallFailCauseInfo out =
+                new android.hardware.radio.LastCallFailCauseInfo();
+        out.causeCode = in.causeCode;
+        out.vendorCause = in.vendorCause;
+        return out;
+    }
+
+    static public android.hardware.radio.GsmSignalStrength h2aTranslate(
+            android.hardware.radio.V1_0.GsmSignalStrength in) {
+        android.hardware.radio.GsmSignalStrength out =
+                new android.hardware.radio.GsmSignalStrength();
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.signalStrength > 2147483647 || in.signalStrength < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.signalStrength");
+        }
+        out.signalStrength = in.signalStrength;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.bitErrorRate > 2147483647 || in.bitErrorRate < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.bitErrorRate");
+        }
+        out.bitErrorRate = in.bitErrorRate;
+        out.timingAdvance = in.timingAdvance;
+        return out;
+    }
+
+    static public android.hardware.radio.CdmaSignalStrength h2aTranslate(
+            android.hardware.radio.V1_0.CdmaSignalStrength in) {
+        android.hardware.radio.CdmaSignalStrength out =
+                new android.hardware.radio.CdmaSignalStrength();
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.dbm > 2147483647 || in.dbm < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.dbm");
+        }
+        out.dbm = in.dbm;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.ecio > 2147483647 || in.ecio < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.ecio");
+        }
+        out.ecio = in.ecio;
+        return out;
+    }
+
+    static public android.hardware.radio.EvdoSignalStrength h2aTranslate(
+            android.hardware.radio.V1_0.EvdoSignalStrength in) {
+        android.hardware.radio.EvdoSignalStrength out =
+                new android.hardware.radio.EvdoSignalStrength();
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.dbm > 2147483647 || in.dbm < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.dbm");
+        }
+        out.dbm = in.dbm;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.ecio > 2147483647 || in.ecio < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.ecio");
+        }
+        out.ecio = in.ecio;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.signalNoiseRatio > 2147483647 || in.signalNoiseRatio < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.signalNoiseRatio");
+        }
+        out.signalNoiseRatio = in.signalNoiseRatio;
+        return out;
+    }
+
+    static public android.hardware.radio.SendSmsResult h2aTranslate(
+            android.hardware.radio.V1_0.SendSmsResult in) {
+        android.hardware.radio.SendSmsResult out = new android.hardware.radio.SendSmsResult();
+        out.messageRef = in.messageRef;
+        out.ackPDU = in.ackPDU;
+        out.errorCode = in.errorCode;
+        return out;
+    }
+
+    static public android.hardware.radio.IccIoResult h2aTranslate(
+            android.hardware.radio.V1_0.IccIoResult in) {
+        android.hardware.radio.IccIoResult out = new android.hardware.radio.IccIoResult();
+        out.sw1 = in.sw1;
+        out.sw2 = in.sw2;
+        out.simResponse = in.simResponse;
+        return out;
+    }
+
+    static public android.hardware.radio.CallForwardInfo h2aTranslate(
+            android.hardware.radio.V1_0.CallForwardInfo in) {
+        android.hardware.radio.CallForwardInfo out = new android.hardware.radio.CallForwardInfo();
+        out.status = in.status;
+        out.reason = in.reason;
+        out.serviceClass = in.serviceClass;
+        out.toa = in.toa;
+        out.number = in.number;
+        out.timeSeconds = in.timeSeconds;
+        return out;
+    }
+
+    static public android.hardware.radio.OperatorInfo h2aTranslate(
+            android.hardware.radio.V1_0.OperatorInfo in) {
+        android.hardware.radio.OperatorInfo out = new android.hardware.radio.OperatorInfo();
+        out.alphaLong = in.alphaLong;
+        out.alphaShort = in.alphaShort;
+        out.operatorNumeric = in.operatorNumeric;
+        out.status = in.status;
+        return out;
+    }
+
+    static public android.hardware.radio.SmsWriteArgs h2aTranslate(
+            android.hardware.radio.V1_0.SmsWriteArgs in) {
+        android.hardware.radio.SmsWriteArgs out = new android.hardware.radio.SmsWriteArgs();
+        out.status = in.status;
+        out.pdu = in.pdu;
+        out.smsc = in.smsc;
+        return out;
+    }
+
+    static public android.hardware.radio.CdmaSmsAddress h2aTranslate(
+            android.hardware.radio.V1_0.CdmaSmsAddress in) {
+        android.hardware.radio.CdmaSmsAddress out = new android.hardware.radio.CdmaSmsAddress();
+        out.digitMode = in.digitMode;
+        out.numberMode = in.numberMode;
+        out.numberType = in.numberType;
+        out.numberPlan = in.numberPlan;
+        if (in.digits != null) {
+            out.digits = new byte[in.digits.size()];
+            for (int i = 0; i < in.digits.size(); i++) {
+                // FIXME This requires conversion between signed and unsigned. Change this if it
+                // doesn't suit your needs.
+                if (in.digits.get(i) > 127 || in.digits.get(i) < 0) {
+                    throw new RuntimeException(
+                            "Unsafe conversion between signed and unsigned scalars for field: in.digits.get(i)");
+                }
+                out.digits[i] = in.digits.get(i);
+            }
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.CdmaSmsSubaddress h2aTranslate(
+            android.hardware.radio.V1_0.CdmaSmsSubaddress in) {
+        android.hardware.radio.CdmaSmsSubaddress out =
+                new android.hardware.radio.CdmaSmsSubaddress();
+        out.subaddressType = in.subaddressType;
+        out.odd = in.odd;
+        if (in.digits != null) {
+            out.digits = new byte[in.digits.size()];
+            for (int i = 0; i < in.digits.size(); i++) {
+                // FIXME This requires conversion between signed and unsigned. Change this if it
+                // doesn't suit your needs.
+                if (in.digits.get(i) > 127 || in.digits.get(i) < 0) {
+                    throw new RuntimeException(
+                            "Unsafe conversion between signed and unsigned scalars for field: in.digits.get(i)");
+                }
+                out.digits[i] = in.digits.get(i);
+            }
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.CdmaSmsMessage h2aTranslate(
+            android.hardware.radio.V1_0.CdmaSmsMessage in) {
+        android.hardware.radio.CdmaSmsMessage out = new android.hardware.radio.CdmaSmsMessage();
+        out.teleserviceId = in.teleserviceId;
+        out.isServicePresent = in.isServicePresent;
+        out.serviceCategory = in.serviceCategory;
+        out.address = h2aTranslate(in.address);
+        out.subAddress = h2aTranslate(in.subAddress);
+        if (in.bearerData != null) {
+            out.bearerData = new byte[in.bearerData.size()];
+            for (int i = 0; i < in.bearerData.size(); i++) {
+                // FIXME This requires conversion between signed and unsigned. Change this if it
+                // doesn't suit your needs.
+                if (in.bearerData.get(i) > 127 || in.bearerData.get(i) < 0) {
+                    throw new RuntimeException(
+                            "Unsafe conversion between signed and unsigned scalars for field: in.bearerData.get(i)");
+                }
+                out.bearerData[i] = in.bearerData.get(i);
+            }
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.CdmaSmsAck h2aTranslate(
+            android.hardware.radio.V1_0.CdmaSmsAck in) {
+        android.hardware.radio.CdmaSmsAck out = new android.hardware.radio.CdmaSmsAck();
+        out.errorClass = in.errorClass;
+        out.smsCauseCode = in.smsCauseCode;
+        return out;
+    }
+
+    static public android.hardware.radio.CdmaBroadcastSmsConfigInfo h2aTranslate(
+            android.hardware.radio.V1_0.CdmaBroadcastSmsConfigInfo in) {
+        android.hardware.radio.CdmaBroadcastSmsConfigInfo out =
+                new android.hardware.radio.CdmaBroadcastSmsConfigInfo();
+        out.serviceCategory = in.serviceCategory;
+        out.language = in.language;
+        out.selected = in.selected;
+        return out;
+    }
+
+    static public android.hardware.radio.CdmaSmsWriteArgs h2aTranslate(
+            android.hardware.radio.V1_0.CdmaSmsWriteArgs in) {
+        android.hardware.radio.CdmaSmsWriteArgs out = new android.hardware.radio.CdmaSmsWriteArgs();
+        out.status = in.status;
+        out.message = h2aTranslate(in.message);
+        return out;
+    }
+
+    static public android.hardware.radio.GsmBroadcastSmsConfigInfo h2aTranslate(
+            android.hardware.radio.V1_0.GsmBroadcastSmsConfigInfo in) {
+        android.hardware.radio.GsmBroadcastSmsConfigInfo out =
+                new android.hardware.radio.GsmBroadcastSmsConfigInfo();
+        out.fromServiceId = in.fromServiceId;
+        out.toServiceId = in.toServiceId;
+        out.fromCodeScheme = in.fromCodeScheme;
+        out.toCodeScheme = in.toCodeScheme;
+        out.selected = in.selected;
+        return out;
+    }
+
+    static public android.hardware.radio.GsmSmsMessage h2aTranslate(
+            android.hardware.radio.V1_0.GsmSmsMessage in) {
+        android.hardware.radio.GsmSmsMessage out = new android.hardware.radio.GsmSmsMessage();
+        out.smscPdu = in.smscPdu;
+        out.pdu = in.pdu;
+        return out;
+    }
+
+    static public android.hardware.radio.ImsSmsMessage h2aTranslate(
+            android.hardware.radio.V1_0.ImsSmsMessage in) {
+        android.hardware.radio.ImsSmsMessage out = new android.hardware.radio.ImsSmsMessage();
+        out.tech = in.tech;
+        out.retry = in.retry;
+        out.messageRef = in.messageRef;
+        if (in.cdmaMessage != null) {
+            out.cdmaMessage = new android.hardware.radio.CdmaSmsMessage[in.cdmaMessage.size()];
+            for (int i = 0; i < in.cdmaMessage.size(); i++) {
+                out.cdmaMessage[i] = h2aTranslate(in.cdmaMessage.get(i));
+            }
+        }
+        if (in.gsmMessage != null) {
+            out.gsmMessage = new android.hardware.radio.GsmSmsMessage[in.gsmMessage.size()];
+            for (int i = 0; i < in.gsmMessage.size(); i++) {
+                out.gsmMessage[i] = h2aTranslate(in.gsmMessage.get(i));
+            }
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.SimApdu h2aTranslate(
+            android.hardware.radio.V1_0.SimApdu in) {
+        android.hardware.radio.SimApdu out = new android.hardware.radio.SimApdu();
+        out.sessionId = in.sessionId;
+        out.cla = in.cla;
+        out.instruction = in.instruction;
+        out.p1 = in.p1;
+        out.p2 = in.p2;
+        out.p3 = in.p3;
+        out.data = in.data;
+        return out;
+    }
+
+    static public android.hardware.radio.NvWriteItem h2aTranslate(
+            android.hardware.radio.V1_0.NvWriteItem in) {
+        android.hardware.radio.NvWriteItem out = new android.hardware.radio.NvWriteItem();
+        out.itemId = in.itemId;
+        out.value = in.value;
+        return out;
+    }
+
+    static public android.hardware.radio.SelectUiccSub h2aTranslate(
+            android.hardware.radio.V1_0.SelectUiccSub in) {
+        android.hardware.radio.SelectUiccSub out = new android.hardware.radio.SelectUiccSub();
+        out.slot = in.slot;
+        out.appIndex = in.appIndex;
+        out.subType = in.subType;
+        out.actStatus = in.actStatus;
+        return out;
+    }
+
+    static public android.hardware.radio.HardwareConfigModem h2aTranslate(
+            android.hardware.radio.V1_0.HardwareConfigModem in) {
+        android.hardware.radio.HardwareConfigModem out =
+                new android.hardware.radio.HardwareConfigModem();
+        out.rilModel = in.rilModel;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.rat > 2147483647 || in.rat < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.rat");
+        }
+        out.rat = in.rat;
+        out.maxVoice = in.maxVoice;
+        out.maxData = in.maxData;
+        out.maxStandby = in.maxStandby;
+        return out;
+    }
+
+    static public android.hardware.radio.HardwareConfigSim h2aTranslate(
+            android.hardware.radio.V1_0.HardwareConfigSim in) {
+        android.hardware.radio.HardwareConfigSim out =
+                new android.hardware.radio.HardwareConfigSim();
+        out.modemUuid = in.modemUuid;
+        return out;
+    }
+
+    static public android.hardware.radio.HardwareConfig h2aTranslate(
+            android.hardware.radio.V1_0.HardwareConfig in) {
+        android.hardware.radio.HardwareConfig out = new android.hardware.radio.HardwareConfig();
+        out.type = in.type;
+        out.uuid = in.uuid;
+        out.state = in.state;
+        if (in.modem != null) {
+            out.modem = new android.hardware.radio.HardwareConfigModem[in.modem.size()];
+            for (int i = 0; i < in.modem.size(); i++) {
+                out.modem[i] = h2aTranslate(in.modem.get(i));
+            }
+        }
+        if (in.sim != null) {
+            out.sim = new android.hardware.radio.HardwareConfigSim[in.sim.size()];
+            for (int i = 0; i < in.sim.size(); i++) {
+                out.sim[i] = h2aTranslate(in.sim.get(i));
+            }
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.LceStatusInfo h2aTranslate(
+            android.hardware.radio.V1_0.LceStatusInfo in) {
+        android.hardware.radio.LceStatusInfo out = new android.hardware.radio.LceStatusInfo();
+        out.lceStatus = in.lceStatus;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.actualIntervalMs > 127 || in.actualIntervalMs < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.actualIntervalMs");
+        }
+        out.actualIntervalMs = in.actualIntervalMs;
+        return out;
+    }
+
+    static public android.hardware.radio.LceDataInfo h2aTranslate(
+            android.hardware.radio.V1_0.LceDataInfo in) {
+        android.hardware.radio.LceDataInfo out = new android.hardware.radio.LceDataInfo();
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.lastHopCapacityKbps > 2147483647 || in.lastHopCapacityKbps < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.lastHopCapacityKbps");
+        }
+        out.lastHopCapacityKbps = in.lastHopCapacityKbps;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.confidenceLevel > 127 || in.confidenceLevel < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.confidenceLevel");
+        }
+        out.confidenceLevel = in.confidenceLevel;
+        out.lceSuspended = in.lceSuspended;
+        return out;
+    }
+
+    static public android.hardware.radio.ActivityStatsInfo h2aTranslate(
+            android.hardware.radio.V1_0.ActivityStatsInfo in) {
+        android.hardware.radio.ActivityStatsInfo out =
+                new android.hardware.radio.ActivityStatsInfo();
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.sleepModeTimeMs > 2147483647 || in.sleepModeTimeMs < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.sleepModeTimeMs");
+        }
+        out.sleepModeTimeMs = in.sleepModeTimeMs;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.idleModeTimeMs > 2147483647 || in.idleModeTimeMs < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.idleModeTimeMs");
+        }
+        out.idleModeTimeMs = in.idleModeTimeMs;
+        if (in.txmModetimeMs != null) {
+            out.txmModetimeMs = new int[in.txmModetimeMs.length];
+            for (int i = 0; i < in.txmModetimeMs.length; i++) {
+                // FIXME This requires conversion between signed and unsigned. Change this if it
+                // doesn't suit your needs.
+                if (in.txmModetimeMs[i] > 2147483647 || in.txmModetimeMs[i] < 0) {
+                    throw new RuntimeException(
+                            "Unsafe conversion between signed and unsigned scalars for field: in.txmModetimeMs[i]");
+                }
+                out.txmModetimeMs[i] = in.txmModetimeMs[i];
+            }
+        }
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.rxModeTimeMs > 2147483647 || in.rxModeTimeMs < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.rxModeTimeMs");
+        }
+        out.rxModeTimeMs = in.rxModeTimeMs;
+        return out;
+    }
+
+    static public android.hardware.radio.Carrier h2aTranslate(
+            android.hardware.radio.V1_0.Carrier in) {
+        android.hardware.radio.Carrier out = new android.hardware.radio.Carrier();
+        out.mcc = in.mcc;
+        out.mnc = in.mnc;
+        out.matchType = in.matchType;
+        out.matchData = in.matchData;
+        return out;
+    }
+
+    static public android.hardware.radio.CarrierRestrictions h2aTranslate(
+            android.hardware.radio.V1_0.CarrierRestrictions in) {
+        android.hardware.radio.CarrierRestrictions out =
+                new android.hardware.radio.CarrierRestrictions();
+        if (in.allowedCarriers != null) {
+            out.allowedCarriers = new android.hardware.radio.Carrier[in.allowedCarriers.size()];
+            for (int i = 0; i < in.allowedCarriers.size(); i++) {
+                out.allowedCarriers[i] = h2aTranslate(in.allowedCarriers.get(i));
+            }
+        }
+        if (in.excludedCarriers != null) {
+            out.excludedCarriers = new android.hardware.radio.Carrier[in.excludedCarriers.size()];
+            for (int i = 0; i < in.excludedCarriers.size(); i++) {
+                out.excludedCarriers[i] = h2aTranslate(in.excludedCarriers.get(i));
+            }
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.SuppSvcNotification h2aTranslate(
+            android.hardware.radio.V1_0.SuppSvcNotification in) {
+        android.hardware.radio.SuppSvcNotification out =
+                new android.hardware.radio.SuppSvcNotification();
+        out.isMT = in.isMT;
+        out.code = in.code;
+        out.index = in.index;
+        out.type = in.type;
+        out.number = in.number;
+        return out;
+    }
+
+    static public android.hardware.radio.SimRefreshResult h2aTranslate(
+            android.hardware.radio.V1_0.SimRefreshResult in) {
+        android.hardware.radio.SimRefreshResult out = new android.hardware.radio.SimRefreshResult();
+        out.type = in.type;
+        out.efId = in.efId;
+        out.aid = in.aid;
+        return out;
+    }
+
+    static public android.hardware.radio.CdmaSignalInfoRecord h2aTranslate(
+            android.hardware.radio.V1_0.CdmaSignalInfoRecord in) {
+        android.hardware.radio.CdmaSignalInfoRecord out =
+                new android.hardware.radio.CdmaSignalInfoRecord();
+        out.isPresent = in.isPresent;
+        out.signalType = in.signalType;
+        out.alertPitch = in.alertPitch;
+        out.signal = in.signal;
+        return out;
+    }
+
+    static public android.hardware.radio.CdmaCallWaiting h2aTranslate(
+            android.hardware.radio.V1_0.CdmaCallWaiting in) {
+        android.hardware.radio.CdmaCallWaiting out = new android.hardware.radio.CdmaCallWaiting();
+        out.number = in.number;
+        out.numberPresentation = in.numberPresentation;
+        out.name = in.name;
+        out.signalInfoRecord = h2aTranslate(in.signalInfoRecord);
+        out.numberType = in.numberType;
+        out.numberPlan = in.numberPlan;
+        return out;
+    }
+
+    static public android.hardware.radio.CdmaDisplayInfoRecord h2aTranslate(
+            android.hardware.radio.V1_0.CdmaDisplayInfoRecord in) {
+        android.hardware.radio.CdmaDisplayInfoRecord out =
+                new android.hardware.radio.CdmaDisplayInfoRecord();
+        out.alphaBuf = in.alphaBuf;
+        return out;
+    }
+
+    static public android.hardware.radio.CdmaNumberInfoRecord h2aTranslate(
+            android.hardware.radio.V1_0.CdmaNumberInfoRecord in) {
+        android.hardware.radio.CdmaNumberInfoRecord out =
+                new android.hardware.radio.CdmaNumberInfoRecord();
+        out.number = in.number;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.numberType > 127 || in.numberType < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.numberType");
+        }
+        out.numberType = in.numberType;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.numberPlan > 127 || in.numberPlan < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.numberPlan");
+        }
+        out.numberPlan = in.numberPlan;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.pi > 127 || in.pi < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.pi");
+        }
+        out.pi = in.pi;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.si > 127 || in.si < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.si");
+        }
+        out.si = in.si;
+        return out;
+    }
+
+    static public android.hardware.radio.CdmaRedirectingNumberInfoRecord h2aTranslate(
+            android.hardware.radio.V1_0.CdmaRedirectingNumberInfoRecord in) {
+        android.hardware.radio.CdmaRedirectingNumberInfoRecord out =
+                new android.hardware.radio.CdmaRedirectingNumberInfoRecord();
+        out.redirectingNumber = h2aTranslate(in.redirectingNumber);
+        out.redirectingReason = in.redirectingReason;
+        return out;
+    }
+
+    static public android.hardware.radio.CdmaLineControlInfoRecord h2aTranslate(
+            android.hardware.radio.V1_0.CdmaLineControlInfoRecord in) {
+        android.hardware.radio.CdmaLineControlInfoRecord out =
+                new android.hardware.radio.CdmaLineControlInfoRecord();
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.lineCtrlPolarityIncluded > 127 || in.lineCtrlPolarityIncluded < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.lineCtrlPolarityIncluded");
+        }
+        out.lineCtrlPolarityIncluded = in.lineCtrlPolarityIncluded;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.lineCtrlToggle > 127 || in.lineCtrlToggle < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.lineCtrlToggle");
+        }
+        out.lineCtrlToggle = in.lineCtrlToggle;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.lineCtrlReverse > 127 || in.lineCtrlReverse < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.lineCtrlReverse");
+        }
+        out.lineCtrlReverse = in.lineCtrlReverse;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.lineCtrlPowerDenial > 127 || in.lineCtrlPowerDenial < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.lineCtrlPowerDenial");
+        }
+        out.lineCtrlPowerDenial = in.lineCtrlPowerDenial;
+        return out;
+    }
+
+    static public android.hardware.radio.CdmaT53ClirInfoRecord h2aTranslate(
+            android.hardware.radio.V1_0.CdmaT53ClirInfoRecord in) {
+        android.hardware.radio.CdmaT53ClirInfoRecord out =
+                new android.hardware.radio.CdmaT53ClirInfoRecord();
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.cause > 127 || in.cause < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.cause");
+        }
+        out.cause = in.cause;
+        return out;
+    }
+
+    static public android.hardware.radio.CdmaT53AudioControlInfoRecord h2aTranslate(
+            android.hardware.radio.V1_0.CdmaT53AudioControlInfoRecord in) {
+        android.hardware.radio.CdmaT53AudioControlInfoRecord out =
+                new android.hardware.radio.CdmaT53AudioControlInfoRecord();
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.upLink > 127 || in.upLink < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.upLink");
+        }
+        out.upLink = in.upLink;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.downLink > 127 || in.downLink < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.downLink");
+        }
+        out.downLink = in.downLink;
+        return out;
+    }
+
+    static public android.hardware.radio.CdmaInformationRecord h2aTranslate(
+            android.hardware.radio.V1_0.CdmaInformationRecord in) {
+        android.hardware.radio.CdmaInformationRecord out =
+                new android.hardware.radio.CdmaInformationRecord();
+        out.name = in.name;
+        if (in.display != null) {
+            out.display = new android.hardware.radio.CdmaDisplayInfoRecord[in.display.size()];
+            for (int i = 0; i < in.display.size(); i++) {
+                out.display[i] = h2aTranslate(in.display.get(i));
+            }
+        }
+        if (in.number != null) {
+            out.number = new android.hardware.radio.CdmaNumberInfoRecord[in.number.size()];
+            for (int i = 0; i < in.number.size(); i++) {
+                out.number[i] = h2aTranslate(in.number.get(i));
+            }
+        }
+        if (in.signal != null) {
+            out.signal = new android.hardware.radio.CdmaSignalInfoRecord[in.signal.size()];
+            for (int i = 0; i < in.signal.size(); i++) {
+                out.signal[i] = h2aTranslate(in.signal.get(i));
+            }
+        }
+        if (in.redir != null) {
+            out.redir = new android.hardware.radio.CdmaRedirectingNumberInfoRecord[in.redir.size()];
+            for (int i = 0; i < in.redir.size(); i++) {
+                out.redir[i] = h2aTranslate(in.redir.get(i));
+            }
+        }
+        if (in.lineCtrl != null) {
+            out.lineCtrl = new android.hardware.radio.CdmaLineControlInfoRecord[in.lineCtrl.size()];
+            for (int i = 0; i < in.lineCtrl.size(); i++) {
+                out.lineCtrl[i] = h2aTranslate(in.lineCtrl.get(i));
+            }
+        }
+        if (in.clir != null) {
+            out.clir = new android.hardware.radio.CdmaT53ClirInfoRecord[in.clir.size()];
+            for (int i = 0; i < in.clir.size(); i++) {
+                out.clir[i] = h2aTranslate(in.clir.get(i));
+            }
+        }
+        if (in.audioCtrl != null) {
+            out.audioCtrl =
+                    new android.hardware.radio.CdmaT53AudioControlInfoRecord[in.audioCtrl.size()];
+            for (int i = 0; i < in.audioCtrl.size(); i++) {
+                out.audioCtrl[i] = h2aTranslate(in.audioCtrl.get(i));
+            }
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.CdmaInformationRecords h2aTranslate(
+            android.hardware.radio.V1_0.CdmaInformationRecords in) {
+        android.hardware.radio.CdmaInformationRecords out =
+                new android.hardware.radio.CdmaInformationRecords();
+        if (in.infoRec != null) {
+            out.infoRec = new android.hardware.radio.CdmaInformationRecord[in.infoRec.size()];
+            for (int i = 0; i < in.infoRec.size(); i++) {
+                out.infoRec[i] = h2aTranslate(in.infoRec.get(i));
+            }
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.CfData h2aTranslate(
+            android.hardware.radio.V1_0.CfData in) {
+        android.hardware.radio.CfData out = new android.hardware.radio.CfData();
+        if (in.cfInfo != null) {
+            out.cfInfo = new android.hardware.radio.CallForwardInfo[in.cfInfo.size()];
+            for (int i = 0; i < in.cfInfo.size(); i++) {
+                out.cfInfo[i] = h2aTranslate(in.cfInfo.get(i));
+            }
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.SsInfoData h2aTranslate(
+            android.hardware.radio.V1_0.SsInfoData in) {
+        android.hardware.radio.SsInfoData out = new android.hardware.radio.SsInfoData();
+        if (in.ssInfo != null) {
+            out.ssInfo = new int[in.ssInfo.size()];
+            for (int i = 0; i < in.ssInfo.size(); i++) {
+                out.ssInfo[i] = in.ssInfo.get(i);
+            }
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.StkCcUnsolSsResult h2aTranslate(
+            android.hardware.radio.V1_0.StkCcUnsolSsResult in) {
+        android.hardware.radio.StkCcUnsolSsResult out =
+                new android.hardware.radio.StkCcUnsolSsResult();
+        out.serviceType = in.serviceType;
+        out.requestType = in.requestType;
+        out.teleserviceType = in.teleserviceType;
+        out.serviceClass = in.serviceClass;
+        out.result = in.result;
+        if (in.ssInfo != null) {
+            out.ssInfo = new android.hardware.radio.SsInfoData[in.ssInfo.size()];
+            for (int i = 0; i < in.ssInfo.size(); i++) {
+                out.ssInfo[i] = h2aTranslate(in.ssInfo.get(i));
+            }
+        }
+        if (in.cfData != null) {
+            out.cfData = new android.hardware.radio.CfData[in.cfData.size()];
+            for (int i = 0; i < in.cfData.size(); i++) {
+                out.cfData[i] = h2aTranslate(in.cfData.get(i));
+            }
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.PcoDataInfo h2aTranslate(
+            android.hardware.radio.V1_0.PcoDataInfo in) {
+        android.hardware.radio.PcoDataInfo out = new android.hardware.radio.PcoDataInfo();
+        out.cid = in.cid;
+        out.bearerProto = in.bearerProto;
+        out.pcoId = in.pcoId;
+        if (in.contents != null) {
+            out.contents = new byte[in.contents.size()];
+            for (int i = 0; i < in.contents.size(); i++) {
+                // FIXME This requires conversion between signed and unsigned. Change this if it
+                // doesn't suit your needs.
+                if (in.contents.get(i) > 127 || in.contents.get(i) < 0) {
+                    throw new RuntimeException(
+                            "Unsafe conversion between signed and unsigned scalars for field: in.contents.get(i)");
+                }
+                out.contents[i] = in.contents.get(i);
+            }
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.KeepaliveRequest h2aTranslate(
+            android.hardware.radio.V1_1.KeepaliveRequest in) {
+        android.hardware.radio.KeepaliveRequest out = new android.hardware.radio.KeepaliveRequest();
+        out.type = in.type;
+        if (in.sourceAddress != null) {
+            out.sourceAddress = new byte[in.sourceAddress.size()];
+            for (int i = 0; i < in.sourceAddress.size(); i++) {
+                // FIXME This requires conversion between signed and unsigned. Change this if it
+                // doesn't suit your needs.
+                if (in.sourceAddress.get(i) > 127 || in.sourceAddress.get(i) < 0) {
+                    throw new RuntimeException(
+                            "Unsafe conversion between signed and unsigned scalars for field: in.sourceAddress.get(i)");
+                }
+                out.sourceAddress[i] = in.sourceAddress.get(i);
+            }
+        }
+        out.sourcePort = in.sourcePort;
+        if (in.destinationAddress != null) {
+            out.destinationAddress = new byte[in.destinationAddress.size()];
+            for (int i = 0; i < in.destinationAddress.size(); i++) {
+                // FIXME This requires conversion between signed and unsigned. Change this if it
+                // doesn't suit your needs.
+                if (in.destinationAddress.get(i) > 127 || in.destinationAddress.get(i) < 0) {
+                    throw new RuntimeException(
+                            "Unsafe conversion between signed and unsigned scalars for field: in.destinationAddress.get(i)");
+                }
+                out.destinationAddress[i] = in.destinationAddress.get(i);
+            }
+        }
+        out.destinationPort = in.destinationPort;
+        out.maxKeepaliveIntervalMillis = in.maxKeepaliveIntervalMillis;
+        out.cid = in.cid;
+        return out;
+    }
+
+    static public android.hardware.radio.KeepaliveStatus h2aTranslate(
+            android.hardware.radio.V1_1.KeepaliveStatus in) {
+        android.hardware.radio.KeepaliveStatus out = new android.hardware.radio.KeepaliveStatus();
+        out.sessionHandle = in.sessionHandle;
+        out.code = in.code;
+        return out;
+    }
+
+    static public android.hardware.radio.CellIdentityOperatorNames h2aTranslate(
+            android.hardware.radio.V1_2.CellIdentityOperatorNames in) {
+        android.hardware.radio.CellIdentityOperatorNames out =
+                new android.hardware.radio.CellIdentityOperatorNames();
+        out.alphaLong = in.alphaLong;
+        out.alphaShort = in.alphaShort;
+        return out;
+    }
+
+    static public android.hardware.radio.CellIdentityCdma h2aTranslate(
+            android.hardware.radio.V1_2.CellIdentityCdma in) {
+        android.hardware.radio.CellIdentityCdma out = new android.hardware.radio.CellIdentityCdma();
+        out.networkId = in.base.networkId;
+        out.systemId = in.base.systemId;
+        out.baseStationId = in.base.baseStationId;
+        out.longitude = in.base.longitude;
+        out.latitude = in.base.latitude;
+        out.operatorNames = h2aTranslate(in.operatorNames);
+        return out;
+    }
+
+    static public android.hardware.radio.CellInfoCdma h2aTranslate(
+            android.hardware.radio.V1_2.CellInfoCdma in) {
+        android.hardware.radio.CellInfoCdma out = new android.hardware.radio.CellInfoCdma();
+        out.cellIdentityCdma = h2aTranslate(in.cellIdentityCdma);
+        out.signalStrengthCdma = h2aTranslate(in.signalStrengthCdma);
+        out.signalStrengthEvdo = h2aTranslate(in.signalStrengthEvdo);
+        return out;
+    }
+
+    static public android.hardware.radio.WcdmaSignalStrength h2aTranslate(
+            android.hardware.radio.V1_2.WcdmaSignalStrength in) {
+        android.hardware.radio.WcdmaSignalStrength out =
+                new android.hardware.radio.WcdmaSignalStrength();
+        out.signalStrength = in.base.signalStrength;
+        out.bitErrorRate = in.base.bitErrorRate;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.rscp > 2147483647 || in.rscp < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.rscp");
+        }
+        out.rscp = in.rscp;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.ecno > 2147483647 || in.ecno < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.ecno");
+        }
+        out.ecno = in.ecno;
+        return out;
+    }
+
+    static public android.hardware.radio.TdscdmaSignalStrength h2aTranslate(
+            android.hardware.radio.V1_2.TdscdmaSignalStrength in) {
+        android.hardware.radio.TdscdmaSignalStrength out =
+                new android.hardware.radio.TdscdmaSignalStrength();
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.signalStrength > 2147483647 || in.signalStrength < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.signalStrength");
+        }
+        out.signalStrength = in.signalStrength;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.bitErrorRate > 2147483647 || in.bitErrorRate < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.bitErrorRate");
+        }
+        out.bitErrorRate = in.bitErrorRate;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.rscp > 2147483647 || in.rscp < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.rscp");
+        }
+        out.rscp = in.rscp;
+        return out;
+    }
+
+    static public android.hardware.radio.VoiceRegStateResult h2aTranslate(
+            android.hardware.radio.V1_2.VoiceRegStateResult in) {
+        android.hardware.radio.VoiceRegStateResult out =
+                new android.hardware.radio.VoiceRegStateResult();
+        out.regState = in.regState;
+        out.rat = in.rat;
+        out.cssSupported = in.cssSupported;
+        out.roamingIndicator = in.roamingIndicator;
+        out.systemIsInPrl = in.systemIsInPrl;
+        out.defaultRoamingIndicator = in.defaultRoamingIndicator;
+        out.reasonForDenial = in.reasonForDenial;
+        // FIXME Unknown type: android.hardware.radio@1.2::CellIdentity
+        // That type's package needs to be converted separately and the corresponding translate
+        // function should be added here.
+        return out;
+    }
+
+    static public android.hardware.radio.RadioResponseInfoModem h2aTranslate(
+            android.hardware.radio.V1_3.RadioResponseInfoModem in) {
+        android.hardware.radio.RadioResponseInfoModem out =
+                new android.hardware.radio.RadioResponseInfoModem();
+        out.type = in.type;
+        out.serial = in.serial;
+        out.error = in.error;
+        out.isEnabled = in.isEnabled;
+        return out;
+    }
+
+    static public android.hardware.radio.EmergencyNumber h2aTranslate(
+            android.hardware.radio.V1_4.EmergencyNumber in) {
+        android.hardware.radio.EmergencyNumber out = new android.hardware.radio.EmergencyNumber();
+        out.number = in.number;
+        out.mcc = in.mcc;
+        out.mnc = in.mnc;
+        out.categories = in.categories;
+        if (in.urns != null) {
+            out.urns = new String[in.urns.size()];
+            for (int i = 0; i < in.urns.size(); i++) {
+                out.urns[i] = in.urns.get(i);
+            }
+        }
+        out.sources = in.sources;
+        return out;
+    }
+
+    static public android.hardware.radio.RadioFrequencyInfo h2aTranslate(
+            android.hardware.radio.V1_4.RadioFrequencyInfo in) {
+        android.hardware.radio.RadioFrequencyInfo out =
+                new android.hardware.radio.RadioFrequencyInfo();
+        switch (in.getDiscriminator()) {
+            case android.hardware.radio.V1_4.RadioFrequencyInfo.hidl_discriminator.range:
+                out.setRange(in.range());
+                break;
+            case android.hardware.radio.V1_4.RadioFrequencyInfo.hidl_discriminator.channelNumber:
+                out.setChannelNumber(in.channelNumber());
+                break;
+            default:
+                throw new RuntimeException(
+                        "Unknown discriminator value: " + Integer.toString(in.getDiscriminator()));
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.LteVopsInfo h2aTranslate(
+            android.hardware.radio.V1_4.LteVopsInfo in) {
+        android.hardware.radio.LteVopsInfo out = new android.hardware.radio.LteVopsInfo();
+        out.isVopsSupported = in.isVopsSupported;
+        out.isEmcBearerSupported = in.isEmcBearerSupported;
+        return out;
+    }
+
+    static public android.hardware.radio.NrIndicators h2aTranslate(
+            android.hardware.radio.V1_4.NrIndicators in) {
+        android.hardware.radio.NrIndicators out = new android.hardware.radio.NrIndicators();
+        out.isEndcAvailable = in.isEndcAvailable;
+        out.isDcNrRestricted = in.isDcNrRestricted;
+        out.isNrAvailable = in.isNrAvailable;
+        return out;
+    }
+
+    static public android.hardware.radio.DataRegStateResult h2aTranslate(
+            android.hardware.radio.V1_4.DataRegStateResult in) {
+        android.hardware.radio.DataRegStateResult out =
+                new android.hardware.radio.DataRegStateResult();
+        out.regState = in.base.regState;
+        out.rat = in.base.rat;
+        out.reasonDataDenied = in.base.reasonDataDenied;
+        out.maxDataCalls = in.base.maxDataCalls;
+        // FIXME Unknown type: android.hardware.radio@1.2::CellIdentity
+        // That type's package needs to be converted separately and the corresponding translate
+        // function should be added here.
+        out.vopsInfo = h2aTranslate(in.vopsInfo);
+        out.nrIndicators = h2aTranslate(in.nrIndicators);
+        return out;
+    }
+
+    static public android.hardware.radio.DataRegStateResultVopsInfo h2aTranslate(
+            android.hardware.radio.V1_4.DataRegStateResult.VopsInfo in) {
+        android.hardware.radio.DataRegStateResultVopsInfo out =
+                new android.hardware.radio.DataRegStateResultVopsInfo();
+        switch (in.getDiscriminator()) {
+            case android.hardware.radio.V1_4.DataRegStateResult.VopsInfo.hidl_discriminator.noinit:
+                // Nothing to translate for Monostate.
+                break;
+            case android.hardware.radio.V1_4.DataRegStateResult.VopsInfo.hidl_discriminator
+                    .lteVopsInfo:
+                out.setLteVopsInfo(h2aTranslate(in.lteVopsInfo()));
+                break;
+            default:
+                throw new RuntimeException(
+                        "Unknown discriminator value: " + Integer.toString(in.getDiscriminator()));
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.CellConfigLte h2aTranslate(
+            android.hardware.radio.V1_4.CellConfigLte in) {
+        android.hardware.radio.CellConfigLte out = new android.hardware.radio.CellConfigLte();
+        out.isEndcAvailable = in.isEndcAvailable;
+        return out;
+    }
+
+    static public android.hardware.radio.CellInfoInfo h2aTranslate(
+            android.hardware.radio.V1_4.CellInfo.Info in) {
+        android.hardware.radio.CellInfoInfo out = new android.hardware.radio.CellInfoInfo();
+        switch (in.getDiscriminator()) {
+            case android.hardware.radio.V1_4.CellInfo.Info.hidl_discriminator.gsm:
+                // FIXME Unknown type: android.hardware.radio@1.2::CellInfoGsm
+                // That type's package needs to be converted separately and the corresponding
+                // translate function should be added here.
+                break;
+            case android.hardware.radio.V1_4.CellInfo.Info.hidl_discriminator.cdma:
+                out.setCdma(h2aTranslate(in.cdma()));
+                break;
+            case android.hardware.radio.V1_4.CellInfo.Info.hidl_discriminator.wcdma:
+                // FIXME Unknown type: android.hardware.radio@1.2::CellInfoWcdma
+                // That type's package needs to be converted separately and the corresponding
+                // translate function should be added here.
+                break;
+            case android.hardware.radio.V1_4.CellInfo.Info.hidl_discriminator.tdscdma:
+                // FIXME Unknown type: android.hardware.radio@1.2::CellInfoTdscdma
+                // That type's package needs to be converted separately and the corresponding
+                // translate function should be added here.
+                break;
+            case android.hardware.radio.V1_4.CellInfo.Info.hidl_discriminator.lte:
+                // FIXME Unknown type: android.hardware.radio@1.4::CellInfoLte
+                // That type's package needs to be converted separately and the corresponding
+                // translate function should be added here.
+                break;
+            case android.hardware.radio.V1_4.CellInfo.Info.hidl_discriminator.nr:
+                // FIXME Unknown type: android.hardware.radio@1.4::CellInfoNr
+                // That type's package needs to be converted separately and the corresponding
+                // translate function should be added here.
+                break;
+            default:
+                throw new RuntimeException(
+                        "Unknown discriminator value: " + Integer.toString(in.getDiscriminator()));
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.RadioCapability h2aTranslate(
+            android.hardware.radio.V1_4.RadioCapability in) {
+        android.hardware.radio.RadioCapability out = new android.hardware.radio.RadioCapability();
+        out.session = in.session;
+        out.phase = in.phase;
+        out.raf = in.raf;
+        out.logicalModemUuid = in.logicalModemUuid;
+        out.status = in.status;
+        return out;
+    }
+
+    static public android.hardware.radio.CarrierRestrictionsWithPriority h2aTranslate(
+            android.hardware.radio.V1_4.CarrierRestrictionsWithPriority in) {
+        android.hardware.radio.CarrierRestrictionsWithPriority out =
+                new android.hardware.radio.CarrierRestrictionsWithPriority();
+        if (in.allowedCarriers != null) {
+            out.allowedCarriers = new android.hardware.radio.Carrier[in.allowedCarriers.size()];
+            for (int i = 0; i < in.allowedCarriers.size(); i++) {
+                out.allowedCarriers[i] = h2aTranslate(in.allowedCarriers.get(i));
+            }
+        }
+        if (in.excludedCarriers != null) {
+            out.excludedCarriers = new android.hardware.radio.Carrier[in.excludedCarriers.size()];
+            for (int i = 0; i < in.excludedCarriers.size(); i++) {
+                out.excludedCarriers[i] = h2aTranslate(in.excludedCarriers.get(i));
+            }
+        }
+        out.allowedCarriersPrioritized = in.allowedCarriersPrioritized;
+        return out;
+    }
+
+    static public android.hardware.radio.RadioAccessSpecifier h2aTranslate(
+            android.hardware.radio.V1_5.RadioAccessSpecifier in) {
+        android.hardware.radio.RadioAccessSpecifier out =
+                new android.hardware.radio.RadioAccessSpecifier();
+        out.radioAccessNetwork = in.radioAccessNetwork;
+        out.bands = h2aTranslate(in.bands);
+        if (in.channels != null) {
+            out.channels = new int[in.channels.size()];
+            for (int i = 0; i < in.channels.size(); i++) {
+                out.channels[i] = in.channels.get(i);
+            }
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.RadioAccessSpecifierBands h2aTranslate(
+            android.hardware.radio.V1_5.RadioAccessSpecifier.Bands in) {
+        android.hardware.radio.RadioAccessSpecifierBands out =
+                new android.hardware.radio.RadioAccessSpecifierBands();
+        List<Integer> bands;
+        switch (in.getDiscriminator()) {
+            case android.hardware.radio.V1_5.RadioAccessSpecifier.Bands.hidl_discriminator
+                    .geranBands:
+                bands = in.geranBands();
+                if (bands != null) {
+                    int[] geranBands = new int[bands.size()];
+                    for (int i = 0; i < bands.size(); i++) {
+                        geranBands[i] = bands.get(i);
+                    }
+                    out.geranBands(geranBands);
+                }
+                break;
+            case android.hardware.radio.V1_5.RadioAccessSpecifier.Bands.hidl_discriminator
+                    .utranBands:
+                bands = in.utranBands();
+                if (bands != null) {
+                    int[] utranBands = new int[bands.size()];
+                    for (int i = 0; i < bands.size(); i++) {
+                        utranBands[i] = bands.get(i);
+                    }
+                    out.utranBands(utranBands);
+                }
+                break;
+            case android.hardware.radio.V1_5.RadioAccessSpecifier.Bands.hidl_discriminator
+                    .eutranBands:
+                bands = in.eutranBands();
+                if (bands != null) {
+                    int[] eutranBands = new int[bands.size()];
+                    for (int i = 0; i < bands.size(); i++) {
+                        eutranBands[i] = bands.get(i);
+                    }
+                    out.eutranBands(eutranBands);
+                }
+                break;
+            case android.hardware.radio.V1_5.RadioAccessSpecifier.Bands.hidl_discriminator
+                    .ngranBands:
+                bands = in.ngranBands();
+                if (bands != null) {
+                    int[] ngranBands = new int[bands.size()];
+                    for (int i = 0; i < bands.size(); i++) {
+                        ngranBands[i] = bands.get(i);
+                    }
+                    out.ngranBands(ngranBands);
+                }
+                break;
+            default:
+                throw new RuntimeException(
+                        "Unknown discriminator value: " + Integer.toString(in.getDiscriminator()));
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.SignalThresholdInfo h2aTranslate(
+            android.hardware.radio.V1_5.SignalThresholdInfo in) {
+        android.hardware.radio.SignalThresholdInfo out =
+                new android.hardware.radio.SignalThresholdInfo();
+        out.signalMeasurement = in.signalMeasurement;
+        out.hysteresisMs = in.hysteresisMs;
+        out.hysteresisDb = in.hysteresisDb;
+        if (in.thresholds != null) {
+            out.thresholds = new int[in.thresholds.size()];
+            for (int i = 0; i < in.thresholds.size(); i++) {
+                out.thresholds[i] = in.thresholds.get(i);
+            }
+        }
+        out.isEnabled = in.isEnabled;
+        return out;
+    }
+
+    static public android.hardware.radio.NetworkScanRequest h2aTranslate(
+            android.hardware.radio.V1_5.NetworkScanRequest in) {
+        android.hardware.radio.NetworkScanRequest out =
+                new android.hardware.radio.NetworkScanRequest();
+        out.type = in.type;
+        out.interval = in.interval;
+        if (in.specifiers != null) {
+            out.specifiers = new android.hardware.radio.RadioAccessSpecifier[in.specifiers.size()];
+            for (int i = 0; i < in.specifiers.size(); i++) {
+                out.specifiers[i] = h2aTranslate(in.specifiers.get(i));
+            }
+        }
+        out.maxSearchTime = in.maxSearchTime;
+        out.incrementalResults = in.incrementalResults;
+        out.incrementalResultsPeriodicity = in.incrementalResultsPeriodicity;
+        if (in.mccMncs != null) {
+            out.mccMncs = new String[in.mccMncs.size()];
+            for (int i = 0; i < in.mccMncs.size(); i++) {
+                out.mccMncs[i] = in.mccMncs.get(i);
+            }
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.DataProfileInfo h2aTranslate(
+            android.hardware.radio.V1_5.DataProfileInfo in) {
+        android.hardware.radio.DataProfileInfo out = new android.hardware.radio.DataProfileInfo();
+        out.profileId = in.profileId;
+        out.apn = in.apn;
+        out.protocol = in.protocol;
+        out.roamingProtocol = in.roamingProtocol;
+        out.authType = in.authType;
+        out.user = in.user;
+        out.password = in.password;
+        out.type = in.type;
+        out.maxConnsTime = in.maxConnsTime;
+        out.maxConns = in.maxConns;
+        out.waitTime = in.waitTime;
+        out.enabled = in.enabled;
+        out.supportedApnTypesBitmap = in.supportedApnTypesBitmap;
+        out.bearerBitmap = in.bearerBitmap;
+        out.mtuV4 = in.mtuV4;
+        out.mtuV6 = in.mtuV6;
+        out.preferred = in.preferred;
+        out.persistent = in.persistent;
+        return out;
+    }
+
+    static public android.hardware.radio.LinkAddress h2aTranslate(
+            android.hardware.radio.V1_5.LinkAddress in) {
+        android.hardware.radio.LinkAddress out = new android.hardware.radio.LinkAddress();
+        out.address = in.address;
+        out.properties = in.properties;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.deprecationTime > 9223372036854775807L || in.deprecationTime < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.deprecationTime");
+        }
+        out.deprecationTime = in.deprecationTime;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.expirationTime > 9223372036854775807L || in.expirationTime < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.expirationTime");
+        }
+        out.expirationTime = in.expirationTime;
+        return out;
+    }
+
+    static public android.hardware.radio.ClosedSubscriberGroupInfo h2aTranslate(
+            android.hardware.radio.V1_5.ClosedSubscriberGroupInfo in) {
+        android.hardware.radio.ClosedSubscriberGroupInfo out =
+                new android.hardware.radio.ClosedSubscriberGroupInfo();
+        out.csgIndication = in.csgIndication;
+        out.homeNodebName = in.homeNodebName;
+        out.csgIdentity = in.csgIdentity;
+        return out;
+    }
+
+    static public android.hardware.radio.OptionalCsgInfo h2aTranslate(
+            android.hardware.radio.V1_5.OptionalCsgInfo in) {
+        android.hardware.radio.OptionalCsgInfo out = new android.hardware.radio.OptionalCsgInfo();
+        switch (in.getDiscriminator()) {
+            case android.hardware.radio.V1_5.OptionalCsgInfo.hidl_discriminator.noinit:
+                // Nothing to translate for Monostate.
+                break;
+            case android.hardware.radio.V1_5.OptionalCsgInfo.hidl_discriminator.csgInfo:
+                out.setCsgInfo(h2aTranslate(in.csgInfo()));
+                break;
+            default:
+                throw new RuntimeException(
+                        "Unknown discriminator value: " + Integer.toString(in.getDiscriminator()));
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.CellIdentityGsm h2aTranslate(
+            android.hardware.radio.V1_5.CellIdentityGsm in) {
+        android.hardware.radio.CellIdentityGsm out = new android.hardware.radio.CellIdentityGsm();
+        out.mcc = in.base.base.mcc;
+        out.mnc = in.base.base.mnc;
+        out.lac = in.base.base.lac;
+        out.cid = in.base.base.cid;
+        out.arfcn = in.base.base.arfcn;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.base.base.bsic > 127 || in.base.base.bsic < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.base.base.bsic");
+        }
+        out.bsic = in.base.base.bsic;
+        out.operatorNames = h2aTranslate(in.base.operatorNames);
+        if (in.additionalPlmns != null) {
+            out.additionalPlmns = new String[in.additionalPlmns.size()];
+            for (int i = 0; i < in.additionalPlmns.size(); i++) {
+                out.additionalPlmns[i] = in.additionalPlmns.get(i);
+            }
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.CellIdentityWcdma h2aTranslate(
+            android.hardware.radio.V1_5.CellIdentityWcdma in) {
+        android.hardware.radio.CellIdentityWcdma out =
+                new android.hardware.radio.CellIdentityWcdma();
+        out.mcc = in.base.base.mcc;
+        out.mnc = in.base.base.mnc;
+        out.lac = in.base.base.lac;
+        out.cid = in.base.base.cid;
+        out.psc = in.base.base.psc;
+        out.uarfcn = in.base.base.uarfcn;
+        out.operatorNames = h2aTranslate(in.base.operatorNames);
+        if (in.additionalPlmns != null) {
+            out.additionalPlmns = new String[in.additionalPlmns.size()];
+            for (int i = 0; i < in.additionalPlmns.size(); i++) {
+                out.additionalPlmns[i] = in.additionalPlmns.get(i);
+            }
+        }
+        out.optionalCsgInfo = h2aTranslate(in.optionalCsgInfo);
+        return out;
+    }
+
+    static public android.hardware.radio.CellIdentityTdscdma h2aTranslate(
+            android.hardware.radio.V1_5.CellIdentityTdscdma in) {
+        android.hardware.radio.CellIdentityTdscdma out =
+                new android.hardware.radio.CellIdentityTdscdma();
+        out.mcc = in.base.base.mcc;
+        out.mnc = in.base.base.mnc;
+        out.lac = in.base.base.lac;
+        out.cid = in.base.base.cid;
+        out.cpid = in.base.base.cpid;
+        out.uarfcn = in.base.uarfcn;
+        out.operatorNames = h2aTranslate(in.base.operatorNames);
+        if (in.additionalPlmns != null) {
+            out.additionalPlmns = new String[in.additionalPlmns.size()];
+            for (int i = 0; i < in.additionalPlmns.size(); i++) {
+                out.additionalPlmns[i] = in.additionalPlmns.get(i);
+            }
+        }
+        out.optionalCsgInfo = h2aTranslate(in.optionalCsgInfo);
+        return out;
+    }
+
+    static public android.hardware.radio.CellIdentityLte h2aTranslate(
+            android.hardware.radio.V1_5.CellIdentityLte in) {
+        android.hardware.radio.CellIdentityLte out = new android.hardware.radio.CellIdentityLte();
+        out.mcc = in.base.base.mcc;
+        out.mnc = in.base.base.mnc;
+        out.ci = in.base.base.ci;
+        out.pci = in.base.base.pci;
+        out.tac = in.base.base.tac;
+        out.earfcn = in.base.base.earfcn;
+        out.operatorNames = h2aTranslate(in.base.operatorNames);
+        out.bandwidth = in.base.bandwidth;
+        if (in.additionalPlmns != null) {
+            out.additionalPlmns = new String[in.additionalPlmns.size()];
+            for (int i = 0; i < in.additionalPlmns.size(); i++) {
+                out.additionalPlmns[i] = in.additionalPlmns.get(i);
+            }
+        }
+        out.optionalCsgInfo = h2aTranslate(in.optionalCsgInfo);
+        if (in.bands != null) {
+            out.bands = new int[in.bands.size()];
+            for (int i = 0; i < in.bands.size(); i++) {
+                out.bands[i] = in.bands.get(i);
+            }
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.CellIdentityNr h2aTranslate(
+            android.hardware.radio.V1_5.CellIdentityNr in) {
+        android.hardware.radio.CellIdentityNr out = new android.hardware.radio.CellIdentityNr();
+        out.mcc = in.base.mcc;
+        out.mnc = in.base.mnc;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.base.nci > 9223372036854775807L || in.base.nci < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.base.nci");
+        }
+        out.nci = in.base.nci;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.base.pci > 2147483647 || in.base.pci < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.base.pci");
+        }
+        out.pci = in.base.pci;
+        out.tac = in.base.tac;
+        out.nrarfcn = in.base.nrarfcn;
+        out.operatorNames = h2aTranslate(in.base.operatorNames);
+        if (in.additionalPlmns != null) {
+            out.additionalPlmns = new String[in.additionalPlmns.size()];
+            for (int i = 0; i < in.additionalPlmns.size(); i++) {
+                out.additionalPlmns[i] = in.additionalPlmns.get(i);
+            }
+        }
+        if (in.bands != null) {
+            out.bands = new int[in.bands.size()];
+            for (int i = 0; i < in.bands.size(); i++) {
+                out.bands[i] = in.bands.get(i);
+            }
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.CellInfoGsm h2aTranslate(
+            android.hardware.radio.V1_5.CellInfoGsm in) {
+        android.hardware.radio.CellInfoGsm out = new android.hardware.radio.CellInfoGsm();
+        out.cellIdentityGsm = h2aTranslate(in.cellIdentityGsm);
+        out.signalStrengthGsm = h2aTranslate(in.signalStrengthGsm);
+        return out;
+    }
+
+    static public android.hardware.radio.CellInfoWcdma h2aTranslate(
+            android.hardware.radio.V1_5.CellInfoWcdma in) {
+        android.hardware.radio.CellInfoWcdma out = new android.hardware.radio.CellInfoWcdma();
+        out.cellIdentityWcdma = h2aTranslate(in.cellIdentityWcdma);
+        out.signalStrengthWcdma = h2aTranslate(in.signalStrengthWcdma);
+        return out;
+    }
+
+    static public android.hardware.radio.CellInfoTdscdma h2aTranslate(
+            android.hardware.radio.V1_5.CellInfoTdscdma in) {
+        android.hardware.radio.CellInfoTdscdma out = new android.hardware.radio.CellInfoTdscdma();
+        out.cellIdentityTdscdma = h2aTranslate(in.cellIdentityTdscdma);
+        out.signalStrengthTdscdma = h2aTranslate(in.signalStrengthTdscdma);
+        return out;
+    }
+
+    static public android.hardware.radio.CellIdentity h2aTranslate(
+            android.hardware.radio.V1_5.CellIdentity in) {
+        android.hardware.radio.CellIdentity out = new android.hardware.radio.CellIdentity();
+        switch (in.getDiscriminator()) {
+            case android.hardware.radio.V1_5.CellIdentity.hidl_discriminator.noinit:
+                // Nothing to translate for Monostate.
+                break;
+            case android.hardware.radio.V1_5.CellIdentity.hidl_discriminator.gsm:
+                out.setGsm(h2aTranslate(in.gsm()));
+                break;
+            case android.hardware.radio.V1_5.CellIdentity.hidl_discriminator.wcdma:
+                out.setWcdma(h2aTranslate(in.wcdma()));
+                break;
+            case android.hardware.radio.V1_5.CellIdentity.hidl_discriminator.tdscdma:
+                out.setTdscdma(h2aTranslate(in.tdscdma()));
+                break;
+            case android.hardware.radio.V1_5.CellIdentity.hidl_discriminator.cdma:
+                out.setCdma(h2aTranslate(in.cdma()));
+                break;
+            case android.hardware.radio.V1_5.CellIdentity.hidl_discriminator.lte:
+                out.setLte(h2aTranslate(in.lte()));
+                break;
+            case android.hardware.radio.V1_5.CellIdentity.hidl_discriminator.nr:
+                out.setNr(h2aTranslate(in.nr()));
+                break;
+            default:
+                throw new RuntimeException(
+                        "Unknown discriminator value: " + Integer.toString(in.getDiscriminator()));
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.BarringInfo h2aTranslate(
+            android.hardware.radio.V1_5.BarringInfo in) {
+        android.hardware.radio.BarringInfo out = new android.hardware.radio.BarringInfo();
+        out.serviceType = in.serviceType;
+        out.barringType = in.barringType;
+        out.barringTypeSpecificInfo = h2aTranslate(in.barringTypeSpecificInfo);
+        return out;
+    }
+
+    static public android.hardware.radio.BarringInfoBarringTypeSpecificInfoConditional h2aTranslate(
+            android.hardware.radio.V1_5.BarringInfo.BarringTypeSpecificInfo.Conditional in) {
+        android.hardware.radio.BarringInfoBarringTypeSpecificInfoConditional out =
+                new android.hardware.radio.BarringInfoBarringTypeSpecificInfoConditional();
+        out.factor = in.factor;
+        out.timeSeconds = in.timeSeconds;
+        out.isBarred = in.isBarred;
+        return out;
+    }
+
+    static public android.hardware.radio.BarringInfoBarringTypeSpecificInfo h2aTranslate(
+            android.hardware.radio.V1_5.BarringInfo.BarringTypeSpecificInfo in) {
+        android.hardware.radio.BarringInfoBarringTypeSpecificInfo out =
+                new android.hardware.radio.BarringInfoBarringTypeSpecificInfo();
+        switch (in.getDiscriminator()) {
+            case android.hardware.radio.V1_5.BarringInfo.BarringTypeSpecificInfo.hidl_discriminator
+                    .noinit:
+                // Nothing to translate for Monostate.
+                break;
+            case android.hardware.radio.V1_5.BarringInfo.BarringTypeSpecificInfo.hidl_discriminator
+                    .conditional:
+                out.setConditional(h2aTranslate(in.conditional()));
+                break;
+            default:
+                throw new RuntimeException(
+                        "Unknown discriminator value: " + Integer.toString(in.getDiscriminator()));
+        }
+        return out;
+    }
+
+    static public android.hardware.radio
+            .RegStateResultAccessTechnologySpecificInfoCdma2000RegistrationInfo
+            h2aTranslate(android.hardware.radio.V1_5.RegStateResult.AccessTechnologySpecificInfo
+                                 .Cdma2000RegistrationInfo in) {
+        android.hardware.radio
+                .RegStateResultAccessTechnologySpecificInfoCdma2000RegistrationInfo out =
+                new android.hardware.radio
+                        .RegStateResultAccessTechnologySpecificInfoCdma2000RegistrationInfo();
+        out.cssSupported = in.cssSupported;
+        out.roamingIndicator = in.roamingIndicator;
+        out.systemIsInPrl = in.systemIsInPrl;
+        out.defaultRoamingIndicator = in.defaultRoamingIndicator;
+        return out;
+    }
+
+    static public android.hardware.radio
+            .RegStateResultAccessTechnologySpecificInfoEutranRegistrationInfo
+            h2aTranslate(android.hardware.radio.V1_5.RegStateResult.AccessTechnologySpecificInfo
+                                 .EutranRegistrationInfo in) {
+        android.hardware.radio
+                .RegStateResultAccessTechnologySpecificInfoEutranRegistrationInfo out =
+                new android.hardware.radio
+                        .RegStateResultAccessTechnologySpecificInfoEutranRegistrationInfo();
+        out.lteVopsInfo = h2aTranslate(in.lteVopsInfo);
+        out.nrIndicators = h2aTranslate(in.nrIndicators);
+        return out;
+    }
+
+    static public android.hardware.radio.AppStatus h2aTranslate(
+            android.hardware.radio.V1_5.AppStatus in) {
+        android.hardware.radio.AppStatus out = new android.hardware.radio.AppStatus();
+        out.appType = in.base.appType;
+        out.appState = in.base.appState;
+        out.persoSubstate = in.persoSubstate;
+        out.aidPtr = in.base.aidPtr;
+        out.appLabelPtr = in.base.appLabelPtr;
+        out.pin1Replaced = in.base.pin1Replaced;
+        out.pin1 = in.base.pin1;
+        out.pin2 = in.base.pin2;
+        return out;
+    }
+
+    static public android.hardware.radio.CardStatus h2aTranslate(
+            android.hardware.radio.V1_5.CardStatus in) {
+        android.hardware.radio.CardStatus out = new android.hardware.radio.CardStatus();
+        out.cardState = in.base.base.base.cardState;
+        out.universalPinState = in.base.base.base.universalPinState;
+        out.gsmUmtsSubscriptionAppIndex = in.base.base.base.gsmUmtsSubscriptionAppIndex;
+        out.cdmaSubscriptionAppIndex = in.base.base.base.cdmaSubscriptionAppIndex;
+        out.imsSubscriptionAppIndex = in.base.base.base.imsSubscriptionAppIndex;
+        if (in.applications != null) {
+            out.applications = new android.hardware.radio.AppStatus[in.applications.size()];
+            for (int i = 0; i < in.applications.size(); i++) {
+                out.applications[i] = h2aTranslate(in.applications.get(i));
+            }
+        }
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.base.base.physicalSlotId > 2147483647 || in.base.base.physicalSlotId < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.base.base.physicalSlotId");
+        }
+        out.physicalSlotId = in.base.base.physicalSlotId;
+        out.atr = in.base.base.atr;
+        out.iccid = in.base.base.iccid;
+        out.eid = in.base.eid;
+        return out;
+    }
+
+    static public android.hardware.radio.QosBandwidth h2aTranslate(
+            android.hardware.radio.V1_6.QosBandwidth in) {
+        android.hardware.radio.QosBandwidth out = new android.hardware.radio.QosBandwidth();
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.maxBitrateKbps > 2147483647 || in.maxBitrateKbps < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.maxBitrateKbps");
+        }
+        out.maxBitrateKbps = in.maxBitrateKbps;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.guaranteedBitrateKbps > 2147483647 || in.guaranteedBitrateKbps < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.guaranteedBitrateKbps");
+        }
+        out.guaranteedBitrateKbps = in.guaranteedBitrateKbps;
+        return out;
+    }
+
+    static public android.hardware.radio.EpsQos h2aTranslate(
+            android.hardware.radio.V1_6.EpsQos in) {
+        android.hardware.radio.EpsQos out = new android.hardware.radio.EpsQos();
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.qci < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.qci");
+        }
+        out.qci = (char) in.qci;
+        out.downlink = h2aTranslate(in.downlink);
+        out.uplink = h2aTranslate(in.uplink);
+        return out;
+    }
+
+    static public android.hardware.radio.NrQos h2aTranslate(android.hardware.radio.V1_6.NrQos in) {
+        android.hardware.radio.NrQos out = new android.hardware.radio.NrQos();
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.fiveQi < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.fiveQi");
+        }
+        out.fiveQi = (char) in.fiveQi;
+        out.downlink = h2aTranslate(in.downlink);
+        out.uplink = h2aTranslate(in.uplink);
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.qfi > 127 || in.qfi < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.qfi");
+        }
+        out.qfi = in.qfi;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.averagingWindowMs < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.averagingWindowMs");
+        }
+        out.averagingWindowMs = (char) in.averagingWindowMs;
+        return out;
+    }
+
+    static public android.hardware.radio.Qos h2aTranslate(android.hardware.radio.V1_6.Qos in) {
+        android.hardware.radio.Qos out = new android.hardware.radio.Qos();
+        switch (in.getDiscriminator()) {
+            case android.hardware.radio.V1_6.Qos.hidl_discriminator.noinit:
+                // Nothing to translate for Monostate.
+                break;
+            case android.hardware.radio.V1_6.Qos.hidl_discriminator.eps:
+                out.setEps(h2aTranslate(in.eps()));
+                break;
+            case android.hardware.radio.V1_6.Qos.hidl_discriminator.nr:
+                out.setNr(h2aTranslate(in.nr()));
+                break;
+            default:
+                throw new RuntimeException(
+                        "Unknown discriminator value: " + Integer.toString(in.getDiscriminator()));
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.RadioResponseInfo h2aTranslate(
+            android.hardware.radio.V1_6.RadioResponseInfo in) {
+        android.hardware.radio.RadioResponseInfo out =
+                new android.hardware.radio.RadioResponseInfo();
+        out.type = in.type;
+        out.serial = in.serial;
+        out.error = in.error;
+        return out;
+    }
+
+    static public android.hardware.radio.PortRange h2aTranslate(
+            android.hardware.radio.V1_6.PortRange in) {
+        android.hardware.radio.PortRange out = new android.hardware.radio.PortRange();
+        out.start = in.start;
+        out.end = in.end;
+        return out;
+    }
+
+    static public android.hardware.radio.MaybePort h2aTranslate(
+            android.hardware.radio.V1_6.MaybePort in) {
+        android.hardware.radio.MaybePort out = new android.hardware.radio.MaybePort();
+        switch (in.getDiscriminator()) {
+            case android.hardware.radio.V1_6.MaybePort.hidl_discriminator.noinit:
+                // Nothing to translate for Monostate.
+                break;
+            case android.hardware.radio.V1_6.MaybePort.hidl_discriminator.range:
+                out.setRange(h2aTranslate(in.range()));
+                break;
+            default:
+                throw new RuntimeException(
+                        "Unknown discriminator value: " + Integer.toString(in.getDiscriminator()));
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.QosFilter h2aTranslate(
+            android.hardware.radio.V1_6.QosFilter in) {
+        android.hardware.radio.QosFilter out = new android.hardware.radio.QosFilter();
+        if (in.localAddresses != null) {
+            out.localAddresses = new String[in.localAddresses.size()];
+            for (int i = 0; i < in.localAddresses.size(); i++) {
+                out.localAddresses[i] = in.localAddresses.get(i);
+            }
+        }
+        if (in.remoteAddresses != null) {
+            out.remoteAddresses = new String[in.remoteAddresses.size()];
+            for (int i = 0; i < in.remoteAddresses.size(); i++) {
+                out.remoteAddresses[i] = in.remoteAddresses.get(i);
+            }
+        }
+        out.localPort = h2aTranslate(in.localPort);
+        out.remotePort = h2aTranslate(in.remotePort);
+        out.protocol = in.protocol;
+        out.tos = h2aTranslate(in.tos);
+        out.flowLabel = h2aTranslate(in.flowLabel);
+        out.spi = h2aTranslate(in.spi);
+        out.direction = in.direction;
+        out.precedence = in.precedence;
+        return out;
+    }
+
+    static public android.hardware.radio.QosFilterTypeOfService h2aTranslate(
+            android.hardware.radio.V1_6.QosFilter.TypeOfService in) {
+        android.hardware.radio.QosFilterTypeOfService out =
+                new android.hardware.radio.QosFilterTypeOfService();
+        switch (in.getDiscriminator()) {
+            case android.hardware.radio.V1_6.QosFilter.TypeOfService.hidl_discriminator.noinit:
+                // Nothing to translate for Monostate.
+                break;
+            case android.hardware.radio.V1_6.QosFilter.TypeOfService.hidl_discriminator.value:
+                // FIXME This requires conversion between signed and unsigned. Change this if it
+                // doesn't suit your needs.
+                if (in.value() > 127 || in.value() < 0) {
+                    throw new RuntimeException(
+                            "Unsafe conversion between signed and unsigned scalars for field: in.value()");
+                }
+                out.setValue(in.value());
+                break;
+            default:
+                throw new RuntimeException(
+                        "Unknown discriminator value: " + Integer.toString(in.getDiscriminator()));
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.QosFilterIpv6FlowLabel h2aTranslate(
+            android.hardware.radio.V1_6.QosFilter.Ipv6FlowLabel in) {
+        android.hardware.radio.QosFilterIpv6FlowLabel out =
+                new android.hardware.radio.QosFilterIpv6FlowLabel();
+        switch (in.getDiscriminator()) {
+            case android.hardware.radio.V1_6.QosFilter.Ipv6FlowLabel.hidl_discriminator.noinit:
+                // Nothing to translate for Monostate.
+                break;
+            case android.hardware.radio.V1_6.QosFilter.Ipv6FlowLabel.hidl_discriminator.value:
+                // FIXME This requires conversion between signed and unsigned. Change this if it
+                // doesn't suit your needs.
+                if (in.value() > 2147483647 || in.value() < 0) {
+                    throw new RuntimeException(
+                            "Unsafe conversion between signed and unsigned scalars for field: in.value()");
+                }
+                out.setValue(in.value());
+                break;
+            default:
+                throw new RuntimeException(
+                        "Unknown discriminator value: " + Integer.toString(in.getDiscriminator()));
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.QosFilterIpsecSpi h2aTranslate(
+            android.hardware.radio.V1_6.QosFilter.IpsecSpi in) {
+        android.hardware.radio.QosFilterIpsecSpi out =
+                new android.hardware.radio.QosFilterIpsecSpi();
+        switch (in.getDiscriminator()) {
+            case android.hardware.radio.V1_6.QosFilter.IpsecSpi.hidl_discriminator.noinit:
+                // Nothing to translate for Monostate.
+                break;
+            case android.hardware.radio.V1_6.QosFilter.IpsecSpi.hidl_discriminator.value:
+                // FIXME This requires conversion between signed and unsigned. Change this if it
+                // doesn't suit your needs.
+                if (in.value() > 2147483647 || in.value() < 0) {
+                    throw new RuntimeException(
+                            "Unsafe conversion between signed and unsigned scalars for field: in.value()");
+                }
+                out.setValue(in.value());
+                break;
+            default:
+                throw new RuntimeException(
+                        "Unknown discriminator value: " + Integer.toString(in.getDiscriminator()));
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.QosSession h2aTranslate(
+            android.hardware.radio.V1_6.QosSession in) {
+        android.hardware.radio.QosSession out = new android.hardware.radio.QosSession();
+        out.qosSessionId = in.qosSessionId;
+        out.qos = h2aTranslate(in.qos);
+        if (in.qosFilters != null) {
+            out.qosFilters = new android.hardware.radio.QosFilter[in.qosFilters.size()];
+            for (int i = 0; i < in.qosFilters.size(); i++) {
+                out.qosFilters[i] = h2aTranslate(in.qosFilters.get(i));
+            }
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.SetupDataCallResult h2aTranslate(
+            android.hardware.radio.V1_6.SetupDataCallResult in) {
+        android.hardware.radio.SetupDataCallResult out =
+                new android.hardware.radio.SetupDataCallResult();
+        out.cause = in.cause;
+        out.suggestedRetryTime = in.suggestedRetryTime;
+        out.cid = in.cid;
+        out.active = in.active;
+        out.type = in.type;
+        out.ifname = in.ifname;
+        if (in.addresses != null) {
+            out.addresses = new android.hardware.radio.LinkAddress[in.addresses.size()];
+            for (int i = 0; i < in.addresses.size(); i++) {
+                out.addresses[i] = h2aTranslate(in.addresses.get(i));
+            }
+        }
+        if (in.dnses != null) {
+            out.dnses = new String[in.dnses.size()];
+            for (int i = 0; i < in.dnses.size(); i++) {
+                out.dnses[i] = in.dnses.get(i);
+            }
+        }
+        if (in.gateways != null) {
+            out.gateways = new String[in.gateways.size()];
+            for (int i = 0; i < in.gateways.size(); i++) {
+                out.gateways[i] = in.gateways.get(i);
+            }
+        }
+        if (in.pcscf != null) {
+            out.pcscf = new String[in.pcscf.size()];
+            for (int i = 0; i < in.pcscf.size(); i++) {
+                out.pcscf[i] = in.pcscf.get(i);
+            }
+        }
+        out.mtuV4 = in.mtuV4;
+        out.mtuV6 = in.mtuV6;
+        out.defaultQos = h2aTranslate(in.defaultQos);
+        if (in.qosSessions != null) {
+            out.qosSessions = new android.hardware.radio.QosSession[in.qosSessions.size()];
+            for (int i = 0; i < in.qosSessions.size(); i++) {
+                out.qosSessions[i] = h2aTranslate(in.qosSessions.get(i));
+            }
+        }
+        out.handoverFailureMode = in.handoverFailureMode;
+        out.pduSessionId = in.pduSessionId;
+        out.sliceInfo = h2aTranslate(in.sliceInfo);
+        if (in.trafficDescriptors != null) {
+            out.trafficDescriptors =
+                    new android.hardware.radio.TrafficDescriptor[in.trafficDescriptors.size()];
+            for (int i = 0; i < in.trafficDescriptors.size(); i++) {
+                out.trafficDescriptors[i] = h2aTranslate(in.trafficDescriptors.get(i));
+            }
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.LinkCapacityEstimate h2aTranslate(
+            android.hardware.radio.V1_6.LinkCapacityEstimate in) {
+        android.hardware.radio.LinkCapacityEstimate out =
+                new android.hardware.radio.LinkCapacityEstimate();
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.downlinkCapacityKbps > 2147483647 || in.downlinkCapacityKbps < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.downlinkCapacityKbps");
+        }
+        out.downlinkCapacityKbps = in.downlinkCapacityKbps;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.uplinkCapacityKbps > 2147483647 || in.uplinkCapacityKbps < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.uplinkCapacityKbps");
+        }
+        out.uplinkCapacityKbps = in.uplinkCapacityKbps;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.secondaryDownlinkCapacityKbps > 2147483647 || in.secondaryDownlinkCapacityKbps < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.secondaryDownlinkCapacityKbps");
+        }
+        out.secondaryDownlinkCapacityKbps = in.secondaryDownlinkCapacityKbps;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.secondaryUplinkCapacityKbps > 2147483647 || in.secondaryUplinkCapacityKbps < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.secondaryUplinkCapacityKbps");
+        }
+        out.secondaryUplinkCapacityKbps = in.secondaryUplinkCapacityKbps;
+        return out;
+    }
+
+    static public android.hardware.radio.NrVopsInfo h2aTranslate(
+            android.hardware.radio.V1_6.NrVopsInfo in) {
+        android.hardware.radio.NrVopsInfo out = new android.hardware.radio.NrVopsInfo();
+        out.vopsSupported = in.vopsSupported;
+        out.emcSupported = in.emcSupported;
+        out.emfSupported = in.emfSupported;
+        return out;
+    }
+
+    static public android.hardware.radio.LteSignalStrength h2aTranslate(
+            android.hardware.radio.V1_6.LteSignalStrength in) {
+        android.hardware.radio.LteSignalStrength out =
+                new android.hardware.radio.LteSignalStrength();
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.base.signalStrength > 2147483647 || in.base.signalStrength < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.base.signalStrength");
+        }
+        out.signalStrength = in.base.signalStrength;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.base.rsrp > 2147483647 || in.base.rsrp < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.base.rsrp");
+        }
+        out.rsrp = in.base.rsrp;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.base.rsrq > 2147483647 || in.base.rsrq < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.base.rsrq");
+        }
+        out.rsrq = in.base.rsrq;
+        out.rssnr = in.base.rssnr;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.base.cqi > 2147483647 || in.base.cqi < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.base.cqi");
+        }
+        out.cqi = in.base.cqi;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.base.timingAdvance > 2147483647 || in.base.timingAdvance < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.base.timingAdvance");
+        }
+        out.timingAdvance = in.base.timingAdvance;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.cqiTableIndex > 2147483647 || in.cqiTableIndex < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.cqiTableIndex");
+        }
+        out.cqiTableIndex = in.cqiTableIndex;
+        return out;
+    }
+
+    static public android.hardware.radio.NrSignalStrength h2aTranslate(
+            android.hardware.radio.V1_6.NrSignalStrength in) {
+        android.hardware.radio.NrSignalStrength out = new android.hardware.radio.NrSignalStrength();
+        out.ssRsrp = in.base.ssRsrp;
+        out.ssRsrq = in.base.ssRsrq;
+        out.ssSinr = in.base.ssSinr;
+        out.csiRsrp = in.base.csiRsrp;
+        out.csiRsrq = in.base.csiRsrq;
+        out.csiSinr = in.base.csiSinr;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.csiCqiTableIndex > 2147483647 || in.csiCqiTableIndex < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.csiCqiTableIndex");
+        }
+        out.csiCqiTableIndex = in.csiCqiTableIndex;
+        if (in.csiCqiReport != null) {
+            out.csiCqiReport = new byte[in.csiCqiReport.size()];
+            for (int i = 0; i < in.csiCqiReport.size(); i++) {
+                // FIXME This requires conversion between signed and unsigned. Change this if it
+                // doesn't suit your needs.
+                if (in.csiCqiReport.get(i) > 127 || in.csiCqiReport.get(i) < 0) {
+                    throw new RuntimeException(
+                            "Unsafe conversion between signed and unsigned scalars for field: in.csiCqiReport.get(i)");
+                }
+                out.csiCqiReport[i] = in.csiCqiReport.get(i);
+            }
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.SignalStrength h2aTranslate(
+            android.hardware.radio.V1_6.SignalStrength in) {
+        android.hardware.radio.SignalStrength out = new android.hardware.radio.SignalStrength();
+        out.gsm = h2aTranslate(in.gsm);
+        out.cdma = h2aTranslate(in.cdma);
+        out.evdo = h2aTranslate(in.evdo);
+        out.lte = h2aTranslate(in.lte);
+        out.tdscdma = h2aTranslate(in.tdscdma);
+        out.wcdma = h2aTranslate(in.wcdma);
+        out.nr = h2aTranslate(in.nr);
+        return out;
+    }
+
+    static public android.hardware.radio.CellInfoLte h2aTranslate(
+            android.hardware.radio.V1_6.CellInfoLte in) {
+        android.hardware.radio.CellInfoLte out = new android.hardware.radio.CellInfoLte();
+        out.cellIdentityLte = h2aTranslate(in.cellIdentityLte);
+        out.signalStrengthLte = h2aTranslate(in.signalStrengthLte);
+        return out;
+    }
+
+    static public android.hardware.radio.CellInfoNr h2aTranslate(
+            android.hardware.radio.V1_6.CellInfoNr in) {
+        android.hardware.radio.CellInfoNr out = new android.hardware.radio.CellInfoNr();
+        out.cellIdentityNr = h2aTranslate(in.cellIdentityNr);
+        out.signalStrengthNr = h2aTranslate(in.signalStrengthNr);
+        return out;
+    }
+
+    static public android.hardware.radio.CellInfo h2aTranslate(
+            android.hardware.radio.V1_6.CellInfo in) {
+        android.hardware.radio.CellInfo out = new android.hardware.radio.CellInfo();
+        out.registered = in.registered;
+        out.connectionStatus = in.connectionStatus;
+        out.ratSpecificInfo = h2aTranslate(in.ratSpecificInfo);
+        return out;
+    }
+
+    static public android.hardware.radio.CellInfoCellInfoRatSpecificInfo h2aTranslate(
+            android.hardware.radio.V1_6.CellInfo.CellInfoRatSpecificInfo in) {
+        android.hardware.radio.CellInfoCellInfoRatSpecificInfo out =
+                new android.hardware.radio.CellInfoCellInfoRatSpecificInfo();
+        switch (in.getDiscriminator()) {
+            case android.hardware.radio.V1_6.CellInfo.CellInfoRatSpecificInfo.hidl_discriminator
+                    .gsm:
+                out.setGsm(h2aTranslate(in.gsm()));
+                break;
+            case android.hardware.radio.V1_6.CellInfo.CellInfoRatSpecificInfo.hidl_discriminator
+                    .wcdma:
+                out.setWcdma(h2aTranslate(in.wcdma()));
+                break;
+            case android.hardware.radio.V1_6.CellInfo.CellInfoRatSpecificInfo.hidl_discriminator
+                    .tdscdma:
+                out.setTdscdma(h2aTranslate(in.tdscdma()));
+                break;
+            case android.hardware.radio.V1_6.CellInfo.CellInfoRatSpecificInfo.hidl_discriminator
+                    .lte:
+                out.setLte(h2aTranslate(in.lte()));
+                break;
+            case android.hardware.radio.V1_6.CellInfo.CellInfoRatSpecificInfo.hidl_discriminator.nr:
+                out.setNr(h2aTranslate(in.nr()));
+                break;
+            case android.hardware.radio.V1_6.CellInfo.CellInfoRatSpecificInfo.hidl_discriminator
+                    .cdma:
+                out.setCdma(h2aTranslate(in.cdma()));
+                break;
+            default:
+                throw new RuntimeException(
+                        "Unknown discriminator value: " + Integer.toString(in.getDiscriminator()));
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.NetworkScanResult h2aTranslate(
+            android.hardware.radio.V1_6.NetworkScanResult in) {
+        android.hardware.radio.NetworkScanResult out =
+                new android.hardware.radio.NetworkScanResult();
+        out.status = in.status;
+        out.error = in.error;
+        if (in.networkInfos != null) {
+            out.networkInfos = new android.hardware.radio.CellInfo[in.networkInfos.size()];
+            for (int i = 0; i < in.networkInfos.size(); i++) {
+                out.networkInfos[i] = h2aTranslate(in.networkInfos.get(i));
+            }
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.RegStateResult h2aTranslate(
+            android.hardware.radio.V1_6.RegStateResult in) {
+        android.hardware.radio.RegStateResult out = new android.hardware.radio.RegStateResult();
+        out.regState = in.regState;
+        out.rat = in.rat;
+        out.reasonForDenial = in.reasonForDenial;
+        out.cellIdentity = h2aTranslate(in.cellIdentity);
+        out.registeredPlmn = in.registeredPlmn;
+        out.accessTechnologySpecificInfo = h2aTranslate(in.accessTechnologySpecificInfo);
+        return out;
+    }
+
+    static public android.hardware.radio.RegStateResultAccessTechnologySpecificInfo h2aTranslate(
+            android.hardware.radio.V1_6.RegStateResult.AccessTechnologySpecificInfo in) {
+        android.hardware.radio.RegStateResultAccessTechnologySpecificInfo out =
+                new android.hardware.radio.RegStateResultAccessTechnologySpecificInfo();
+        switch (in.getDiscriminator()) {
+            case android.hardware.radio.V1_6.RegStateResult.AccessTechnologySpecificInfo
+                    .hidl_discriminator.noinit:
+                // Nothing to translate for Monostate.
+                break;
+            case android.hardware.radio.V1_6.RegStateResult.AccessTechnologySpecificInfo
+                    .hidl_discriminator.cdmaInfo:
+                out.setCdmaInfo(h2aTranslate(in.cdmaInfo()));
+                break;
+            case android.hardware.radio.V1_6.RegStateResult.AccessTechnologySpecificInfo
+                    .hidl_discriminator.eutranInfo:
+                out.setEutranInfo(h2aTranslate(in.eutranInfo()));
+                break;
+            case android.hardware.radio.V1_6.RegStateResult.AccessTechnologySpecificInfo
+                    .hidl_discriminator.ngranNrVopsInfo:
+                out.setNgranNrVopsInfo(h2aTranslate(in.ngranNrVopsInfo()));
+                break;
+            case android.hardware.radio.V1_6.RegStateResult.AccessTechnologySpecificInfo
+                    .hidl_discriminator.geranDtmSupported:
+                out.setGeranDtmSupported(in.geranDtmSupported());
+                break;
+            default:
+                throw new RuntimeException(
+                        "Unknown discriminator value: " + Integer.toString(in.getDiscriminator()));
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.Call h2aTranslate(android.hardware.radio.V1_6.Call in) {
+        android.hardware.radio.Call out = new android.hardware.radio.Call();
+        out.state = in.base.base.state;
+        out.index = in.base.base.index;
+        out.toa = in.base.base.toa;
+        out.isMpty = in.base.base.isMpty;
+        out.isMT = in.base.base.isMT;
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.base.base.als > 127 || in.base.base.als < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.base.base.als");
+        }
+        out.als = in.base.base.als;
+        out.isVoice = in.base.base.isVoice;
+        out.isVoicePrivacy = in.base.base.isVoicePrivacy;
+        out.number = in.base.base.number;
+        out.numberPresentation = in.base.base.numberPresentation;
+        out.name = in.base.base.name;
+        out.namePresentation = in.base.base.namePresentation;
+        if (in.base.base.uusInfo != null) {
+            out.uusInfo = new android.hardware.radio.UusInfo[in.base.base.uusInfo.size()];
+            for (int i = 0; i < in.base.base.uusInfo.size(); i++) {
+                out.uusInfo[i] = h2aTranslate(in.base.base.uusInfo.get(i));
+            }
+        }
+        out.audioQuality = in.base.audioQuality;
+        out.forwardedNumber = in.forwardedNumber;
+        return out;
+    }
+
+    static public android.hardware.radio.PhysicalChannelConfig h2aTranslate(
+            android.hardware.radio.V1_6.PhysicalChannelConfig in) {
+        android.hardware.radio.PhysicalChannelConfig out =
+                new android.hardware.radio.PhysicalChannelConfig();
+        out.status = in.status;
+        out.rat = in.rat;
+        out.downlinkChannelNumber = in.downlinkChannelNumber;
+        out.uplinkChannelNumber = in.uplinkChannelNumber;
+        out.cellBandwidthDownlinkKhz = in.cellBandwidthDownlinkKhz;
+        out.cellBandwidthUplinkKhz = in.cellBandwidthUplinkKhz;
+        if (in.contextIds != null) {
+            out.contextIds = new int[in.contextIds.size()];
+            for (int i = 0; i < in.contextIds.size(); i++) {
+                out.contextIds[i] = in.contextIds.get(i);
+            }
+        }
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.physicalCellId > 2147483647 || in.physicalCellId < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.physicalCellId");
+        }
+        out.physicalCellId = in.physicalCellId;
+        out.band = h2aTranslate(in.band);
+        return out;
+    }
+
+    static public android.hardware.radio.PhysicalChannelConfigBand h2aTranslate(
+            android.hardware.radio.V1_6.PhysicalChannelConfig.Band in) {
+        android.hardware.radio.PhysicalChannelConfigBand out =
+                new android.hardware.radio.PhysicalChannelConfigBand();
+        switch (in.getDiscriminator()) {
+            case android.hardware.radio.V1_6.PhysicalChannelConfig.Band.hidl_discriminator
+                    .geranBand:
+                out.setGeranBand(in.geranBand());
+                break;
+            case android.hardware.radio.V1_6.PhysicalChannelConfig.Band.hidl_discriminator
+                    .utranBand:
+                out.setUtranBand(in.utranBand());
+                break;
+            case android.hardware.radio.V1_6.PhysicalChannelConfig.Band.hidl_discriminator
+                    .eutranBand:
+                out.setEutranBand(in.eutranBand());
+                break;
+            case android.hardware.radio.V1_6.PhysicalChannelConfig.Band.hidl_discriminator
+                    .ngranBand:
+                out.setNgranBand(in.ngranBand());
+                break;
+            default:
+                throw new RuntimeException(
+                        "Unknown discriminator value: " + Integer.toString(in.getDiscriminator()));
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.OptionalSliceInfo h2aTranslate(
+            android.hardware.radio.V1_6.OptionalSliceInfo in) {
+        android.hardware.radio.OptionalSliceInfo out =
+                new android.hardware.radio.OptionalSliceInfo();
+        switch (in.getDiscriminator()) {
+            case android.hardware.radio.V1_6.OptionalSliceInfo.hidl_discriminator.noinit:
+                // Nothing to translate for Monostate.
+                break;
+            case android.hardware.radio.V1_6.OptionalSliceInfo.hidl_discriminator.value:
+                out.setValue(h2aTranslate(in.value()));
+                break;
+            default:
+                throw new RuntimeException(
+                        "Unknown discriminator value: " + Integer.toString(in.getDiscriminator()));
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.SliceInfo h2aTranslate(
+            android.hardware.radio.V1_6.SliceInfo in) {
+        android.hardware.radio.SliceInfo out = new android.hardware.radio.SliceInfo();
+        out.sst = in.sst;
+        out.sliceDifferentiator = in.sliceDifferentiator;
+        out.mappedHplmnSst = in.mappedHplmnSst;
+        out.mappedHplmnSD = in.mappedHplmnSD;
+        out.status = in.status;
+        return out;
+    }
+
+    static public android.hardware.radio.OptionalDnn h2aTranslate(
+            android.hardware.radio.V1_6.OptionalDnn in) {
+        android.hardware.radio.OptionalDnn out = new android.hardware.radio.OptionalDnn();
+        switch (in.getDiscriminator()) {
+            case android.hardware.radio.V1_6.OptionalDnn.hidl_discriminator.noinit:
+                // Nothing to translate for Monostate.
+                break;
+            case android.hardware.radio.V1_6.OptionalDnn.hidl_discriminator.value:
+                out.setValue(in.value());
+                break;
+            default:
+                throw new RuntimeException(
+                        "Unknown discriminator value: " + Integer.toString(in.getDiscriminator()));
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.OptionalOsAppId h2aTranslate(
+            android.hardware.radio.V1_6.OptionalOsAppId in) {
+        android.hardware.radio.OptionalOsAppId out = new android.hardware.radio.OptionalOsAppId();
+        switch (in.getDiscriminator()) {
+            case android.hardware.radio.V1_6.OptionalOsAppId.hidl_discriminator.noinit:
+                // Nothing to translate for Monostate.
+                break;
+            case android.hardware.radio.V1_6.OptionalOsAppId.hidl_discriminator.value:
+                out.setValue(h2aTranslate(in.value()));
+                break;
+            default:
+                throw new RuntimeException(
+                        "Unknown discriminator value: " + Integer.toString(in.getDiscriminator()));
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.OptionalTrafficDescriptor h2aTranslate(
+            android.hardware.radio.V1_6.OptionalTrafficDescriptor in) {
+        android.hardware.radio.OptionalTrafficDescriptor out =
+                new android.hardware.radio.OptionalTrafficDescriptor();
+        switch (in.getDiscriminator()) {
+            case android.hardware.radio.V1_6.OptionalTrafficDescriptor.hidl_discriminator.noinit:
+                // Nothing to translate for Monostate.
+                break;
+            case android.hardware.radio.V1_6.OptionalTrafficDescriptor.hidl_discriminator.value:
+                out.setValue(h2aTranslate(in.value()));
+                break;
+            default:
+                throw new RuntimeException(
+                        "Unknown discriminator value: " + Integer.toString(in.getDiscriminator()));
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.TrafficDescriptor h2aTranslate(
+            android.hardware.radio.V1_6.TrafficDescriptor in) {
+        android.hardware.radio.TrafficDescriptor out =
+                new android.hardware.radio.TrafficDescriptor();
+        out.dnn = h2aTranslate(in.dnn);
+        out.osAppId = h2aTranslate(in.osAppId);
+        return out;
+    }
+
+    static public android.hardware.radio.OsAppId h2aTranslate(
+            android.hardware.radio.V1_6.OsAppId in) {
+        android.hardware.radio.OsAppId out = new android.hardware.radio.OsAppId();
+        if (in.osAppId != null) {
+            out.osAppId = new byte[in.osAppId.size()];
+            for (int i = 0; i < in.osAppId.size(); i++) {
+                // FIXME This requires conversion between signed and unsigned. Change this if it
+                // doesn't suit your needs.
+                if (in.osAppId.get(i) > 127 || in.osAppId.get(i) < 0) {
+                    throw new RuntimeException(
+                            "Unsafe conversion between signed and unsigned scalars for field: in.osAppId.get(i)");
+                }
+                out.osAppId[i] = in.osAppId.get(i);
+            }
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.SlicingConfig h2aTranslate(
+            android.hardware.radio.V1_6.SlicingConfig in) {
+        android.hardware.radio.SlicingConfig out = new android.hardware.radio.SlicingConfig();
+        if (in.urspRules != null) {
+            out.urspRules = new android.hardware.radio.UrspRule[in.urspRules.size()];
+            for (int i = 0; i < in.urspRules.size(); i++) {
+                out.urspRules[i] = h2aTranslate(in.urspRules.get(i));
+            }
+        }
+        if (in.sliceInfo != null) {
+            out.sliceInfo = new android.hardware.radio.SliceInfo[in.sliceInfo.size()];
+            for (int i = 0; i < in.sliceInfo.size(); i++) {
+                out.sliceInfo[i] = h2aTranslate(in.sliceInfo.get(i));
+            }
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.UrspRule h2aTranslate(
+            android.hardware.radio.V1_6.UrspRule in) {
+        android.hardware.radio.UrspRule out = new android.hardware.radio.UrspRule();
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.precedence > 127 || in.precedence < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.precedence");
+        }
+        out.precedence = in.precedence;
+        if (in.trafficDescriptors != null) {
+            out.trafficDescriptors =
+                    new android.hardware.radio.TrafficDescriptor[in.trafficDescriptors.size()];
+            for (int i = 0; i < in.trafficDescriptors.size(); i++) {
+                out.trafficDescriptors[i] = h2aTranslate(in.trafficDescriptors.get(i));
+            }
+        }
+        if (in.routeSelectionDescriptor != null) {
+            out.routeSelectionDescriptor =
+                    new android.hardware.radio
+                            .RouteSelectionDescriptor[in.routeSelectionDescriptor.size()];
+            for (int i = 0; i < in.routeSelectionDescriptor.size(); i++) {
+                out.routeSelectionDescriptor[i] = h2aTranslate(in.routeSelectionDescriptor.get(i));
+            }
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.RouteSelectionDescriptor h2aTranslate(
+            android.hardware.radio.V1_6.RouteSelectionDescriptor in) {
+        android.hardware.radio.RouteSelectionDescriptor out =
+                new android.hardware.radio.RouteSelectionDescriptor();
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.precedence > 127 || in.precedence < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.precedence");
+        }
+        out.precedence = in.precedence;
+        out.sessionType = h2aTranslate(in.sessionType);
+        out.sscMode = h2aTranslate(in.sscMode);
+        if (in.sliceInfo != null) {
+            out.sliceInfo = new android.hardware.radio.SliceInfo[in.sliceInfo.size()];
+            for (int i = 0; i < in.sliceInfo.size(); i++) {
+                out.sliceInfo[i] = h2aTranslate(in.sliceInfo.get(i));
+            }
+        }
+        if (in.dnn != null) {
+            out.dnn = new String[in.dnn.size()];
+            for (int i = 0; i < in.dnn.size(); i++) {
+                out.dnn[i] = in.dnn.get(i);
+            }
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.OptionalPdpProtocolType h2aTranslate(
+            android.hardware.radio.V1_6.OptionalPdpProtocolType in) {
+        android.hardware.radio.OptionalPdpProtocolType out =
+                new android.hardware.radio.OptionalPdpProtocolType();
+        switch (in.getDiscriminator()) {
+            case android.hardware.radio.V1_6.OptionalPdpProtocolType.hidl_discriminator.noinit:
+                // Nothing to translate for Monostate.
+                break;
+            case android.hardware.radio.V1_6.OptionalPdpProtocolType.hidl_discriminator.value:
+                out.setValue(in.value());
+                break;
+            default:
+                throw new RuntimeException(
+                        "Unknown discriminator value: " + Integer.toString(in.getDiscriminator()));
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.OptionalSscMode h2aTranslate(
+            android.hardware.radio.V1_6.OptionalSscMode in) {
+        android.hardware.radio.OptionalSscMode out = new android.hardware.radio.OptionalSscMode();
+        switch (in.getDiscriminator()) {
+            case android.hardware.radio.V1_6.OptionalSscMode.hidl_discriminator.noinit:
+                // Nothing to translate for Monostate.
+                break;
+            case android.hardware.radio.V1_6.OptionalSscMode.hidl_discriminator.value:
+                out.setValue(in.value());
+                break;
+            default:
+                throw new RuntimeException(
+                        "Unknown discriminator value: " + Integer.toString(in.getDiscriminator()));
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.ImsiEncryptionInfo h2aTranslate(
+            android.hardware.radio.V1_6.ImsiEncryptionInfo in) {
+        android.hardware.radio.ImsiEncryptionInfo out =
+                new android.hardware.radio.ImsiEncryptionInfo();
+        out.mcc = in.base.mcc;
+        out.mnc = in.base.mnc;
+        if (in.base.carrierKey != null) {
+            out.carrierKey = new byte[in.base.carrierKey.size()];
+            for (int i = 0; i < in.base.carrierKey.size(); i++) {
+                // FIXME This requires conversion between signed and unsigned. Change this if it
+                // doesn't suit your needs.
+                if (in.base.carrierKey.get(i) > 127 || in.base.carrierKey.get(i) < 0) {
+                    throw new RuntimeException(
+                            "Unsafe conversion between signed and unsigned scalars for field: in.base.carrierKey.get(i)");
+                }
+                out.carrierKey[i] = in.base.carrierKey.get(i);
+            }
+        }
+        out.keyIdentifier = in.base.keyIdentifier;
+        out.expirationTime = in.base.expirationTime;
+        out.keyType = in.keyType;
+        return out;
+    }
+
+    static public android.hardware.radio.PhonebookRecordInfo h2aTranslate(
+            android.hardware.radio.V1_6.PhonebookRecordInfo in) {
+        android.hardware.radio.PhonebookRecordInfo out =
+                new android.hardware.radio.PhonebookRecordInfo();
+        // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+        // suit your needs.
+        if (in.recordId > 2147483647 || in.recordId < 0) {
+            throw new RuntimeException(
+                    "Unsafe conversion between signed and unsigned scalars for field: in.recordId");
+        }
+        out.recordId = in.recordId;
+        out.name = in.name;
+        out.number = in.number;
+        if (in.emails != null) {
+            out.emails = new String[in.emails.size()];
+            for (int i = 0; i < in.emails.size(); i++) {
+                out.emails[i] = in.emails.get(i);
+            }
+        }
+        if (in.additionalNumbers != null) {
+            out.additionalNumbers = new String[in.additionalNumbers.size()];
+            for (int i = 0; i < in.additionalNumbers.size(); i++) {
+                out.additionalNumbers[i] = in.additionalNumbers.get(i);
+            }
+        }
+        return out;
+    }
+
+    static public android.hardware.radio.PhonebookCapacity h2aTranslate(
+            android.hardware.radio.V1_6.PhonebookCapacity in) {
+        android.hardware.radio.PhonebookCapacity out =
+                new android.hardware.radio.PhonebookCapacity();
+        out.maxAdnRecords = in.maxAdnRecords;
+        out.usedAdnRecords = in.usedAdnRecords;
+        out.maxEmailRecords = in.maxEmailRecords;
+        out.usedEmailRecords = in.usedEmailRecords;
+        out.maxAdditionalNumberRecords = in.maxAdditionalNumberRecords;
+        out.usedAdditionalNumberRecords = in.usedAdditionalNumberRecords;
+        out.maxNameLen = in.maxNameLen;
+        out.maxNumberLen = in.maxNumberLen;
+        out.maxEmailLen = in.maxEmailLen;
+        out.maxAdditionalNumberLen = in.maxAdditionalNumberLen;
+        return out;
+    }
+}
diff --git a/radio/aidl/android/hardware/radio/TtyMode.aidl b/radio/aidl/android/hardware/radio/TtyMode.aidl
new file mode 100644
index 0000000..344ba67
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/TtyMode.aidl
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum TtyMode {
+    OFF,
+    FULL,
+    /**
+     * Hearing carryover
+     */
+    HCO,
+    /**
+     * Voice carryover
+     */
+    VCO,
+}
diff --git a/radio/aidl/android/hardware/radio/UiccSubActStatus.aidl b/radio/aidl/android/hardware/radio/UiccSubActStatus.aidl
new file mode 100644
index 0000000..b2bb03e
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/UiccSubActStatus.aidl
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum UiccSubActStatus {
+    DEACTIVATE,
+    ACTIVATE,
+}
diff --git a/radio/aidl/android/hardware/radio/UrspRule.aidl b/radio/aidl/android/hardware/radio/UrspRule.aidl
new file mode 100644
index 0000000..244bcb1
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/UrspRule.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.RouteSelectionDescriptor;
+import android.hardware.radio.TrafficDescriptor;
+
+/**
+ * This struct represents a single URSP rule as defined in 3GPP TS 24.526.
+ */
+@VintfStability
+parcelable UrspRule {
+    /**
+     * Precedence value in the range of 0 to 255. Higher value has lower precedence.
+     */
+    byte precedence;
+    /**
+     * Used as a matcher for network requests.
+     */
+    TrafficDescriptor[] trafficDescriptors;
+    /**
+     * List of routes (connection parameters) that must be used for requests matching a
+     * trafficDescriptor.
+     */
+    RouteSelectionDescriptor[] routeSelectionDescriptor;
+}
diff --git a/radio/aidl/android/hardware/radio/UssdModeType.aidl b/radio/aidl/android/hardware/radio/UssdModeType.aidl
new file mode 100644
index 0000000..187130c
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/UssdModeType.aidl
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+@Backing(type="int")
+enum UssdModeType {
+    /**
+     * USSD-Notify
+     */
+    NOTIFY,
+    /**
+     * USSD-Request
+     */
+    REQUEST,
+    /**
+     * Session terminated by network
+     */
+    NW_RELEASE,
+    /**
+     * Other local client (eg, SIM Toolkit) has responded
+     */
+    LOCAL_CLIENT,
+    /**
+     * Operation not supported
+     */
+    NOT_SUPPORTED,
+    /**
+     * Network timeout
+     */
+    NW_TIMEOUT,
+}
diff --git a/radio/aidl/android/hardware/radio/UtranBands.aidl b/radio/aidl/android/hardware/radio/UtranBands.aidl
new file mode 100644
index 0000000..8a22ed7
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/UtranBands.aidl
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * UTRAN bands up to V15.0.0
+ */
+@VintfStability
+@Backing(type="int")
+enum UtranBands {
+    BAND_1 = 1,
+    BAND_2 = 2,
+    BAND_3 = 3,
+    BAND_4 = 4,
+    BAND_5 = 5,
+    BAND_6 = 6,
+    BAND_7 = 7,
+    BAND_8 = 8,
+    BAND_9 = 9,
+    BAND_10 = 10,
+    BAND_11 = 11,
+    BAND_12 = 12,
+    BAND_13 = 13,
+    BAND_14 = 14,
+    BAND_19 = 19,
+    BAND_20 = 20,
+    BAND_21 = 21,
+    BAND_22 = 22,
+    BAND_25 = 25,
+    BAND_26 = 26,
+    /**
+     * TD-SCDMA bands. 3GPP TS 25.102, Table 5.2: Frequency bands
+     */
+    BAND_A = 101,
+    BAND_B = 102,
+    BAND_C = 103,
+    BAND_D = 104,
+    BAND_E = 105,
+    BAND_F = 106,
+}
diff --git a/radio/aidl/android/hardware/radio/UusDcs.aidl b/radio/aidl/android/hardware/radio/UusDcs.aidl
new file mode 100644
index 0000000..b157e47
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/UusDcs.aidl
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * User-to-User Signaling Information data coding schemes. Possible values for Octet 3 (Protocol
+ * Discriminator field) in the UUIE. The values have been specified in section 10.5.4.25 of
+ * 3GPP TS 24.008
+ */
+@VintfStability
+@Backing(type="int")
+enum UusDcs {
+    /**
+     * User specified protocol
+     */
+    USP,
+    /**
+     * OSI higher layer protocol
+     */
+    OSIHLP,
+    /**
+     * X.244
+     */
+    X244,
+    /**
+     * Reserved for system management
+     */
+    RMCF,
+    /**
+     * IA5 characters
+     */
+    IA5C,
+}
diff --git a/radio/aidl/android/hardware/radio/UusInfo.aidl b/radio/aidl/android/hardware/radio/UusInfo.aidl
new file mode 100644
index 0000000..b766b0d
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/UusInfo.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.UusDcs;
+import android.hardware.radio.UusType;
+
+/**
+ * User-to-User Signaling Information defined in 3GPP 23.087 v8.0
+ */
+@VintfStability
+parcelable UusInfo {
+    /**
+     * UUS type
+     */
+    UusType uusType;
+    /**
+     * UUS data coding scheme
+     */
+    UusDcs uusDcs;
+    /**
+     * UUS data
+     */
+    String uusData;
+}
diff --git a/radio/aidl/android/hardware/radio/UusType.aidl b/radio/aidl/android/hardware/radio/UusType.aidl
new file mode 100644
index 0000000..af86c97
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/UusType.aidl
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * User-to-User signaling Info activation types derived from 3GPP 23.087 v8.0
+ */
+@VintfStability
+@Backing(type="int")
+enum UusType {
+    TYPE1_IMPLICIT,
+    TYPE1_REQUIRED,
+    TYPE1_NOT_REQUIRED,
+    TYPE2_REQUIRED,
+    TYPE2_NOT_REQUIRED,
+    TYPE3_REQUIRED,
+    TYPE3_NOT_REQUIRED,
+}
diff --git a/radio/aidl/android/hardware/radio/VoiceRegStateResult.aidl b/radio/aidl/android/hardware/radio/VoiceRegStateResult.aidl
new file mode 100644
index 0000000..897c663
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/VoiceRegStateResult.aidl
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+import android.hardware.radio.CellIdentity;
+import android.hardware.radio.RegState;
+
+@VintfStability
+parcelable VoiceRegStateResult {
+    /**
+     * Valid reg states are NOT_REG_MT_NOT_SEARCHING_OP, REG_HOME, NOT_REG_MT_SEARCHING_OP,
+     * REG_DENIED, UNKNOWN, REG_ROAMING defined in RegState.
+     */
+    RegState regState;
+    /**
+     * Indicates the available voice radio technology, valid values as defined by RadioTechnology.
+     */
+    int rat;
+    /**
+     * Concurrent services support indicator, if registered on a CDMA system.
+     * false - Concurrent services not supported,
+     * true - Concurrent services supported
+     */
+    boolean cssSupported;
+    /**
+     * TSB-58 Roaming Indicator if registered on a CDMA or EVDO system or -1 if not.
+     * Valid values are 0-255.
+     */
+    int roamingIndicator;
+    /**
+     * Indicates whether the current system is in the PRL if registered on a CDMA or EVDO system
+     * or -1 if not. 0=not in the PRL, 1=in the PRL
+     */
+    int systemIsInPrl;
+    /**
+     * Default Roaming Indicator from the PRL if registered on a CDMA or EVDO system or -1 if not.
+     * Valid values are 0-255.
+     */
+    int defaultRoamingIndicator;
+    /**
+     * Reason for denial if registration state is REG_DENIED. This is an enumerated reason why
+     * registration was denied. See 3GPP TS 24.008, 10.5.3.6 and Annex G.
+     * 0 - General
+     * 1 - Authentication Failure
+     * 2 - IMSI unknown in HLR
+     * 3 - Illegal MS
+     * 4 - Illegal ME
+     * 5 - PLMN not allowed
+     * 6 - Location area not allowed
+     * 7 - Roaming not allowed
+     * 8 - No Suitable Cells in this Location Area
+     * 9 - Network failure
+     * 10 - Persistent location update reject
+     * 11 - PLMN not allowed
+     * 12 - Location area not allowed
+     * 13 - Roaming not allowed in this Location Area
+     * 15 - No Suitable Cells in this Location Area
+     * 17 - Network Failure
+     * 20 - MAC Failure
+     * 21 - Sync Failure
+     * 22 - Congestion
+     * 23 - GSM Authentication unacceptable
+     * 25 - Not Authorized for this CSG
+     * 32 - Service option not supported
+     * 33 - Requested service option not subscribed
+     * 34 - Service option temporarily out of order
+     * 38 - Call cannot be identified
+     * 48-63 - Retry upon entry into a new cell
+     * 95 - Semantically incorrect message
+     * 96 - Invalid mandatory information
+     * 97 - Message type non-existent or not implemented
+     * 98 - Message type not compatible with protocol state
+     * 99 - Information element non-existent or not implemented
+     * 100 - Conditional IE error
+     * 101 - Message not compatible with protocol state
+     * 111 - Protocol error, unspecified
+     */
+    int reasonForDenial;
+    CellIdentity cellIdentity;
+}
diff --git a/radio/aidl/android/hardware/radio/VopsIndicator.aidl b/radio/aidl/android/hardware/radio/VopsIndicator.aidl
new file mode 100644
index 0000000..0533be9
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/VopsIndicator.aidl
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+/**
+ * Defines the values for VoPS indicator of NR as per 3gpp spec 24.501 sec 9.10.3.5
+ */
+@VintfStability
+@Backing(type="byte")
+enum VopsIndicator {
+    /**
+     * IMS voice over PS session not supported
+     */
+    VOPS_NOT_SUPPORTED,
+    /**
+     * IMS voice over PS session supported over 3GPP access
+     */
+    VOPS_OVER_3GPP,
+    /**
+     * IMS voice over PS session supported over non-3GPP access
+     */
+    VOPS_OVER_NON_3GPP,
+}
diff --git a/radio/aidl/android/hardware/radio/WcdmaSignalStrength.aidl b/radio/aidl/android/hardware/radio/WcdmaSignalStrength.aidl
new file mode 100644
index 0000000..95a3455
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/WcdmaSignalStrength.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio;
+
+@VintfStability
+parcelable WcdmaSignalStrength {
+    /**
+     * Valid values are (0-31, 99) as defined in TS 27.007 8.5; INT_MAX means unreported.
+     */
+    int signalStrength;
+    /**
+     * Bit error rate (0-7, 99) as defined in TS 27.007 8.5; INT_MAX means invalid/unreported.
+     */
+    int bitErrorRate;
+    /**
+     * CPICH RSCP as defined in TS 25.215 5.1.1. Valid values are (0-96, 255) as defined in
+     * TS 27.007 8.69. INT_MAX denotes that the value is invalid/unreported.
+     */
+    int rscp;
+    /**
+     * Ec/No value as defined in TS 25.215 5.1.5. Valid values are (0-49, 255) as defined in
+     * TS 27.007 8.69. INT_MAX denotes that the value is invalid/unreported.
+     */
+    int ecno;
+}
diff --git a/radio/aidl/android/hardware/radio/translate-ndk.cpp b/radio/aidl/android/hardware/radio/translate-ndk.cpp
new file mode 100644
index 0000000..0492ade
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/translate-ndk.cpp
@@ -0,0 +1,7404 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "android/hardware/radio/translate-ndk.h"
+
+namespace android::h2a {
+
+static_assert(aidl::android::hardware::radio::RadioCdmaSmsConst::ADDRESS_MAX ==
+              static_cast<aidl::android::hardware::radio::RadioCdmaSmsConst>(
+                      ::android::hardware::radio::V1_0::RadioCdmaSmsConst::ADDRESS_MAX));
+static_assert(aidl::android::hardware::radio::RadioCdmaSmsConst::SUBADDRESS_MAX ==
+              static_cast<aidl::android::hardware::radio::RadioCdmaSmsConst>(
+                      ::android::hardware::radio::V1_0::RadioCdmaSmsConst::SUBADDRESS_MAX));
+static_assert(aidl::android::hardware::radio::RadioCdmaSmsConst::BEARER_DATA_MAX ==
+              static_cast<aidl::android::hardware::radio::RadioCdmaSmsConst>(
+                      ::android::hardware::radio::V1_0::RadioCdmaSmsConst::BEARER_DATA_MAX));
+static_assert(aidl::android::hardware::radio::RadioCdmaSmsConst::UDH_MAX_SND_SIZE ==
+              static_cast<aidl::android::hardware::radio::RadioCdmaSmsConst>(
+                      ::android::hardware::radio::V1_0::RadioCdmaSmsConst::UDH_MAX_SND_SIZE));
+static_assert(
+        aidl::android::hardware::radio::RadioCdmaSmsConst::UDH_EO_DATA_SEGMENT_MAX ==
+        static_cast<aidl::android::hardware::radio::RadioCdmaSmsConst>(
+                ::android::hardware::radio::V1_0::RadioCdmaSmsConst::UDH_EO_DATA_SEGMENT_MAX));
+static_assert(aidl::android::hardware::radio::RadioCdmaSmsConst::MAX_UD_HEADERS ==
+              static_cast<aidl::android::hardware::radio::RadioCdmaSmsConst>(
+                      ::android::hardware::radio::V1_0::RadioCdmaSmsConst::MAX_UD_HEADERS));
+static_assert(aidl::android::hardware::radio::RadioCdmaSmsConst::USER_DATA_MAX ==
+              static_cast<aidl::android::hardware::radio::RadioCdmaSmsConst>(
+                      ::android::hardware::radio::V1_0::RadioCdmaSmsConst::USER_DATA_MAX));
+static_assert(aidl::android::hardware::radio::RadioCdmaSmsConst::UDH_LARGE_PIC_SIZE ==
+              static_cast<aidl::android::hardware::radio::RadioCdmaSmsConst>(
+                      ::android::hardware::radio::V1_0::RadioCdmaSmsConst::UDH_LARGE_PIC_SIZE));
+static_assert(aidl::android::hardware::radio::RadioCdmaSmsConst::UDH_SMALL_PIC_SIZE ==
+              static_cast<aidl::android::hardware::radio::RadioCdmaSmsConst>(
+                      ::android::hardware::radio::V1_0::RadioCdmaSmsConst::UDH_SMALL_PIC_SIZE));
+static_assert(aidl::android::hardware::radio::RadioCdmaSmsConst::UDH_VAR_PIC_SIZE ==
+              static_cast<aidl::android::hardware::radio::RadioCdmaSmsConst>(
+                      ::android::hardware::radio::V1_0::RadioCdmaSmsConst::UDH_VAR_PIC_SIZE));
+static_assert(aidl::android::hardware::radio::RadioCdmaSmsConst::UDH_ANIM_NUM_BITMAPS ==
+              static_cast<aidl::android::hardware::radio::RadioCdmaSmsConst>(
+                      ::android::hardware::radio::V1_0::RadioCdmaSmsConst::UDH_ANIM_NUM_BITMAPS));
+static_assert(aidl::android::hardware::radio::RadioCdmaSmsConst::UDH_LARGE_BITMAP_SIZE ==
+              static_cast<aidl::android::hardware::radio::RadioCdmaSmsConst>(
+                      ::android::hardware::radio::V1_0::RadioCdmaSmsConst::UDH_LARGE_BITMAP_SIZE));
+static_assert(aidl::android::hardware::radio::RadioCdmaSmsConst::UDH_SMALL_BITMAP_SIZE ==
+              static_cast<aidl::android::hardware::radio::RadioCdmaSmsConst>(
+                      ::android::hardware::radio::V1_0::RadioCdmaSmsConst::UDH_SMALL_BITMAP_SIZE));
+static_assert(aidl::android::hardware::radio::RadioCdmaSmsConst::UDH_OTHER_SIZE ==
+              static_cast<aidl::android::hardware::radio::RadioCdmaSmsConst>(
+                      ::android::hardware::radio::V1_0::RadioCdmaSmsConst::UDH_OTHER_SIZE));
+static_assert(aidl::android::hardware::radio::RadioCdmaSmsConst::IP_ADDRESS_SIZE ==
+              static_cast<aidl::android::hardware::radio::RadioCdmaSmsConst>(
+                      ::android::hardware::radio::V1_0::RadioCdmaSmsConst::IP_ADDRESS_SIZE));
+
+static_assert(aidl::android::hardware::radio::RadioResponseType::SOLICITED ==
+              static_cast<aidl::android::hardware::radio::RadioResponseType>(
+                      ::android::hardware::radio::V1_0::RadioResponseType::SOLICITED));
+static_assert(aidl::android::hardware::radio::RadioResponseType::SOLICITED_ACK ==
+              static_cast<aidl::android::hardware::radio::RadioResponseType>(
+                      ::android::hardware::radio::V1_0::RadioResponseType::SOLICITED_ACK));
+static_assert(aidl::android::hardware::radio::RadioResponseType::SOLICITED_ACK_EXP ==
+              static_cast<aidl::android::hardware::radio::RadioResponseType>(
+                      ::android::hardware::radio::V1_0::RadioResponseType::SOLICITED_ACK_EXP));
+
+static_assert(aidl::android::hardware::radio::RadioIndicationType::UNSOLICITED ==
+              static_cast<aidl::android::hardware::radio::RadioIndicationType>(
+                      ::android::hardware::radio::V1_0::RadioIndicationType::UNSOLICITED));
+static_assert(aidl::android::hardware::radio::RadioIndicationType::UNSOLICITED_ACK_EXP ==
+              static_cast<aidl::android::hardware::radio::RadioIndicationType>(
+                      ::android::hardware::radio::V1_0::RadioIndicationType::UNSOLICITED_ACK_EXP));
+
+static_assert(aidl::android::hardware::radio::RestrictedState::NONE ==
+              static_cast<aidl::android::hardware::radio::RestrictedState>(
+                      ::android::hardware::radio::V1_0::RestrictedState::NONE));
+static_assert(aidl::android::hardware::radio::RestrictedState::CS_EMERGENCY ==
+              static_cast<aidl::android::hardware::radio::RestrictedState>(
+                      ::android::hardware::radio::V1_0::RestrictedState::CS_EMERGENCY));
+static_assert(aidl::android::hardware::radio::RestrictedState::CS_NORMAL ==
+              static_cast<aidl::android::hardware::radio::RestrictedState>(
+                      ::android::hardware::radio::V1_0::RestrictedState::CS_NORMAL));
+static_assert(aidl::android::hardware::radio::RestrictedState::CS_ALL ==
+              static_cast<aidl::android::hardware::radio::RestrictedState>(
+                      ::android::hardware::radio::V1_0::RestrictedState::CS_ALL));
+static_assert(aidl::android::hardware::radio::RestrictedState::PS_ALL ==
+              static_cast<aidl::android::hardware::radio::RestrictedState>(
+                      ::android::hardware::radio::V1_0::RestrictedState::PS_ALL));
+
+static_assert(aidl::android::hardware::radio::CardState::ABSENT ==
+              static_cast<aidl::android::hardware::radio::CardState>(
+                      ::android::hardware::radio::V1_0::CardState::ABSENT));
+static_assert(aidl::android::hardware::radio::CardState::PRESENT ==
+              static_cast<aidl::android::hardware::radio::CardState>(
+                      ::android::hardware::radio::V1_0::CardState::PRESENT));
+static_assert(aidl::android::hardware::radio::CardState::ERROR ==
+              static_cast<aidl::android::hardware::radio::CardState>(
+                      ::android::hardware::radio::V1_0::CardState::ERROR));
+static_assert(aidl::android::hardware::radio::CardState::RESTRICTED ==
+              static_cast<aidl::android::hardware::radio::CardState>(
+                      ::android::hardware::radio::V1_0::CardState::RESTRICTED));
+
+static_assert(aidl::android::hardware::radio::PinState::UNKNOWN ==
+              static_cast<aidl::android::hardware::radio::PinState>(
+                      ::android::hardware::radio::V1_0::PinState::UNKNOWN));
+static_assert(aidl::android::hardware::radio::PinState::ENABLED_NOT_VERIFIED ==
+              static_cast<aidl::android::hardware::radio::PinState>(
+                      ::android::hardware::radio::V1_0::PinState::ENABLED_NOT_VERIFIED));
+static_assert(aidl::android::hardware::radio::PinState::ENABLED_VERIFIED ==
+              static_cast<aidl::android::hardware::radio::PinState>(
+                      ::android::hardware::radio::V1_0::PinState::ENABLED_VERIFIED));
+static_assert(aidl::android::hardware::radio::PinState::DISABLED ==
+              static_cast<aidl::android::hardware::radio::PinState>(
+                      ::android::hardware::radio::V1_0::PinState::DISABLED));
+static_assert(aidl::android::hardware::radio::PinState::ENABLED_BLOCKED ==
+              static_cast<aidl::android::hardware::radio::PinState>(
+                      ::android::hardware::radio::V1_0::PinState::ENABLED_BLOCKED));
+static_assert(aidl::android::hardware::radio::PinState::ENABLED_PERM_BLOCKED ==
+              static_cast<aidl::android::hardware::radio::PinState>(
+                      ::android::hardware::radio::V1_0::PinState::ENABLED_PERM_BLOCKED));
+
+static_assert(aidl::android::hardware::radio::AppType::UNKNOWN ==
+              static_cast<aidl::android::hardware::radio::AppType>(
+                      ::android::hardware::radio::V1_0::AppType::UNKNOWN));
+static_assert(aidl::android::hardware::radio::AppType::SIM ==
+              static_cast<aidl::android::hardware::radio::AppType>(
+                      ::android::hardware::radio::V1_0::AppType::SIM));
+static_assert(aidl::android::hardware::radio::AppType::USIM ==
+              static_cast<aidl::android::hardware::radio::AppType>(
+                      ::android::hardware::radio::V1_0::AppType::USIM));
+static_assert(aidl::android::hardware::radio::AppType::RUIM ==
+              static_cast<aidl::android::hardware::radio::AppType>(
+                      ::android::hardware::radio::V1_0::AppType::RUIM));
+static_assert(aidl::android::hardware::radio::AppType::CSIM ==
+              static_cast<aidl::android::hardware::radio::AppType>(
+                      ::android::hardware::radio::V1_0::AppType::CSIM));
+static_assert(aidl::android::hardware::radio::AppType::ISIM ==
+              static_cast<aidl::android::hardware::radio::AppType>(
+                      ::android::hardware::radio::V1_0::AppType::ISIM));
+
+static_assert(aidl::android::hardware::radio::AppState::UNKNOWN ==
+              static_cast<aidl::android::hardware::radio::AppState>(
+                      ::android::hardware::radio::V1_0::AppState::UNKNOWN));
+static_assert(aidl::android::hardware::radio::AppState::DETECTED ==
+              static_cast<aidl::android::hardware::radio::AppState>(
+                      ::android::hardware::radio::V1_0::AppState::DETECTED));
+static_assert(aidl::android::hardware::radio::AppState::PIN ==
+              static_cast<aidl::android::hardware::radio::AppState>(
+                      ::android::hardware::radio::V1_0::AppState::PIN));
+static_assert(aidl::android::hardware::radio::AppState::PUK ==
+              static_cast<aidl::android::hardware::radio::AppState>(
+                      ::android::hardware::radio::V1_0::AppState::PUK));
+static_assert(aidl::android::hardware::radio::AppState::SUBSCRIPTION_PERSO ==
+              static_cast<aidl::android::hardware::radio::AppState>(
+                      ::android::hardware::radio::V1_0::AppState::SUBSCRIPTION_PERSO));
+static_assert(aidl::android::hardware::radio::AppState::READY ==
+              static_cast<aidl::android::hardware::radio::AppState>(
+                      ::android::hardware::radio::V1_0::AppState::READY));
+
+static_assert(aidl::android::hardware::radio::RadioState::OFF ==
+              static_cast<aidl::android::hardware::radio::RadioState>(
+                      ::android::hardware::radio::V1_0::RadioState::OFF));
+static_assert(aidl::android::hardware::radio::RadioState::UNAVAILABLE ==
+              static_cast<aidl::android::hardware::radio::RadioState>(
+                      ::android::hardware::radio::V1_0::RadioState::UNAVAILABLE));
+static_assert(aidl::android::hardware::radio::RadioState::ON ==
+              static_cast<aidl::android::hardware::radio::RadioState>(
+                      ::android::hardware::radio::V1_0::RadioState::ON));
+
+static_assert(aidl::android::hardware::radio::SapConnectRsp::SUCCESS ==
+              static_cast<aidl::android::hardware::radio::SapConnectRsp>(
+                      ::android::hardware::radio::V1_0::SapConnectRsp::SUCCESS));
+static_assert(aidl::android::hardware::radio::SapConnectRsp::CONNECT_FAILURE ==
+              static_cast<aidl::android::hardware::radio::SapConnectRsp>(
+                      ::android::hardware::radio::V1_0::SapConnectRsp::CONNECT_FAILURE));
+static_assert(aidl::android::hardware::radio::SapConnectRsp::MSG_SIZE_TOO_LARGE ==
+              static_cast<aidl::android::hardware::radio::SapConnectRsp>(
+                      ::android::hardware::radio::V1_0::SapConnectRsp::MSG_SIZE_TOO_LARGE));
+static_assert(aidl::android::hardware::radio::SapConnectRsp::MSG_SIZE_TOO_SMALL ==
+              static_cast<aidl::android::hardware::radio::SapConnectRsp>(
+                      ::android::hardware::radio::V1_0::SapConnectRsp::MSG_SIZE_TOO_SMALL));
+static_assert(aidl::android::hardware::radio::SapConnectRsp::CONNECT_OK_CALL_ONGOING ==
+              static_cast<aidl::android::hardware::radio::SapConnectRsp>(
+                      ::android::hardware::radio::V1_0::SapConnectRsp::CONNECT_OK_CALL_ONGOING));
+
+static_assert(aidl::android::hardware::radio::SapDisconnectType::GRACEFUL ==
+              static_cast<aidl::android::hardware::radio::SapDisconnectType>(
+                      ::android::hardware::radio::V1_0::SapDisconnectType::GRACEFUL));
+static_assert(aidl::android::hardware::radio::SapDisconnectType::IMMEDIATE ==
+              static_cast<aidl::android::hardware::radio::SapDisconnectType>(
+                      ::android::hardware::radio::V1_0::SapDisconnectType::IMMEDIATE));
+
+static_assert(aidl::android::hardware::radio::SapApduType::APDU ==
+              static_cast<aidl::android::hardware::radio::SapApduType>(
+                      ::android::hardware::radio::V1_0::SapApduType::APDU));
+static_assert(aidl::android::hardware::radio::SapApduType::APDU7816 ==
+              static_cast<aidl::android::hardware::radio::SapApduType>(
+                      ::android::hardware::radio::V1_0::SapApduType::APDU7816));
+
+static_assert(aidl::android::hardware::radio::SapResultCode::SUCCESS ==
+              static_cast<aidl::android::hardware::radio::SapResultCode>(
+                      ::android::hardware::radio::V1_0::SapResultCode::SUCCESS));
+static_assert(aidl::android::hardware::radio::SapResultCode::GENERIC_FAILURE ==
+              static_cast<aidl::android::hardware::radio::SapResultCode>(
+                      ::android::hardware::radio::V1_0::SapResultCode::GENERIC_FAILURE));
+static_assert(aidl::android::hardware::radio::SapResultCode::CARD_NOT_ACCESSSIBLE ==
+              static_cast<aidl::android::hardware::radio::SapResultCode>(
+                      ::android::hardware::radio::V1_0::SapResultCode::CARD_NOT_ACCESSSIBLE));
+static_assert(aidl::android::hardware::radio::SapResultCode::CARD_ALREADY_POWERED_OFF ==
+              static_cast<aidl::android::hardware::radio::SapResultCode>(
+                      ::android::hardware::radio::V1_0::SapResultCode::CARD_ALREADY_POWERED_OFF));
+static_assert(aidl::android::hardware::radio::SapResultCode::CARD_REMOVED ==
+              static_cast<aidl::android::hardware::radio::SapResultCode>(
+                      ::android::hardware::radio::V1_0::SapResultCode::CARD_REMOVED));
+static_assert(aidl::android::hardware::radio::SapResultCode::CARD_ALREADY_POWERED_ON ==
+              static_cast<aidl::android::hardware::radio::SapResultCode>(
+                      ::android::hardware::radio::V1_0::SapResultCode::CARD_ALREADY_POWERED_ON));
+static_assert(aidl::android::hardware::radio::SapResultCode::DATA_NOT_AVAILABLE ==
+              static_cast<aidl::android::hardware::radio::SapResultCode>(
+                      ::android::hardware::radio::V1_0::SapResultCode::DATA_NOT_AVAILABLE));
+static_assert(aidl::android::hardware::radio::SapResultCode::NOT_SUPPORTED ==
+              static_cast<aidl::android::hardware::radio::SapResultCode>(
+                      ::android::hardware::radio::V1_0::SapResultCode::NOT_SUPPORTED));
+
+static_assert(aidl::android::hardware::radio::SapStatus::UNKNOWN_ERROR ==
+              static_cast<aidl::android::hardware::radio::SapStatus>(
+                      ::android::hardware::radio::V1_0::SapStatus::UNKNOWN_ERROR));
+static_assert(aidl::android::hardware::radio::SapStatus::CARD_RESET ==
+              static_cast<aidl::android::hardware::radio::SapStatus>(
+                      ::android::hardware::radio::V1_0::SapStatus::CARD_RESET));
+static_assert(aidl::android::hardware::radio::SapStatus::CARD_NOT_ACCESSIBLE ==
+              static_cast<aidl::android::hardware::radio::SapStatus>(
+                      ::android::hardware::radio::V1_0::SapStatus::CARD_NOT_ACCESSIBLE));
+static_assert(aidl::android::hardware::radio::SapStatus::CARD_REMOVED ==
+              static_cast<aidl::android::hardware::radio::SapStatus>(
+                      ::android::hardware::radio::V1_0::SapStatus::CARD_REMOVED));
+static_assert(aidl::android::hardware::radio::SapStatus::CARD_INSERTED ==
+              static_cast<aidl::android::hardware::radio::SapStatus>(
+                      ::android::hardware::radio::V1_0::SapStatus::CARD_INSERTED));
+static_assert(aidl::android::hardware::radio::SapStatus::RECOVERED ==
+              static_cast<aidl::android::hardware::radio::SapStatus>(
+                      ::android::hardware::radio::V1_0::SapStatus::RECOVERED));
+
+static_assert(aidl::android::hardware::radio::SapTransferProtocol::T0 ==
+              static_cast<aidl::android::hardware::radio::SapTransferProtocol>(
+                      ::android::hardware::radio::V1_0::SapTransferProtocol::T0));
+static_assert(aidl::android::hardware::radio::SapTransferProtocol::T1 ==
+              static_cast<aidl::android::hardware::radio::SapTransferProtocol>(
+                      ::android::hardware::radio::V1_0::SapTransferProtocol::T1));
+
+static_assert(aidl::android::hardware::radio::CallState::ACTIVE ==
+              static_cast<aidl::android::hardware::radio::CallState>(
+                      ::android::hardware::radio::V1_0::CallState::ACTIVE));
+static_assert(aidl::android::hardware::radio::CallState::HOLDING ==
+              static_cast<aidl::android::hardware::radio::CallState>(
+                      ::android::hardware::radio::V1_0::CallState::HOLDING));
+static_assert(aidl::android::hardware::radio::CallState::DIALING ==
+              static_cast<aidl::android::hardware::radio::CallState>(
+                      ::android::hardware::radio::V1_0::CallState::DIALING));
+static_assert(aidl::android::hardware::radio::CallState::ALERTING ==
+              static_cast<aidl::android::hardware::radio::CallState>(
+                      ::android::hardware::radio::V1_0::CallState::ALERTING));
+static_assert(aidl::android::hardware::radio::CallState::INCOMING ==
+              static_cast<aidl::android::hardware::radio::CallState>(
+                      ::android::hardware::radio::V1_0::CallState::INCOMING));
+static_assert(aidl::android::hardware::radio::CallState::WAITING ==
+              static_cast<aidl::android::hardware::radio::CallState>(
+                      ::android::hardware::radio::V1_0::CallState::WAITING));
+
+static_assert(aidl::android::hardware::radio::UusType::TYPE1_IMPLICIT ==
+              static_cast<aidl::android::hardware::radio::UusType>(
+                      ::android::hardware::radio::V1_0::UusType::TYPE1_IMPLICIT));
+static_assert(aidl::android::hardware::radio::UusType::TYPE1_REQUIRED ==
+              static_cast<aidl::android::hardware::radio::UusType>(
+                      ::android::hardware::radio::V1_0::UusType::TYPE1_REQUIRED));
+static_assert(aidl::android::hardware::radio::UusType::TYPE1_NOT_REQUIRED ==
+              static_cast<aidl::android::hardware::radio::UusType>(
+                      ::android::hardware::radio::V1_0::UusType::TYPE1_NOT_REQUIRED));
+static_assert(aidl::android::hardware::radio::UusType::TYPE2_REQUIRED ==
+              static_cast<aidl::android::hardware::radio::UusType>(
+                      ::android::hardware::radio::V1_0::UusType::TYPE2_REQUIRED));
+static_assert(aidl::android::hardware::radio::UusType::TYPE2_NOT_REQUIRED ==
+              static_cast<aidl::android::hardware::radio::UusType>(
+                      ::android::hardware::radio::V1_0::UusType::TYPE2_NOT_REQUIRED));
+static_assert(aidl::android::hardware::radio::UusType::TYPE3_REQUIRED ==
+              static_cast<aidl::android::hardware::radio::UusType>(
+                      ::android::hardware::radio::V1_0::UusType::TYPE3_REQUIRED));
+static_assert(aidl::android::hardware::radio::UusType::TYPE3_NOT_REQUIRED ==
+              static_cast<aidl::android::hardware::radio::UusType>(
+                      ::android::hardware::radio::V1_0::UusType::TYPE3_NOT_REQUIRED));
+
+static_assert(aidl::android::hardware::radio::UusDcs::USP ==
+              static_cast<aidl::android::hardware::radio::UusDcs>(
+                      ::android::hardware::radio::V1_0::UusDcs::USP));
+static_assert(aidl::android::hardware::radio::UusDcs::OSIHLP ==
+              static_cast<aidl::android::hardware::radio::UusDcs>(
+                      ::android::hardware::radio::V1_0::UusDcs::OSIHLP));
+static_assert(aidl::android::hardware::radio::UusDcs::X244 ==
+              static_cast<aidl::android::hardware::radio::UusDcs>(
+                      ::android::hardware::radio::V1_0::UusDcs::X244));
+static_assert(aidl::android::hardware::radio::UusDcs::RMCF ==
+              static_cast<aidl::android::hardware::radio::UusDcs>(
+                      ::android::hardware::radio::V1_0::UusDcs::RMCF));
+static_assert(aidl::android::hardware::radio::UusDcs::IA5C ==
+              static_cast<aidl::android::hardware::radio::UusDcs>(
+                      ::android::hardware::radio::V1_0::UusDcs::IA5C));
+
+static_assert(aidl::android::hardware::radio::CallPresentation::ALLOWED ==
+              static_cast<aidl::android::hardware::radio::CallPresentation>(
+                      ::android::hardware::radio::V1_0::CallPresentation::ALLOWED));
+static_assert(aidl::android::hardware::radio::CallPresentation::RESTRICTED ==
+              static_cast<aidl::android::hardware::radio::CallPresentation>(
+                      ::android::hardware::radio::V1_0::CallPresentation::RESTRICTED));
+static_assert(aidl::android::hardware::radio::CallPresentation::UNKNOWN ==
+              static_cast<aidl::android::hardware::radio::CallPresentation>(
+                      ::android::hardware::radio::V1_0::CallPresentation::UNKNOWN));
+static_assert(aidl::android::hardware::radio::CallPresentation::PAYPHONE ==
+              static_cast<aidl::android::hardware::radio::CallPresentation>(
+                      ::android::hardware::radio::V1_0::CallPresentation::PAYPHONE));
+
+static_assert(aidl::android::hardware::radio::Clir::DEFAULT ==
+              static_cast<aidl::android::hardware::radio::Clir>(
+                      ::android::hardware::radio::V1_0::Clir::DEFAULT));
+static_assert(aidl::android::hardware::radio::Clir::INVOCATION ==
+              static_cast<aidl::android::hardware::radio::Clir>(
+                      ::android::hardware::radio::V1_0::Clir::INVOCATION));
+static_assert(aidl::android::hardware::radio::Clir::SUPPRESSION ==
+              static_cast<aidl::android::hardware::radio::Clir>(
+                      ::android::hardware::radio::V1_0::Clir::SUPPRESSION));
+
+static_assert(aidl::android::hardware::radio::LastCallFailCause::UNOBTAINABLE_NUMBER ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::UNOBTAINABLE_NUMBER));
+static_assert(
+        aidl::android::hardware::radio::LastCallFailCause::NO_ROUTE_TO_DESTINATION ==
+        static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                ::android::hardware::radio::V1_0::LastCallFailCause::NO_ROUTE_TO_DESTINATION));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::CHANNEL_UNACCEPTABLE ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::CHANNEL_UNACCEPTABLE));
+static_assert(
+        aidl::android::hardware::radio::LastCallFailCause::OPERATOR_DETERMINED_BARRING ==
+        static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                ::android::hardware::radio::V1_0::LastCallFailCause::OPERATOR_DETERMINED_BARRING));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::NORMAL ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::NORMAL));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::BUSY ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::BUSY));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::NO_USER_RESPONDING ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::NO_USER_RESPONDING));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::NO_ANSWER_FROM_USER ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::NO_ANSWER_FROM_USER));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::CALL_REJECTED ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::CALL_REJECTED));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::NUMBER_CHANGED ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::NUMBER_CHANGED));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::PREEMPTION ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::PREEMPTION));
+static_assert(
+        aidl::android::hardware::radio::LastCallFailCause::DESTINATION_OUT_OF_ORDER ==
+        static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                ::android::hardware::radio::V1_0::LastCallFailCause::DESTINATION_OUT_OF_ORDER));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::INVALID_NUMBER_FORMAT ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::INVALID_NUMBER_FORMAT));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::FACILITY_REJECTED ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::FACILITY_REJECTED));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::RESP_TO_STATUS_ENQUIRY ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::RESP_TO_STATUS_ENQUIRY));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::NORMAL_UNSPECIFIED ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::NORMAL_UNSPECIFIED));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::CONGESTION ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::CONGESTION));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::NETWORK_OUT_OF_ORDER ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::NETWORK_OUT_OF_ORDER));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::TEMPORARY_FAILURE ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::TEMPORARY_FAILURE));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::SWITCHING_EQUIPMENT_CONGESTION ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::
+                              SWITCHING_EQUIPMENT_CONGESTION));
+static_assert(
+        aidl::android::hardware::radio::LastCallFailCause::ACCESS_INFORMATION_DISCARDED ==
+        static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                ::android::hardware::radio::V1_0::LastCallFailCause::ACCESS_INFORMATION_DISCARDED));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::
+                      REQUESTED_CIRCUIT_OR_CHANNEL_NOT_AVAILABLE ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::
+                              REQUESTED_CIRCUIT_OR_CHANNEL_NOT_AVAILABLE));
+static_assert(
+        aidl::android::hardware::radio::LastCallFailCause::RESOURCES_UNAVAILABLE_OR_UNSPECIFIED ==
+        static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                ::android::hardware::radio::V1_0::LastCallFailCause::
+                        RESOURCES_UNAVAILABLE_OR_UNSPECIFIED));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::QOS_UNAVAILABLE ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::QOS_UNAVAILABLE));
+static_assert(
+        aidl::android::hardware::radio::LastCallFailCause::REQUESTED_FACILITY_NOT_SUBSCRIBED ==
+        static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                ::android::hardware::radio::V1_0::LastCallFailCause::
+                        REQUESTED_FACILITY_NOT_SUBSCRIBED));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::INCOMING_CALLS_BARRED_WITHIN_CUG ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::
+                              INCOMING_CALLS_BARRED_WITHIN_CUG));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::BEARER_CAPABILITY_NOT_AUTHORIZED ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::
+                              BEARER_CAPABILITY_NOT_AUTHORIZED));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::BEARER_CAPABILITY_UNAVAILABLE ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::
+                              BEARER_CAPABILITY_UNAVAILABLE));
+static_assert(
+        aidl::android::hardware::radio::LastCallFailCause::SERVICE_OPTION_NOT_AVAILABLE ==
+        static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                ::android::hardware::radio::V1_0::LastCallFailCause::SERVICE_OPTION_NOT_AVAILABLE));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::BEARER_SERVICE_NOT_IMPLEMENTED ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::
+                              BEARER_SERVICE_NOT_IMPLEMENTED));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::ACM_LIMIT_EXCEEDED ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::ACM_LIMIT_EXCEEDED));
+static_assert(
+        aidl::android::hardware::radio::LastCallFailCause::REQUESTED_FACILITY_NOT_IMPLEMENTED ==
+        static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                ::android::hardware::radio::V1_0::LastCallFailCause::
+                        REQUESTED_FACILITY_NOT_IMPLEMENTED));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::
+                      ONLY_DIGITAL_INFORMATION_BEARER_AVAILABLE ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::
+                              ONLY_DIGITAL_INFORMATION_BEARER_AVAILABLE));
+static_assert(
+        aidl::android::hardware::radio::LastCallFailCause::SERVICE_OR_OPTION_NOT_IMPLEMENTED ==
+        static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                ::android::hardware::radio::V1_0::LastCallFailCause::
+                        SERVICE_OR_OPTION_NOT_IMPLEMENTED));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::INVALID_TRANSACTION_IDENTIFIER ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::
+                              INVALID_TRANSACTION_IDENTIFIER));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::USER_NOT_MEMBER_OF_CUG ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::USER_NOT_MEMBER_OF_CUG));
+static_assert(
+        aidl::android::hardware::radio::LastCallFailCause::INCOMPATIBLE_DESTINATION ==
+        static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                ::android::hardware::radio::V1_0::LastCallFailCause::INCOMPATIBLE_DESTINATION));
+static_assert(
+        aidl::android::hardware::radio::LastCallFailCause::INVALID_TRANSIT_NW_SELECTION ==
+        static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                ::android::hardware::radio::V1_0::LastCallFailCause::INVALID_TRANSIT_NW_SELECTION));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::SEMANTICALLY_INCORRECT_MESSAGE ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::
+                              SEMANTICALLY_INCORRECT_MESSAGE));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::INVALID_MANDATORY_INFORMATION ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::
+                              INVALID_MANDATORY_INFORMATION));
+static_assert(
+        aidl::android::hardware::radio::LastCallFailCause::MESSAGE_TYPE_NON_IMPLEMENTED ==
+        static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                ::android::hardware::radio::V1_0::LastCallFailCause::MESSAGE_TYPE_NON_IMPLEMENTED));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::
+                      MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::
+                              MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::INFORMATION_ELEMENT_NON_EXISTENT ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::
+                              INFORMATION_ELEMENT_NON_EXISTENT));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::CONDITIONAL_IE_ERROR ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::CONDITIONAL_IE_ERROR));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::
+                      MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::
+                              MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE));
+static_assert(
+        aidl::android::hardware::radio::LastCallFailCause::RECOVERY_ON_TIMER_EXPIRED ==
+        static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                ::android::hardware::radio::V1_0::LastCallFailCause::RECOVERY_ON_TIMER_EXPIRED));
+static_assert(
+        aidl::android::hardware::radio::LastCallFailCause::PROTOCOL_ERROR_UNSPECIFIED ==
+        static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                ::android::hardware::radio::V1_0::LastCallFailCause::PROTOCOL_ERROR_UNSPECIFIED));
+static_assert(
+        aidl::android::hardware::radio::LastCallFailCause::INTERWORKING_UNSPECIFIED ==
+        static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                ::android::hardware::radio::V1_0::LastCallFailCause::INTERWORKING_UNSPECIFIED));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::CALL_BARRED ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::CALL_BARRED));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::FDN_BLOCKED ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::FDN_BLOCKED));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::IMSI_UNKNOWN_IN_VLR ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::IMSI_UNKNOWN_IN_VLR));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::IMEI_NOT_ACCEPTED ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::IMEI_NOT_ACCEPTED));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::DIAL_MODIFIED_TO_USSD ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::DIAL_MODIFIED_TO_USSD));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::DIAL_MODIFIED_TO_SS ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::DIAL_MODIFIED_TO_SS));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::DIAL_MODIFIED_TO_DIAL ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::DIAL_MODIFIED_TO_DIAL));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::RADIO_OFF ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::RADIO_OFF));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::OUT_OF_SERVICE ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::OUT_OF_SERVICE));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::NO_VALID_SIM ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::NO_VALID_SIM));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::RADIO_INTERNAL_ERROR ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::RADIO_INTERNAL_ERROR));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::NETWORK_RESP_TIMEOUT ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::NETWORK_RESP_TIMEOUT));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::NETWORK_REJECT ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::NETWORK_REJECT));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::RADIO_ACCESS_FAILURE ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::RADIO_ACCESS_FAILURE));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::RADIO_LINK_FAILURE ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::RADIO_LINK_FAILURE));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::RADIO_LINK_LOST ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::RADIO_LINK_LOST));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::RADIO_UPLINK_FAILURE ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::RADIO_UPLINK_FAILURE));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::RADIO_SETUP_FAILURE ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::RADIO_SETUP_FAILURE));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::RADIO_RELEASE_NORMAL ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::RADIO_RELEASE_NORMAL));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::RADIO_RELEASE_ABNORMAL ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::RADIO_RELEASE_ABNORMAL));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::ACCESS_CLASS_BLOCKED ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::ACCESS_CLASS_BLOCKED));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::NETWORK_DETACH ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::NETWORK_DETACH));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::CDMA_LOCKED_UNTIL_POWER_CYCLE ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::
+                              CDMA_LOCKED_UNTIL_POWER_CYCLE));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::CDMA_DROP ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::CDMA_DROP));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::CDMA_INTERCEPT ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::CDMA_INTERCEPT));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::CDMA_REORDER ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::CDMA_REORDER));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::CDMA_SO_REJECT ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::CDMA_SO_REJECT));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::CDMA_RETRY_ORDER ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::CDMA_RETRY_ORDER));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::CDMA_ACCESS_FAILURE ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::CDMA_ACCESS_FAILURE));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::CDMA_PREEMPTED ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::CDMA_PREEMPTED));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::CDMA_NOT_EMERGENCY ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::CDMA_NOT_EMERGENCY));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::CDMA_ACCESS_BLOCKED ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::CDMA_ACCESS_BLOCKED));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::OEM_CAUSE_1 ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::OEM_CAUSE_1));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::OEM_CAUSE_2 ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::OEM_CAUSE_2));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::OEM_CAUSE_3 ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::OEM_CAUSE_3));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::OEM_CAUSE_4 ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::OEM_CAUSE_4));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::OEM_CAUSE_5 ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::OEM_CAUSE_5));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::OEM_CAUSE_6 ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::OEM_CAUSE_6));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::OEM_CAUSE_7 ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::OEM_CAUSE_7));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::OEM_CAUSE_8 ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::OEM_CAUSE_8));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::OEM_CAUSE_9 ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::OEM_CAUSE_9));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::OEM_CAUSE_10 ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::OEM_CAUSE_10));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::OEM_CAUSE_11 ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::OEM_CAUSE_11));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::OEM_CAUSE_12 ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::OEM_CAUSE_12));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::OEM_CAUSE_13 ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::OEM_CAUSE_13));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::OEM_CAUSE_14 ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::OEM_CAUSE_14));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::OEM_CAUSE_15 ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::OEM_CAUSE_15));
+static_assert(aidl::android::hardware::radio::LastCallFailCause::ERROR_UNSPECIFIED ==
+              static_cast<aidl::android::hardware::radio::LastCallFailCause>(
+                      ::android::hardware::radio::V1_0::LastCallFailCause::ERROR_UNSPECIFIED));
+
+static_assert(aidl::android::hardware::radio::HardwareConfigType::MODEM ==
+              static_cast<aidl::android::hardware::radio::HardwareConfigType>(
+                      ::android::hardware::radio::V1_0::HardwareConfigType::MODEM));
+static_assert(aidl::android::hardware::radio::HardwareConfigType::SIM ==
+              static_cast<aidl::android::hardware::radio::HardwareConfigType>(
+                      ::android::hardware::radio::V1_0::HardwareConfigType::SIM));
+
+static_assert(aidl::android::hardware::radio::RegState::NOT_REG_MT_NOT_SEARCHING_OP ==
+              static_cast<aidl::android::hardware::radio::RegState>(
+                      ::android::hardware::radio::V1_0::RegState::NOT_REG_MT_NOT_SEARCHING_OP));
+static_assert(aidl::android::hardware::radio::RegState::REG_HOME ==
+              static_cast<aidl::android::hardware::radio::RegState>(
+                      ::android::hardware::radio::V1_0::RegState::REG_HOME));
+static_assert(aidl::android::hardware::radio::RegState::NOT_REG_MT_SEARCHING_OP ==
+              static_cast<aidl::android::hardware::radio::RegState>(
+                      ::android::hardware::radio::V1_0::RegState::NOT_REG_MT_SEARCHING_OP));
+static_assert(aidl::android::hardware::radio::RegState::REG_DENIED ==
+              static_cast<aidl::android::hardware::radio::RegState>(
+                      ::android::hardware::radio::V1_0::RegState::REG_DENIED));
+static_assert(aidl::android::hardware::radio::RegState::UNKNOWN ==
+              static_cast<aidl::android::hardware::radio::RegState>(
+                      ::android::hardware::radio::V1_0::RegState::UNKNOWN));
+static_assert(aidl::android::hardware::radio::RegState::REG_ROAMING ==
+              static_cast<aidl::android::hardware::radio::RegState>(
+                      ::android::hardware::radio::V1_0::RegState::REG_ROAMING));
+static_assert(aidl::android::hardware::radio::RegState::NOT_REG_MT_NOT_SEARCHING_OP_EM ==
+              static_cast<aidl::android::hardware::radio::RegState>(
+                      ::android::hardware::radio::V1_0::RegState::NOT_REG_MT_NOT_SEARCHING_OP_EM));
+static_assert(aidl::android::hardware::radio::RegState::NOT_REG_MT_SEARCHING_OP_EM ==
+              static_cast<aidl::android::hardware::radio::RegState>(
+                      ::android::hardware::radio::V1_0::RegState::NOT_REG_MT_SEARCHING_OP_EM));
+static_assert(aidl::android::hardware::radio::RegState::REG_DENIED_EM ==
+              static_cast<aidl::android::hardware::radio::RegState>(
+                      ::android::hardware::radio::V1_0::RegState::REG_DENIED_EM));
+static_assert(aidl::android::hardware::radio::RegState::UNKNOWN_EM ==
+              static_cast<aidl::android::hardware::radio::RegState>(
+                      ::android::hardware::radio::V1_0::RegState::UNKNOWN_EM));
+
+static_assert(aidl::android::hardware::radio::DataProfileId::DEFAULT ==
+              static_cast<aidl::android::hardware::radio::DataProfileId>(
+                      ::android::hardware::radio::V1_0::DataProfileId::DEFAULT));
+static_assert(aidl::android::hardware::radio::DataProfileId::TETHERED ==
+              static_cast<aidl::android::hardware::radio::DataProfileId>(
+                      ::android::hardware::radio::V1_0::DataProfileId::TETHERED));
+static_assert(aidl::android::hardware::radio::DataProfileId::IMS ==
+              static_cast<aidl::android::hardware::radio::DataProfileId>(
+                      ::android::hardware::radio::V1_0::DataProfileId::IMS));
+static_assert(aidl::android::hardware::radio::DataProfileId::FOTA ==
+              static_cast<aidl::android::hardware::radio::DataProfileId>(
+                      ::android::hardware::radio::V1_0::DataProfileId::FOTA));
+static_assert(aidl::android::hardware::radio::DataProfileId::CBS ==
+              static_cast<aidl::android::hardware::radio::DataProfileId>(
+                      ::android::hardware::radio::V1_0::DataProfileId::CBS));
+static_assert(aidl::android::hardware::radio::DataProfileId::OEM_BASE ==
+              static_cast<aidl::android::hardware::radio::DataProfileId>(
+                      ::android::hardware::radio::V1_0::DataProfileId::OEM_BASE));
+static_assert(aidl::android::hardware::radio::DataProfileId::INVALID ==
+              static_cast<aidl::android::hardware::radio::DataProfileId>(
+                      ::android::hardware::radio::V1_0::DataProfileId::INVALID));
+
+static_assert(aidl::android::hardware::radio::SmsAcknowledgeFailCause::MEMORY_CAPACITY_EXCEEDED ==
+              static_cast<aidl::android::hardware::radio::SmsAcknowledgeFailCause>(
+                      ::android::hardware::radio::V1_0::SmsAcknowledgeFailCause::
+                              MEMORY_CAPACITY_EXCEEDED));
+static_assert(
+        aidl::android::hardware::radio::SmsAcknowledgeFailCause::UNSPECIFIED_ERROR ==
+        static_cast<aidl::android::hardware::radio::SmsAcknowledgeFailCause>(
+                ::android::hardware::radio::V1_0::SmsAcknowledgeFailCause::UNSPECIFIED_ERROR));
+
+static_assert(aidl::android::hardware::radio::CallForwardInfoStatus::DISABLE ==
+              static_cast<aidl::android::hardware::radio::CallForwardInfoStatus>(
+                      ::android::hardware::radio::V1_0::CallForwardInfoStatus::DISABLE));
+static_assert(aidl::android::hardware::radio::CallForwardInfoStatus::ENABLE ==
+              static_cast<aidl::android::hardware::radio::CallForwardInfoStatus>(
+                      ::android::hardware::radio::V1_0::CallForwardInfoStatus::ENABLE));
+static_assert(aidl::android::hardware::radio::CallForwardInfoStatus::INTERROGATE ==
+              static_cast<aidl::android::hardware::radio::CallForwardInfoStatus>(
+                      ::android::hardware::radio::V1_0::CallForwardInfoStatus::INTERROGATE));
+static_assert(aidl::android::hardware::radio::CallForwardInfoStatus::REGISTRATION ==
+              static_cast<aidl::android::hardware::radio::CallForwardInfoStatus>(
+                      ::android::hardware::radio::V1_0::CallForwardInfoStatus::REGISTRATION));
+static_assert(aidl::android::hardware::radio::CallForwardInfoStatus::ERASURE ==
+              static_cast<aidl::android::hardware::radio::CallForwardInfoStatus>(
+                      ::android::hardware::radio::V1_0::CallForwardInfoStatus::ERASURE));
+
+static_assert(aidl::android::hardware::radio::ClipStatus::CLIP_PROVISIONED ==
+              static_cast<aidl::android::hardware::radio::ClipStatus>(
+                      ::android::hardware::radio::V1_0::ClipStatus::CLIP_PROVISIONED));
+static_assert(aidl::android::hardware::radio::ClipStatus::CLIP_UNPROVISIONED ==
+              static_cast<aidl::android::hardware::radio::ClipStatus>(
+                      ::android::hardware::radio::V1_0::ClipStatus::CLIP_UNPROVISIONED));
+static_assert(aidl::android::hardware::radio::ClipStatus::UNKNOWN ==
+              static_cast<aidl::android::hardware::radio::ClipStatus>(
+                      ::android::hardware::radio::V1_0::ClipStatus::UNKNOWN));
+
+static_assert(aidl::android::hardware::radio::SmsWriteArgsStatus::REC_UNREAD ==
+              static_cast<aidl::android::hardware::radio::SmsWriteArgsStatus>(
+                      ::android::hardware::radio::V1_0::SmsWriteArgsStatus::REC_UNREAD));
+static_assert(aidl::android::hardware::radio::SmsWriteArgsStatus::REC_READ ==
+              static_cast<aidl::android::hardware::radio::SmsWriteArgsStatus>(
+                      ::android::hardware::radio::V1_0::SmsWriteArgsStatus::REC_READ));
+static_assert(aidl::android::hardware::radio::SmsWriteArgsStatus::STO_UNSENT ==
+              static_cast<aidl::android::hardware::radio::SmsWriteArgsStatus>(
+                      ::android::hardware::radio::V1_0::SmsWriteArgsStatus::STO_UNSENT));
+static_assert(aidl::android::hardware::radio::SmsWriteArgsStatus::STO_SENT ==
+              static_cast<aidl::android::hardware::radio::SmsWriteArgsStatus>(
+                      ::android::hardware::radio::V1_0::SmsWriteArgsStatus::STO_SENT));
+
+static_assert(aidl::android::hardware::radio::RadioBandMode::BAND_MODE_UNSPECIFIED ==
+              static_cast<aidl::android::hardware::radio::RadioBandMode>(
+                      ::android::hardware::radio::V1_0::RadioBandMode::BAND_MODE_UNSPECIFIED));
+static_assert(aidl::android::hardware::radio::RadioBandMode::BAND_MODE_EURO ==
+              static_cast<aidl::android::hardware::radio::RadioBandMode>(
+                      ::android::hardware::radio::V1_0::RadioBandMode::BAND_MODE_EURO));
+static_assert(aidl::android::hardware::radio::RadioBandMode::BAND_MODE_USA ==
+              static_cast<aidl::android::hardware::radio::RadioBandMode>(
+                      ::android::hardware::radio::V1_0::RadioBandMode::BAND_MODE_USA));
+static_assert(aidl::android::hardware::radio::RadioBandMode::BAND_MODE_JPN ==
+              static_cast<aidl::android::hardware::radio::RadioBandMode>(
+                      ::android::hardware::radio::V1_0::RadioBandMode::BAND_MODE_JPN));
+static_assert(aidl::android::hardware::radio::RadioBandMode::BAND_MODE_AUS ==
+              static_cast<aidl::android::hardware::radio::RadioBandMode>(
+                      ::android::hardware::radio::V1_0::RadioBandMode::BAND_MODE_AUS));
+static_assert(aidl::android::hardware::radio::RadioBandMode::BAND_MODE_AUS_2 ==
+              static_cast<aidl::android::hardware::radio::RadioBandMode>(
+                      ::android::hardware::radio::V1_0::RadioBandMode::BAND_MODE_AUS_2));
+static_assert(aidl::android::hardware::radio::RadioBandMode::BAND_MODE_CELL_800 ==
+              static_cast<aidl::android::hardware::radio::RadioBandMode>(
+                      ::android::hardware::radio::V1_0::RadioBandMode::BAND_MODE_CELL_800));
+static_assert(aidl::android::hardware::radio::RadioBandMode::BAND_MODE_PCS ==
+              static_cast<aidl::android::hardware::radio::RadioBandMode>(
+                      ::android::hardware::radio::V1_0::RadioBandMode::BAND_MODE_PCS));
+static_assert(aidl::android::hardware::radio::RadioBandMode::BAND_MODE_JTACS ==
+              static_cast<aidl::android::hardware::radio::RadioBandMode>(
+                      ::android::hardware::radio::V1_0::RadioBandMode::BAND_MODE_JTACS));
+static_assert(aidl::android::hardware::radio::RadioBandMode::BAND_MODE_KOREA_PCS ==
+              static_cast<aidl::android::hardware::radio::RadioBandMode>(
+                      ::android::hardware::radio::V1_0::RadioBandMode::BAND_MODE_KOREA_PCS));
+static_assert(aidl::android::hardware::radio::RadioBandMode::BAND_MODE_5_450M ==
+              static_cast<aidl::android::hardware::radio::RadioBandMode>(
+                      ::android::hardware::radio::V1_0::RadioBandMode::BAND_MODE_5_450M));
+static_assert(aidl::android::hardware::radio::RadioBandMode::BAND_MODE_IMT2000 ==
+              static_cast<aidl::android::hardware::radio::RadioBandMode>(
+                      ::android::hardware::radio::V1_0::RadioBandMode::BAND_MODE_IMT2000));
+static_assert(aidl::android::hardware::radio::RadioBandMode::BAND_MODE_7_700M_2 ==
+              static_cast<aidl::android::hardware::radio::RadioBandMode>(
+                      ::android::hardware::radio::V1_0::RadioBandMode::BAND_MODE_7_700M_2));
+static_assert(aidl::android::hardware::radio::RadioBandMode::BAND_MODE_8_1800M ==
+              static_cast<aidl::android::hardware::radio::RadioBandMode>(
+                      ::android::hardware::radio::V1_0::RadioBandMode::BAND_MODE_8_1800M));
+static_assert(aidl::android::hardware::radio::RadioBandMode::BAND_MODE_9_900M ==
+              static_cast<aidl::android::hardware::radio::RadioBandMode>(
+                      ::android::hardware::radio::V1_0::RadioBandMode::BAND_MODE_9_900M));
+static_assert(aidl::android::hardware::radio::RadioBandMode::BAND_MODE_10_800M_2 ==
+              static_cast<aidl::android::hardware::radio::RadioBandMode>(
+                      ::android::hardware::radio::V1_0::RadioBandMode::BAND_MODE_10_800M_2));
+static_assert(aidl::android::hardware::radio::RadioBandMode::BAND_MODE_EURO_PAMR_400M ==
+              static_cast<aidl::android::hardware::radio::RadioBandMode>(
+                      ::android::hardware::radio::V1_0::RadioBandMode::BAND_MODE_EURO_PAMR_400M));
+static_assert(aidl::android::hardware::radio::RadioBandMode::BAND_MODE_AWS ==
+              static_cast<aidl::android::hardware::radio::RadioBandMode>(
+                      ::android::hardware::radio::V1_0::RadioBandMode::BAND_MODE_AWS));
+static_assert(aidl::android::hardware::radio::RadioBandMode::BAND_MODE_USA_2500M ==
+              static_cast<aidl::android::hardware::radio::RadioBandMode>(
+                      ::android::hardware::radio::V1_0::RadioBandMode::BAND_MODE_USA_2500M));
+
+static_assert(aidl::android::hardware::radio::OperatorStatus::UNKNOWN ==
+              static_cast<aidl::android::hardware::radio::OperatorStatus>(
+                      ::android::hardware::radio::V1_0::OperatorStatus::UNKNOWN));
+static_assert(aidl::android::hardware::radio::OperatorStatus::AVAILABLE ==
+              static_cast<aidl::android::hardware::radio::OperatorStatus>(
+                      ::android::hardware::radio::V1_0::OperatorStatus::AVAILABLE));
+static_assert(aidl::android::hardware::radio::OperatorStatus::CURRENT ==
+              static_cast<aidl::android::hardware::radio::OperatorStatus>(
+                      ::android::hardware::radio::V1_0::OperatorStatus::CURRENT));
+static_assert(aidl::android::hardware::radio::OperatorStatus::FORBIDDEN ==
+              static_cast<aidl::android::hardware::radio::OperatorStatus>(
+                      ::android::hardware::radio::V1_0::OperatorStatus::FORBIDDEN));
+
+static_assert(aidl::android::hardware::radio::PreferredNetworkType::GSM_WCDMA ==
+              static_cast<aidl::android::hardware::radio::PreferredNetworkType>(
+                      ::android::hardware::radio::V1_0::PreferredNetworkType::GSM_WCDMA));
+static_assert(aidl::android::hardware::radio::PreferredNetworkType::GSM_ONLY ==
+              static_cast<aidl::android::hardware::radio::PreferredNetworkType>(
+                      ::android::hardware::radio::V1_0::PreferredNetworkType::GSM_ONLY));
+static_assert(aidl::android::hardware::radio::PreferredNetworkType::WCDMA ==
+              static_cast<aidl::android::hardware::radio::PreferredNetworkType>(
+                      ::android::hardware::radio::V1_0::PreferredNetworkType::WCDMA));
+static_assert(aidl::android::hardware::radio::PreferredNetworkType::GSM_WCDMA_AUTO ==
+              static_cast<aidl::android::hardware::radio::PreferredNetworkType>(
+                      ::android::hardware::radio::V1_0::PreferredNetworkType::GSM_WCDMA_AUTO));
+static_assert(aidl::android::hardware::radio::PreferredNetworkType::CDMA_EVDO_AUTO ==
+              static_cast<aidl::android::hardware::radio::PreferredNetworkType>(
+                      ::android::hardware::radio::V1_0::PreferredNetworkType::CDMA_EVDO_AUTO));
+static_assert(aidl::android::hardware::radio::PreferredNetworkType::CDMA_ONLY ==
+              static_cast<aidl::android::hardware::radio::PreferredNetworkType>(
+                      ::android::hardware::radio::V1_0::PreferredNetworkType::CDMA_ONLY));
+static_assert(aidl::android::hardware::radio::PreferredNetworkType::EVDO_ONLY ==
+              static_cast<aidl::android::hardware::radio::PreferredNetworkType>(
+                      ::android::hardware::radio::V1_0::PreferredNetworkType::EVDO_ONLY));
+static_assert(
+        aidl::android::hardware::radio::PreferredNetworkType::GSM_WCDMA_CDMA_EVDO_AUTO ==
+        static_cast<aidl::android::hardware::radio::PreferredNetworkType>(
+                ::android::hardware::radio::V1_0::PreferredNetworkType::GSM_WCDMA_CDMA_EVDO_AUTO));
+static_assert(aidl::android::hardware::radio::PreferredNetworkType::LTE_CDMA_EVDO ==
+              static_cast<aidl::android::hardware::radio::PreferredNetworkType>(
+                      ::android::hardware::radio::V1_0::PreferredNetworkType::LTE_CDMA_EVDO));
+static_assert(aidl::android::hardware::radio::PreferredNetworkType::LTE_GSM_WCDMA ==
+              static_cast<aidl::android::hardware::radio::PreferredNetworkType>(
+                      ::android::hardware::radio::V1_0::PreferredNetworkType::LTE_GSM_WCDMA));
+static_assert(
+        aidl::android::hardware::radio::PreferredNetworkType::LTE_CMDA_EVDO_GSM_WCDMA ==
+        static_cast<aidl::android::hardware::radio::PreferredNetworkType>(
+                ::android::hardware::radio::V1_0::PreferredNetworkType::LTE_CMDA_EVDO_GSM_WCDMA));
+static_assert(aidl::android::hardware::radio::PreferredNetworkType::LTE_ONLY ==
+              static_cast<aidl::android::hardware::radio::PreferredNetworkType>(
+                      ::android::hardware::radio::V1_0::PreferredNetworkType::LTE_ONLY));
+static_assert(aidl::android::hardware::radio::PreferredNetworkType::LTE_WCDMA ==
+              static_cast<aidl::android::hardware::radio::PreferredNetworkType>(
+                      ::android::hardware::radio::V1_0::PreferredNetworkType::LTE_WCDMA));
+static_assert(aidl::android::hardware::radio::PreferredNetworkType::TD_SCDMA_ONLY ==
+              static_cast<aidl::android::hardware::radio::PreferredNetworkType>(
+                      ::android::hardware::radio::V1_0::PreferredNetworkType::TD_SCDMA_ONLY));
+static_assert(aidl::android::hardware::radio::PreferredNetworkType::TD_SCDMA_WCDMA ==
+              static_cast<aidl::android::hardware::radio::PreferredNetworkType>(
+                      ::android::hardware::radio::V1_0::PreferredNetworkType::TD_SCDMA_WCDMA));
+static_assert(aidl::android::hardware::radio::PreferredNetworkType::TD_SCDMA_LTE ==
+              static_cast<aidl::android::hardware::radio::PreferredNetworkType>(
+                      ::android::hardware::radio::V1_0::PreferredNetworkType::TD_SCDMA_LTE));
+static_assert(aidl::android::hardware::radio::PreferredNetworkType::TD_SCDMA_GSM ==
+              static_cast<aidl::android::hardware::radio::PreferredNetworkType>(
+                      ::android::hardware::radio::V1_0::PreferredNetworkType::TD_SCDMA_GSM));
+static_assert(aidl::android::hardware::radio::PreferredNetworkType::TD_SCDMA_GSM_LTE ==
+              static_cast<aidl::android::hardware::radio::PreferredNetworkType>(
+                      ::android::hardware::radio::V1_0::PreferredNetworkType::TD_SCDMA_GSM_LTE));
+static_assert(aidl::android::hardware::radio::PreferredNetworkType::TD_SCDMA_GSM_WCDMA ==
+              static_cast<aidl::android::hardware::radio::PreferredNetworkType>(
+                      ::android::hardware::radio::V1_0::PreferredNetworkType::TD_SCDMA_GSM_WCDMA));
+static_assert(aidl::android::hardware::radio::PreferredNetworkType::TD_SCDMA_WCDMA_LTE ==
+              static_cast<aidl::android::hardware::radio::PreferredNetworkType>(
+                      ::android::hardware::radio::V1_0::PreferredNetworkType::TD_SCDMA_WCDMA_LTE));
+static_assert(
+        aidl::android::hardware::radio::PreferredNetworkType::TD_SCDMA_GSM_WCDMA_LTE ==
+        static_cast<aidl::android::hardware::radio::PreferredNetworkType>(
+                ::android::hardware::radio::V1_0::PreferredNetworkType::TD_SCDMA_GSM_WCDMA_LTE));
+static_assert(
+        aidl::android::hardware::radio::PreferredNetworkType::TD_SCDMA_GSM_WCDMA_CDMA_EVDO_AUTO ==
+        static_cast<aidl::android::hardware::radio::PreferredNetworkType>(
+                ::android::hardware::radio::V1_0::PreferredNetworkType::
+                        TD_SCDMA_GSM_WCDMA_CDMA_EVDO_AUTO));
+static_assert(
+        aidl::android::hardware::radio::PreferredNetworkType::TD_SCDMA_LTE_CDMA_EVDO_GSM_WCDMA ==
+        static_cast<aidl::android::hardware::radio::PreferredNetworkType>(
+                ::android::hardware::radio::V1_0::PreferredNetworkType::
+                        TD_SCDMA_LTE_CDMA_EVDO_GSM_WCDMA));
+
+static_assert(aidl::android::hardware::radio::CdmaSubscriptionSource::RUIM_SIM ==
+              static_cast<aidl::android::hardware::radio::CdmaSubscriptionSource>(
+                      ::android::hardware::radio::V1_0::CdmaSubscriptionSource::RUIM_SIM));
+static_assert(aidl::android::hardware::radio::CdmaSubscriptionSource::NV ==
+              static_cast<aidl::android::hardware::radio::CdmaSubscriptionSource>(
+                      ::android::hardware::radio::V1_0::CdmaSubscriptionSource::NV));
+
+static_assert(aidl::android::hardware::radio::CdmaRoamingType::HOME_NETWORK ==
+              static_cast<aidl::android::hardware::radio::CdmaRoamingType>(
+                      ::android::hardware::radio::V1_0::CdmaRoamingType::HOME_NETWORK));
+static_assert(aidl::android::hardware::radio::CdmaRoamingType::AFFILIATED_ROAM ==
+              static_cast<aidl::android::hardware::radio::CdmaRoamingType>(
+                      ::android::hardware::radio::V1_0::CdmaRoamingType::AFFILIATED_ROAM));
+static_assert(aidl::android::hardware::radio::CdmaRoamingType::ANY_ROAM ==
+              static_cast<aidl::android::hardware::radio::CdmaRoamingType>(
+                      ::android::hardware::radio::V1_0::CdmaRoamingType::ANY_ROAM));
+
+static_assert(aidl::android::hardware::radio::TtyMode::OFF ==
+              static_cast<aidl::android::hardware::radio::TtyMode>(
+                      ::android::hardware::radio::V1_0::TtyMode::OFF));
+static_assert(aidl::android::hardware::radio::TtyMode::FULL ==
+              static_cast<aidl::android::hardware::radio::TtyMode>(
+                      ::android::hardware::radio::V1_0::TtyMode::FULL));
+static_assert(aidl::android::hardware::radio::TtyMode::HCO ==
+              static_cast<aidl::android::hardware::radio::TtyMode>(
+                      ::android::hardware::radio::V1_0::TtyMode::HCO));
+static_assert(aidl::android::hardware::radio::TtyMode::VCO ==
+              static_cast<aidl::android::hardware::radio::TtyMode>(
+                      ::android::hardware::radio::V1_0::TtyMode::VCO));
+
+static_assert(aidl::android::hardware::radio::NvItem::CDMA_MEID ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::CDMA_MEID));
+static_assert(aidl::android::hardware::radio::NvItem::CDMA_MIN ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::CDMA_MIN));
+static_assert(aidl::android::hardware::radio::NvItem::CDMA_MDN ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::CDMA_MDN));
+static_assert(aidl::android::hardware::radio::NvItem::CDMA_ACCOLC ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::CDMA_ACCOLC));
+static_assert(aidl::android::hardware::radio::NvItem::DEVICE_MSL ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::DEVICE_MSL));
+static_assert(aidl::android::hardware::radio::NvItem::RTN_RECONDITIONED_STATUS ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::RTN_RECONDITIONED_STATUS));
+static_assert(aidl::android::hardware::radio::NvItem::RTN_ACTIVATION_DATE ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::RTN_ACTIVATION_DATE));
+static_assert(aidl::android::hardware::radio::NvItem::RTN_LIFE_TIMER ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::RTN_LIFE_TIMER));
+static_assert(aidl::android::hardware::radio::NvItem::RTN_LIFE_CALLS ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::RTN_LIFE_CALLS));
+static_assert(aidl::android::hardware::radio::NvItem::RTN_LIFE_DATA_TX ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::RTN_LIFE_DATA_TX));
+static_assert(aidl::android::hardware::radio::NvItem::RTN_LIFE_DATA_RX ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::RTN_LIFE_DATA_RX));
+static_assert(aidl::android::hardware::radio::NvItem::OMADM_HFA_LEVEL ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::OMADM_HFA_LEVEL));
+static_assert(aidl::android::hardware::radio::NvItem::MIP_PROFILE_NAI ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::MIP_PROFILE_NAI));
+static_assert(aidl::android::hardware::radio::NvItem::MIP_PROFILE_HOME_ADDRESS ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::MIP_PROFILE_HOME_ADDRESS));
+static_assert(aidl::android::hardware::radio::NvItem::MIP_PROFILE_AAA_AUTH ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::MIP_PROFILE_AAA_AUTH));
+static_assert(aidl::android::hardware::radio::NvItem::MIP_PROFILE_HA_AUTH ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::MIP_PROFILE_HA_AUTH));
+static_assert(aidl::android::hardware::radio::NvItem::MIP_PROFILE_PRI_HA_ADDR ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::MIP_PROFILE_PRI_HA_ADDR));
+static_assert(aidl::android::hardware::radio::NvItem::MIP_PROFILE_SEC_HA_ADDR ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::MIP_PROFILE_SEC_HA_ADDR));
+static_assert(aidl::android::hardware::radio::NvItem::MIP_PROFILE_REV_TUN_PREF ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::MIP_PROFILE_REV_TUN_PREF));
+static_assert(aidl::android::hardware::radio::NvItem::MIP_PROFILE_HA_SPI ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::MIP_PROFILE_HA_SPI));
+static_assert(aidl::android::hardware::radio::NvItem::MIP_PROFILE_AAA_SPI ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::MIP_PROFILE_AAA_SPI));
+static_assert(aidl::android::hardware::radio::NvItem::MIP_PROFILE_MN_HA_SS ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::MIP_PROFILE_MN_HA_SS));
+static_assert(aidl::android::hardware::radio::NvItem::MIP_PROFILE_MN_AAA_SS ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::MIP_PROFILE_MN_AAA_SS));
+static_assert(aidl::android::hardware::radio::NvItem::CDMA_PRL_VERSION ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::CDMA_PRL_VERSION));
+static_assert(aidl::android::hardware::radio::NvItem::CDMA_BC10 ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::CDMA_BC10));
+static_assert(aidl::android::hardware::radio::NvItem::CDMA_BC14 ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::CDMA_BC14));
+static_assert(aidl::android::hardware::radio::NvItem::CDMA_SO68 ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::CDMA_SO68));
+static_assert(aidl::android::hardware::radio::NvItem::CDMA_SO73_COP0 ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::CDMA_SO73_COP0));
+static_assert(aidl::android::hardware::radio::NvItem::CDMA_SO73_COP1TO7 ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::CDMA_SO73_COP1TO7));
+static_assert(aidl::android::hardware::radio::NvItem::CDMA_1X_ADVANCED_ENABLED ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::CDMA_1X_ADVANCED_ENABLED));
+static_assert(aidl::android::hardware::radio::NvItem::CDMA_EHRPD_ENABLED ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::CDMA_EHRPD_ENABLED));
+static_assert(aidl::android::hardware::radio::NvItem::CDMA_EHRPD_FORCED ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::CDMA_EHRPD_FORCED));
+static_assert(aidl::android::hardware::radio::NvItem::LTE_BAND_ENABLE_25 ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::LTE_BAND_ENABLE_25));
+static_assert(aidl::android::hardware::radio::NvItem::LTE_BAND_ENABLE_26 ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::LTE_BAND_ENABLE_26));
+static_assert(aidl::android::hardware::radio::NvItem::LTE_BAND_ENABLE_41 ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::LTE_BAND_ENABLE_41));
+static_assert(aidl::android::hardware::radio::NvItem::LTE_SCAN_PRIORITY_25 ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::LTE_SCAN_PRIORITY_25));
+static_assert(aidl::android::hardware::radio::NvItem::LTE_SCAN_PRIORITY_26 ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::LTE_SCAN_PRIORITY_26));
+static_assert(aidl::android::hardware::radio::NvItem::LTE_SCAN_PRIORITY_41 ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::LTE_SCAN_PRIORITY_41));
+static_assert(aidl::android::hardware::radio::NvItem::LTE_HIDDEN_BAND_PRIORITY_25 ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::LTE_HIDDEN_BAND_PRIORITY_25));
+static_assert(aidl::android::hardware::radio::NvItem::LTE_HIDDEN_BAND_PRIORITY_26 ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::LTE_HIDDEN_BAND_PRIORITY_26));
+static_assert(aidl::android::hardware::radio::NvItem::LTE_HIDDEN_BAND_PRIORITY_41 ==
+              static_cast<aidl::android::hardware::radio::NvItem>(
+                      ::android::hardware::radio::V1_0::NvItem::LTE_HIDDEN_BAND_PRIORITY_41));
+
+static_assert(aidl::android::hardware::radio::ResetNvType::RELOAD ==
+              static_cast<aidl::android::hardware::radio::ResetNvType>(
+                      ::android::hardware::radio::V1_0::ResetNvType::RELOAD));
+static_assert(aidl::android::hardware::radio::ResetNvType::ERASE ==
+              static_cast<aidl::android::hardware::radio::ResetNvType>(
+                      ::android::hardware::radio::V1_0::ResetNvType::ERASE));
+static_assert(aidl::android::hardware::radio::ResetNvType::FACTORY_RESET ==
+              static_cast<aidl::android::hardware::radio::ResetNvType>(
+                      ::android::hardware::radio::V1_0::ResetNvType::FACTORY_RESET));
+
+static_assert(aidl::android::hardware::radio::HardwareConfigState::ENABLED ==
+              static_cast<aidl::android::hardware::radio::HardwareConfigState>(
+                      ::android::hardware::radio::V1_0::HardwareConfigState::ENABLED));
+static_assert(aidl::android::hardware::radio::HardwareConfigState::STANDBY ==
+              static_cast<aidl::android::hardware::radio::HardwareConfigState>(
+                      ::android::hardware::radio::V1_0::HardwareConfigState::STANDBY));
+static_assert(aidl::android::hardware::radio::HardwareConfigState::DISABLED ==
+              static_cast<aidl::android::hardware::radio::HardwareConfigState>(
+                      ::android::hardware::radio::V1_0::HardwareConfigState::DISABLED));
+
+static_assert(aidl::android::hardware::radio::LceStatus::NOT_SUPPORTED ==
+              static_cast<aidl::android::hardware::radio::LceStatus>(
+                      ::android::hardware::radio::V1_0::LceStatus::NOT_SUPPORTED));
+static_assert(aidl::android::hardware::radio::LceStatus::STOPPED ==
+              static_cast<aidl::android::hardware::radio::LceStatus>(
+                      ::android::hardware::radio::V1_0::LceStatus::STOPPED));
+static_assert(aidl::android::hardware::radio::LceStatus::ACTIVE ==
+              static_cast<aidl::android::hardware::radio::LceStatus>(
+                      ::android::hardware::radio::V1_0::LceStatus::ACTIVE));
+
+static_assert(aidl::android::hardware::radio::CarrierMatchType::ALL ==
+              static_cast<aidl::android::hardware::radio::CarrierMatchType>(
+                      ::android::hardware::radio::V1_0::CarrierMatchType::ALL));
+static_assert(aidl::android::hardware::radio::CarrierMatchType::SPN ==
+              static_cast<aidl::android::hardware::radio::CarrierMatchType>(
+                      ::android::hardware::radio::V1_0::CarrierMatchType::SPN));
+static_assert(aidl::android::hardware::radio::CarrierMatchType::IMSI_PREFIX ==
+              static_cast<aidl::android::hardware::radio::CarrierMatchType>(
+                      ::android::hardware::radio::V1_0::CarrierMatchType::IMSI_PREFIX));
+static_assert(aidl::android::hardware::radio::CarrierMatchType::GID1 ==
+              static_cast<aidl::android::hardware::radio::CarrierMatchType>(
+                      ::android::hardware::radio::V1_0::CarrierMatchType::GID1));
+static_assert(aidl::android::hardware::radio::CarrierMatchType::GID2 ==
+              static_cast<aidl::android::hardware::radio::CarrierMatchType>(
+                      ::android::hardware::radio::V1_0::CarrierMatchType::GID2));
+
+static_assert(aidl::android::hardware::radio::CdmaSmsDigitMode::FOUR_BIT ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsDigitMode>(
+                      ::android::hardware::radio::V1_0::CdmaSmsDigitMode::FOUR_BIT));
+static_assert(aidl::android::hardware::radio::CdmaSmsDigitMode::EIGHT_BIT ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsDigitMode>(
+                      ::android::hardware::radio::V1_0::CdmaSmsDigitMode::EIGHT_BIT));
+
+static_assert(aidl::android::hardware::radio::CdmaSmsNumberMode::NOT_DATA_NETWORK ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsNumberMode>(
+                      ::android::hardware::radio::V1_0::CdmaSmsNumberMode::NOT_DATA_NETWORK));
+static_assert(aidl::android::hardware::radio::CdmaSmsNumberMode::DATA_NETWORK ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsNumberMode>(
+                      ::android::hardware::radio::V1_0::CdmaSmsNumberMode::DATA_NETWORK));
+
+static_assert(aidl::android::hardware::radio::CdmaSmsNumberType::UNKNOWN ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsNumberType>(
+                      ::android::hardware::radio::V1_0::CdmaSmsNumberType::UNKNOWN));
+static_assert(
+        aidl::android::hardware::radio::CdmaSmsNumberType::INTERNATIONAL_OR_DATA_IP ==
+        static_cast<aidl::android::hardware::radio::CdmaSmsNumberType>(
+                ::android::hardware::radio::V1_0::CdmaSmsNumberType::INTERNATIONAL_OR_DATA_IP));
+static_assert(
+        aidl::android::hardware::radio::CdmaSmsNumberType::NATIONAL_OR_INTERNET_MAIL ==
+        static_cast<aidl::android::hardware::radio::CdmaSmsNumberType>(
+                ::android::hardware::radio::V1_0::CdmaSmsNumberType::NATIONAL_OR_INTERNET_MAIL));
+static_assert(aidl::android::hardware::radio::CdmaSmsNumberType::NETWORK ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsNumberType>(
+                      ::android::hardware::radio::V1_0::CdmaSmsNumberType::NETWORK));
+static_assert(aidl::android::hardware::radio::CdmaSmsNumberType::SUBSCRIBER ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsNumberType>(
+                      ::android::hardware::radio::V1_0::CdmaSmsNumberType::SUBSCRIBER));
+static_assert(aidl::android::hardware::radio::CdmaSmsNumberType::ALPHANUMERIC ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsNumberType>(
+                      ::android::hardware::radio::V1_0::CdmaSmsNumberType::ALPHANUMERIC));
+static_assert(aidl::android::hardware::radio::CdmaSmsNumberType::ABBREVIATED ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsNumberType>(
+                      ::android::hardware::radio::V1_0::CdmaSmsNumberType::ABBREVIATED));
+static_assert(aidl::android::hardware::radio::CdmaSmsNumberType::RESERVED_7 ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsNumberType>(
+                      ::android::hardware::radio::V1_0::CdmaSmsNumberType::RESERVED_7));
+
+static_assert(aidl::android::hardware::radio::CdmaSmsNumberPlan::UNKNOWN ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsNumberPlan>(
+                      ::android::hardware::radio::V1_0::CdmaSmsNumberPlan::UNKNOWN));
+static_assert(aidl::android::hardware::radio::CdmaSmsNumberPlan::TELEPHONY ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsNumberPlan>(
+                      ::android::hardware::radio::V1_0::CdmaSmsNumberPlan::TELEPHONY));
+static_assert(aidl::android::hardware::radio::CdmaSmsNumberPlan::RESERVED_2 ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsNumberPlan>(
+                      ::android::hardware::radio::V1_0::CdmaSmsNumberPlan::RESERVED_2));
+static_assert(aidl::android::hardware::radio::CdmaSmsNumberPlan::DATA ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsNumberPlan>(
+                      ::android::hardware::radio::V1_0::CdmaSmsNumberPlan::DATA));
+static_assert(aidl::android::hardware::radio::CdmaSmsNumberPlan::TELEX ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsNumberPlan>(
+                      ::android::hardware::radio::V1_0::CdmaSmsNumberPlan::TELEX));
+static_assert(aidl::android::hardware::radio::CdmaSmsNumberPlan::RESERVED_5 ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsNumberPlan>(
+                      ::android::hardware::radio::V1_0::CdmaSmsNumberPlan::RESERVED_5));
+static_assert(aidl::android::hardware::radio::CdmaSmsNumberPlan::RESERVED_6 ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsNumberPlan>(
+                      ::android::hardware::radio::V1_0::CdmaSmsNumberPlan::RESERVED_6));
+static_assert(aidl::android::hardware::radio::CdmaSmsNumberPlan::RESERVED_7 ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsNumberPlan>(
+                      ::android::hardware::radio::V1_0::CdmaSmsNumberPlan::RESERVED_7));
+static_assert(aidl::android::hardware::radio::CdmaSmsNumberPlan::RESERVED_8 ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsNumberPlan>(
+                      ::android::hardware::radio::V1_0::CdmaSmsNumberPlan::RESERVED_8));
+static_assert(aidl::android::hardware::radio::CdmaSmsNumberPlan::PRIVATE ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsNumberPlan>(
+                      ::android::hardware::radio::V1_0::CdmaSmsNumberPlan::PRIVATE));
+static_assert(aidl::android::hardware::radio::CdmaSmsNumberPlan::RESERVED_10 ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsNumberPlan>(
+                      ::android::hardware::radio::V1_0::CdmaSmsNumberPlan::RESERVED_10));
+static_assert(aidl::android::hardware::radio::CdmaSmsNumberPlan::RESERVED_11 ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsNumberPlan>(
+                      ::android::hardware::radio::V1_0::CdmaSmsNumberPlan::RESERVED_11));
+static_assert(aidl::android::hardware::radio::CdmaSmsNumberPlan::RESERVED_12 ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsNumberPlan>(
+                      ::android::hardware::radio::V1_0::CdmaSmsNumberPlan::RESERVED_12));
+static_assert(aidl::android::hardware::radio::CdmaSmsNumberPlan::RESERVED_13 ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsNumberPlan>(
+                      ::android::hardware::radio::V1_0::CdmaSmsNumberPlan::RESERVED_13));
+static_assert(aidl::android::hardware::radio::CdmaSmsNumberPlan::RESERVED_14 ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsNumberPlan>(
+                      ::android::hardware::radio::V1_0::CdmaSmsNumberPlan::RESERVED_14));
+static_assert(aidl::android::hardware::radio::CdmaSmsNumberPlan::RESERVED_15 ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsNumberPlan>(
+                      ::android::hardware::radio::V1_0::CdmaSmsNumberPlan::RESERVED_15));
+
+static_assert(aidl::android::hardware::radio::CdmaSmsSubaddressType::NSAP ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsSubaddressType>(
+                      ::android::hardware::radio::V1_0::CdmaSmsSubaddressType::NSAP));
+static_assert(aidl::android::hardware::radio::CdmaSmsSubaddressType::USER_SPECIFIED ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsSubaddressType>(
+                      ::android::hardware::radio::V1_0::CdmaSmsSubaddressType::USER_SPECIFIED));
+
+static_assert(aidl::android::hardware::radio::CdmaSmsErrorClass::NO_ERROR ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsErrorClass>(
+                      ::android::hardware::radio::V1_0::CdmaSmsErrorClass::NO_ERROR));
+static_assert(aidl::android::hardware::radio::CdmaSmsErrorClass::ERROR ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsErrorClass>(
+                      ::android::hardware::radio::V1_0::CdmaSmsErrorClass::ERROR));
+
+static_assert(aidl::android::hardware::radio::CdmaSmsWriteArgsStatus::REC_UNREAD ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsWriteArgsStatus>(
+                      ::android::hardware::radio::V1_0::CdmaSmsWriteArgsStatus::REC_UNREAD));
+static_assert(aidl::android::hardware::radio::CdmaSmsWriteArgsStatus::REC_READ ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsWriteArgsStatus>(
+                      ::android::hardware::radio::V1_0::CdmaSmsWriteArgsStatus::REC_READ));
+static_assert(aidl::android::hardware::radio::CdmaSmsWriteArgsStatus::STO_UNSENT ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsWriteArgsStatus>(
+                      ::android::hardware::radio::V1_0::CdmaSmsWriteArgsStatus::STO_UNSENT));
+static_assert(aidl::android::hardware::radio::CdmaSmsWriteArgsStatus::STO_SENT ==
+              static_cast<aidl::android::hardware::radio::CdmaSmsWriteArgsStatus>(
+                      ::android::hardware::radio::V1_0::CdmaSmsWriteArgsStatus::STO_SENT));
+
+static_assert(aidl::android::hardware::radio::CellInfoType::NONE ==
+              static_cast<aidl::android::hardware::radio::CellInfoType>(
+                      ::android::hardware::radio::V1_0::CellInfoType::NONE));
+static_assert(aidl::android::hardware::radio::CellInfoType::GSM ==
+              static_cast<aidl::android::hardware::radio::CellInfoType>(
+                      ::android::hardware::radio::V1_0::CellInfoType::GSM));
+static_assert(aidl::android::hardware::radio::CellInfoType::CDMA ==
+              static_cast<aidl::android::hardware::radio::CellInfoType>(
+                      ::android::hardware::radio::V1_0::CellInfoType::CDMA));
+static_assert(aidl::android::hardware::radio::CellInfoType::LTE ==
+              static_cast<aidl::android::hardware::radio::CellInfoType>(
+                      ::android::hardware::radio::V1_0::CellInfoType::LTE));
+static_assert(aidl::android::hardware::radio::CellInfoType::WCDMA ==
+              static_cast<aidl::android::hardware::radio::CellInfoType>(
+                      ::android::hardware::radio::V1_0::CellInfoType::WCDMA));
+static_assert(aidl::android::hardware::radio::CellInfoType::TD_SCDMA ==
+              static_cast<aidl::android::hardware::radio::CellInfoType>(
+                      ::android::hardware::radio::V1_0::CellInfoType::TD_SCDMA));
+
+static_assert(aidl::android::hardware::radio::TimeStampType::UNKNOWN ==
+              static_cast<aidl::android::hardware::radio::TimeStampType>(
+                      ::android::hardware::radio::V1_0::TimeStampType::UNKNOWN));
+static_assert(aidl::android::hardware::radio::TimeStampType::ANTENNA ==
+              static_cast<aidl::android::hardware::radio::TimeStampType>(
+                      ::android::hardware::radio::V1_0::TimeStampType::ANTENNA));
+static_assert(aidl::android::hardware::radio::TimeStampType::MODEM ==
+              static_cast<aidl::android::hardware::radio::TimeStampType>(
+                      ::android::hardware::radio::V1_0::TimeStampType::MODEM));
+static_assert(aidl::android::hardware::radio::TimeStampType::OEM_RIL ==
+              static_cast<aidl::android::hardware::radio::TimeStampType>(
+                      ::android::hardware::radio::V1_0::TimeStampType::OEM_RIL));
+static_assert(aidl::android::hardware::radio::TimeStampType::JAVA_RIL ==
+              static_cast<aidl::android::hardware::radio::TimeStampType>(
+                      ::android::hardware::radio::V1_0::TimeStampType::JAVA_RIL));
+
+static_assert(aidl::android::hardware::radio::ApnAuthType::NO_PAP_NO_CHAP ==
+              static_cast<aidl::android::hardware::radio::ApnAuthType>(
+                      ::android::hardware::radio::V1_0::ApnAuthType::NO_PAP_NO_CHAP));
+static_assert(aidl::android::hardware::radio::ApnAuthType::PAP_NO_CHAP ==
+              static_cast<aidl::android::hardware::radio::ApnAuthType>(
+                      ::android::hardware::radio::V1_0::ApnAuthType::PAP_NO_CHAP));
+static_assert(aidl::android::hardware::radio::ApnAuthType::NO_PAP_CHAP ==
+              static_cast<aidl::android::hardware::radio::ApnAuthType>(
+                      ::android::hardware::radio::V1_0::ApnAuthType::NO_PAP_CHAP));
+static_assert(aidl::android::hardware::radio::ApnAuthType::PAP_CHAP ==
+              static_cast<aidl::android::hardware::radio::ApnAuthType>(
+                      ::android::hardware::radio::V1_0::ApnAuthType::PAP_CHAP));
+
+static_assert(aidl::android::hardware::radio::RadioTechnologyFamily::THREE_GPP ==
+              static_cast<aidl::android::hardware::radio::RadioTechnologyFamily>(
+                      ::android::hardware::radio::V1_0::RadioTechnologyFamily::THREE_GPP));
+static_assert(aidl::android::hardware::radio::RadioTechnologyFamily::THREE_GPP2 ==
+              static_cast<aidl::android::hardware::radio::RadioTechnologyFamily>(
+                      ::android::hardware::radio::V1_0::RadioTechnologyFamily::THREE_GPP2));
+
+static_assert(aidl::android::hardware::radio::RadioCapabilityPhase::CONFIGURED ==
+              static_cast<aidl::android::hardware::radio::RadioCapabilityPhase>(
+                      ::android::hardware::radio::V1_0::RadioCapabilityPhase::CONFIGURED));
+static_assert(aidl::android::hardware::radio::RadioCapabilityPhase::START ==
+              static_cast<aidl::android::hardware::radio::RadioCapabilityPhase>(
+                      ::android::hardware::radio::V1_0::RadioCapabilityPhase::START));
+static_assert(aidl::android::hardware::radio::RadioCapabilityPhase::APPLY ==
+              static_cast<aidl::android::hardware::radio::RadioCapabilityPhase>(
+                      ::android::hardware::radio::V1_0::RadioCapabilityPhase::APPLY));
+static_assert(aidl::android::hardware::radio::RadioCapabilityPhase::UNSOL_RSP ==
+              static_cast<aidl::android::hardware::radio::RadioCapabilityPhase>(
+                      ::android::hardware::radio::V1_0::RadioCapabilityPhase::UNSOL_RSP));
+static_assert(aidl::android::hardware::radio::RadioCapabilityPhase::FINISH ==
+              static_cast<aidl::android::hardware::radio::RadioCapabilityPhase>(
+                      ::android::hardware::radio::V1_0::RadioCapabilityPhase::FINISH));
+
+static_assert(aidl::android::hardware::radio::RadioCapabilityStatus::NONE ==
+              static_cast<aidl::android::hardware::radio::RadioCapabilityStatus>(
+                      ::android::hardware::radio::V1_0::RadioCapabilityStatus::NONE));
+static_assert(aidl::android::hardware::radio::RadioCapabilityStatus::SUCCESS ==
+              static_cast<aidl::android::hardware::radio::RadioCapabilityStatus>(
+                      ::android::hardware::radio::V1_0::RadioCapabilityStatus::SUCCESS));
+static_assert(aidl::android::hardware::radio::RadioCapabilityStatus::FAIL ==
+              static_cast<aidl::android::hardware::radio::RadioCapabilityStatus>(
+                      ::android::hardware::radio::V1_0::RadioCapabilityStatus::FAIL));
+
+static_assert(aidl::android::hardware::radio::UssdModeType::NOTIFY ==
+              static_cast<aidl::android::hardware::radio::UssdModeType>(
+                      ::android::hardware::radio::V1_0::UssdModeType::NOTIFY));
+static_assert(aidl::android::hardware::radio::UssdModeType::REQUEST ==
+              static_cast<aidl::android::hardware::radio::UssdModeType>(
+                      ::android::hardware::radio::V1_0::UssdModeType::REQUEST));
+static_assert(aidl::android::hardware::radio::UssdModeType::NW_RELEASE ==
+              static_cast<aidl::android::hardware::radio::UssdModeType>(
+                      ::android::hardware::radio::V1_0::UssdModeType::NW_RELEASE));
+static_assert(aidl::android::hardware::radio::UssdModeType::LOCAL_CLIENT ==
+              static_cast<aidl::android::hardware::radio::UssdModeType>(
+                      ::android::hardware::radio::V1_0::UssdModeType::LOCAL_CLIENT));
+static_assert(aidl::android::hardware::radio::UssdModeType::NOT_SUPPORTED ==
+              static_cast<aidl::android::hardware::radio::UssdModeType>(
+                      ::android::hardware::radio::V1_0::UssdModeType::NOT_SUPPORTED));
+static_assert(aidl::android::hardware::radio::UssdModeType::NW_TIMEOUT ==
+              static_cast<aidl::android::hardware::radio::UssdModeType>(
+                      ::android::hardware::radio::V1_0::UssdModeType::NW_TIMEOUT));
+
+static_assert(aidl::android::hardware::radio::SimRefreshType::SIM_FILE_UPDATE ==
+              static_cast<aidl::android::hardware::radio::SimRefreshType>(
+                      ::android::hardware::radio::V1_0::SimRefreshType::SIM_FILE_UPDATE));
+static_assert(aidl::android::hardware::radio::SimRefreshType::SIM_INIT ==
+              static_cast<aidl::android::hardware::radio::SimRefreshType>(
+                      ::android::hardware::radio::V1_0::SimRefreshType::SIM_INIT));
+static_assert(aidl::android::hardware::radio::SimRefreshType::SIM_RESET ==
+              static_cast<aidl::android::hardware::radio::SimRefreshType>(
+                      ::android::hardware::radio::V1_0::SimRefreshType::SIM_RESET));
+
+static_assert(aidl::android::hardware::radio::SrvccState::HANDOVER_STARTED ==
+              static_cast<aidl::android::hardware::radio::SrvccState>(
+                      ::android::hardware::radio::V1_0::SrvccState::HANDOVER_STARTED));
+static_assert(aidl::android::hardware::radio::SrvccState::HANDOVER_COMPLETED ==
+              static_cast<aidl::android::hardware::radio::SrvccState>(
+                      ::android::hardware::radio::V1_0::SrvccState::HANDOVER_COMPLETED));
+static_assert(aidl::android::hardware::radio::SrvccState::HANDOVER_FAILED ==
+              static_cast<aidl::android::hardware::radio::SrvccState>(
+                      ::android::hardware::radio::V1_0::SrvccState::HANDOVER_FAILED));
+static_assert(aidl::android::hardware::radio::SrvccState::HANDOVER_CANCELED ==
+              static_cast<aidl::android::hardware::radio::SrvccState>(
+                      ::android::hardware::radio::V1_0::SrvccState::HANDOVER_CANCELED));
+
+static_assert(aidl::android::hardware::radio::UiccSubActStatus::DEACTIVATE ==
+              static_cast<aidl::android::hardware::radio::UiccSubActStatus>(
+                      ::android::hardware::radio::V1_0::UiccSubActStatus::DEACTIVATE));
+static_assert(aidl::android::hardware::radio::UiccSubActStatus::ACTIVATE ==
+              static_cast<aidl::android::hardware::radio::UiccSubActStatus>(
+                      ::android::hardware::radio::V1_0::UiccSubActStatus::ACTIVATE));
+
+static_assert(aidl::android::hardware::radio::SubscriptionType::SUBSCRIPTION_1 ==
+              static_cast<aidl::android::hardware::radio::SubscriptionType>(
+                      ::android::hardware::radio::V1_0::SubscriptionType::SUBSCRIPTION_1));
+static_assert(aidl::android::hardware::radio::SubscriptionType::SUBSCRIPTION_2 ==
+              static_cast<aidl::android::hardware::radio::SubscriptionType>(
+                      ::android::hardware::radio::V1_0::SubscriptionType::SUBSCRIPTION_2));
+static_assert(aidl::android::hardware::radio::SubscriptionType::SUBSCRIPTION_3 ==
+              static_cast<aidl::android::hardware::radio::SubscriptionType>(
+                      ::android::hardware::radio::V1_0::SubscriptionType::SUBSCRIPTION_3));
+
+static_assert(aidl::android::hardware::radio::DataProfileInfoType::COMMON ==
+              static_cast<aidl::android::hardware::radio::DataProfileInfoType>(
+                      ::android::hardware::radio::V1_0::DataProfileInfoType::COMMON));
+static_assert(aidl::android::hardware::radio::DataProfileInfoType::THREE_GPP ==
+              static_cast<aidl::android::hardware::radio::DataProfileInfoType>(
+                      ::android::hardware::radio::V1_0::DataProfileInfoType::THREE_GPP));
+static_assert(aidl::android::hardware::radio::DataProfileInfoType::THREE_GPP2 ==
+              static_cast<aidl::android::hardware::radio::DataProfileInfoType>(
+                      ::android::hardware::radio::V1_0::DataProfileInfoType::THREE_GPP2));
+
+static_assert(aidl::android::hardware::radio::PhoneRestrictedState::NONE ==
+              static_cast<aidl::android::hardware::radio::PhoneRestrictedState>(
+                      ::android::hardware::radio::V1_0::PhoneRestrictedState::NONE));
+static_assert(aidl::android::hardware::radio::PhoneRestrictedState::CS_EMERGENCY ==
+              static_cast<aidl::android::hardware::radio::PhoneRestrictedState>(
+                      ::android::hardware::radio::V1_0::PhoneRestrictedState::CS_EMERGENCY));
+static_assert(aidl::android::hardware::radio::PhoneRestrictedState::CS_NORMAL ==
+              static_cast<aidl::android::hardware::radio::PhoneRestrictedState>(
+                      ::android::hardware::radio::V1_0::PhoneRestrictedState::CS_NORMAL));
+static_assert(aidl::android::hardware::radio::PhoneRestrictedState::CS_ALL ==
+              static_cast<aidl::android::hardware::radio::PhoneRestrictedState>(
+                      ::android::hardware::radio::V1_0::PhoneRestrictedState::CS_ALL));
+static_assert(aidl::android::hardware::radio::PhoneRestrictedState::PS_ALL ==
+              static_cast<aidl::android::hardware::radio::PhoneRestrictedState>(
+                      ::android::hardware::radio::V1_0::PhoneRestrictedState::PS_ALL));
+
+static_assert(
+        aidl::android::hardware::radio::CdmaCallWaitingNumberPresentation::ALLOWED ==
+        static_cast<aidl::android::hardware::radio::CdmaCallWaitingNumberPresentation>(
+                ::android::hardware::radio::V1_0::CdmaCallWaitingNumberPresentation::ALLOWED));
+static_assert(
+        aidl::android::hardware::radio::CdmaCallWaitingNumberPresentation::RESTRICTED ==
+        static_cast<aidl::android::hardware::radio::CdmaCallWaitingNumberPresentation>(
+                ::android::hardware::radio::V1_0::CdmaCallWaitingNumberPresentation::RESTRICTED));
+static_assert(
+        aidl::android::hardware::radio::CdmaCallWaitingNumberPresentation::UNKNOWN ==
+        static_cast<aidl::android::hardware::radio::CdmaCallWaitingNumberPresentation>(
+                ::android::hardware::radio::V1_0::CdmaCallWaitingNumberPresentation::UNKNOWN));
+
+static_assert(aidl::android::hardware::radio::CdmaCallWaitingNumberType::UNKNOWN ==
+              static_cast<aidl::android::hardware::radio::CdmaCallWaitingNumberType>(
+                      ::android::hardware::radio::V1_0::CdmaCallWaitingNumberType::UNKNOWN));
+static_assert(aidl::android::hardware::radio::CdmaCallWaitingNumberType::INTERNATIONAL ==
+              static_cast<aidl::android::hardware::radio::CdmaCallWaitingNumberType>(
+                      ::android::hardware::radio::V1_0::CdmaCallWaitingNumberType::INTERNATIONAL));
+static_assert(aidl::android::hardware::radio::CdmaCallWaitingNumberType::NATIONAL ==
+              static_cast<aidl::android::hardware::radio::CdmaCallWaitingNumberType>(
+                      ::android::hardware::radio::V1_0::CdmaCallWaitingNumberType::NATIONAL));
+static_assert(
+        aidl::android::hardware::radio::CdmaCallWaitingNumberType::NETWORK_SPECIFIC ==
+        static_cast<aidl::android::hardware::radio::CdmaCallWaitingNumberType>(
+                ::android::hardware::radio::V1_0::CdmaCallWaitingNumberType::NETWORK_SPECIFIC));
+static_assert(aidl::android::hardware::radio::CdmaCallWaitingNumberType::SUBSCRIBER ==
+              static_cast<aidl::android::hardware::radio::CdmaCallWaitingNumberType>(
+                      ::android::hardware::radio::V1_0::CdmaCallWaitingNumberType::SUBSCRIBER));
+
+static_assert(aidl::android::hardware::radio::CdmaCallWaitingNumberPlan::UNKNOWN ==
+              static_cast<aidl::android::hardware::radio::CdmaCallWaitingNumberPlan>(
+                      ::android::hardware::radio::V1_0::CdmaCallWaitingNumberPlan::UNKNOWN));
+static_assert(aidl::android::hardware::radio::CdmaCallWaitingNumberPlan::ISDN ==
+              static_cast<aidl::android::hardware::radio::CdmaCallWaitingNumberPlan>(
+                      ::android::hardware::radio::V1_0::CdmaCallWaitingNumberPlan::ISDN));
+static_assert(aidl::android::hardware::radio::CdmaCallWaitingNumberPlan::DATA ==
+              static_cast<aidl::android::hardware::radio::CdmaCallWaitingNumberPlan>(
+                      ::android::hardware::radio::V1_0::CdmaCallWaitingNumberPlan::DATA));
+static_assert(aidl::android::hardware::radio::CdmaCallWaitingNumberPlan::TELEX ==
+              static_cast<aidl::android::hardware::radio::CdmaCallWaitingNumberPlan>(
+                      ::android::hardware::radio::V1_0::CdmaCallWaitingNumberPlan::TELEX));
+static_assert(aidl::android::hardware::radio::CdmaCallWaitingNumberPlan::NATIONAL ==
+              static_cast<aidl::android::hardware::radio::CdmaCallWaitingNumberPlan>(
+                      ::android::hardware::radio::V1_0::CdmaCallWaitingNumberPlan::NATIONAL));
+static_assert(aidl::android::hardware::radio::CdmaCallWaitingNumberPlan::PRIVATE ==
+              static_cast<aidl::android::hardware::radio::CdmaCallWaitingNumberPlan>(
+                      ::android::hardware::radio::V1_0::CdmaCallWaitingNumberPlan::PRIVATE));
+
+static_assert(aidl::android::hardware::radio::CdmaOtaProvisionStatus::SPL_UNLOCKED ==
+              static_cast<aidl::android::hardware::radio::CdmaOtaProvisionStatus>(
+                      ::android::hardware::radio::V1_0::CdmaOtaProvisionStatus::SPL_UNLOCKED));
+static_assert(
+        aidl::android::hardware::radio::CdmaOtaProvisionStatus::SPC_RETRIES_EXCEEDED ==
+        static_cast<aidl::android::hardware::radio::CdmaOtaProvisionStatus>(
+                ::android::hardware::radio::V1_0::CdmaOtaProvisionStatus::SPC_RETRIES_EXCEEDED));
+static_assert(aidl::android::hardware::radio::CdmaOtaProvisionStatus::A_KEY_EXCHANGED ==
+              static_cast<aidl::android::hardware::radio::CdmaOtaProvisionStatus>(
+                      ::android::hardware::radio::V1_0::CdmaOtaProvisionStatus::A_KEY_EXCHANGED));
+static_assert(aidl::android::hardware::radio::CdmaOtaProvisionStatus::SSD_UPDATED ==
+              static_cast<aidl::android::hardware::radio::CdmaOtaProvisionStatus>(
+                      ::android::hardware::radio::V1_0::CdmaOtaProvisionStatus::SSD_UPDATED));
+static_assert(aidl::android::hardware::radio::CdmaOtaProvisionStatus::NAM_DOWNLOADED ==
+              static_cast<aidl::android::hardware::radio::CdmaOtaProvisionStatus>(
+                      ::android::hardware::radio::V1_0::CdmaOtaProvisionStatus::NAM_DOWNLOADED));
+static_assert(aidl::android::hardware::radio::CdmaOtaProvisionStatus::MDN_DOWNLOADED ==
+              static_cast<aidl::android::hardware::radio::CdmaOtaProvisionStatus>(
+                      ::android::hardware::radio::V1_0::CdmaOtaProvisionStatus::MDN_DOWNLOADED));
+static_assert(aidl::android::hardware::radio::CdmaOtaProvisionStatus::IMSI_DOWNLOADED ==
+              static_cast<aidl::android::hardware::radio::CdmaOtaProvisionStatus>(
+                      ::android::hardware::radio::V1_0::CdmaOtaProvisionStatus::IMSI_DOWNLOADED));
+static_assert(aidl::android::hardware::radio::CdmaOtaProvisionStatus::PRL_DOWNLOADED ==
+              static_cast<aidl::android::hardware::radio::CdmaOtaProvisionStatus>(
+                      ::android::hardware::radio::V1_0::CdmaOtaProvisionStatus::PRL_DOWNLOADED));
+static_assert(aidl::android::hardware::radio::CdmaOtaProvisionStatus::COMMITTED ==
+              static_cast<aidl::android::hardware::radio::CdmaOtaProvisionStatus>(
+                      ::android::hardware::radio::V1_0::CdmaOtaProvisionStatus::COMMITTED));
+static_assert(aidl::android::hardware::radio::CdmaOtaProvisionStatus::OTAPA_STARTED ==
+              static_cast<aidl::android::hardware::radio::CdmaOtaProvisionStatus>(
+                      ::android::hardware::radio::V1_0::CdmaOtaProvisionStatus::OTAPA_STARTED));
+static_assert(aidl::android::hardware::radio::CdmaOtaProvisionStatus::OTAPA_STOPPED ==
+              static_cast<aidl::android::hardware::radio::CdmaOtaProvisionStatus>(
+                      ::android::hardware::radio::V1_0::CdmaOtaProvisionStatus::OTAPA_STOPPED));
+static_assert(aidl::android::hardware::radio::CdmaOtaProvisionStatus::OTAPA_ABORTED ==
+              static_cast<aidl::android::hardware::radio::CdmaOtaProvisionStatus>(
+                      ::android::hardware::radio::V1_0::CdmaOtaProvisionStatus::OTAPA_ABORTED));
+
+static_assert(aidl::android::hardware::radio::CdmaInfoRecName::DISPLAY ==
+              static_cast<aidl::android::hardware::radio::CdmaInfoRecName>(
+                      ::android::hardware::radio::V1_0::CdmaInfoRecName::DISPLAY));
+static_assert(aidl::android::hardware::radio::CdmaInfoRecName::CALLED_PARTY_NUMBER ==
+              static_cast<aidl::android::hardware::radio::CdmaInfoRecName>(
+                      ::android::hardware::radio::V1_0::CdmaInfoRecName::CALLED_PARTY_NUMBER));
+static_assert(aidl::android::hardware::radio::CdmaInfoRecName::CALLING_PARTY_NUMBER ==
+              static_cast<aidl::android::hardware::radio::CdmaInfoRecName>(
+                      ::android::hardware::radio::V1_0::CdmaInfoRecName::CALLING_PARTY_NUMBER));
+static_assert(aidl::android::hardware::radio::CdmaInfoRecName::CONNECTED_NUMBER ==
+              static_cast<aidl::android::hardware::radio::CdmaInfoRecName>(
+                      ::android::hardware::radio::V1_0::CdmaInfoRecName::CONNECTED_NUMBER));
+static_assert(aidl::android::hardware::radio::CdmaInfoRecName::SIGNAL ==
+              static_cast<aidl::android::hardware::radio::CdmaInfoRecName>(
+                      ::android::hardware::radio::V1_0::CdmaInfoRecName::SIGNAL));
+static_assert(aidl::android::hardware::radio::CdmaInfoRecName::REDIRECTING_NUMBER ==
+              static_cast<aidl::android::hardware::radio::CdmaInfoRecName>(
+                      ::android::hardware::radio::V1_0::CdmaInfoRecName::REDIRECTING_NUMBER));
+static_assert(aidl::android::hardware::radio::CdmaInfoRecName::LINE_CONTROL ==
+              static_cast<aidl::android::hardware::radio::CdmaInfoRecName>(
+                      ::android::hardware::radio::V1_0::CdmaInfoRecName::LINE_CONTROL));
+static_assert(aidl::android::hardware::radio::CdmaInfoRecName::EXTENDED_DISPLAY ==
+              static_cast<aidl::android::hardware::radio::CdmaInfoRecName>(
+                      ::android::hardware::radio::V1_0::CdmaInfoRecName::EXTENDED_DISPLAY));
+static_assert(aidl::android::hardware::radio::CdmaInfoRecName::T53_CLIR ==
+              static_cast<aidl::android::hardware::radio::CdmaInfoRecName>(
+                      ::android::hardware::radio::V1_0::CdmaInfoRecName::T53_CLIR));
+static_assert(aidl::android::hardware::radio::CdmaInfoRecName::T53_RELEASE ==
+              static_cast<aidl::android::hardware::radio::CdmaInfoRecName>(
+                      ::android::hardware::radio::V1_0::CdmaInfoRecName::T53_RELEASE));
+static_assert(aidl::android::hardware::radio::CdmaInfoRecName::T53_AUDIO_CONTROL ==
+              static_cast<aidl::android::hardware::radio::CdmaInfoRecName>(
+                      ::android::hardware::radio::V1_0::CdmaInfoRecName::T53_AUDIO_CONTROL));
+
+static_assert(aidl::android::hardware::radio::CdmaRedirectingReason::UNKNOWN ==
+              static_cast<aidl::android::hardware::radio::CdmaRedirectingReason>(
+                      ::android::hardware::radio::V1_0::CdmaRedirectingReason::UNKNOWN));
+static_assert(
+        aidl::android::hardware::radio::CdmaRedirectingReason::CALL_FORWARDING_BUSY ==
+        static_cast<aidl::android::hardware::radio::CdmaRedirectingReason>(
+                ::android::hardware::radio::V1_0::CdmaRedirectingReason::CALL_FORWARDING_BUSY));
+static_assert(
+        aidl::android::hardware::radio::CdmaRedirectingReason::CALL_FORWARDING_NO_REPLY ==
+        static_cast<aidl::android::hardware::radio::CdmaRedirectingReason>(
+                ::android::hardware::radio::V1_0::CdmaRedirectingReason::CALL_FORWARDING_NO_REPLY));
+static_assert(
+        aidl::android::hardware::radio::CdmaRedirectingReason::CALLED_DTE_OUT_OF_ORDER ==
+        static_cast<aidl::android::hardware::radio::CdmaRedirectingReason>(
+                ::android::hardware::radio::V1_0::CdmaRedirectingReason::CALLED_DTE_OUT_OF_ORDER));
+static_assert(
+        aidl::android::hardware::radio::CdmaRedirectingReason::CALL_FORWARDING_BY_THE_CALLED_DTE ==
+        static_cast<aidl::android::hardware::radio::CdmaRedirectingReason>(
+                ::android::hardware::radio::V1_0::CdmaRedirectingReason::
+                        CALL_FORWARDING_BY_THE_CALLED_DTE));
+static_assert(
+        aidl::android::hardware::radio::CdmaRedirectingReason::CALL_FORWARDING_UNCONDITIONAL ==
+        static_cast<aidl::android::hardware::radio::CdmaRedirectingReason>(
+                ::android::hardware::radio::V1_0::CdmaRedirectingReason::
+                        CALL_FORWARDING_UNCONDITIONAL));
+static_assert(aidl::android::hardware::radio::CdmaRedirectingReason::RESERVED ==
+              static_cast<aidl::android::hardware::radio::CdmaRedirectingReason>(
+                      ::android::hardware::radio::V1_0::CdmaRedirectingReason::RESERVED));
+
+static_assert(aidl::android::hardware::radio::SsServiceType::CFU ==
+              static_cast<aidl::android::hardware::radio::SsServiceType>(
+                      ::android::hardware::radio::V1_0::SsServiceType::CFU));
+static_assert(aidl::android::hardware::radio::SsServiceType::CF_BUSY ==
+              static_cast<aidl::android::hardware::radio::SsServiceType>(
+                      ::android::hardware::radio::V1_0::SsServiceType::CF_BUSY));
+static_assert(aidl::android::hardware::radio::SsServiceType::CF_NO_REPLY ==
+              static_cast<aidl::android::hardware::radio::SsServiceType>(
+                      ::android::hardware::radio::V1_0::SsServiceType::CF_NO_REPLY));
+static_assert(aidl::android::hardware::radio::SsServiceType::CF_NOT_REACHABLE ==
+              static_cast<aidl::android::hardware::radio::SsServiceType>(
+                      ::android::hardware::radio::V1_0::SsServiceType::CF_NOT_REACHABLE));
+static_assert(aidl::android::hardware::radio::SsServiceType::CF_ALL ==
+              static_cast<aidl::android::hardware::radio::SsServiceType>(
+                      ::android::hardware::radio::V1_0::SsServiceType::CF_ALL));
+static_assert(aidl::android::hardware::radio::SsServiceType::CF_ALL_CONDITIONAL ==
+              static_cast<aidl::android::hardware::radio::SsServiceType>(
+                      ::android::hardware::radio::V1_0::SsServiceType::CF_ALL_CONDITIONAL));
+static_assert(aidl::android::hardware::radio::SsServiceType::CLIP ==
+              static_cast<aidl::android::hardware::radio::SsServiceType>(
+                      ::android::hardware::radio::V1_0::SsServiceType::CLIP));
+static_assert(aidl::android::hardware::radio::SsServiceType::CLIR ==
+              static_cast<aidl::android::hardware::radio::SsServiceType>(
+                      ::android::hardware::radio::V1_0::SsServiceType::CLIR));
+static_assert(aidl::android::hardware::radio::SsServiceType::COLP ==
+              static_cast<aidl::android::hardware::radio::SsServiceType>(
+                      ::android::hardware::radio::V1_0::SsServiceType::COLP));
+static_assert(aidl::android::hardware::radio::SsServiceType::COLR ==
+              static_cast<aidl::android::hardware::radio::SsServiceType>(
+                      ::android::hardware::radio::V1_0::SsServiceType::COLR));
+static_assert(aidl::android::hardware::radio::SsServiceType::WAIT ==
+              static_cast<aidl::android::hardware::radio::SsServiceType>(
+                      ::android::hardware::radio::V1_0::SsServiceType::WAIT));
+static_assert(aidl::android::hardware::radio::SsServiceType::BAOC ==
+              static_cast<aidl::android::hardware::radio::SsServiceType>(
+                      ::android::hardware::radio::V1_0::SsServiceType::BAOC));
+static_assert(aidl::android::hardware::radio::SsServiceType::BAOIC ==
+              static_cast<aidl::android::hardware::radio::SsServiceType>(
+                      ::android::hardware::radio::V1_0::SsServiceType::BAOIC));
+static_assert(aidl::android::hardware::radio::SsServiceType::BAOIC_EXC_HOME ==
+              static_cast<aidl::android::hardware::radio::SsServiceType>(
+                      ::android::hardware::radio::V1_0::SsServiceType::BAOIC_EXC_HOME));
+static_assert(aidl::android::hardware::radio::SsServiceType::BAIC ==
+              static_cast<aidl::android::hardware::radio::SsServiceType>(
+                      ::android::hardware::radio::V1_0::SsServiceType::BAIC));
+static_assert(aidl::android::hardware::radio::SsServiceType::BAIC_ROAMING ==
+              static_cast<aidl::android::hardware::radio::SsServiceType>(
+                      ::android::hardware::radio::V1_0::SsServiceType::BAIC_ROAMING));
+static_assert(aidl::android::hardware::radio::SsServiceType::ALL_BARRING ==
+              static_cast<aidl::android::hardware::radio::SsServiceType>(
+                      ::android::hardware::radio::V1_0::SsServiceType::ALL_BARRING));
+static_assert(aidl::android::hardware::radio::SsServiceType::OUTGOING_BARRING ==
+              static_cast<aidl::android::hardware::radio::SsServiceType>(
+                      ::android::hardware::radio::V1_0::SsServiceType::OUTGOING_BARRING));
+static_assert(aidl::android::hardware::radio::SsServiceType::INCOMING_BARRING ==
+              static_cast<aidl::android::hardware::radio::SsServiceType>(
+                      ::android::hardware::radio::V1_0::SsServiceType::INCOMING_BARRING));
+
+static_assert(aidl::android::hardware::radio::SsRequestType::ACTIVATION ==
+              static_cast<aidl::android::hardware::radio::SsRequestType>(
+                      ::android::hardware::radio::V1_0::SsRequestType::ACTIVATION));
+static_assert(aidl::android::hardware::radio::SsRequestType::DEACTIVATION ==
+              static_cast<aidl::android::hardware::radio::SsRequestType>(
+                      ::android::hardware::radio::V1_0::SsRequestType::DEACTIVATION));
+static_assert(aidl::android::hardware::radio::SsRequestType::INTERROGATION ==
+              static_cast<aidl::android::hardware::radio::SsRequestType>(
+                      ::android::hardware::radio::V1_0::SsRequestType::INTERROGATION));
+static_assert(aidl::android::hardware::radio::SsRequestType::REGISTRATION ==
+              static_cast<aidl::android::hardware::radio::SsRequestType>(
+                      ::android::hardware::radio::V1_0::SsRequestType::REGISTRATION));
+static_assert(aidl::android::hardware::radio::SsRequestType::ERASURE ==
+              static_cast<aidl::android::hardware::radio::SsRequestType>(
+                      ::android::hardware::radio::V1_0::SsRequestType::ERASURE));
+
+static_assert(
+        aidl::android::hardware::radio::SsTeleserviceType::ALL_TELE_AND_BEARER_SERVICES ==
+        static_cast<aidl::android::hardware::radio::SsTeleserviceType>(
+                ::android::hardware::radio::V1_0::SsTeleserviceType::ALL_TELE_AND_BEARER_SERVICES));
+static_assert(aidl::android::hardware::radio::SsTeleserviceType::ALL_TELESEVICES ==
+              static_cast<aidl::android::hardware::radio::SsTeleserviceType>(
+                      ::android::hardware::radio::V1_0::SsTeleserviceType::ALL_TELESEVICES));
+static_assert(aidl::android::hardware::radio::SsTeleserviceType::TELEPHONY ==
+              static_cast<aidl::android::hardware::radio::SsTeleserviceType>(
+                      ::android::hardware::radio::V1_0::SsTeleserviceType::TELEPHONY));
+static_assert(aidl::android::hardware::radio::SsTeleserviceType::ALL_DATA_TELESERVICES ==
+              static_cast<aidl::android::hardware::radio::SsTeleserviceType>(
+                      ::android::hardware::radio::V1_0::SsTeleserviceType::ALL_DATA_TELESERVICES));
+static_assert(aidl::android::hardware::radio::SsTeleserviceType::SMS_SERVICES ==
+              static_cast<aidl::android::hardware::radio::SsTeleserviceType>(
+                      ::android::hardware::radio::V1_0::SsTeleserviceType::SMS_SERVICES));
+static_assert(
+        aidl::android::hardware::radio::SsTeleserviceType::ALL_TELESERVICES_EXCEPT_SMS ==
+        static_cast<aidl::android::hardware::radio::SsTeleserviceType>(
+                ::android::hardware::radio::V1_0::SsTeleserviceType::ALL_TELESERVICES_EXCEPT_SMS));
+
+static_assert(aidl::android::hardware::radio::SuppServiceClass::NONE ==
+              static_cast<aidl::android::hardware::radio::SuppServiceClass>(
+                      ::android::hardware::radio::V1_0::SuppServiceClass::NONE));
+static_assert(aidl::android::hardware::radio::SuppServiceClass::VOICE ==
+              static_cast<aidl::android::hardware::radio::SuppServiceClass>(
+                      ::android::hardware::radio::V1_0::SuppServiceClass::VOICE));
+static_assert(aidl::android::hardware::radio::SuppServiceClass::DATA ==
+              static_cast<aidl::android::hardware::radio::SuppServiceClass>(
+                      ::android::hardware::radio::V1_0::SuppServiceClass::DATA));
+static_assert(aidl::android::hardware::radio::SuppServiceClass::FAX ==
+              static_cast<aidl::android::hardware::radio::SuppServiceClass>(
+                      ::android::hardware::radio::V1_0::SuppServiceClass::FAX));
+static_assert(aidl::android::hardware::radio::SuppServiceClass::SMS ==
+              static_cast<aidl::android::hardware::radio::SuppServiceClass>(
+                      ::android::hardware::radio::V1_0::SuppServiceClass::SMS));
+static_assert(aidl::android::hardware::radio::SuppServiceClass::DATA_SYNC ==
+              static_cast<aidl::android::hardware::radio::SuppServiceClass>(
+                      ::android::hardware::radio::V1_0::SuppServiceClass::DATA_SYNC));
+static_assert(aidl::android::hardware::radio::SuppServiceClass::DATA_ASYNC ==
+              static_cast<aidl::android::hardware::radio::SuppServiceClass>(
+                      ::android::hardware::radio::V1_0::SuppServiceClass::DATA_ASYNC));
+static_assert(aidl::android::hardware::radio::SuppServiceClass::PACKET ==
+              static_cast<aidl::android::hardware::radio::SuppServiceClass>(
+                      ::android::hardware::radio::V1_0::SuppServiceClass::PACKET));
+static_assert(aidl::android::hardware::radio::SuppServiceClass::PAD ==
+              static_cast<aidl::android::hardware::radio::SuppServiceClass>(
+                      ::android::hardware::radio::V1_0::SuppServiceClass::PAD));
+static_assert(aidl::android::hardware::radio::SuppServiceClass::MAX ==
+              static_cast<aidl::android::hardware::radio::SuppServiceClass>(
+                      ::android::hardware::radio::V1_0::SuppServiceClass::MAX));
+
+static_assert(aidl::android::hardware::radio::MvnoType::NONE ==
+              static_cast<aidl::android::hardware::radio::MvnoType>(
+                      ::android::hardware::radio::V1_0::MvnoType::NONE));
+static_assert(aidl::android::hardware::radio::MvnoType::IMSI ==
+              static_cast<aidl::android::hardware::radio::MvnoType>(
+                      ::android::hardware::radio::V1_0::MvnoType::IMSI));
+static_assert(aidl::android::hardware::radio::MvnoType::GID ==
+              static_cast<aidl::android::hardware::radio::MvnoType>(
+                      ::android::hardware::radio::V1_0::MvnoType::GID));
+static_assert(aidl::android::hardware::radio::MvnoType::SPN ==
+              static_cast<aidl::android::hardware::radio::MvnoType>(
+                      ::android::hardware::radio::V1_0::MvnoType::SPN));
+
+static_assert(aidl::android::hardware::radio::DeviceStateType::POWER_SAVE_MODE ==
+              static_cast<aidl::android::hardware::radio::DeviceStateType>(
+                      ::android::hardware::radio::V1_0::DeviceStateType::POWER_SAVE_MODE));
+static_assert(aidl::android::hardware::radio::DeviceStateType::CHARGING_STATE ==
+              static_cast<aidl::android::hardware::radio::DeviceStateType>(
+                      ::android::hardware::radio::V1_0::DeviceStateType::CHARGING_STATE));
+static_assert(aidl::android::hardware::radio::DeviceStateType::LOW_DATA_EXPECTED ==
+              static_cast<aidl::android::hardware::radio::DeviceStateType>(
+                      ::android::hardware::radio::V1_0::DeviceStateType::LOW_DATA_EXPECTED));
+
+static_assert(aidl::android::hardware::radio::P2Constant::NO_P2 ==
+              static_cast<aidl::android::hardware::radio::P2Constant>(
+                      ::android::hardware::radio::V1_0::P2Constant::NO_P2));
+
+static_assert(aidl::android::hardware::radio::CardPowerState::POWER_DOWN ==
+              static_cast<aidl::android::hardware::radio::CardPowerState>(
+                      ::android::hardware::radio::V1_1::CardPowerState::POWER_DOWN));
+static_assert(aidl::android::hardware::radio::CardPowerState::POWER_UP ==
+              static_cast<aidl::android::hardware::radio::CardPowerState>(
+                      ::android::hardware::radio::V1_1::CardPowerState::POWER_UP));
+static_assert(aidl::android::hardware::radio::CardPowerState::POWER_UP_PASS_THROUGH ==
+              static_cast<aidl::android::hardware::radio::CardPowerState>(
+                      ::android::hardware::radio::V1_1::CardPowerState::POWER_UP_PASS_THROUGH));
+
+static_assert(aidl::android::hardware::radio::GeranBands::BAND_T380 ==
+              static_cast<aidl::android::hardware::radio::GeranBands>(
+                      ::android::hardware::radio::V1_1::GeranBands::BAND_T380));
+static_assert(aidl::android::hardware::radio::GeranBands::BAND_T410 ==
+              static_cast<aidl::android::hardware::radio::GeranBands>(
+                      ::android::hardware::radio::V1_1::GeranBands::BAND_T410));
+static_assert(aidl::android::hardware::radio::GeranBands::BAND_450 ==
+              static_cast<aidl::android::hardware::radio::GeranBands>(
+                      ::android::hardware::radio::V1_1::GeranBands::BAND_450));
+static_assert(aidl::android::hardware::radio::GeranBands::BAND_480 ==
+              static_cast<aidl::android::hardware::radio::GeranBands>(
+                      ::android::hardware::radio::V1_1::GeranBands::BAND_480));
+static_assert(aidl::android::hardware::radio::GeranBands::BAND_710 ==
+              static_cast<aidl::android::hardware::radio::GeranBands>(
+                      ::android::hardware::radio::V1_1::GeranBands::BAND_710));
+static_assert(aidl::android::hardware::radio::GeranBands::BAND_750 ==
+              static_cast<aidl::android::hardware::radio::GeranBands>(
+                      ::android::hardware::radio::V1_1::GeranBands::BAND_750));
+static_assert(aidl::android::hardware::radio::GeranBands::BAND_T810 ==
+              static_cast<aidl::android::hardware::radio::GeranBands>(
+                      ::android::hardware::radio::V1_1::GeranBands::BAND_T810));
+static_assert(aidl::android::hardware::radio::GeranBands::BAND_850 ==
+              static_cast<aidl::android::hardware::radio::GeranBands>(
+                      ::android::hardware::radio::V1_1::GeranBands::BAND_850));
+static_assert(aidl::android::hardware::radio::GeranBands::BAND_P900 ==
+              static_cast<aidl::android::hardware::radio::GeranBands>(
+                      ::android::hardware::radio::V1_1::GeranBands::BAND_P900));
+static_assert(aidl::android::hardware::radio::GeranBands::BAND_E900 ==
+              static_cast<aidl::android::hardware::radio::GeranBands>(
+                      ::android::hardware::radio::V1_1::GeranBands::BAND_E900));
+static_assert(aidl::android::hardware::radio::GeranBands::BAND_R900 ==
+              static_cast<aidl::android::hardware::radio::GeranBands>(
+                      ::android::hardware::radio::V1_1::GeranBands::BAND_R900));
+static_assert(aidl::android::hardware::radio::GeranBands::BAND_DCS1800 ==
+              static_cast<aidl::android::hardware::radio::GeranBands>(
+                      ::android::hardware::radio::V1_1::GeranBands::BAND_DCS1800));
+static_assert(aidl::android::hardware::radio::GeranBands::BAND_PCS1900 ==
+              static_cast<aidl::android::hardware::radio::GeranBands>(
+                      ::android::hardware::radio::V1_1::GeranBands::BAND_PCS1900));
+static_assert(aidl::android::hardware::radio::GeranBands::BAND_ER900 ==
+              static_cast<aidl::android::hardware::radio::GeranBands>(
+                      ::android::hardware::radio::V1_1::GeranBands::BAND_ER900));
+
+static_assert(aidl::android::hardware::radio::ScanType::ONE_SHOT ==
+              static_cast<aidl::android::hardware::radio::ScanType>(
+                      ::android::hardware::radio::V1_1::ScanType::ONE_SHOT));
+static_assert(aidl::android::hardware::radio::ScanType::PERIODIC ==
+              static_cast<aidl::android::hardware::radio::ScanType>(
+                      ::android::hardware::radio::V1_1::ScanType::PERIODIC));
+
+static_assert(aidl::android::hardware::radio::ScanStatus::PARTIAL ==
+              static_cast<aidl::android::hardware::radio::ScanStatus>(
+                      ::android::hardware::radio::V1_1::ScanStatus::PARTIAL));
+static_assert(aidl::android::hardware::radio::ScanStatus::COMPLETE ==
+              static_cast<aidl::android::hardware::radio::ScanStatus>(
+                      ::android::hardware::radio::V1_1::ScanStatus::COMPLETE));
+
+static_assert(aidl::android::hardware::radio::KeepaliveType::NATT_IPV4 ==
+              static_cast<aidl::android::hardware::radio::KeepaliveType>(
+                      ::android::hardware::radio::V1_1::KeepaliveType::NATT_IPV4));
+static_assert(aidl::android::hardware::radio::KeepaliveType::NATT_IPV6 ==
+              static_cast<aidl::android::hardware::radio::KeepaliveType>(
+                      ::android::hardware::radio::V1_1::KeepaliveType::NATT_IPV6));
+
+static_assert(aidl::android::hardware::radio::KeepaliveStatusCode::ACTIVE ==
+              static_cast<aidl::android::hardware::radio::KeepaliveStatusCode>(
+                      ::android::hardware::radio::V1_1::KeepaliveStatusCode::ACTIVE));
+static_assert(aidl::android::hardware::radio::KeepaliveStatusCode::INACTIVE ==
+              static_cast<aidl::android::hardware::radio::KeepaliveStatusCode>(
+                      ::android::hardware::radio::V1_1::KeepaliveStatusCode::INACTIVE));
+static_assert(aidl::android::hardware::radio::KeepaliveStatusCode::PENDING ==
+              static_cast<aidl::android::hardware::radio::KeepaliveStatusCode>(
+                      ::android::hardware::radio::V1_1::KeepaliveStatusCode::PENDING));
+
+static_assert(aidl::android::hardware::radio::RadioConst::CDMA_ALPHA_INFO_BUFFER_LENGTH ==
+              static_cast<aidl::android::hardware::radio::RadioConst>(
+                      ::android::hardware::radio::V1_2::RadioConst::CDMA_ALPHA_INFO_BUFFER_LENGTH));
+static_assert(
+        aidl::android::hardware::radio::RadioConst::CDMA_NUMBER_INFO_BUFFER_LENGTH ==
+        static_cast<aidl::android::hardware::radio::RadioConst>(
+                ::android::hardware::radio::V1_2::RadioConst::CDMA_NUMBER_INFO_BUFFER_LENGTH));
+static_assert(aidl::android::hardware::radio::RadioConst::MAX_RILDS ==
+              static_cast<aidl::android::hardware::radio::RadioConst>(
+                      ::android::hardware::radio::V1_2::RadioConst::MAX_RILDS));
+static_assert(aidl::android::hardware::radio::RadioConst::MAX_SOCKET_NAME_LENGTH ==
+              static_cast<aidl::android::hardware::radio::RadioConst>(
+                      ::android::hardware::radio::V1_2::RadioConst::MAX_SOCKET_NAME_LENGTH));
+static_assert(aidl::android::hardware::radio::RadioConst::MAX_CLIENT_ID_LENGTH ==
+              static_cast<aidl::android::hardware::radio::RadioConst>(
+                      ::android::hardware::radio::V1_2::RadioConst::MAX_CLIENT_ID_LENGTH));
+static_assert(aidl::android::hardware::radio::RadioConst::MAX_DEBUG_SOCKET_NAME_LENGTH ==
+              static_cast<aidl::android::hardware::radio::RadioConst>(
+                      ::android::hardware::radio::V1_2::RadioConst::MAX_DEBUG_SOCKET_NAME_LENGTH));
+static_assert(aidl::android::hardware::radio::RadioConst::MAX_QEMU_PIPE_NAME_LENGTH ==
+              static_cast<aidl::android::hardware::radio::RadioConst>(
+                      ::android::hardware::radio::V1_2::RadioConst::MAX_QEMU_PIPE_NAME_LENGTH));
+static_assert(aidl::android::hardware::radio::RadioConst::MAX_UUID_LENGTH ==
+              static_cast<aidl::android::hardware::radio::RadioConst>(
+                      ::android::hardware::radio::V1_2::RadioConst::MAX_UUID_LENGTH));
+static_assert(aidl::android::hardware::radio::RadioConst::CARD_MAX_APPS ==
+              static_cast<aidl::android::hardware::radio::RadioConst>(
+                      ::android::hardware::radio::V1_2::RadioConst::CARD_MAX_APPS));
+static_assert(aidl::android::hardware::radio::RadioConst::CDMA_MAX_NUMBER_OF_INFO_RECS ==
+              static_cast<aidl::android::hardware::radio::RadioConst>(
+                      ::android::hardware::radio::V1_2::RadioConst::CDMA_MAX_NUMBER_OF_INFO_RECS));
+static_assert(aidl::android::hardware::radio::RadioConst::SS_INFO_MAX ==
+              static_cast<aidl::android::hardware::radio::RadioConst>(
+                      ::android::hardware::radio::V1_2::RadioConst::SS_INFO_MAX));
+static_assert(aidl::android::hardware::radio::RadioConst::NUM_SERVICE_CLASSES ==
+              static_cast<aidl::android::hardware::radio::RadioConst>(
+                      ::android::hardware::radio::V1_2::RadioConst::NUM_SERVICE_CLASSES));
+static_assert(aidl::android::hardware::radio::RadioConst::NUM_TX_POWER_LEVELS ==
+              static_cast<aidl::android::hardware::radio::RadioConst>(
+                      ::android::hardware::radio::V1_2::RadioConst::NUM_TX_POWER_LEVELS));
+static_assert(
+        aidl::android::hardware::radio::RadioConst::RADIO_ACCESS_SPECIFIER_MAX_SIZE ==
+        static_cast<aidl::android::hardware::radio::RadioConst>(
+                ::android::hardware::radio::V1_2::RadioConst::RADIO_ACCESS_SPECIFIER_MAX_SIZE));
+
+static_assert(aidl::android::hardware::radio::ScanIntervalRange::MIN ==
+              static_cast<aidl::android::hardware::radio::ScanIntervalRange>(
+                      ::android::hardware::radio::V1_2::ScanIntervalRange::MIN));
+static_assert(aidl::android::hardware::radio::ScanIntervalRange::MAX ==
+              static_cast<aidl::android::hardware::radio::ScanIntervalRange>(
+                      ::android::hardware::radio::V1_2::ScanIntervalRange::MAX));
+
+static_assert(aidl::android::hardware::radio::MaxSearchTimeRange::MIN ==
+              static_cast<aidl::android::hardware::radio::MaxSearchTimeRange>(
+                      ::android::hardware::radio::V1_2::MaxSearchTimeRange::MIN));
+static_assert(aidl::android::hardware::radio::MaxSearchTimeRange::MAX ==
+              static_cast<aidl::android::hardware::radio::MaxSearchTimeRange>(
+                      ::android::hardware::radio::V1_2::MaxSearchTimeRange::MAX));
+
+static_assert(aidl::android::hardware::radio::IncrementalResultsPeriodicityRange::MIN ==
+              static_cast<aidl::android::hardware::radio::IncrementalResultsPeriodicityRange>(
+                      ::android::hardware::radio::V1_2::IncrementalResultsPeriodicityRange::MIN));
+static_assert(aidl::android::hardware::radio::IncrementalResultsPeriodicityRange::MAX ==
+              static_cast<aidl::android::hardware::radio::IncrementalResultsPeriodicityRange>(
+                      ::android::hardware::radio::V1_2::IncrementalResultsPeriodicityRange::MAX));
+
+static_assert(aidl::android::hardware::radio::CellConnectionStatus::NONE ==
+              static_cast<aidl::android::hardware::radio::CellConnectionStatus>(
+                      ::android::hardware::radio::V1_2::CellConnectionStatus::NONE));
+static_assert(aidl::android::hardware::radio::CellConnectionStatus::PRIMARY_SERVING ==
+              static_cast<aidl::android::hardware::radio::CellConnectionStatus>(
+                      ::android::hardware::radio::V1_2::CellConnectionStatus::PRIMARY_SERVING));
+static_assert(aidl::android::hardware::radio::CellConnectionStatus::SECONDARY_SERVING ==
+              static_cast<aidl::android::hardware::radio::CellConnectionStatus>(
+                      ::android::hardware::radio::V1_2::CellConnectionStatus::SECONDARY_SERVING));
+
+static_assert(aidl::android::hardware::radio::AudioQuality::UNSPECIFIED ==
+              static_cast<aidl::android::hardware::radio::AudioQuality>(
+                      ::android::hardware::radio::V1_2::AudioQuality::UNSPECIFIED));
+static_assert(aidl::android::hardware::radio::AudioQuality::AMR ==
+              static_cast<aidl::android::hardware::radio::AudioQuality>(
+                      ::android::hardware::radio::V1_2::AudioQuality::AMR));
+static_assert(aidl::android::hardware::radio::AudioQuality::AMR_WB ==
+              static_cast<aidl::android::hardware::radio::AudioQuality>(
+                      ::android::hardware::radio::V1_2::AudioQuality::AMR_WB));
+static_assert(aidl::android::hardware::radio::AudioQuality::GSM_EFR ==
+              static_cast<aidl::android::hardware::radio::AudioQuality>(
+                      ::android::hardware::radio::V1_2::AudioQuality::GSM_EFR));
+static_assert(aidl::android::hardware::radio::AudioQuality::GSM_FR ==
+              static_cast<aidl::android::hardware::radio::AudioQuality>(
+                      ::android::hardware::radio::V1_2::AudioQuality::GSM_FR));
+static_assert(aidl::android::hardware::radio::AudioQuality::GSM_HR ==
+              static_cast<aidl::android::hardware::radio::AudioQuality>(
+                      ::android::hardware::radio::V1_2::AudioQuality::GSM_HR));
+static_assert(aidl::android::hardware::radio::AudioQuality::EVRC ==
+              static_cast<aidl::android::hardware::radio::AudioQuality>(
+                      ::android::hardware::radio::V1_2::AudioQuality::EVRC));
+static_assert(aidl::android::hardware::radio::AudioQuality::EVRC_B ==
+              static_cast<aidl::android::hardware::radio::AudioQuality>(
+                      ::android::hardware::radio::V1_2::AudioQuality::EVRC_B));
+static_assert(aidl::android::hardware::radio::AudioQuality::EVRC_WB ==
+              static_cast<aidl::android::hardware::radio::AudioQuality>(
+                      ::android::hardware::radio::V1_2::AudioQuality::EVRC_WB));
+static_assert(aidl::android::hardware::radio::AudioQuality::EVRC_NW ==
+              static_cast<aidl::android::hardware::radio::AudioQuality>(
+                      ::android::hardware::radio::V1_2::AudioQuality::EVRC_NW));
+
+static_assert(aidl::android::hardware::radio::DataRequestReason::NORMAL ==
+              static_cast<aidl::android::hardware::radio::DataRequestReason>(
+                      ::android::hardware::radio::V1_2::DataRequestReason::NORMAL));
+static_assert(aidl::android::hardware::radio::DataRequestReason::SHUTDOWN ==
+              static_cast<aidl::android::hardware::radio::DataRequestReason>(
+                      ::android::hardware::radio::V1_2::DataRequestReason::SHUTDOWN));
+static_assert(aidl::android::hardware::radio::DataRequestReason::HANDOVER ==
+              static_cast<aidl::android::hardware::radio::DataRequestReason>(
+                      ::android::hardware::radio::V1_2::DataRequestReason::HANDOVER));
+
+static_assert(aidl::android::hardware::radio::EmergencyServiceCategory::UNSPECIFIED ==
+              static_cast<aidl::android::hardware::radio::EmergencyServiceCategory>(
+                      ::android::hardware::radio::V1_4::EmergencyServiceCategory::UNSPECIFIED));
+static_assert(aidl::android::hardware::radio::EmergencyServiceCategory::POLICE ==
+              static_cast<aidl::android::hardware::radio::EmergencyServiceCategory>(
+                      ::android::hardware::radio::V1_4::EmergencyServiceCategory::POLICE));
+static_assert(aidl::android::hardware::radio::EmergencyServiceCategory::AMBULANCE ==
+              static_cast<aidl::android::hardware::radio::EmergencyServiceCategory>(
+                      ::android::hardware::radio::V1_4::EmergencyServiceCategory::AMBULANCE));
+static_assert(aidl::android::hardware::radio::EmergencyServiceCategory::FIRE_BRIGADE ==
+              static_cast<aidl::android::hardware::radio::EmergencyServiceCategory>(
+                      ::android::hardware::radio::V1_4::EmergencyServiceCategory::FIRE_BRIGADE));
+static_assert(aidl::android::hardware::radio::EmergencyServiceCategory::MARINE_GUARD ==
+              static_cast<aidl::android::hardware::radio::EmergencyServiceCategory>(
+                      ::android::hardware::radio::V1_4::EmergencyServiceCategory::MARINE_GUARD));
+static_assert(aidl::android::hardware::radio::EmergencyServiceCategory::MOUNTAIN_RESCUE ==
+              static_cast<aidl::android::hardware::radio::EmergencyServiceCategory>(
+                      ::android::hardware::radio::V1_4::EmergencyServiceCategory::MOUNTAIN_RESCUE));
+static_assert(aidl::android::hardware::radio::EmergencyServiceCategory::MIEC ==
+              static_cast<aidl::android::hardware::radio::EmergencyServiceCategory>(
+                      ::android::hardware::radio::V1_4::EmergencyServiceCategory::MIEC));
+static_assert(aidl::android::hardware::radio::EmergencyServiceCategory::AIEC ==
+              static_cast<aidl::android::hardware::radio::EmergencyServiceCategory>(
+                      ::android::hardware::radio::V1_4::EmergencyServiceCategory::AIEC));
+
+static_assert(aidl::android::hardware::radio::EmergencyNumberSource::NETWORK_SIGNALING ==
+              static_cast<aidl::android::hardware::radio::EmergencyNumberSource>(
+                      ::android::hardware::radio::V1_4::EmergencyNumberSource::NETWORK_SIGNALING));
+static_assert(aidl::android::hardware::radio::EmergencyNumberSource::SIM ==
+              static_cast<aidl::android::hardware::radio::EmergencyNumberSource>(
+                      ::android::hardware::radio::V1_4::EmergencyNumberSource::SIM));
+static_assert(aidl::android::hardware::radio::EmergencyNumberSource::MODEM_CONFIG ==
+              static_cast<aidl::android::hardware::radio::EmergencyNumberSource>(
+                      ::android::hardware::radio::V1_4::EmergencyNumberSource::MODEM_CONFIG));
+static_assert(aidl::android::hardware::radio::EmergencyNumberSource::DEFAULT ==
+              static_cast<aidl::android::hardware::radio::EmergencyNumberSource>(
+                      ::android::hardware::radio::V1_4::EmergencyNumberSource::DEFAULT));
+
+static_assert(aidl::android::hardware::radio::EmergencyCallRouting::UNKNOWN ==
+              static_cast<aidl::android::hardware::radio::EmergencyCallRouting>(
+                      ::android::hardware::radio::V1_4::EmergencyCallRouting::UNKNOWN));
+static_assert(aidl::android::hardware::radio::EmergencyCallRouting::EMERGENCY ==
+              static_cast<aidl::android::hardware::radio::EmergencyCallRouting>(
+                      ::android::hardware::radio::V1_4::EmergencyCallRouting::EMERGENCY));
+static_assert(aidl::android::hardware::radio::EmergencyCallRouting::NORMAL ==
+              static_cast<aidl::android::hardware::radio::EmergencyCallRouting>(
+                      ::android::hardware::radio::V1_4::EmergencyCallRouting::NORMAL));
+
+static_assert(aidl::android::hardware::radio::RadioTechnology::UNKNOWN ==
+              static_cast<aidl::android::hardware::radio::RadioTechnology>(
+                      ::android::hardware::radio::V1_4::RadioTechnology::UNKNOWN));
+static_assert(aidl::android::hardware::radio::RadioTechnology::GPRS ==
+              static_cast<aidl::android::hardware::radio::RadioTechnology>(
+                      ::android::hardware::radio::V1_4::RadioTechnology::GPRS));
+static_assert(aidl::android::hardware::radio::RadioTechnology::EDGE ==
+              static_cast<aidl::android::hardware::radio::RadioTechnology>(
+                      ::android::hardware::radio::V1_4::RadioTechnology::EDGE));
+static_assert(aidl::android::hardware::radio::RadioTechnology::UMTS ==
+              static_cast<aidl::android::hardware::radio::RadioTechnology>(
+                      ::android::hardware::radio::V1_4::RadioTechnology::UMTS));
+static_assert(aidl::android::hardware::radio::RadioTechnology::IS95A ==
+              static_cast<aidl::android::hardware::radio::RadioTechnology>(
+                      ::android::hardware::radio::V1_4::RadioTechnology::IS95A));
+static_assert(aidl::android::hardware::radio::RadioTechnology::IS95B ==
+              static_cast<aidl::android::hardware::radio::RadioTechnology>(
+                      ::android::hardware::radio::V1_4::RadioTechnology::IS95B));
+static_assert(aidl::android::hardware::radio::RadioTechnology::ONE_X_RTT ==
+              static_cast<aidl::android::hardware::radio::RadioTechnology>(
+                      ::android::hardware::radio::V1_4::RadioTechnology::ONE_X_RTT));
+static_assert(aidl::android::hardware::radio::RadioTechnology::EVDO_0 ==
+              static_cast<aidl::android::hardware::radio::RadioTechnology>(
+                      ::android::hardware::radio::V1_4::RadioTechnology::EVDO_0));
+static_assert(aidl::android::hardware::radio::RadioTechnology::EVDO_A ==
+              static_cast<aidl::android::hardware::radio::RadioTechnology>(
+                      ::android::hardware::radio::V1_4::RadioTechnology::EVDO_A));
+static_assert(aidl::android::hardware::radio::RadioTechnology::HSDPA ==
+              static_cast<aidl::android::hardware::radio::RadioTechnology>(
+                      ::android::hardware::radio::V1_4::RadioTechnology::HSDPA));
+static_assert(aidl::android::hardware::radio::RadioTechnology::HSUPA ==
+              static_cast<aidl::android::hardware::radio::RadioTechnology>(
+                      ::android::hardware::radio::V1_4::RadioTechnology::HSUPA));
+static_assert(aidl::android::hardware::radio::RadioTechnology::HSPA ==
+              static_cast<aidl::android::hardware::radio::RadioTechnology>(
+                      ::android::hardware::radio::V1_4::RadioTechnology::HSPA));
+static_assert(aidl::android::hardware::radio::RadioTechnology::EVDO_B ==
+              static_cast<aidl::android::hardware::radio::RadioTechnology>(
+                      ::android::hardware::radio::V1_4::RadioTechnology::EVDO_B));
+static_assert(aidl::android::hardware::radio::RadioTechnology::EHRPD ==
+              static_cast<aidl::android::hardware::radio::RadioTechnology>(
+                      ::android::hardware::radio::V1_4::RadioTechnology::EHRPD));
+static_assert(aidl::android::hardware::radio::RadioTechnology::LTE ==
+              static_cast<aidl::android::hardware::radio::RadioTechnology>(
+                      ::android::hardware::radio::V1_4::RadioTechnology::LTE));
+static_assert(aidl::android::hardware::radio::RadioTechnology::HSPAP ==
+              static_cast<aidl::android::hardware::radio::RadioTechnology>(
+                      ::android::hardware::radio::V1_4::RadioTechnology::HSPAP));
+static_assert(aidl::android::hardware::radio::RadioTechnology::GSM ==
+              static_cast<aidl::android::hardware::radio::RadioTechnology>(
+                      ::android::hardware::radio::V1_4::RadioTechnology::GSM));
+static_assert(aidl::android::hardware::radio::RadioTechnology::TD_SCDMA ==
+              static_cast<aidl::android::hardware::radio::RadioTechnology>(
+                      ::android::hardware::radio::V1_4::RadioTechnology::TD_SCDMA));
+static_assert(aidl::android::hardware::radio::RadioTechnology::IWLAN ==
+              static_cast<aidl::android::hardware::radio::RadioTechnology>(
+                      ::android::hardware::radio::V1_4::RadioTechnology::IWLAN));
+static_assert(aidl::android::hardware::radio::RadioTechnology::LTE_CA ==
+              static_cast<aidl::android::hardware::radio::RadioTechnology>(
+                      ::android::hardware::radio::V1_4::RadioTechnology::LTE_CA));
+static_assert(aidl::android::hardware::radio::RadioTechnology::NR ==
+              static_cast<aidl::android::hardware::radio::RadioTechnology>(
+                      ::android::hardware::radio::V1_4::RadioTechnology::NR));
+
+static_assert(aidl::android::hardware::radio::RadioAccessFamily::UNKNOWN ==
+              static_cast<aidl::android::hardware::radio::RadioAccessFamily>(
+                      ::android::hardware::radio::V1_4::RadioAccessFamily::UNKNOWN));
+static_assert(aidl::android::hardware::radio::RadioAccessFamily::GPRS ==
+              static_cast<aidl::android::hardware::radio::RadioAccessFamily>(
+                      ::android::hardware::radio::V1_4::RadioAccessFamily::GPRS));
+static_assert(aidl::android::hardware::radio::RadioAccessFamily::EDGE ==
+              static_cast<aidl::android::hardware::radio::RadioAccessFamily>(
+                      ::android::hardware::radio::V1_4::RadioAccessFamily::EDGE));
+static_assert(aidl::android::hardware::radio::RadioAccessFamily::UMTS ==
+              static_cast<aidl::android::hardware::radio::RadioAccessFamily>(
+                      ::android::hardware::radio::V1_4::RadioAccessFamily::UMTS));
+static_assert(aidl::android::hardware::radio::RadioAccessFamily::IS95A ==
+              static_cast<aidl::android::hardware::radio::RadioAccessFamily>(
+                      ::android::hardware::radio::V1_4::RadioAccessFamily::IS95A));
+static_assert(aidl::android::hardware::radio::RadioAccessFamily::IS95B ==
+              static_cast<aidl::android::hardware::radio::RadioAccessFamily>(
+                      ::android::hardware::radio::V1_4::RadioAccessFamily::IS95B));
+static_assert(aidl::android::hardware::radio::RadioAccessFamily::ONE_X_RTT ==
+              static_cast<aidl::android::hardware::radio::RadioAccessFamily>(
+                      ::android::hardware::radio::V1_4::RadioAccessFamily::ONE_X_RTT));
+static_assert(aidl::android::hardware::radio::RadioAccessFamily::EVDO_0 ==
+              static_cast<aidl::android::hardware::radio::RadioAccessFamily>(
+                      ::android::hardware::radio::V1_4::RadioAccessFamily::EVDO_0));
+static_assert(aidl::android::hardware::radio::RadioAccessFamily::EVDO_A ==
+              static_cast<aidl::android::hardware::radio::RadioAccessFamily>(
+                      ::android::hardware::radio::V1_4::RadioAccessFamily::EVDO_A));
+static_assert(aidl::android::hardware::radio::RadioAccessFamily::HSDPA ==
+              static_cast<aidl::android::hardware::radio::RadioAccessFamily>(
+                      ::android::hardware::radio::V1_4::RadioAccessFamily::HSDPA));
+static_assert(aidl::android::hardware::radio::RadioAccessFamily::HSUPA ==
+              static_cast<aidl::android::hardware::radio::RadioAccessFamily>(
+                      ::android::hardware::radio::V1_4::RadioAccessFamily::HSUPA));
+static_assert(aidl::android::hardware::radio::RadioAccessFamily::HSPA ==
+              static_cast<aidl::android::hardware::radio::RadioAccessFamily>(
+                      ::android::hardware::radio::V1_4::RadioAccessFamily::HSPA));
+static_assert(aidl::android::hardware::radio::RadioAccessFamily::EVDO_B ==
+              static_cast<aidl::android::hardware::radio::RadioAccessFamily>(
+                      ::android::hardware::radio::V1_4::RadioAccessFamily::EVDO_B));
+static_assert(aidl::android::hardware::radio::RadioAccessFamily::EHRPD ==
+              static_cast<aidl::android::hardware::radio::RadioAccessFamily>(
+                      ::android::hardware::radio::V1_4::RadioAccessFamily::EHRPD));
+static_assert(aidl::android::hardware::radio::RadioAccessFamily::LTE ==
+              static_cast<aidl::android::hardware::radio::RadioAccessFamily>(
+                      ::android::hardware::radio::V1_4::RadioAccessFamily::LTE));
+static_assert(aidl::android::hardware::radio::RadioAccessFamily::HSPAP ==
+              static_cast<aidl::android::hardware::radio::RadioAccessFamily>(
+                      ::android::hardware::radio::V1_4::RadioAccessFamily::HSPAP));
+static_assert(aidl::android::hardware::radio::RadioAccessFamily::GSM ==
+              static_cast<aidl::android::hardware::radio::RadioAccessFamily>(
+                      ::android::hardware::radio::V1_4::RadioAccessFamily::GSM));
+static_assert(aidl::android::hardware::radio::RadioAccessFamily::TD_SCDMA ==
+              static_cast<aidl::android::hardware::radio::RadioAccessFamily>(
+                      ::android::hardware::radio::V1_4::RadioAccessFamily::TD_SCDMA));
+static_assert(aidl::android::hardware::radio::RadioAccessFamily::LTE_CA ==
+              static_cast<aidl::android::hardware::radio::RadioAccessFamily>(
+                      ::android::hardware::radio::V1_4::RadioAccessFamily::LTE_CA));
+static_assert(aidl::android::hardware::radio::RadioAccessFamily::NR ==
+              static_cast<aidl::android::hardware::radio::RadioAccessFamily>(
+                      ::android::hardware::radio::V1_4::RadioAccessFamily::NR));
+
+static_assert(aidl::android::hardware::radio::FrequencyRange::LOW ==
+              static_cast<aidl::android::hardware::radio::FrequencyRange>(
+                      ::android::hardware::radio::V1_4::FrequencyRange::LOW));
+static_assert(aidl::android::hardware::radio::FrequencyRange::MID ==
+              static_cast<aidl::android::hardware::radio::FrequencyRange>(
+                      ::android::hardware::radio::V1_4::FrequencyRange::MID));
+static_assert(aidl::android::hardware::radio::FrequencyRange::HIGH ==
+              static_cast<aidl::android::hardware::radio::FrequencyRange>(
+                      ::android::hardware::radio::V1_4::FrequencyRange::HIGH));
+static_assert(aidl::android::hardware::radio::FrequencyRange::MMWAVE ==
+              static_cast<aidl::android::hardware::radio::FrequencyRange>(
+                      ::android::hardware::radio::V1_4::FrequencyRange::MMWAVE));
+
+static_assert(aidl::android::hardware::radio::DataConnActiveStatus::INACTIVE ==
+              static_cast<aidl::android::hardware::radio::DataConnActiveStatus>(
+                      ::android::hardware::radio::V1_4::DataConnActiveStatus::INACTIVE));
+static_assert(aidl::android::hardware::radio::DataConnActiveStatus::DORMANT ==
+              static_cast<aidl::android::hardware::radio::DataConnActiveStatus>(
+                      ::android::hardware::radio::V1_4::DataConnActiveStatus::DORMANT));
+static_assert(aidl::android::hardware::radio::DataConnActiveStatus::ACTIVE ==
+              static_cast<aidl::android::hardware::radio::DataConnActiveStatus>(
+                      ::android::hardware::radio::V1_4::DataConnActiveStatus::ACTIVE));
+
+static_assert(aidl::android::hardware::radio::PdpProtocolType::UNKNOWN ==
+              static_cast<aidl::android::hardware::radio::PdpProtocolType>(
+                      ::android::hardware::radio::V1_4::PdpProtocolType::UNKNOWN));
+static_assert(aidl::android::hardware::radio::PdpProtocolType::IP ==
+              static_cast<aidl::android::hardware::radio::PdpProtocolType>(
+                      ::android::hardware::radio::V1_4::PdpProtocolType::IP));
+static_assert(aidl::android::hardware::radio::PdpProtocolType::IPV6 ==
+              static_cast<aidl::android::hardware::radio::PdpProtocolType>(
+                      ::android::hardware::radio::V1_4::PdpProtocolType::IPV6));
+static_assert(aidl::android::hardware::radio::PdpProtocolType::IPV4V6 ==
+              static_cast<aidl::android::hardware::radio::PdpProtocolType>(
+                      ::android::hardware::radio::V1_4::PdpProtocolType::IPV4V6));
+static_assert(aidl::android::hardware::radio::PdpProtocolType::PPP ==
+              static_cast<aidl::android::hardware::radio::PdpProtocolType>(
+                      ::android::hardware::radio::V1_4::PdpProtocolType::PPP));
+static_assert(aidl::android::hardware::radio::PdpProtocolType::NON_IP ==
+              static_cast<aidl::android::hardware::radio::PdpProtocolType>(
+                      ::android::hardware::radio::V1_4::PdpProtocolType::NON_IP));
+static_assert(aidl::android::hardware::radio::PdpProtocolType::UNSTRUCTURED ==
+              static_cast<aidl::android::hardware::radio::PdpProtocolType>(
+                      ::android::hardware::radio::V1_4::PdpProtocolType::UNSTRUCTURED));
+
+static_assert(aidl::android::hardware::radio::AccessNetwork::GERAN ==
+              static_cast<aidl::android::hardware::radio::AccessNetwork>(
+                      ::android::hardware::radio::V1_5::AccessNetwork::GERAN));
+static_assert(aidl::android::hardware::radio::AccessNetwork::UTRAN ==
+              static_cast<aidl::android::hardware::radio::AccessNetwork>(
+                      ::android::hardware::radio::V1_5::AccessNetwork::UTRAN));
+static_assert(aidl::android::hardware::radio::AccessNetwork::EUTRAN ==
+              static_cast<aidl::android::hardware::radio::AccessNetwork>(
+                      ::android::hardware::radio::V1_5::AccessNetwork::EUTRAN));
+static_assert(aidl::android::hardware::radio::AccessNetwork::CDMA2000 ==
+              static_cast<aidl::android::hardware::radio::AccessNetwork>(
+                      ::android::hardware::radio::V1_5::AccessNetwork::CDMA2000));
+static_assert(aidl::android::hardware::radio::AccessNetwork::IWLAN ==
+              static_cast<aidl::android::hardware::radio::AccessNetwork>(
+                      ::android::hardware::radio::V1_5::AccessNetwork::IWLAN));
+static_assert(aidl::android::hardware::radio::AccessNetwork::UNKNOWN ==
+              static_cast<aidl::android::hardware::radio::AccessNetwork>(
+                      ::android::hardware::radio::V1_5::AccessNetwork::UNKNOWN));
+static_assert(aidl::android::hardware::radio::AccessNetwork::NGRAN ==
+              static_cast<aidl::android::hardware::radio::AccessNetwork>(
+                      ::android::hardware::radio::V1_5::AccessNetwork::NGRAN));
+
+static_assert(aidl::android::hardware::radio::SignalMeasurementType::RSSI ==
+              static_cast<aidl::android::hardware::radio::SignalMeasurementType>(
+                      ::android::hardware::radio::V1_5::SignalMeasurementType::RSSI));
+static_assert(aidl::android::hardware::radio::SignalMeasurementType::RSCP ==
+              static_cast<aidl::android::hardware::radio::SignalMeasurementType>(
+                      ::android::hardware::radio::V1_5::SignalMeasurementType::RSCP));
+static_assert(aidl::android::hardware::radio::SignalMeasurementType::RSRP ==
+              static_cast<aidl::android::hardware::radio::SignalMeasurementType>(
+                      ::android::hardware::radio::V1_5::SignalMeasurementType::RSRP));
+static_assert(aidl::android::hardware::radio::SignalMeasurementType::RSRQ ==
+              static_cast<aidl::android::hardware::radio::SignalMeasurementType>(
+                      ::android::hardware::radio::V1_5::SignalMeasurementType::RSRQ));
+static_assert(aidl::android::hardware::radio::SignalMeasurementType::RSSNR ==
+              static_cast<aidl::android::hardware::radio::SignalMeasurementType>(
+                      ::android::hardware::radio::V1_5::SignalMeasurementType::RSSNR));
+static_assert(aidl::android::hardware::radio::SignalMeasurementType::SSRSRP ==
+              static_cast<aidl::android::hardware::radio::SignalMeasurementType>(
+                      ::android::hardware::radio::V1_5::SignalMeasurementType::SSRSRP));
+static_assert(aidl::android::hardware::radio::SignalMeasurementType::SSRSRQ ==
+              static_cast<aidl::android::hardware::radio::SignalMeasurementType>(
+                      ::android::hardware::radio::V1_5::SignalMeasurementType::SSRSRQ));
+static_assert(aidl::android::hardware::radio::SignalMeasurementType::SSSINR ==
+              static_cast<aidl::android::hardware::radio::SignalMeasurementType>(
+                      ::android::hardware::radio::V1_5::SignalMeasurementType::SSSINR));
+
+static_assert(aidl::android::hardware::radio::SimLockMultiSimPolicy::NO_MULTISIM_POLICY ==
+              static_cast<aidl::android::hardware::radio::SimLockMultiSimPolicy>(
+                      ::android::hardware::radio::V1_4::SimLockMultiSimPolicy::NO_MULTISIM_POLICY));
+static_assert(
+        aidl::android::hardware::radio::SimLockMultiSimPolicy::ONE_VALID_SIM_MUST_BE_PRESENT ==
+        static_cast<aidl::android::hardware::radio::SimLockMultiSimPolicy>(
+                ::android::hardware::radio::V1_4::SimLockMultiSimPolicy::
+                        ONE_VALID_SIM_MUST_BE_PRESENT));
+
+static_assert(aidl::android::hardware::radio::RadioAccessNetworks::GERAN ==
+              static_cast<aidl::android::hardware::radio::RadioAccessNetworks>(
+                      ::android::hardware::radio::V1_5::RadioAccessNetworks::GERAN));
+static_assert(aidl::android::hardware::radio::RadioAccessNetworks::UTRAN ==
+              static_cast<aidl::android::hardware::radio::RadioAccessNetworks>(
+                      ::android::hardware::radio::V1_5::RadioAccessNetworks::UTRAN));
+static_assert(aidl::android::hardware::radio::RadioAccessNetworks::EUTRAN ==
+              static_cast<aidl::android::hardware::radio::RadioAccessNetworks>(
+                      ::android::hardware::radio::V1_5::RadioAccessNetworks::EUTRAN));
+static_assert(aidl::android::hardware::radio::RadioAccessNetworks::UNKNOWN ==
+              static_cast<aidl::android::hardware::radio::RadioAccessNetworks>(
+                      ::android::hardware::radio::V1_5::RadioAccessNetworks::UNKNOWN));
+static_assert(aidl::android::hardware::radio::RadioAccessNetworks::NGRAN ==
+              static_cast<aidl::android::hardware::radio::RadioAccessNetworks>(
+                      ::android::hardware::radio::V1_5::RadioAccessNetworks::NGRAN));
+static_assert(aidl::android::hardware::radio::RadioAccessNetworks::CDMA2000 ==
+              static_cast<aidl::android::hardware::radio::RadioAccessNetworks>(
+                      ::android::hardware::radio::V1_5::RadioAccessNetworks::CDMA2000));
+
+static_assert(aidl::android::hardware::radio::UtranBands::BAND_1 ==
+              static_cast<aidl::android::hardware::radio::UtranBands>(
+                      ::android::hardware::radio::V1_5::UtranBands::BAND_1));
+static_assert(aidl::android::hardware::radio::UtranBands::BAND_2 ==
+              static_cast<aidl::android::hardware::radio::UtranBands>(
+                      ::android::hardware::radio::V1_5::UtranBands::BAND_2));
+static_assert(aidl::android::hardware::radio::UtranBands::BAND_3 ==
+              static_cast<aidl::android::hardware::radio::UtranBands>(
+                      ::android::hardware::radio::V1_5::UtranBands::BAND_3));
+static_assert(aidl::android::hardware::radio::UtranBands::BAND_4 ==
+              static_cast<aidl::android::hardware::radio::UtranBands>(
+                      ::android::hardware::radio::V1_5::UtranBands::BAND_4));
+static_assert(aidl::android::hardware::radio::UtranBands::BAND_5 ==
+              static_cast<aidl::android::hardware::radio::UtranBands>(
+                      ::android::hardware::radio::V1_5::UtranBands::BAND_5));
+static_assert(aidl::android::hardware::radio::UtranBands::BAND_6 ==
+              static_cast<aidl::android::hardware::radio::UtranBands>(
+                      ::android::hardware::radio::V1_5::UtranBands::BAND_6));
+static_assert(aidl::android::hardware::radio::UtranBands::BAND_7 ==
+              static_cast<aidl::android::hardware::radio::UtranBands>(
+                      ::android::hardware::radio::V1_5::UtranBands::BAND_7));
+static_assert(aidl::android::hardware::radio::UtranBands::BAND_8 ==
+              static_cast<aidl::android::hardware::radio::UtranBands>(
+                      ::android::hardware::radio::V1_5::UtranBands::BAND_8));
+static_assert(aidl::android::hardware::radio::UtranBands::BAND_9 ==
+              static_cast<aidl::android::hardware::radio::UtranBands>(
+                      ::android::hardware::radio::V1_5::UtranBands::BAND_9));
+static_assert(aidl::android::hardware::radio::UtranBands::BAND_10 ==
+              static_cast<aidl::android::hardware::radio::UtranBands>(
+                      ::android::hardware::radio::V1_5::UtranBands::BAND_10));
+static_assert(aidl::android::hardware::radio::UtranBands::BAND_11 ==
+              static_cast<aidl::android::hardware::radio::UtranBands>(
+                      ::android::hardware::radio::V1_5::UtranBands::BAND_11));
+static_assert(aidl::android::hardware::radio::UtranBands::BAND_12 ==
+              static_cast<aidl::android::hardware::radio::UtranBands>(
+                      ::android::hardware::radio::V1_5::UtranBands::BAND_12));
+static_assert(aidl::android::hardware::radio::UtranBands::BAND_13 ==
+              static_cast<aidl::android::hardware::radio::UtranBands>(
+                      ::android::hardware::radio::V1_5::UtranBands::BAND_13));
+static_assert(aidl::android::hardware::radio::UtranBands::BAND_14 ==
+              static_cast<aidl::android::hardware::radio::UtranBands>(
+                      ::android::hardware::radio::V1_5::UtranBands::BAND_14));
+static_assert(aidl::android::hardware::radio::UtranBands::BAND_19 ==
+              static_cast<aidl::android::hardware::radio::UtranBands>(
+                      ::android::hardware::radio::V1_5::UtranBands::BAND_19));
+static_assert(aidl::android::hardware::radio::UtranBands::BAND_20 ==
+              static_cast<aidl::android::hardware::radio::UtranBands>(
+                      ::android::hardware::radio::V1_5::UtranBands::BAND_20));
+static_assert(aidl::android::hardware::radio::UtranBands::BAND_21 ==
+              static_cast<aidl::android::hardware::radio::UtranBands>(
+                      ::android::hardware::radio::V1_5::UtranBands::BAND_21));
+static_assert(aidl::android::hardware::radio::UtranBands::BAND_22 ==
+              static_cast<aidl::android::hardware::radio::UtranBands>(
+                      ::android::hardware::radio::V1_5::UtranBands::BAND_22));
+static_assert(aidl::android::hardware::radio::UtranBands::BAND_25 ==
+              static_cast<aidl::android::hardware::radio::UtranBands>(
+                      ::android::hardware::radio::V1_5::UtranBands::BAND_25));
+static_assert(aidl::android::hardware::radio::UtranBands::BAND_26 ==
+              static_cast<aidl::android::hardware::radio::UtranBands>(
+                      ::android::hardware::radio::V1_5::UtranBands::BAND_26));
+static_assert(aidl::android::hardware::radio::UtranBands::BAND_A ==
+              static_cast<aidl::android::hardware::radio::UtranBands>(
+                      ::android::hardware::radio::V1_5::UtranBands::BAND_A));
+static_assert(aidl::android::hardware::radio::UtranBands::BAND_B ==
+              static_cast<aidl::android::hardware::radio::UtranBands>(
+                      ::android::hardware::radio::V1_5::UtranBands::BAND_B));
+static_assert(aidl::android::hardware::radio::UtranBands::BAND_C ==
+              static_cast<aidl::android::hardware::radio::UtranBands>(
+                      ::android::hardware::radio::V1_5::UtranBands::BAND_C));
+static_assert(aidl::android::hardware::radio::UtranBands::BAND_D ==
+              static_cast<aidl::android::hardware::radio::UtranBands>(
+                      ::android::hardware::radio::V1_5::UtranBands::BAND_D));
+static_assert(aidl::android::hardware::radio::UtranBands::BAND_E ==
+              static_cast<aidl::android::hardware::radio::UtranBands>(
+                      ::android::hardware::radio::V1_5::UtranBands::BAND_E));
+static_assert(aidl::android::hardware::radio::UtranBands::BAND_F ==
+              static_cast<aidl::android::hardware::radio::UtranBands>(
+                      ::android::hardware::radio::V1_5::UtranBands::BAND_F));
+
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_1 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_1));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_2 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_2));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_3 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_3));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_4 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_4));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_5 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_5));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_6 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_6));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_7 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_7));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_8 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_8));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_9 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_9));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_10 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_10));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_11 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_11));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_12 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_12));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_13 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_13));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_14 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_14));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_17 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_17));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_18 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_18));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_19 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_19));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_20 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_20));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_21 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_21));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_22 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_22));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_23 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_23));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_24 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_24));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_25 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_25));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_26 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_26));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_27 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_27));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_28 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_28));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_30 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_30));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_31 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_31));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_33 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_33));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_34 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_34));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_35 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_35));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_36 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_36));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_37 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_37));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_38 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_38));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_39 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_39));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_40 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_40));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_41 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_41));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_42 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_42));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_43 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_43));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_44 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_44));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_45 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_45));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_46 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_46));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_47 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_47));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_48 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_48));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_65 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_65));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_66 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_66));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_68 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_68));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_70 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_70));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_49 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_49));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_50 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_50));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_51 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_51));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_52 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_52));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_53 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_53));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_71 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_71));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_72 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_72));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_73 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_73));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_74 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_74));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_85 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_85));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_87 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_87));
+static_assert(aidl::android::hardware::radio::EutranBands::BAND_88 ==
+              static_cast<aidl::android::hardware::radio::EutranBands>(
+                      ::android::hardware::radio::V1_5::EutranBands::BAND_88));
+
+static_assert(aidl::android::hardware::radio::ApnTypes::NONE ==
+              static_cast<aidl::android::hardware::radio::ApnTypes>(
+                      ::android::hardware::radio::V1_5::ApnTypes::NONE));
+static_assert(aidl::android::hardware::radio::ApnTypes::DEFAULT ==
+              static_cast<aidl::android::hardware::radio::ApnTypes>(
+                      ::android::hardware::radio::V1_5::ApnTypes::DEFAULT));
+static_assert(aidl::android::hardware::radio::ApnTypes::MMS ==
+              static_cast<aidl::android::hardware::radio::ApnTypes>(
+                      ::android::hardware::radio::V1_5::ApnTypes::MMS));
+static_assert(aidl::android::hardware::radio::ApnTypes::SUPL ==
+              static_cast<aidl::android::hardware::radio::ApnTypes>(
+                      ::android::hardware::radio::V1_5::ApnTypes::SUPL));
+static_assert(aidl::android::hardware::radio::ApnTypes::DUN ==
+              static_cast<aidl::android::hardware::radio::ApnTypes>(
+                      ::android::hardware::radio::V1_5::ApnTypes::DUN));
+static_assert(aidl::android::hardware::radio::ApnTypes::HIPRI ==
+              static_cast<aidl::android::hardware::radio::ApnTypes>(
+                      ::android::hardware::radio::V1_5::ApnTypes::HIPRI));
+static_assert(aidl::android::hardware::radio::ApnTypes::FOTA ==
+              static_cast<aidl::android::hardware::radio::ApnTypes>(
+                      ::android::hardware::radio::V1_5::ApnTypes::FOTA));
+static_assert(aidl::android::hardware::radio::ApnTypes::IMS ==
+              static_cast<aidl::android::hardware::radio::ApnTypes>(
+                      ::android::hardware::radio::V1_5::ApnTypes::IMS));
+static_assert(aidl::android::hardware::radio::ApnTypes::CBS ==
+              static_cast<aidl::android::hardware::radio::ApnTypes>(
+                      ::android::hardware::radio::V1_5::ApnTypes::CBS));
+static_assert(aidl::android::hardware::radio::ApnTypes::IA ==
+              static_cast<aidl::android::hardware::radio::ApnTypes>(
+                      ::android::hardware::radio::V1_5::ApnTypes::IA));
+static_assert(aidl::android::hardware::radio::ApnTypes::EMERGENCY ==
+              static_cast<aidl::android::hardware::radio::ApnTypes>(
+                      ::android::hardware::radio::V1_5::ApnTypes::EMERGENCY));
+static_assert(aidl::android::hardware::radio::ApnTypes::ALL ==
+              static_cast<aidl::android::hardware::radio::ApnTypes>(
+                      ::android::hardware::radio::V1_5::ApnTypes::ALL));
+static_assert(aidl::android::hardware::radio::ApnTypes::MCX ==
+              static_cast<aidl::android::hardware::radio::ApnTypes>(
+                      ::android::hardware::radio::V1_5::ApnTypes::MCX));
+static_assert(aidl::android::hardware::radio::ApnTypes::XCAP ==
+              static_cast<aidl::android::hardware::radio::ApnTypes>(
+                      ::android::hardware::radio::V1_5::ApnTypes::XCAP));
+
+static_assert(aidl::android::hardware::radio::AddressProperty::NONE ==
+              static_cast<aidl::android::hardware::radio::AddressProperty>(
+                      ::android::hardware::radio::V1_5::AddressProperty::NONE));
+static_assert(aidl::android::hardware::radio::AddressProperty::DEPRECATED ==
+              static_cast<aidl::android::hardware::radio::AddressProperty>(
+                      ::android::hardware::radio::V1_5::AddressProperty::DEPRECATED));
+
+static_assert(aidl::android::hardware::radio::Domain::CS ==
+              static_cast<aidl::android::hardware::radio::Domain>(
+                      ::android::hardware::radio::V1_5::Domain::CS));
+static_assert(aidl::android::hardware::radio::Domain::PS ==
+              static_cast<aidl::android::hardware::radio::Domain>(
+                      ::android::hardware::radio::V1_5::Domain::PS));
+
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::CS_SERVICE ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::CS_SERVICE));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::PS_SERVICE ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::PS_SERVICE));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::CS_VOICE ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::CS_VOICE));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::MO_SIGNALLING ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::MO_SIGNALLING));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::MO_DATA ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::MO_DATA));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::CS_FALLBACK ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::CS_FALLBACK));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::MMTEL_VOICE ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::MMTEL_VOICE));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::MMTEL_VIDEO ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::MMTEL_VIDEO));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::EMERGENCY ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::EMERGENCY));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::SMS ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::SMS));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_1 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_1));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_2 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_2));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_3 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_3));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_4 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_4));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_5 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_5));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_6 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_6));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_7 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_7));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_8 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_8));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_9 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_9));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_10 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_10));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_11 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_11));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_12 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_12));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_13 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_13));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_14 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_14));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_15 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_15));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_16 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_16));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_17 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_17));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_18 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_18));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_19 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_19));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_20 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_20));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_21 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_21));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_22 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_22));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_23 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_23));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_24 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_24));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_25 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_25));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_26 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_26));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_27 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_27));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_28 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_28));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_29 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_29));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_30 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_30));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_31 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_31));
+static_assert(aidl::android::hardware::radio::BarringInfoServiceType::OPERATOR_32 ==
+              static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::ServiceType::OPERATOR_32));
+
+static_assert(aidl::android::hardware::radio::BarringInfoBarringType::NONE ==
+              static_cast<aidl::android::hardware::radio::BarringInfoBarringType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::BarringType::NONE));
+static_assert(aidl::android::hardware::radio::BarringInfoBarringType::CONDITIONAL ==
+              static_cast<aidl::android::hardware::radio::BarringInfoBarringType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::BarringType::CONDITIONAL));
+static_assert(aidl::android::hardware::radio::BarringInfoBarringType::UNCONDITIONAL ==
+              static_cast<aidl::android::hardware::radio::BarringInfoBarringType>(
+                      ::android::hardware::radio::V1_5::BarringInfo::BarringType::UNCONDITIONAL));
+
+static_assert(aidl::android::hardware::radio::IndicationFilter::NONE ==
+              static_cast<aidl::android::hardware::radio::IndicationFilter>(
+                      ::android::hardware::radio::V1_5::IndicationFilter::NONE));
+static_assert(aidl::android::hardware::radio::IndicationFilter::ALL ==
+              static_cast<aidl::android::hardware::radio::IndicationFilter>(
+                      ::android::hardware::radio::V1_5::IndicationFilter::ALL));
+static_assert(aidl::android::hardware::radio::IndicationFilter::SIGNAL_STRENGTH ==
+              static_cast<aidl::android::hardware::radio::IndicationFilter>(
+                      ::android::hardware::radio::V1_5::IndicationFilter::SIGNAL_STRENGTH));
+static_assert(aidl::android::hardware::radio::IndicationFilter::FULL_NETWORK_STATE ==
+              static_cast<aidl::android::hardware::radio::IndicationFilter>(
+                      ::android::hardware::radio::V1_5::IndicationFilter::FULL_NETWORK_STATE));
+static_assert(
+        aidl::android::hardware::radio::IndicationFilter::DATA_CALL_DORMANCY_CHANGED ==
+        static_cast<aidl::android::hardware::radio::IndicationFilter>(
+                ::android::hardware::radio::V1_5::IndicationFilter::DATA_CALL_DORMANCY_CHANGED));
+static_assert(aidl::android::hardware::radio::IndicationFilter::LINK_CAPACITY_ESTIMATE ==
+              static_cast<aidl::android::hardware::radio::IndicationFilter>(
+                      ::android::hardware::radio::V1_5::IndicationFilter::LINK_CAPACITY_ESTIMATE));
+static_assert(aidl::android::hardware::radio::IndicationFilter::PHYSICAL_CHANNEL_CONFIG ==
+              static_cast<aidl::android::hardware::radio::IndicationFilter>(
+                      ::android::hardware::radio::V1_5::IndicationFilter::PHYSICAL_CHANNEL_CONFIG));
+static_assert(aidl::android::hardware::radio::IndicationFilter::REGISTRATION_FAILURE ==
+              static_cast<aidl::android::hardware::radio::IndicationFilter>(
+                      ::android::hardware::radio::V1_5::IndicationFilter::REGISTRATION_FAILURE));
+static_assert(aidl::android::hardware::radio::IndicationFilter::BARRING_INFO ==
+              static_cast<aidl::android::hardware::radio::IndicationFilter>(
+                      ::android::hardware::radio::V1_5::IndicationFilter::BARRING_INFO));
+
+static_assert(aidl::android::hardware::radio::RegistrationFailCause::NONE ==
+              static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                      ::android::hardware::radio::V1_5::RegistrationFailCause::NONE));
+static_assert(
+        aidl::android::hardware::radio::RegistrationFailCause::IMSI_UNKNOWN_IN_HLR ==
+        static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                ::android::hardware::radio::V1_5::RegistrationFailCause::IMSI_UNKNOWN_IN_HLR));
+static_assert(aidl::android::hardware::radio::RegistrationFailCause::ILLEGAL_MS ==
+              static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                      ::android::hardware::radio::V1_5::RegistrationFailCause::ILLEGAL_MS));
+static_assert(
+        aidl::android::hardware::radio::RegistrationFailCause::IMSI_UNKNOWN_IN_VLR ==
+        static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                ::android::hardware::radio::V1_5::RegistrationFailCause::IMSI_UNKNOWN_IN_VLR));
+static_assert(aidl::android::hardware::radio::RegistrationFailCause::IMEI_NOT_ACCEPTED ==
+              static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                      ::android::hardware::radio::V1_5::RegistrationFailCause::IMEI_NOT_ACCEPTED));
+static_assert(aidl::android::hardware::radio::RegistrationFailCause::ILLEGAL_ME ==
+              static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                      ::android::hardware::radio::V1_5::RegistrationFailCause::ILLEGAL_ME));
+static_assert(aidl::android::hardware::radio::RegistrationFailCause::GPRS_SERVICES_NOT_ALLOWED ==
+              static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                      ::android::hardware::radio::V1_5::RegistrationFailCause::
+                              GPRS_SERVICES_NOT_ALLOWED));
+static_assert(aidl::android::hardware::radio::RegistrationFailCause::
+                      GPRS_AND_NON_GPRS_SERVICES_NOT_ALLOWED ==
+              static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                      ::android::hardware::radio::V1_5::RegistrationFailCause::
+                              GPRS_AND_NON_GPRS_SERVICES_NOT_ALLOWED));
+static_assert(aidl::android::hardware::radio::RegistrationFailCause::
+                      MS_IDENTITY_CANNOT_BE_DERIVED_BY_NETWORK ==
+              static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                      ::android::hardware::radio::V1_5::RegistrationFailCause::
+                              MS_IDENTITY_CANNOT_BE_DERIVED_BY_NETWORK));
+static_assert(
+        aidl::android::hardware::radio::RegistrationFailCause::IMPLICITLY_DETACHED ==
+        static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                ::android::hardware::radio::V1_5::RegistrationFailCause::IMPLICITLY_DETACHED));
+static_assert(aidl::android::hardware::radio::RegistrationFailCause::PLMN_NOT_ALLOWED ==
+              static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                      ::android::hardware::radio::V1_5::RegistrationFailCause::PLMN_NOT_ALLOWED));
+static_assert(aidl::android::hardware::radio::RegistrationFailCause::LOCATION_AREA_NOT_ALLOWED ==
+              static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                      ::android::hardware::radio::V1_5::RegistrationFailCause::
+                              LOCATION_AREA_NOT_ALLOWED));
+static_assert(
+        aidl::android::hardware::radio::RegistrationFailCause::ROAMING_NOT_ALLOWED ==
+        static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                ::android::hardware::radio::V1_5::RegistrationFailCause::ROAMING_NOT_ALLOWED));
+static_assert(
+        aidl::android::hardware::radio::RegistrationFailCause::GPRS_SERVICES_NOT_ALLOWED_IN_PLMN ==
+        static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                ::android::hardware::radio::V1_5::RegistrationFailCause::
+                        GPRS_SERVICES_NOT_ALLOWED_IN_PLMN));
+static_assert(aidl::android::hardware::radio::RegistrationFailCause::NO_SUITABLE_CELLS ==
+              static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                      ::android::hardware::radio::V1_5::RegistrationFailCause::NO_SUITABLE_CELLS));
+static_assert(
+        aidl::android::hardware::radio::RegistrationFailCause::MSC_TEMPORARILY_NOT_REACHABLE ==
+        static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                ::android::hardware::radio::V1_5::RegistrationFailCause::
+                        MSC_TEMPORARILY_NOT_REACHABLE));
+static_assert(aidl::android::hardware::radio::RegistrationFailCause::NETWORK_FAILURE ==
+              static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                      ::android::hardware::radio::V1_5::RegistrationFailCause::NETWORK_FAILURE));
+static_assert(aidl::android::hardware::radio::RegistrationFailCause::MAC_FAILURE ==
+              static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                      ::android::hardware::radio::V1_5::RegistrationFailCause::MAC_FAILURE));
+static_assert(aidl::android::hardware::radio::RegistrationFailCause::SYNC_FAILURE ==
+              static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                      ::android::hardware::radio::V1_5::RegistrationFailCause::SYNC_FAILURE));
+static_assert(aidl::android::hardware::radio::RegistrationFailCause::CONGESTION ==
+              static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                      ::android::hardware::radio::V1_5::RegistrationFailCause::CONGESTION));
+static_assert(
+        aidl::android::hardware::radio::RegistrationFailCause::GSM_AUTHENTICATION_UNACCEPTABLE ==
+        static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                ::android::hardware::radio::V1_5::RegistrationFailCause::
+                        GSM_AUTHENTICATION_UNACCEPTABLE));
+static_assert(aidl::android::hardware::radio::RegistrationFailCause::NOT_AUTHORIZED_FOR_THIS_CSG ==
+              static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                      ::android::hardware::radio::V1_5::RegistrationFailCause::
+                              NOT_AUTHORIZED_FOR_THIS_CSG));
+static_assert(aidl::android::hardware::radio::RegistrationFailCause::
+                      SMS_PROVIDED_BY_GPRS_IN_ROUTING_AREA ==
+              static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                      ::android::hardware::radio::V1_5::RegistrationFailCause::
+                              SMS_PROVIDED_BY_GPRS_IN_ROUTING_AREA));
+static_assert(aidl::android::hardware::radio::RegistrationFailCause::SERVICE_OPTION_NOT_SUPPORTED ==
+              static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                      ::android::hardware::radio::V1_5::RegistrationFailCause::
+                              SERVICE_OPTION_NOT_SUPPORTED));
+static_assert(
+        aidl::android::hardware::radio::RegistrationFailCause::SERVICE_OPTION_NOT_SUBSCRIBED ==
+        static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                ::android::hardware::radio::V1_5::RegistrationFailCause::
+                        SERVICE_OPTION_NOT_SUBSCRIBED));
+static_assert(aidl::android::hardware::radio::RegistrationFailCause::
+                      SERVICE_OPTION_TEMPORARILY_OUT_OF_ORDER ==
+              static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                      ::android::hardware::radio::V1_5::RegistrationFailCause::
+                              SERVICE_OPTION_TEMPORARILY_OUT_OF_ORDER));
+static_assert(aidl::android::hardware::radio::RegistrationFailCause::CALL_CANNOT_BE_IDENTIFIED ==
+              static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                      ::android::hardware::radio::V1_5::RegistrationFailCause::
+                              CALL_CANNOT_BE_IDENTIFIED));
+static_assert(
+        aidl::android::hardware::radio::RegistrationFailCause::NO_PDP_CONTEXT_ACTIVATED ==
+        static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                ::android::hardware::radio::V1_5::RegistrationFailCause::NO_PDP_CONTEXT_ACTIVATED));
+static_assert(
+        aidl::android::hardware::radio::RegistrationFailCause::RETRY_UPON_ENTRY_INTO_NEW_CELL_1 ==
+        static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                ::android::hardware::radio::V1_5::RegistrationFailCause::
+                        RETRY_UPON_ENTRY_INTO_NEW_CELL_1));
+static_assert(
+        aidl::android::hardware::radio::RegistrationFailCause::RETRY_UPON_ENTRY_INTO_NEW_CELL_2 ==
+        static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                ::android::hardware::radio::V1_5::RegistrationFailCause::
+                        RETRY_UPON_ENTRY_INTO_NEW_CELL_2));
+static_assert(
+        aidl::android::hardware::radio::RegistrationFailCause::RETRY_UPON_ENTRY_INTO_NEW_CELL_3 ==
+        static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                ::android::hardware::radio::V1_5::RegistrationFailCause::
+                        RETRY_UPON_ENTRY_INTO_NEW_CELL_3));
+static_assert(
+        aidl::android::hardware::radio::RegistrationFailCause::RETRY_UPON_ENTRY_INTO_NEW_CELL_4 ==
+        static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                ::android::hardware::radio::V1_5::RegistrationFailCause::
+                        RETRY_UPON_ENTRY_INTO_NEW_CELL_4));
+static_assert(
+        aidl::android::hardware::radio::RegistrationFailCause::RETRY_UPON_ENTRY_INTO_NEW_CELL_5 ==
+        static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                ::android::hardware::radio::V1_5::RegistrationFailCause::
+                        RETRY_UPON_ENTRY_INTO_NEW_CELL_5));
+static_assert(
+        aidl::android::hardware::radio::RegistrationFailCause::RETRY_UPON_ENTRY_INTO_NEW_CELL_6 ==
+        static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                ::android::hardware::radio::V1_5::RegistrationFailCause::
+                        RETRY_UPON_ENTRY_INTO_NEW_CELL_6));
+static_assert(
+        aidl::android::hardware::radio::RegistrationFailCause::RETRY_UPON_ENTRY_INTO_NEW_CELL_7 ==
+        static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                ::android::hardware::radio::V1_5::RegistrationFailCause::
+                        RETRY_UPON_ENTRY_INTO_NEW_CELL_7));
+static_assert(
+        aidl::android::hardware::radio::RegistrationFailCause::RETRY_UPON_ENTRY_INTO_NEW_CELL_8 ==
+        static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                ::android::hardware::radio::V1_5::RegistrationFailCause::
+                        RETRY_UPON_ENTRY_INTO_NEW_CELL_8));
+static_assert(
+        aidl::android::hardware::radio::RegistrationFailCause::RETRY_UPON_ENTRY_INTO_NEW_CELL_9 ==
+        static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                ::android::hardware::radio::V1_5::RegistrationFailCause::
+                        RETRY_UPON_ENTRY_INTO_NEW_CELL_9));
+static_assert(
+        aidl::android::hardware::radio::RegistrationFailCause::RETRY_UPON_ENTRY_INTO_NEW_CELL_10 ==
+        static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                ::android::hardware::radio::V1_5::RegistrationFailCause::
+                        RETRY_UPON_ENTRY_INTO_NEW_CELL_10));
+static_assert(
+        aidl::android::hardware::radio::RegistrationFailCause::RETRY_UPON_ENTRY_INTO_NEW_CELL_11 ==
+        static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                ::android::hardware::radio::V1_5::RegistrationFailCause::
+                        RETRY_UPON_ENTRY_INTO_NEW_CELL_11));
+static_assert(
+        aidl::android::hardware::radio::RegistrationFailCause::RETRY_UPON_ENTRY_INTO_NEW_CELL_12 ==
+        static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                ::android::hardware::radio::V1_5::RegistrationFailCause::
+                        RETRY_UPON_ENTRY_INTO_NEW_CELL_12));
+static_assert(
+        aidl::android::hardware::radio::RegistrationFailCause::RETRY_UPON_ENTRY_INTO_NEW_CELL_13 ==
+        static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                ::android::hardware::radio::V1_5::RegistrationFailCause::
+                        RETRY_UPON_ENTRY_INTO_NEW_CELL_13));
+static_assert(
+        aidl::android::hardware::radio::RegistrationFailCause::RETRY_UPON_ENTRY_INTO_NEW_CELL_14 ==
+        static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                ::android::hardware::radio::V1_5::RegistrationFailCause::
+                        RETRY_UPON_ENTRY_INTO_NEW_CELL_14));
+static_assert(
+        aidl::android::hardware::radio::RegistrationFailCause::RETRY_UPON_ENTRY_INTO_NEW_CELL_15 ==
+        static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                ::android::hardware::radio::V1_5::RegistrationFailCause::
+                        RETRY_UPON_ENTRY_INTO_NEW_CELL_15));
+static_assert(
+        aidl::android::hardware::radio::RegistrationFailCause::RETRY_UPON_ENTRY_INTO_NEW_CELL_16 ==
+        static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                ::android::hardware::radio::V1_5::RegistrationFailCause::
+                        RETRY_UPON_ENTRY_INTO_NEW_CELL_16));
+static_assert(
+        aidl::android::hardware::radio::RegistrationFailCause::SEMANTICALLY_INCORRECT_MESSAGE ==
+        static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                ::android::hardware::radio::V1_5::RegistrationFailCause::
+                        SEMANTICALLY_INCORRECT_MESSAGE));
+static_assert(
+        aidl::android::hardware::radio::RegistrationFailCause::INVALID_MANDATORY_INFORMATION ==
+        static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                ::android::hardware::radio::V1_5::RegistrationFailCause::
+                        INVALID_MANDATORY_INFORMATION));
+static_assert(aidl::android::hardware::radio::RegistrationFailCause::
+                      MESSAGE_TYPE_NON_EXISTENT_OR_NOT_IMPLEMENTED ==
+              static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                      ::android::hardware::radio::V1_5::RegistrationFailCause::
+                              MESSAGE_TYPE_NON_EXISTENT_OR_NOT_IMPLEMENTED));
+static_assert(aidl::android::hardware::radio::RegistrationFailCause::
+                      MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE ==
+              static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                      ::android::hardware::radio::V1_5::RegistrationFailCause::
+                              MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE));
+static_assert(aidl::android::hardware::radio::RegistrationFailCause::
+                      INFORMATION_ELEMENT_NON_EXISTENT_OR_NOT_IMPLEMENTED ==
+              static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                      ::android::hardware::radio::V1_5::RegistrationFailCause::
+                              INFORMATION_ELEMENT_NON_EXISTENT_OR_NOT_IMPLEMENTED));
+static_assert(
+        aidl::android::hardware::radio::RegistrationFailCause::CONDITIONAL_IE_ERROR ==
+        static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                ::android::hardware::radio::V1_5::RegistrationFailCause::CONDITIONAL_IE_ERROR));
+static_assert(aidl::android::hardware::radio::RegistrationFailCause::
+                      MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE ==
+              static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                      ::android::hardware::radio::V1_5::RegistrationFailCause::
+                              MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE));
+static_assert(aidl::android::hardware::radio::RegistrationFailCause::PROTOCOL_ERROR_UNSPECIFIED ==
+              static_cast<aidl::android::hardware::radio::RegistrationFailCause>(
+                      ::android::hardware::radio::V1_5::RegistrationFailCause::
+                              PROTOCOL_ERROR_UNSPECIFIED));
+
+static_assert(aidl::android::hardware::radio::PrlIndicator::NOT_REGISTERED ==
+              static_cast<aidl::android::hardware::radio::PrlIndicator>(
+                      ::android::hardware::radio::V1_5::PrlIndicator::NOT_REGISTERED));
+static_assert(aidl::android::hardware::radio::PrlIndicator::NOT_IN_PRL ==
+              static_cast<aidl::android::hardware::radio::PrlIndicator>(
+                      ::android::hardware::radio::V1_5::PrlIndicator::NOT_IN_PRL));
+static_assert(aidl::android::hardware::radio::PrlIndicator::IN_PRL ==
+              static_cast<aidl::android::hardware::radio::PrlIndicator>(
+                      ::android::hardware::radio::V1_5::PrlIndicator::IN_PRL));
+
+static_assert(aidl::android::hardware::radio::PersoSubstate::UNKNOWN ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::UNKNOWN));
+static_assert(aidl::android::hardware::radio::PersoSubstate::IN_PROGRESS ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::IN_PROGRESS));
+static_assert(aidl::android::hardware::radio::PersoSubstate::READY ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::READY));
+static_assert(aidl::android::hardware::radio::PersoSubstate::SIM_NETWORK ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::SIM_NETWORK));
+static_assert(aidl::android::hardware::radio::PersoSubstate::SIM_NETWORK_SUBSET ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::SIM_NETWORK_SUBSET));
+static_assert(aidl::android::hardware::radio::PersoSubstate::SIM_CORPORATE ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::SIM_CORPORATE));
+static_assert(aidl::android::hardware::radio::PersoSubstate::SIM_SERVICE_PROVIDER ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::SIM_SERVICE_PROVIDER));
+static_assert(aidl::android::hardware::radio::PersoSubstate::SIM_SIM ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::SIM_SIM));
+static_assert(aidl::android::hardware::radio::PersoSubstate::SIM_NETWORK_PUK ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::SIM_NETWORK_PUK));
+static_assert(aidl::android::hardware::radio::PersoSubstate::SIM_NETWORK_SUBSET_PUK ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::SIM_NETWORK_SUBSET_PUK));
+static_assert(aidl::android::hardware::radio::PersoSubstate::SIM_CORPORATE_PUK ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::SIM_CORPORATE_PUK));
+static_assert(aidl::android::hardware::radio::PersoSubstate::SIM_SERVICE_PROVIDER_PUK ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::SIM_SERVICE_PROVIDER_PUK));
+static_assert(aidl::android::hardware::radio::PersoSubstate::SIM_SIM_PUK ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::SIM_SIM_PUK));
+static_assert(aidl::android::hardware::radio::PersoSubstate::RUIM_NETWORK1 ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::RUIM_NETWORK1));
+static_assert(aidl::android::hardware::radio::PersoSubstate::RUIM_NETWORK2 ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::RUIM_NETWORK2));
+static_assert(aidl::android::hardware::radio::PersoSubstate::RUIM_HRPD ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::RUIM_HRPD));
+static_assert(aidl::android::hardware::radio::PersoSubstate::RUIM_CORPORATE ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::RUIM_CORPORATE));
+static_assert(aidl::android::hardware::radio::PersoSubstate::RUIM_SERVICE_PROVIDER ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::RUIM_SERVICE_PROVIDER));
+static_assert(aidl::android::hardware::radio::PersoSubstate::RUIM_RUIM ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::RUIM_RUIM));
+static_assert(aidl::android::hardware::radio::PersoSubstate::RUIM_NETWORK1_PUK ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::RUIM_NETWORK1_PUK));
+static_assert(aidl::android::hardware::radio::PersoSubstate::RUIM_NETWORK2_PUK ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::RUIM_NETWORK2_PUK));
+static_assert(aidl::android::hardware::radio::PersoSubstate::RUIM_HRPD_PUK ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::RUIM_HRPD_PUK));
+static_assert(aidl::android::hardware::radio::PersoSubstate::RUIM_CORPORATE_PUK ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::RUIM_CORPORATE_PUK));
+static_assert(aidl::android::hardware::radio::PersoSubstate::RUIM_SERVICE_PROVIDER_PUK ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::RUIM_SERVICE_PROVIDER_PUK));
+static_assert(aidl::android::hardware::radio::PersoSubstate::RUIM_RUIM_PUK ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::RUIM_RUIM_PUK));
+static_assert(aidl::android::hardware::radio::PersoSubstate::SIM_SPN ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::SIM_SPN));
+static_assert(aidl::android::hardware::radio::PersoSubstate::SIM_SPN_PUK ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::SIM_SPN_PUK));
+static_assert(aidl::android::hardware::radio::PersoSubstate::SIM_SP_EHPLMN ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::SIM_SP_EHPLMN));
+static_assert(aidl::android::hardware::radio::PersoSubstate::SIM_SP_EHPLMN_PUK ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::SIM_SP_EHPLMN_PUK));
+static_assert(aidl::android::hardware::radio::PersoSubstate::SIM_ICCID ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::SIM_ICCID));
+static_assert(aidl::android::hardware::radio::PersoSubstate::SIM_ICCID_PUK ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::SIM_ICCID_PUK));
+static_assert(aidl::android::hardware::radio::PersoSubstate::SIM_IMPI ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::SIM_IMPI));
+static_assert(aidl::android::hardware::radio::PersoSubstate::SIM_IMPI_PUK ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::SIM_IMPI_PUK));
+static_assert(aidl::android::hardware::radio::PersoSubstate::SIM_NS_SP ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::SIM_NS_SP));
+static_assert(aidl::android::hardware::radio::PersoSubstate::SIM_NS_SP_PUK ==
+              static_cast<aidl::android::hardware::radio::PersoSubstate>(
+                      ::android::hardware::radio::V1_5::PersoSubstate::SIM_NS_SP_PUK));
+
+static_assert(aidl::android::hardware::radio::QosFlowIdRange::MIN ==
+              static_cast<aidl::android::hardware::radio::QosFlowIdRange>(
+                      ::android::hardware::radio::V1_6::QosFlowIdRange::MIN));
+static_assert(aidl::android::hardware::radio::QosFlowIdRange::MAX ==
+              static_cast<aidl::android::hardware::radio::QosFlowIdRange>(
+                      ::android::hardware::radio::V1_6::QosFlowIdRange::MAX));
+
+static_assert(aidl::android::hardware::radio::QosProtocol::UNSPECIFIED ==
+              static_cast<aidl::android::hardware::radio::QosProtocol>(
+                      ::android::hardware::radio::V1_6::QosProtocol::UNSPECIFIED));
+static_assert(aidl::android::hardware::radio::QosProtocol::TCP ==
+              static_cast<aidl::android::hardware::radio::QosProtocol>(
+                      ::android::hardware::radio::V1_6::QosProtocol::TCP));
+static_assert(aidl::android::hardware::radio::QosProtocol::UDP ==
+              static_cast<aidl::android::hardware::radio::QosProtocol>(
+                      ::android::hardware::radio::V1_6::QosProtocol::UDP));
+static_assert(aidl::android::hardware::radio::QosProtocol::ESP ==
+              static_cast<aidl::android::hardware::radio::QosProtocol>(
+                      ::android::hardware::radio::V1_6::QosProtocol::ESP));
+static_assert(aidl::android::hardware::radio::QosProtocol::AH ==
+              static_cast<aidl::android::hardware::radio::QosProtocol>(
+                      ::android::hardware::radio::V1_6::QosProtocol::AH));
+
+static_assert(aidl::android::hardware::radio::QosFilterDirection::DOWNLINK ==
+              static_cast<aidl::android::hardware::radio::QosFilterDirection>(
+                      ::android::hardware::radio::V1_6::QosFilterDirection::DOWNLINK));
+static_assert(aidl::android::hardware::radio::QosFilterDirection::UPLINK ==
+              static_cast<aidl::android::hardware::radio::QosFilterDirection>(
+                      ::android::hardware::radio::V1_6::QosFilterDirection::UPLINK));
+static_assert(aidl::android::hardware::radio::QosFilterDirection::BIDIRECTIONAL ==
+              static_cast<aidl::android::hardware::radio::QosFilterDirection>(
+                      ::android::hardware::radio::V1_6::QosFilterDirection::BIDIRECTIONAL));
+
+static_assert(aidl::android::hardware::radio::QosPortRange::MIN ==
+              static_cast<aidl::android::hardware::radio::QosPortRange>(
+                      ::android::hardware::radio::V1_6::QosPortRange::MIN));
+static_assert(aidl::android::hardware::radio::QosPortRange::MAX ==
+              static_cast<aidl::android::hardware::radio::QosPortRange>(
+                      ::android::hardware::radio::V1_6::QosPortRange::MAX));
+
+static_assert(aidl::android::hardware::radio::RadioError::NONE ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::NONE));
+static_assert(aidl::android::hardware::radio::RadioError::RADIO_NOT_AVAILABLE ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::RADIO_NOT_AVAILABLE));
+static_assert(aidl::android::hardware::radio::RadioError::GENERIC_FAILURE ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::GENERIC_FAILURE));
+static_assert(aidl::android::hardware::radio::RadioError::PASSWORD_INCORRECT ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::PASSWORD_INCORRECT));
+static_assert(aidl::android::hardware::radio::RadioError::SIM_PIN2 ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::SIM_PIN2));
+static_assert(aidl::android::hardware::radio::RadioError::SIM_PUK2 ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::SIM_PUK2));
+static_assert(aidl::android::hardware::radio::RadioError::REQUEST_NOT_SUPPORTED ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::REQUEST_NOT_SUPPORTED));
+static_assert(aidl::android::hardware::radio::RadioError::CANCELLED ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::CANCELLED));
+static_assert(
+        aidl::android::hardware::radio::RadioError::OP_NOT_ALLOWED_DURING_VOICE_CALL ==
+        static_cast<aidl::android::hardware::radio::RadioError>(
+                ::android::hardware::radio::V1_6::RadioError::OP_NOT_ALLOWED_DURING_VOICE_CALL));
+static_assert(
+        aidl::android::hardware::radio::RadioError::OP_NOT_ALLOWED_BEFORE_REG_TO_NW ==
+        static_cast<aidl::android::hardware::radio::RadioError>(
+                ::android::hardware::radio::V1_6::RadioError::OP_NOT_ALLOWED_BEFORE_REG_TO_NW));
+static_assert(aidl::android::hardware::radio::RadioError::SMS_SEND_FAIL_RETRY ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::SMS_SEND_FAIL_RETRY));
+static_assert(aidl::android::hardware::radio::RadioError::SIM_ABSENT ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::SIM_ABSENT));
+static_assert(aidl::android::hardware::radio::RadioError::SUBSCRIPTION_NOT_AVAILABLE ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::SUBSCRIPTION_NOT_AVAILABLE));
+static_assert(aidl::android::hardware::radio::RadioError::MODE_NOT_SUPPORTED ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::MODE_NOT_SUPPORTED));
+static_assert(aidl::android::hardware::radio::RadioError::FDN_CHECK_FAILURE ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::FDN_CHECK_FAILURE));
+static_assert(aidl::android::hardware::radio::RadioError::ILLEGAL_SIM_OR_ME ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::ILLEGAL_SIM_OR_ME));
+static_assert(aidl::android::hardware::radio::RadioError::MISSING_RESOURCE ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::MISSING_RESOURCE));
+static_assert(aidl::android::hardware::radio::RadioError::NO_SUCH_ELEMENT ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::NO_SUCH_ELEMENT));
+static_assert(aidl::android::hardware::radio::RadioError::DIAL_MODIFIED_TO_USSD ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::DIAL_MODIFIED_TO_USSD));
+static_assert(aidl::android::hardware::radio::RadioError::DIAL_MODIFIED_TO_SS ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::DIAL_MODIFIED_TO_SS));
+static_assert(aidl::android::hardware::radio::RadioError::DIAL_MODIFIED_TO_DIAL ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::DIAL_MODIFIED_TO_DIAL));
+static_assert(aidl::android::hardware::radio::RadioError::USSD_MODIFIED_TO_DIAL ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::USSD_MODIFIED_TO_DIAL));
+static_assert(aidl::android::hardware::radio::RadioError::USSD_MODIFIED_TO_SS ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::USSD_MODIFIED_TO_SS));
+static_assert(aidl::android::hardware::radio::RadioError::USSD_MODIFIED_TO_USSD ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::USSD_MODIFIED_TO_USSD));
+static_assert(aidl::android::hardware::radio::RadioError::SS_MODIFIED_TO_DIAL ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::SS_MODIFIED_TO_DIAL));
+static_assert(aidl::android::hardware::radio::RadioError::SS_MODIFIED_TO_USSD ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::SS_MODIFIED_TO_USSD));
+static_assert(aidl::android::hardware::radio::RadioError::SUBSCRIPTION_NOT_SUPPORTED ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::SUBSCRIPTION_NOT_SUPPORTED));
+static_assert(aidl::android::hardware::radio::RadioError::SS_MODIFIED_TO_SS ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::SS_MODIFIED_TO_SS));
+static_assert(aidl::android::hardware::radio::RadioError::LCE_NOT_SUPPORTED ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::LCE_NOT_SUPPORTED));
+static_assert(aidl::android::hardware::radio::RadioError::NO_MEMORY ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::NO_MEMORY));
+static_assert(aidl::android::hardware::radio::RadioError::INTERNAL_ERR ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::INTERNAL_ERR));
+static_assert(aidl::android::hardware::radio::RadioError::SYSTEM_ERR ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::SYSTEM_ERR));
+static_assert(aidl::android::hardware::radio::RadioError::MODEM_ERR ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::MODEM_ERR));
+static_assert(aidl::android::hardware::radio::RadioError::INVALID_STATE ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::INVALID_STATE));
+static_assert(aidl::android::hardware::radio::RadioError::NO_RESOURCES ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::NO_RESOURCES));
+static_assert(aidl::android::hardware::radio::RadioError::SIM_ERR ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::SIM_ERR));
+static_assert(aidl::android::hardware::radio::RadioError::INVALID_ARGUMENTS ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::INVALID_ARGUMENTS));
+static_assert(aidl::android::hardware::radio::RadioError::INVALID_SIM_STATE ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::INVALID_SIM_STATE));
+static_assert(aidl::android::hardware::radio::RadioError::INVALID_MODEM_STATE ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::INVALID_MODEM_STATE));
+static_assert(aidl::android::hardware::radio::RadioError::INVALID_CALL_ID ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::INVALID_CALL_ID));
+static_assert(aidl::android::hardware::radio::RadioError::NO_SMS_TO_ACK ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::NO_SMS_TO_ACK));
+static_assert(aidl::android::hardware::radio::RadioError::NETWORK_ERR ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::NETWORK_ERR));
+static_assert(aidl::android::hardware::radio::RadioError::REQUEST_RATE_LIMITED ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::REQUEST_RATE_LIMITED));
+static_assert(aidl::android::hardware::radio::RadioError::SIM_BUSY ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::SIM_BUSY));
+static_assert(aidl::android::hardware::radio::RadioError::SIM_FULL ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::SIM_FULL));
+static_assert(aidl::android::hardware::radio::RadioError::NETWORK_REJECT ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::NETWORK_REJECT));
+static_assert(aidl::android::hardware::radio::RadioError::OPERATION_NOT_ALLOWED ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::OPERATION_NOT_ALLOWED));
+static_assert(aidl::android::hardware::radio::RadioError::EMPTY_RECORD ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::EMPTY_RECORD));
+static_assert(aidl::android::hardware::radio::RadioError::INVALID_SMS_FORMAT ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::INVALID_SMS_FORMAT));
+static_assert(aidl::android::hardware::radio::RadioError::ENCODING_ERR ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::ENCODING_ERR));
+static_assert(aidl::android::hardware::radio::RadioError::INVALID_SMSC_ADDRESS ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::INVALID_SMSC_ADDRESS));
+static_assert(aidl::android::hardware::radio::RadioError::NO_SUCH_ENTRY ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::NO_SUCH_ENTRY));
+static_assert(aidl::android::hardware::radio::RadioError::NETWORK_NOT_READY ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::NETWORK_NOT_READY));
+static_assert(aidl::android::hardware::radio::RadioError::NOT_PROVISIONED ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::NOT_PROVISIONED));
+static_assert(aidl::android::hardware::radio::RadioError::NO_SUBSCRIPTION ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::NO_SUBSCRIPTION));
+static_assert(aidl::android::hardware::radio::RadioError::NO_NETWORK_FOUND ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::NO_NETWORK_FOUND));
+static_assert(aidl::android::hardware::radio::RadioError::DEVICE_IN_USE ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::DEVICE_IN_USE));
+static_assert(aidl::android::hardware::radio::RadioError::ABORTED ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::ABORTED));
+static_assert(aidl::android::hardware::radio::RadioError::INVALID_RESPONSE ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::INVALID_RESPONSE));
+static_assert(aidl::android::hardware::radio::RadioError::OEM_ERROR_1 ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::OEM_ERROR_1));
+static_assert(aidl::android::hardware::radio::RadioError::OEM_ERROR_2 ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::OEM_ERROR_2));
+static_assert(aidl::android::hardware::radio::RadioError::OEM_ERROR_3 ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::OEM_ERROR_3));
+static_assert(aidl::android::hardware::radio::RadioError::OEM_ERROR_4 ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::OEM_ERROR_4));
+static_assert(aidl::android::hardware::radio::RadioError::OEM_ERROR_5 ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::OEM_ERROR_5));
+static_assert(aidl::android::hardware::radio::RadioError::OEM_ERROR_6 ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::OEM_ERROR_6));
+static_assert(aidl::android::hardware::radio::RadioError::OEM_ERROR_7 ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::OEM_ERROR_7));
+static_assert(aidl::android::hardware::radio::RadioError::OEM_ERROR_8 ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::OEM_ERROR_8));
+static_assert(aidl::android::hardware::radio::RadioError::OEM_ERROR_9 ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::OEM_ERROR_9));
+static_assert(aidl::android::hardware::radio::RadioError::OEM_ERROR_10 ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::OEM_ERROR_10));
+static_assert(aidl::android::hardware::radio::RadioError::OEM_ERROR_11 ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::OEM_ERROR_11));
+static_assert(aidl::android::hardware::radio::RadioError::OEM_ERROR_12 ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::OEM_ERROR_12));
+static_assert(aidl::android::hardware::radio::RadioError::OEM_ERROR_13 ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::OEM_ERROR_13));
+static_assert(aidl::android::hardware::radio::RadioError::OEM_ERROR_14 ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::OEM_ERROR_14));
+static_assert(aidl::android::hardware::radio::RadioError::OEM_ERROR_15 ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::OEM_ERROR_15));
+static_assert(aidl::android::hardware::radio::RadioError::OEM_ERROR_16 ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::OEM_ERROR_16));
+static_assert(aidl::android::hardware::radio::RadioError::OEM_ERROR_17 ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::OEM_ERROR_17));
+static_assert(aidl::android::hardware::radio::RadioError::OEM_ERROR_18 ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::OEM_ERROR_18));
+static_assert(aidl::android::hardware::radio::RadioError::OEM_ERROR_19 ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::OEM_ERROR_19));
+static_assert(aidl::android::hardware::radio::RadioError::OEM_ERROR_20 ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::OEM_ERROR_20));
+static_assert(aidl::android::hardware::radio::RadioError::OEM_ERROR_21 ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::OEM_ERROR_21));
+static_assert(aidl::android::hardware::radio::RadioError::OEM_ERROR_22 ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::OEM_ERROR_22));
+static_assert(aidl::android::hardware::radio::RadioError::OEM_ERROR_23 ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::OEM_ERROR_23));
+static_assert(aidl::android::hardware::radio::RadioError::OEM_ERROR_24 ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::OEM_ERROR_24));
+static_assert(aidl::android::hardware::radio::RadioError::OEM_ERROR_25 ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::OEM_ERROR_25));
+static_assert(aidl::android::hardware::radio::RadioError::SIMULTANEOUS_SMS_AND_CALL_NOT_ALLOWED ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::
+                              SIMULTANEOUS_SMS_AND_CALL_NOT_ALLOWED));
+static_assert(aidl::android::hardware::radio::RadioError::ACCESS_BARRED ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::ACCESS_BARRED));
+static_assert(aidl::android::hardware::radio::RadioError::BLOCKED_DUE_TO_CALL ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::BLOCKED_DUE_TO_CALL));
+static_assert(aidl::android::hardware::radio::RadioError::RF_HARDWARE_ISSUE ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::RF_HARDWARE_ISSUE));
+static_assert(aidl::android::hardware::radio::RadioError::NO_RF_CALIBRATION_INFO ==
+              static_cast<aidl::android::hardware::radio::RadioError>(
+                      ::android::hardware::radio::V1_6::RadioError::NO_RF_CALIBRATION_INFO));
+
+static_assert(aidl::android::hardware::radio::HandoverFailureMode::LEGACY ==
+              static_cast<aidl::android::hardware::radio::HandoverFailureMode>(
+                      ::android::hardware::radio::V1_6::HandoverFailureMode::LEGACY));
+static_assert(aidl::android::hardware::radio::HandoverFailureMode::DO_FALLBACK ==
+              static_cast<aidl::android::hardware::radio::HandoverFailureMode>(
+                      ::android::hardware::radio::V1_6::HandoverFailureMode::DO_FALLBACK));
+static_assert(
+        aidl::android::hardware::radio::HandoverFailureMode::NO_FALLBACK_RETRY_HANDOVER ==
+        static_cast<aidl::android::hardware::radio::HandoverFailureMode>(
+                ::android::hardware::radio::V1_6::HandoverFailureMode::NO_FALLBACK_RETRY_HANDOVER));
+static_assert(aidl::android::hardware::radio::HandoverFailureMode::NO_FALLBACK_RETRY_SETUP_NORMAL ==
+              static_cast<aidl::android::hardware::radio::HandoverFailureMode>(
+                      ::android::hardware::radio::V1_6::HandoverFailureMode::
+                              NO_FALLBACK_RETRY_SETUP_NORMAL));
+
+static_assert(aidl::android::hardware::radio::NrDualConnectivityState::ENABLE ==
+              static_cast<aidl::android::hardware::radio::NrDualConnectivityState>(
+                      ::android::hardware::radio::V1_6::NrDualConnectivityState::ENABLE));
+static_assert(aidl::android::hardware::radio::NrDualConnectivityState::DISABLE ==
+              static_cast<aidl::android::hardware::radio::NrDualConnectivityState>(
+                      ::android::hardware::radio::V1_6::NrDualConnectivityState::DISABLE));
+static_assert(
+        aidl::android::hardware::radio::NrDualConnectivityState::DISABLE_IMMEDIATE ==
+        static_cast<aidl::android::hardware::radio::NrDualConnectivityState>(
+                ::android::hardware::radio::V1_6::NrDualConnectivityState::DISABLE_IMMEDIATE));
+
+static_assert(aidl::android::hardware::radio::DataThrottlingAction::NO_DATA_THROTTLING ==
+              static_cast<aidl::android::hardware::radio::DataThrottlingAction>(
+                      ::android::hardware::radio::V1_6::DataThrottlingAction::NO_DATA_THROTTLING));
+static_assert(aidl::android::hardware::radio::DataThrottlingAction::THROTTLE_SECONDARY_CARRIER ==
+              static_cast<aidl::android::hardware::radio::DataThrottlingAction>(
+                      ::android::hardware::radio::V1_6::DataThrottlingAction::
+                              THROTTLE_SECONDARY_CARRIER));
+static_assert(
+        aidl::android::hardware::radio::DataThrottlingAction::THROTTLE_ANCHOR_CARRIER ==
+        static_cast<aidl::android::hardware::radio::DataThrottlingAction>(
+                ::android::hardware::radio::V1_6::DataThrottlingAction::THROTTLE_ANCHOR_CARRIER));
+static_assert(aidl::android::hardware::radio::DataThrottlingAction::HOLD ==
+              static_cast<aidl::android::hardware::radio::DataThrottlingAction>(
+                      ::android::hardware::radio::V1_6::DataThrottlingAction::HOLD));
+
+static_assert(aidl::android::hardware::radio::VopsIndicator::VOPS_NOT_SUPPORTED ==
+              static_cast<aidl::android::hardware::radio::VopsIndicator>(
+                      ::android::hardware::radio::V1_6::VopsIndicator::VOPS_NOT_SUPPORTED));
+static_assert(aidl::android::hardware::radio::VopsIndicator::VOPS_OVER_3GPP ==
+              static_cast<aidl::android::hardware::radio::VopsIndicator>(
+                      ::android::hardware::radio::V1_6::VopsIndicator::VOPS_OVER_3GPP));
+static_assert(aidl::android::hardware::radio::VopsIndicator::VOPS_OVER_NON_3GPP ==
+              static_cast<aidl::android::hardware::radio::VopsIndicator>(
+                      ::android::hardware::radio::V1_6::VopsIndicator::VOPS_OVER_NON_3GPP));
+
+static_assert(aidl::android::hardware::radio::EmcIndicator::EMC_NOT_SUPPORTED ==
+              static_cast<aidl::android::hardware::radio::EmcIndicator>(
+                      ::android::hardware::radio::V1_6::EmcIndicator::EMC_NOT_SUPPORTED));
+static_assert(aidl::android::hardware::radio::EmcIndicator::EMC_NR_CONNECTED_TO_5GCN ==
+              static_cast<aidl::android::hardware::radio::EmcIndicator>(
+                      ::android::hardware::radio::V1_6::EmcIndicator::EMC_NR_CONNECTED_TO_5GCN));
+static_assert(aidl::android::hardware::radio::EmcIndicator::EMC_EUTRA_CONNECTED_TO_5GCN ==
+              static_cast<aidl::android::hardware::radio::EmcIndicator>(
+                      ::android::hardware::radio::V1_6::EmcIndicator::EMC_EUTRA_CONNECTED_TO_5GCN));
+static_assert(aidl::android::hardware::radio::EmcIndicator::EMC_BOTH_NR_EUTRA_CONNECTED_TO_5GCN ==
+              static_cast<aidl::android::hardware::radio::EmcIndicator>(
+                      ::android::hardware::radio::V1_6::EmcIndicator::
+                              EMC_BOTH_NR_EUTRA_CONNECTED_TO_5GCN));
+
+static_assert(aidl::android::hardware::radio::EmfIndicator::EMF_NOT_SUPPORTED ==
+              static_cast<aidl::android::hardware::radio::EmfIndicator>(
+                      ::android::hardware::radio::V1_6::EmfIndicator::EMF_NOT_SUPPORTED));
+static_assert(aidl::android::hardware::radio::EmfIndicator::EMF_NR_CONNECTED_TO_5GCN ==
+              static_cast<aidl::android::hardware::radio::EmfIndicator>(
+                      ::android::hardware::radio::V1_6::EmfIndicator::EMF_NR_CONNECTED_TO_5GCN));
+static_assert(aidl::android::hardware::radio::EmfIndicator::EMF_EUTRA_CONNECTED_TO_5GCN ==
+              static_cast<aidl::android::hardware::radio::EmfIndicator>(
+                      ::android::hardware::radio::V1_6::EmfIndicator::EMF_EUTRA_CONNECTED_TO_5GCN));
+static_assert(aidl::android::hardware::radio::EmfIndicator::EMF_BOTH_NR_EUTRA_CONNECTED_TO_5GCN ==
+              static_cast<aidl::android::hardware::radio::EmfIndicator>(
+                      ::android::hardware::radio::V1_6::EmfIndicator::
+                              EMF_BOTH_NR_EUTRA_CONNECTED_TO_5GCN));
+
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_1 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_1));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_2 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_2));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_3 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_3));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_5 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_5));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_7 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_7));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_8 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_8));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_12 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_12));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_14 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_14));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_18 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_18));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_20 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_20));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_25 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_25));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_28 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_28));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_29 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_29));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_30 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_30));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_34 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_34));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_38 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_38));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_39 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_39));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_40 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_40));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_41 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_41));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_48 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_48));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_50 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_50));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_51 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_51));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_65 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_65));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_66 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_66));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_70 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_70));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_71 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_71));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_74 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_74));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_75 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_75));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_76 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_76));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_77 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_77));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_78 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_78));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_79 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_79));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_80 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_80));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_81 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_81));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_82 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_82));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_83 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_83));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_84 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_84));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_86 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_86));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_89 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_89));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_90 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_90));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_91 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_91));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_92 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_92));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_93 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_93));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_94 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_94));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_95 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_95));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_257 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_257));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_258 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_258));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_260 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_260));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_261 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_261));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_26 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_26));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_46 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_46));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_53 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_53));
+static_assert(aidl::android::hardware::radio::NgranBands::BAND_96 ==
+              static_cast<aidl::android::hardware::radio::NgranBands>(
+                      ::android::hardware::radio::V1_6::NgranBands::BAND_96));
+
+static_assert(aidl::android::hardware::radio::SliceServiceType::NONE ==
+              static_cast<aidl::android::hardware::radio::SliceServiceType>(
+                      ::android::hardware::radio::V1_6::SliceServiceType::NONE));
+static_assert(aidl::android::hardware::radio::SliceServiceType::EMBB ==
+              static_cast<aidl::android::hardware::radio::SliceServiceType>(
+                      ::android::hardware::radio::V1_6::SliceServiceType::EMBB));
+static_assert(aidl::android::hardware::radio::SliceServiceType::URLLC ==
+              static_cast<aidl::android::hardware::radio::SliceServiceType>(
+                      ::android::hardware::radio::V1_6::SliceServiceType::URLLC));
+static_assert(aidl::android::hardware::radio::SliceServiceType::MIOT ==
+              static_cast<aidl::android::hardware::radio::SliceServiceType>(
+                      ::android::hardware::radio::V1_6::SliceServiceType::MIOT));
+
+static_assert(aidl::android::hardware::radio::DataCallFailCause::NONE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::NONE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::OPERATOR_BARRED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::OPERATOR_BARRED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::NAS_SIGNALLING ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::NAS_SIGNALLING));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::INSUFFICIENT_RESOURCES ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::INSUFFICIENT_RESOURCES));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::MISSING_UNKNOWN_APN ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::MISSING_UKNOWN_APN));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::UNKNOWN_PDP_ADDRESS_TYPE ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::UNKNOWN_PDP_ADDRESS_TYPE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::USER_AUTHENTICATION ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::USER_AUTHENTICATION));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::ACTIVATION_REJECT_GGSN ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::ACTIVATION_REJECT_GGSN));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::ACTIVATION_REJECT_UNSPECIFIED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              ACTIVATION_REJECT_UNSPECIFIED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::SERVICE_OPTION_NOT_SUPPORTED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::SERVICE_OPTION_NOT_SUPPORTED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::SERVICE_OPTION_NOT_SUBSCRIBED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              SERVICE_OPTION_NOT_SUBSCRIBED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::SERVICE_OPTION_OUT_OF_ORDER ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::SERVICE_OPTION_OUT_OF_ORDER));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::NSAPI_IN_USE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::NSAPI_IN_USE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::REGULAR_DEACTIVATION ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::REGULAR_DEACTIVATION));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::QOS_NOT_ACCEPTED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::QOS_NOT_ACCEPTED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::NETWORK_FAILURE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::NETWORK_FAILURE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::UMTS_REACTIVATION_REQ ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::UMTS_REACTIVATION_REQ));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::FEATURE_NOT_SUPP ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::FEATURE_NOT_SUPP));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::TFT_SEMANTIC_ERROR ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::TFT_SEMANTIC_ERROR));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::TFT_SYTAX_ERROR ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::TFT_SYTAX_ERROR));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::UNKNOWN_PDP_CONTEXT ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::UNKNOWN_PDP_CONTEXT));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::FILTER_SEMANTIC_ERROR ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::FILTER_SEMANTIC_ERROR));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::FILTER_SYTAX_ERROR ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::FILTER_SYTAX_ERROR));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::PDP_WITHOUT_ACTIVE_TFT ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::PDP_WITHOUT_ACTIVE_TFT));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::ONLY_IPV4_ALLOWED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::ONLY_IPV4_ALLOWED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::ONLY_IPV6_ALLOWED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::ONLY_IPV6_ALLOWED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::ONLY_SINGLE_BEARER_ALLOWED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::ONLY_SINGLE_BEARER_ALLOWED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::ESM_INFO_NOT_RECEIVED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::ESM_INFO_NOT_RECEIVED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::PDN_CONN_DOES_NOT_EXIST ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::PDN_CONN_DOES_NOT_EXIST));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::MULTI_CONN_TO_SAME_PDN_NOT_ALLOWED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        MULTI_CONN_TO_SAME_PDN_NOT_ALLOWED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::MAX_ACTIVE_PDP_CONTEXT_REACHED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              MAX_ACTIVE_PDP_CONTEXT_REACHED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::UNSUPPORTED_APN_IN_CURRENT_PLMN ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              UNSUPPORTED_APN_IN_CURRENT_PLMN));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::INVALID_TRANSACTION_ID ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::INVALID_TRANSACTION_ID));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::MESSAGE_INCORRECT_SEMANTIC ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::MESSAGE_INCORRECT_SEMANTIC));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::INVALID_MANDATORY_INFO ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::INVALID_MANDATORY_INFO));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::MESSAGE_TYPE_UNSUPPORTED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::MESSAGE_TYPE_UNSUPPORTED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::MSG_TYPE_NONCOMPATIBLE_STATE ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::MSG_TYPE_NONCOMPATIBLE_STATE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::UNKNOWN_INFO_ELEMENT ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::UNKNOWN_INFO_ELEMENT));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::CONDITIONAL_IE_ERROR ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::CONDITIONAL_IE_ERROR));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::MSG_AND_PROTOCOL_STATE_UNCOMPATIBLE ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        MSG_AND_PROTOCOL_STATE_UNCOMPATIBLE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::PROTOCOL_ERRORS ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::PROTOCOL_ERRORS));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::APN_TYPE_CONFLICT ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::APN_TYPE_CONFLICT));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::INVALID_PCSCF_ADDR ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::INVALID_PCSCF_ADDR));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::INTERNAL_CALL_PREEMPT_BY_HIGH_PRIO_APN ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        INTERNAL_CALL_PREEMPT_BY_HIGH_PRIO_APN));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::EMM_ACCESS_BARRED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::EMM_ACCESS_BARRED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::EMERGENCY_IFACE_ONLY ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::EMERGENCY_IFACE_ONLY));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::IFACE_MISMATCH ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::IFACE_MISMATCH));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::COMPANION_IFACE_IN_USE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::COMPANION_IFACE_IN_USE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::IP_ADDRESS_MISMATCH ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::IP_ADDRESS_MISMATCH));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::IFACE_AND_POL_FAMILY_MISMATCH ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              IFACE_AND_POL_FAMILY_MISMATCH));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::EMM_ACCESS_BARRED_INFINITE_RETRY ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              EMM_ACCESS_BARRED_INFINITE_RETRY));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::AUTH_FAILURE_ON_EMERGENCY_CALL ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              AUTH_FAILURE_ON_EMERGENCY_CALL));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::OEM_DCFAILCAUSE_1 ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::OEM_DCFAILCAUSE_1));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::OEM_DCFAILCAUSE_2 ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::OEM_DCFAILCAUSE_2));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::OEM_DCFAILCAUSE_3 ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::OEM_DCFAILCAUSE_3));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::OEM_DCFAILCAUSE_4 ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::OEM_DCFAILCAUSE_4));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::OEM_DCFAILCAUSE_5 ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::OEM_DCFAILCAUSE_5));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::OEM_DCFAILCAUSE_6 ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::OEM_DCFAILCAUSE_6));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::OEM_DCFAILCAUSE_7 ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::OEM_DCFAILCAUSE_7));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::OEM_DCFAILCAUSE_8 ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::OEM_DCFAILCAUSE_8));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::OEM_DCFAILCAUSE_9 ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::OEM_DCFAILCAUSE_9));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::OEM_DCFAILCAUSE_10 ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::OEM_DCFAILCAUSE_10));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::OEM_DCFAILCAUSE_11 ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::OEM_DCFAILCAUSE_11));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::OEM_DCFAILCAUSE_12 ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::OEM_DCFAILCAUSE_12));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::OEM_DCFAILCAUSE_13 ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::OEM_DCFAILCAUSE_13));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::OEM_DCFAILCAUSE_14 ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::OEM_DCFAILCAUSE_14));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::OEM_DCFAILCAUSE_15 ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::OEM_DCFAILCAUSE_15));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::VOICE_REGISTRATION_FAIL ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::VOICE_REGISTRATION_FAIL));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::DATA_REGISTRATION_FAIL ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::DATA_REGISTRATION_FAIL));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::SIGNAL_LOST ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::SIGNAL_LOST));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::PREF_RADIO_TECH_CHANGED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::PREF_RADIO_TECH_CHANGED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::RADIO_POWER_OFF ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::RADIO_POWER_OFF));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::TETHERED_CALL_ACTIVE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::TETHERED_CALL_ACTIVE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::ERROR_UNSPECIFIED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::ERROR_UNSPECIFIED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::LLC_SNDCP ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::LLC_SNDCP));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::ACTIVATION_REJECTED_BCM_VIOLATION ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        ACTIVATION_REJECTED_BCM_VIOLATION));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::
+                      COLLISION_WITH_NETWORK_INITIATED_REQUEST ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              COLLISION_WITH_NETWORK_INITIATED_REQUEST));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::ONLY_IPV4V6_ALLOWED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::ONLY_IPV4V6_ALLOWED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::ONLY_NON_IP_ALLOWED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::ONLY_NON_IP_ALLOWED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::UNSUPPORTED_QCI_VALUE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::UNSUPPORTED_QCI_VALUE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::BEARER_HANDLING_NOT_SUPPORTED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              BEARER_HANDLING_NOT_SUPPORTED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::INVALID_DNS_ADDR ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::INVALID_DNS_ADDR));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::INVALID_PCSCF_OR_DNS_ADDRESS ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::INVALID_PCSCF_OR_DNS_ADDRESS));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::CALL_PREEMPT_BY_EMERGENCY_APN ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              CALL_PREEMPT_BY_EMERGENCY_APN));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::UE_INITIATED_DETACH_OR_DISCONNECT ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        UE_INITIATED_DETACH_OR_DISCONNECT));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::MIP_FA_REASON_UNSPECIFIED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::MIP_FA_REASON_UNSPECIFIED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::MIP_FA_ADMIN_PROHIBITED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::MIP_FA_ADMIN_PROHIBITED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::MIP_FA_INSUFFICIENT_RESOURCES ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              MIP_FA_INSUFFICIENT_RESOURCES));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::
+                      MIP_FA_MOBILE_NODE_AUTHENTICATION_FAILURE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              MIP_FA_MOBILE_NODE_AUTHENTICATION_FAILURE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::
+                      MIP_FA_HOME_AGENT_AUTHENTICATION_FAILURE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              MIP_FA_HOME_AGENT_AUTHENTICATION_FAILURE));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::MIP_FA_REQUESTED_LIFETIME_TOO_LONG ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        MIP_FA_REQUESTED_LIFETIME_TOO_LONG));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::MIP_FA_MALFORMED_REQUEST ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::MIP_FA_MALFORMED_REQUEST));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::MIP_FA_MALFORMED_REPLY ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::MIP_FA_MALFORMED_REPLY));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::MIP_FA_ENCAPSULATION_UNAVAILABLE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              MIP_FA_ENCAPSULATION_UNAVAILABLE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::
+                      MIP_FA_VJ_HEADER_COMPRESSION_UNAVAILABLE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              MIP_FA_VJ_HEADER_COMPRESSION_UNAVAILABLE));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::MIP_FA_REVERSE_TUNNEL_UNAVAILABLE ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        MIP_FA_REVERSE_TUNNEL_UNAVAILABLE));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::MIP_FA_REVERSE_TUNNEL_IS_MANDATORY ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        MIP_FA_REVERSE_TUNNEL_IS_MANDATORY));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::MIP_FA_DELIVERY_STYLE_NOT_SUPPORTED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        MIP_FA_DELIVERY_STYLE_NOT_SUPPORTED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::MIP_FA_MISSING_NAI ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::MIP_FA_MISSING_NAI));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::MIP_FA_MISSING_HOME_AGENT ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::MIP_FA_MISSING_HOME_AGENT));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::MIP_FA_MISSING_HOME_ADDRESS ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::MIP_FA_MISSING_HOME_ADDRESS));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::MIP_FA_UNKNOWN_CHALLENGE ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::MIP_FA_UNKNOWN_CHALLENGE));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::MIP_FA_MISSING_CHALLENGE ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::MIP_FA_MISSING_CHALLENGE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::MIP_FA_STALE_CHALLENGE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::MIP_FA_STALE_CHALLENGE));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::MIP_HA_REASON_UNSPECIFIED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::MIP_HA_REASON_UNSPECIFIED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::MIP_HA_ADMIN_PROHIBITED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::MIP_HA_ADMIN_PROHIBITED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::MIP_HA_INSUFFICIENT_RESOURCES ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              MIP_HA_INSUFFICIENT_RESOURCES));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::
+                      MIP_HA_MOBILE_NODE_AUTHENTICATION_FAILURE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              MIP_HA_MOBILE_NODE_AUTHENTICATION_FAILURE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::
+                      MIP_HA_FOREIGN_AGENT_AUTHENTICATION_FAILURE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              MIP_HA_FOREIGN_AGENT_AUTHENTICATION_FAILURE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::MIP_HA_REGISTRATION_ID_MISMATCH ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              MIP_HA_REGISTRATION_ID_MISMATCH));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::MIP_HA_MALFORMED_REQUEST ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::MIP_HA_MALFORMED_REQUEST));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::MIP_HA_UNKNOWN_HOME_AGENT_ADDRESS ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        MIP_HA_UNKNOWN_HOME_AGENT_ADDRESS));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::MIP_HA_REVERSE_TUNNEL_UNAVAILABLE ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        MIP_HA_REVERSE_TUNNEL_UNAVAILABLE));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::MIP_HA_REVERSE_TUNNEL_IS_MANDATORY ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        MIP_HA_REVERSE_TUNNEL_IS_MANDATORY));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::MIP_HA_ENCAPSULATION_UNAVAILABLE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              MIP_HA_ENCAPSULATION_UNAVAILABLE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::CLOSE_IN_PROGRESS ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::CLOSE_IN_PROGRESS));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::NETWORK_INITIATED_TERMINATION ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              NETWORK_INITIATED_TERMINATION));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::MODEM_APP_PREEMPTED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::MODEM_APP_PREEMPTED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::PDN_IPV4_CALL_DISALLOWED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::PDN_IPV4_CALL_DISALLOWED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::PDN_IPV4_CALL_THROTTLED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::PDN_IPV4_CALL_THROTTLED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::PDN_IPV6_CALL_DISALLOWED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::PDN_IPV6_CALL_DISALLOWED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::PDN_IPV6_CALL_THROTTLED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::PDN_IPV6_CALL_THROTTLED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::MODEM_RESTART ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::MODEM_RESTART));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::PDP_PPP_NOT_SUPPORTED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::PDP_PPP_NOT_SUPPORTED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::UNPREFERRED_RAT ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::UNPREFERRED_RAT));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::PHYSICAL_LINK_CLOSE_IN_PROGRESS ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              PHYSICAL_LINK_CLOSE_IN_PROGRESS));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::APN_PENDING_HANDOVER ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::APN_PENDING_HANDOVER));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::PROFILE_BEARER_INCOMPATIBLE ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::PROFILE_BEARER_INCOMPATIBLE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::SIM_CARD_CHANGED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::SIM_CARD_CHANGED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::LOW_POWER_MODE_OR_POWERING_DOWN ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              LOW_POWER_MODE_OR_POWERING_DOWN));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::APN_DISABLED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::APN_DISABLED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::MAX_PPP_INACTIVITY_TIMER_EXPIRED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              MAX_PPP_INACTIVITY_TIMER_EXPIRED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::IPV6_ADDRESS_TRANSFER_FAILED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::IPV6_ADDRESS_TRANSFER_FAILED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::TRAT_SWAP_FAILED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::TRAT_SWAP_FAILED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::EHRPD_TO_HRPD_FALLBACK ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::EHRPD_TO_HRPD_FALLBACK));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::MIP_CONFIG_FAILURE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::MIP_CONFIG_FAILURE));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::PDN_INACTIVITY_TIMER_EXPIRED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::PDN_INACTIVITY_TIMER_EXPIRED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::MAX_IPV4_CONNECTIONS ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::MAX_IPV4_CONNECTIONS));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::MAX_IPV6_CONNECTIONS ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::MAX_IPV6_CONNECTIONS));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::APN_MISMATCH ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::APN_MISMATCH));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::IP_VERSION_MISMATCH ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::IP_VERSION_MISMATCH));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::DUN_CALL_DISALLOWED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::DUN_CALL_DISALLOWED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::INTERNAL_EPC_NONEPC_TRANSITION ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              INTERNAL_EPC_NONEPC_TRANSITION));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::INTERFACE_IN_USE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::INTERFACE_IN_USE));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::APN_DISALLOWED_ON_ROAMING ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::APN_DISALLOWED_ON_ROAMING));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::APN_PARAMETERS_CHANGED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::APN_PARAMETERS_CHANGED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::NULL_APN_DISALLOWED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::NULL_APN_DISALLOWED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::THERMAL_MITIGATION ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::THERMAL_MITIGATION));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::DATA_SETTINGS_DISABLED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::DATA_SETTINGS_DISABLED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::DATA_ROAMING_SETTINGS_DISABLED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              DATA_ROAMING_SETTINGS_DISABLED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::DDS_SWITCHED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::DDS_SWITCHED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::FORBIDDEN_APN_NAME ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::FORBIDDEN_APN_NAME));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::DDS_SWITCH_IN_PROGRESS ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::DDS_SWITCH_IN_PROGRESS));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::CALL_DISALLOWED_IN_ROAMING ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::CALL_DISALLOWED_IN_ROAMING));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::NON_IP_NOT_SUPPORTED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::NON_IP_NOT_SUPPORTED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::PDN_NON_IP_CALL_THROTTLED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::PDN_NON_IP_CALL_THROTTLED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::PDN_NON_IP_CALL_DISALLOWED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::PDN_NON_IP_CALL_DISALLOWED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::CDMA_LOCK ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::CDMA_LOCK));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::CDMA_INTERCEPT ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::CDMA_INTERCEPT));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::CDMA_REORDER ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::CDMA_REORDER));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::CDMA_RELEASE_DUE_TO_SO_REJECTION ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              CDMA_RELEASE_DUE_TO_SO_REJECTION));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::CDMA_INCOMING_CALL ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::CDMA_INCOMING_CALL));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::CDMA_ALERT_STOP ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::CDMA_ALERT_STOP));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::CHANNEL_ACQUISITION_FAILURE ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::CHANNEL_ACQUISITION_FAILURE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::MAX_ACCESS_PROBE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::MAX_ACCESS_PROBE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::
+                      CONCURRENT_SERVICE_NOT_SUPPORTED_BY_BASE_STATION ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              CONCURRENT_SERVICE_NOT_SUPPORTED_BY_BASE_STATION));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::NO_RESPONSE_FROM_BASE_STATION ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              NO_RESPONSE_FROM_BASE_STATION));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::REJECTED_BY_BASE_STATION ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::REJECTED_BY_BASE_STATION));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::CONCURRENT_SERVICES_INCOMPATIBLE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              CONCURRENT_SERVICES_INCOMPATIBLE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::NO_CDMA_SERVICE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::NO_CDMA_SERVICE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::RUIM_NOT_PRESENT ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::RUIM_NOT_PRESENT));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::CDMA_RETRY_ORDER ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::CDMA_RETRY_ORDER));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::ACCESS_BLOCK ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::ACCESS_BLOCK));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::ACCESS_BLOCK_ALL ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::ACCESS_BLOCK_ALL));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::IS707B_MAX_ACCESS_PROBES ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::IS707B_MAX_ACCESS_PROBES));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::THERMAL_EMERGENCY ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::THERMAL_EMERGENCY));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::CONCURRENT_SERVICES_NOT_ALLOWED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              CONCURRENT_SERVICES_NOT_ALLOWED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::INCOMING_CALL_REJECTED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::INCOMING_CALL_REJECTED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::NO_SERVICE_ON_GATEWAY ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::NO_SERVICE_ON_GATEWAY));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::NO_GPRS_CONTEXT ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::NO_GPRS_CONTEXT));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::ILLEGAL_MS ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::ILLEGAL_MS));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::ILLEGAL_ME ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::ILLEGAL_ME));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::
+                      GPRS_SERVICES_AND_NON_GPRS_SERVICES_NOT_ALLOWED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              GPRS_SERVICES_AND_NON_GPRS_SERVICES_NOT_ALLOWED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::GPRS_SERVICES_NOT_ALLOWED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::GPRS_SERVICES_NOT_ALLOWED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::
+                      MS_IDENTITY_CANNOT_BE_DERIVED_BY_THE_NETWORK ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              MS_IDENTITY_CANNOT_BE_DERIVED_BY_THE_NETWORK));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::IMPLICITLY_DETACHED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::IMPLICITLY_DETACHED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::PLMN_NOT_ALLOWED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::PLMN_NOT_ALLOWED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::LOCATION_AREA_NOT_ALLOWED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::LOCATION_AREA_NOT_ALLOWED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::GPRS_SERVICES_NOT_ALLOWED_IN_THIS_PLMN ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        GPRS_SERVICES_NOT_ALLOWED_IN_THIS_PLMN));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::PDP_DUPLICATE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::PDP_DUPLICATE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::UE_RAT_CHANGE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::UE_RAT_CHANGE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::CONGESTION ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::CONGESTION));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::NO_PDP_CONTEXT_ACTIVATED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::NO_PDP_CONTEXT_ACTIVATED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::ACCESS_CLASS_DSAC_REJECTION ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::ACCESS_CLASS_DSAC_REJECTION));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::PDP_ACTIVATE_MAX_RETRY_FAILED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              PDP_ACTIVATE_MAX_RETRY_FAILED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::RADIO_ACCESS_BEARER_FAILURE ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::RADIO_ACCESS_BEARER_FAILURE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::ESM_UNKNOWN_EPS_BEARER_CONTEXT ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              ESM_UNKNOWN_EPS_BEARER_CONTEXT));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::DRB_RELEASED_BY_RRC ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::DRB_RELEASED_BY_RRC));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::CONNECTION_RELEASED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::CONNECTION_RELEASED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::EMM_DETACHED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::EMM_DETACHED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::EMM_ATTACH_FAILED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::EMM_ATTACH_FAILED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::EMM_ATTACH_STARTED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::EMM_ATTACH_STARTED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::LTE_NAS_SERVICE_REQUEST_FAILED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              LTE_NAS_SERVICE_REQUEST_FAILED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::DUPLICATE_BEARER_ID ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::DUPLICATE_BEARER_ID));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::ESM_COLLISION_SCENARIOS ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::ESM_COLLISION_SCENARIOS));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::
+                      ESM_BEARER_DEACTIVATED_TO_SYNC_WITH_NETWORK ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              ESM_BEARER_DEACTIVATED_TO_SYNC_WITH_NETWORK));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::
+                      ESM_NW_ACTIVATED_DED_BEARER_WITH_ID_OF_DEF_BEARER ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              ESM_NW_ACTIVATED_DED_BEARER_WITH_ID_OF_DEF_BEARER));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::ESM_BAD_OTA_MESSAGE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::ESM_BAD_OTA_MESSAGE));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::ESM_DOWNLOAD_SERVER_REJECTED_THE_CALL ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        ESM_DOWNLOAD_SERVER_REJECTED_THE_CALL));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::ESM_CONTEXT_TRANSFERRED_DUE_TO_IRAT ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        ESM_CONTEXT_TRANSFERRED_DUE_TO_IRAT));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::DS_EXPLICIT_DEACTIVATION ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::DS_EXPLICIT_DEACTIVATION));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::ESM_LOCAL_CAUSE_NONE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::ESM_LOCAL_CAUSE_NONE));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::LTE_THROTTLING_NOT_REQUIRED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::LTE_THROTTLING_NOT_REQUIRED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::ACCESS_CONTROL_LIST_CHECK_FAILURE ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        ACCESS_CONTROL_LIST_CHECK_FAILURE));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::SERVICE_NOT_ALLOWED_ON_PLMN ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::SERVICE_NOT_ALLOWED_ON_PLMN));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::EMM_T3417_EXPIRED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::EMM_T3417_EXPIRED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::EMM_T3417_EXT_EXPIRED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::EMM_T3417_EXT_EXPIRED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::RRC_UPLINK_DATA_TRANSMISSION_FAILURE ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        RRC_UPLINK_DATA_TRANSMISSION_FAILURE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::
+                      RRC_UPLINK_DELIVERY_FAILED_DUE_TO_HANDOVER ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              RRC_UPLINK_DELIVERY_FAILED_DUE_TO_HANDOVER));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::RRC_UPLINK_CONNECTION_RELEASE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              RRC_UPLINK_CONNECTION_RELEASE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::RRC_UPLINK_RADIO_LINK_FAILURE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              RRC_UPLINK_RADIO_LINK_FAILURE));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::RRC_UPLINK_ERROR_REQUEST_FROM_NAS ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        RRC_UPLINK_ERROR_REQUEST_FROM_NAS));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::RRC_CONNECTION_ACCESS_STRATUM_FAILURE ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        RRC_CONNECTION_ACCESS_STRATUM_FAILURE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::
+                      RRC_CONNECTION_ANOTHER_PROCEDURE_IN_PROGRESS ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              RRC_CONNECTION_ANOTHER_PROCEDURE_IN_PROGRESS));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::RRC_CONNECTION_ACCESS_BARRED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::RRC_CONNECTION_ACCESS_BARRED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::RRC_CONNECTION_CELL_RESELECTION ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              RRC_CONNECTION_CELL_RESELECTION));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::RRC_CONNECTION_CONFIG_FAILURE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              RRC_CONNECTION_CONFIG_FAILURE));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::RRC_CONNECTION_TIMER_EXPIRED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::RRC_CONNECTION_TIMER_EXPIRED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::RRC_CONNECTION_LINK_FAILURE ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::RRC_CONNECTION_LINK_FAILURE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::RRC_CONNECTION_CELL_NOT_CAMPED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              RRC_CONNECTION_CELL_NOT_CAMPED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::RRC_CONNECTION_SYSTEM_INTERVAL_FAILURE ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        RRC_CONNECTION_SYSTEM_INTERVAL_FAILURE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::RRC_CONNECTION_REJECT_BY_NETWORK ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              RRC_CONNECTION_REJECT_BY_NETWORK));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::RRC_CONNECTION_NORMAL_RELEASE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              RRC_CONNECTION_NORMAL_RELEASE));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::RRC_CONNECTION_RADIO_LINK_FAILURE ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        RRC_CONNECTION_RADIO_LINK_FAILURE));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::RRC_CONNECTION_REESTABLISHMENT_FAILURE ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        RRC_CONNECTION_REESTABLISHMENT_FAILURE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::
+                      RRC_CONNECTION_OUT_OF_SERVICE_DURING_CELL_REGISTER ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              RRC_CONNECTION_OUT_OF_SERVICE_DURING_CELL_REGISTER));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::RRC_CONNECTION_ABORT_REQUEST ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::RRC_CONNECTION_ABORT_REQUEST));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::
+                      RRC_CONNECTION_SYSTEM_INFORMATION_BLOCK_READ_ERROR ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              RRC_CONNECTION_SYSTEM_INFORMATION_BLOCK_READ_ERROR));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::
+                      NETWORK_INITIATED_DETACH_WITH_AUTO_REATTACH ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              NETWORK_INITIATED_DETACH_WITH_AUTO_REATTACH));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::
+                      NETWORK_INITIATED_DETACH_NO_AUTO_REATTACH ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              NETWORK_INITIATED_DETACH_NO_AUTO_REATTACH));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::ESM_PROCEDURE_TIME_OUT ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::ESM_PROCEDURE_TIME_OUT));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::INVALID_CONNECTION_ID ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::INVALID_CONNECTION_ID));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::MAXIMIUM_NSAPIS_EXCEEDED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::MAXIMIUM_NSAPIS_EXCEEDED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::INVALID_PRIMARY_NSAPI ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::INVALID_PRIMARY_NSAPI));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::CANNOT_ENCODE_OTA_MESSAGE ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::CANNOT_ENCODE_OTA_MESSAGE));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::RADIO_ACCESS_BEARER_SETUP_FAILURE ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        RADIO_ACCESS_BEARER_SETUP_FAILURE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::PDP_ESTABLISH_TIMEOUT_EXPIRED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              PDP_ESTABLISH_TIMEOUT_EXPIRED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::PDP_MODIFY_TIMEOUT_EXPIRED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::PDP_MODIFY_TIMEOUT_EXPIRED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::PDP_INACTIVE_TIMEOUT_EXPIRED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::PDP_INACTIVE_TIMEOUT_EXPIRED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::PDP_LOWERLAYER_ERROR ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::PDP_LOWERLAYER_ERROR));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::PDP_MODIFY_COLLISION ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::PDP_MODIFY_COLLISION));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::MAXINUM_SIZE_OF_L2_MESSAGE_EXCEEDED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        MAXINUM_SIZE_OF_L2_MESSAGE_EXCEEDED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::NAS_REQUEST_REJECTED_BY_NETWORK ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              NAS_REQUEST_REJECTED_BY_NETWORK));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::RRC_CONNECTION_INVALID_REQUEST ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              RRC_CONNECTION_INVALID_REQUEST));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::
+                      RRC_CONNECTION_TRACKING_AREA_ID_CHANGED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              RRC_CONNECTION_TRACKING_AREA_ID_CHANGED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::RRC_CONNECTION_RF_UNAVAILABLE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              RRC_CONNECTION_RF_UNAVAILABLE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::
+                      RRC_CONNECTION_ABORTED_DUE_TO_IRAT_CHANGE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              RRC_CONNECTION_ABORTED_DUE_TO_IRAT_CHANGE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::
+                      RRC_CONNECTION_RELEASED_SECURITY_NOT_ACTIVE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              RRC_CONNECTION_RELEASED_SECURITY_NOT_ACTIVE));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::RRC_CONNECTION_ABORTED_AFTER_HANDOVER ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        RRC_CONNECTION_ABORTED_AFTER_HANDOVER));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::
+                      RRC_CONNECTION_ABORTED_AFTER_IRAT_CELL_CHANGE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              RRC_CONNECTION_ABORTED_AFTER_IRAT_CELL_CHANGE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::
+                      RRC_CONNECTION_ABORTED_DURING_IRAT_CELL_CHANGE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              RRC_CONNECTION_ABORTED_DURING_IRAT_CELL_CHANGE));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::IMSI_UNKNOWN_IN_HOME_SUBSCRIBER_SERVER ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        IMSI_UNKNOWN_IN_HOME_SUBSCRIBER_SERVER));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::IMEI_NOT_ACCEPTED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::IMEI_NOT_ACCEPTED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::
+                      EPS_SERVICES_AND_NON_EPS_SERVICES_NOT_ALLOWED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              EPS_SERVICES_AND_NON_EPS_SERVICES_NOT_ALLOWED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::EPS_SERVICES_NOT_ALLOWED_IN_PLMN ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              EPS_SERVICES_NOT_ALLOWED_IN_PLMN));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::MSC_TEMPORARILY_NOT_REACHABLE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              MSC_TEMPORARILY_NOT_REACHABLE));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::CS_DOMAIN_NOT_AVAILABLE ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::CS_DOMAIN_NOT_AVAILABLE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::ESM_FAILURE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::ESM_FAILURE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::MAC_FAILURE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::MAC_FAILURE));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::SYNCHRONIZATION_FAILURE ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::SYNCHRONIZATION_FAILURE));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::UE_SECURITY_CAPABILITIES_MISMATCH ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        UE_SECURITY_CAPABILITIES_MISMATCH));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::SECURITY_MODE_REJECTED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::SECURITY_MODE_REJECTED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::UNACCEPTABLE_NON_EPS_AUTHENTICATION ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        UNACCEPTABLE_NON_EPS_AUTHENTICATION));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::
+                      CS_FALLBACK_CALL_ESTABLISHMENT_NOT_ALLOWED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              CS_FALLBACK_CALL_ESTABLISHMENT_NOT_ALLOWED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::NO_EPS_BEARER_CONTEXT_ACTIVATED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              NO_EPS_BEARER_CONTEXT_ACTIVATED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::INVALID_EMM_STATE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::INVALID_EMM_STATE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::NAS_LAYER_FAILURE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::NAS_LAYER_FAILURE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::MULTIPLE_PDP_CALL_NOT_ALLOWED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              MULTIPLE_PDP_CALL_NOT_ALLOWED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::EMBMS_NOT_ENABLED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::EMBMS_NOT_ENABLED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::IRAT_HANDOVER_FAILED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::IRAT_HANDOVER_FAILED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::EMBMS_REGULAR_DEACTIVATION ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::EMBMS_REGULAR_DEACTIVATION));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::TEST_LOOPBACK_REGULAR_DEACTIVATION ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        TEST_LOOPBACK_REGULAR_DEACTIVATION));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::LOWER_LAYER_REGISTRATION_FAILURE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              LOWER_LAYER_REGISTRATION_FAILURE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::DATA_PLAN_EXPIRED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::DATA_PLAN_EXPIRED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::UMTS_HANDOVER_TO_IWLAN ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::UMTS_HANDOVER_TO_IWLAN));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::
+                      EVDO_CONNECTION_DENY_BY_GENERAL_OR_NETWORK_BUSY ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              EVDO_CONNECTION_DENY_BY_GENERAL_OR_NETWORK_BUSY));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::
+                      EVDO_CONNECTION_DENY_BY_BILLING_OR_AUTHENTICATION_FAILURE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              EVDO_CONNECTION_DENY_BY_BILLING_OR_AUTHENTICATION_FAILURE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::EVDO_HDR_CHANGED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::EVDO_HDR_CHANGED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::EVDO_HDR_EXITED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::EVDO_HDR_EXITED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::EVDO_HDR_NO_SESSION ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::EVDO_HDR_NO_SESSION));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::EVDO_USING_GPS_FIX_INSTEAD_OF_HDR_CALL ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        EVDO_USING_GPS_FIX_INSTEAD_OF_HDR_CALL));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::EVDO_HDR_CONNECTION_SETUP_TIMEOUT ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        EVDO_HDR_CONNECTION_SETUP_TIMEOUT));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::FAILED_TO_ACQUIRE_COLOCATED_HDR ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              FAILED_TO_ACQUIRE_COLOCATED_HDR));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::OTASP_COMMIT_IN_PROGRESS ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::OTASP_COMMIT_IN_PROGRESS));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::NO_HYBRID_HDR_SERVICE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::NO_HYBRID_HDR_SERVICE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::HDR_NO_LOCK_GRANTED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::HDR_NO_LOCK_GRANTED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::DBM_OR_SMS_IN_PROGRESS ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::DBM_OR_SMS_IN_PROGRESS));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::HDR_FADE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::HDR_FADE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::HDR_ACCESS_FAILURE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::HDR_ACCESS_FAILURE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::UNSUPPORTED_1X_PREV ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::UNSUPPORTED_1X_PREV));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::LOCAL_END ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::LOCAL_END));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::NO_SERVICE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::NO_SERVICE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::FADE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::FADE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::NORMAL_RELEASE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::NORMAL_RELEASE));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::ACCESS_ATTEMPT_ALREADY_IN_PROGRESS ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        ACCESS_ATTEMPT_ALREADY_IN_PROGRESS));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::REDIRECTION_OR_HANDOFF_IN_PROGRESS ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        REDIRECTION_OR_HANDOFF_IN_PROGRESS));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::EMERGENCY_MODE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::EMERGENCY_MODE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::PHONE_IN_USE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::PHONE_IN_USE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::INVALID_MODE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::INVALID_MODE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::INVALID_SIM_STATE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::INVALID_SIM_STATE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::NO_COLLOCATED_HDR ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::NO_COLLOCATED_HDR));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::UE_IS_ENTERING_POWERSAVE_MODE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              UE_IS_ENTERING_POWERSAVE_MODE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::DUAL_SWITCH ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::DUAL_SWITCH));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::PPP_TIMEOUT ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::PPP_TIMEOUT));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::PPP_AUTH_FAILURE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::PPP_AUTH_FAILURE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::PPP_OPTION_MISMATCH ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::PPP_OPTION_MISMATCH));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::PPP_PAP_FAILURE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::PPP_PAP_FAILURE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::PPP_CHAP_FAILURE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::PPP_CHAP_FAILURE));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::PPP_CLOSE_IN_PROGRESS ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::PPP_CLOSE_IN_PROGRESS));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::LIMITED_TO_IPV4 ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::LIMITED_TO_IPV4));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::LIMITED_TO_IPV6 ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::LIMITED_TO_IPV6));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::VSNCP_TIMEOUT ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::VSNCP_TIMEOUT));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::VSNCP_GEN_ERROR ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::VSNCP_GEN_ERROR));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::VSNCP_APN_UNAUTHORIZED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::VSNCP_APN_UNATHORIZED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::VSNCP_PDN_LIMIT_EXCEEDED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::VSNCP_PDN_LIMIT_EXCEEDED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::VSNCP_NO_PDN_GATEWAY_ADDRESS ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::VSNCP_NO_PDN_GATEWAY_ADDRESS));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::VSNCP_PDN_GATEWAY_UNREACHABLE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              VSNCP_PDN_GATEWAY_UNREACHABLE));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::VSNCP_PDN_GATEWAY_REJECT ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::VSNCP_PDN_GATEWAY_REJECT));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::VSNCP_INSUFFICIENT_PARAMETERS ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              VSNCP_INSUFFICIENT_PARAMETERS));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::VSNCP_RESOURCE_UNAVAILABLE ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::VSNCP_RESOURCE_UNAVAILABLE));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::VSNCP_ADMINISTRATIVELY_PROHIBITED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::
+                        VSNCP_ADMINISTRATIVELY_PROHIBITED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::VSNCP_PDN_ID_IN_USE ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::VSNCP_PDN_ID_IN_USE));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::VSNCP_SUBSCRIBER_LIMITATION ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::VSNCP_SUBSCRIBER_LIMITATION));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::VSNCP_PDN_EXISTS_FOR_THIS_APN ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::
+                              VSNCP_PDN_EXISTS_FOR_THIS_APN));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::VSNCP_RECONNECT_NOT_ALLOWED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::VSNCP_RECONNECT_NOT_ALLOWED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::IPV6_PREFIX_UNAVAILABLE ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::IPV6_PREFIX_UNAVAILABLE));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::HANDOFF_PREFERENCE_CHANGED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::HANDOFF_PREFERENCE_CHANGED));
+static_assert(aidl::android::hardware::radio::DataCallFailCause::SLICE_REJECTED ==
+              static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                      ::android::hardware::radio::V1_6::DataCallFailCause::SLICE_REJECTED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::MATCH_ALL_RULE_NOT_ALLOWED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::MATCH_ALL_RULE_NOT_ALLOWED));
+static_assert(
+        aidl::android::hardware::radio::DataCallFailCause::ALL_MATCHING_RULES_FAILED ==
+        static_cast<aidl::android::hardware::radio::DataCallFailCause>(
+                ::android::hardware::radio::V1_6::DataCallFailCause::ALL_MATCHING_RULES_FAILED));
+
+static_assert(aidl::android::hardware::radio::SliceStatus::UNKNOWN ==
+              static_cast<aidl::android::hardware::radio::SliceStatus>(
+                      ::android::hardware::radio::V1_6::SliceStatus::UNKNOWN));
+static_assert(aidl::android::hardware::radio::SliceStatus::CONFIGURED ==
+              static_cast<aidl::android::hardware::radio::SliceStatus>(
+                      ::android::hardware::radio::V1_6::SliceStatus::CONFIGURED));
+static_assert(aidl::android::hardware::radio::SliceStatus::ALLOWED ==
+              static_cast<aidl::android::hardware::radio::SliceStatus>(
+                      ::android::hardware::radio::V1_6::SliceStatus::ALLOWED));
+static_assert(
+        aidl::android::hardware::radio::SliceStatus::REJECTED_NOT_AVAILABLE_IN_PLMN ==
+        static_cast<aidl::android::hardware::radio::SliceStatus>(
+                ::android::hardware::radio::V1_6::SliceStatus::REJECTED_NOT_AVAILABLE_IN_PLMN));
+static_assert(
+        aidl::android::hardware::radio::SliceStatus::REJECTED_NOT_AVAILABLE_IN_REG_AREA ==
+        static_cast<aidl::android::hardware::radio::SliceStatus>(
+                ::android::hardware::radio::V1_6::SliceStatus::REJECTED_NOT_AVAILABLE_IN_REG_AREA));
+static_assert(aidl::android::hardware::radio::SliceStatus::DEFAULT_CONFIGURED ==
+              static_cast<aidl::android::hardware::radio::SliceStatus>(
+                      ::android::hardware::radio::V1_6::SliceStatus::DEFAULT_CONFIGURED));
+
+static_assert(aidl::android::hardware::radio::SscMode::MODE_1 ==
+              static_cast<aidl::android::hardware::radio::SscMode>(
+                      ::android::hardware::radio::V1_6::SscMode::MODE_1));
+static_assert(aidl::android::hardware::radio::SscMode::MODE_2 ==
+              static_cast<aidl::android::hardware::radio::SscMode>(
+                      ::android::hardware::radio::V1_6::SscMode::MODE_2));
+static_assert(aidl::android::hardware::radio::SscMode::MODE_3 ==
+              static_cast<aidl::android::hardware::radio::SscMode>(
+                      ::android::hardware::radio::V1_6::SscMode::MODE_3));
+
+static_assert(aidl::android::hardware::radio::PublicKeyType::EPDG ==
+              static_cast<aidl::android::hardware::radio::PublicKeyType>(
+                      ::android::hardware::radio::V1_6::PublicKeyType::EPDG));
+static_assert(aidl::android::hardware::radio::PublicKeyType::WLAN ==
+              static_cast<aidl::android::hardware::radio::PublicKeyType>(
+                      ::android::hardware::radio::V1_6::PublicKeyType::WLAN));
+
+static_assert(aidl::android::hardware::radio::PbReceivedStatus::PB_RECEIVED_OK ==
+              static_cast<aidl::android::hardware::radio::PbReceivedStatus>(
+                      ::android::hardware::radio::V1_6::PbReceivedStatus::PB_RECEIVED_OK));
+static_assert(aidl::android::hardware::radio::PbReceivedStatus::PB_RECEIVED_ERROR ==
+              static_cast<aidl::android::hardware::radio::PbReceivedStatus>(
+                      ::android::hardware::radio::V1_6::PbReceivedStatus::PB_RECEIVED_ERROR));
+static_assert(aidl::android::hardware::radio::PbReceivedStatus::PB_RECEIVED_ABORT ==
+              static_cast<aidl::android::hardware::radio::PbReceivedStatus>(
+                      ::android::hardware::radio::V1_6::PbReceivedStatus::PB_RECEIVED_ABORT));
+static_assert(aidl::android::hardware::radio::PbReceivedStatus::PB_RECEIVED_FINAL ==
+              static_cast<aidl::android::hardware::radio::PbReceivedStatus>(
+                      ::android::hardware::radio::V1_6::PbReceivedStatus::PB_RECEIVED_FINAL));
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::IccIo& in,
+        aidl::android::hardware::radio::IccIo* out) {
+    out->command = static_cast<int32_t>(in.command);
+    out->fileId = static_cast<int32_t>(in.fileId);
+    out->path = in.path;
+    out->p1 = static_cast<int32_t>(in.p1);
+    out->p2 = static_cast<int32_t>(in.p2);
+    out->p3 = static_cast<int32_t>(in.p3);
+    out->data = in.data;
+    out->pin2 = in.pin2;
+    out->aid = in.aid;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::NeighboringCell& in,
+        aidl::android::hardware::radio::NeighboringCell* out) {
+    out->cid = in.cid;
+    out->rssi = static_cast<int32_t>(in.rssi);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::UusInfo& in,
+        aidl::android::hardware::radio::UusInfo* out) {
+    out->uusType = static_cast<aidl::android::hardware::radio::UusType>(in.uusType);
+    out->uusDcs = static_cast<aidl::android::hardware::radio::UusDcs>(in.uusDcs);
+    out->uusData = in.uusData;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(const ::android::hardware::radio::V1_0::Dial& in,
+                                                   aidl::android::hardware::radio::Dial* out) {
+    out->address = in.address;
+    out->clir = static_cast<aidl::android::hardware::radio::Clir>(in.clir);
+    {
+        size_t size = in.uusInfo.size();
+        aidl::android::hardware::radio::UusInfo uusInfo;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.uusInfo[i], &uusInfo)) return false;
+            out->uusInfo.push_back(uusInfo);
+        }
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::LastCallFailCauseInfo& in,
+        aidl::android::hardware::radio::LastCallFailCauseInfo* out) {
+    out->causeCode = static_cast<aidl::android::hardware::radio::LastCallFailCause>(in.causeCode);
+    out->vendorCause = in.vendorCause;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::GsmSignalStrength& in,
+        aidl::android::hardware::radio::GsmSignalStrength* out) {
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.signalStrength > std::numeric_limits<int32_t>::max() || in.signalStrength < 0) {
+        return false;
+    }
+    out->signalStrength = static_cast<int32_t>(in.signalStrength);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.bitErrorRate > std::numeric_limits<int32_t>::max() || in.bitErrorRate < 0) {
+        return false;
+    }
+    out->bitErrorRate = static_cast<int32_t>(in.bitErrorRate);
+    out->timingAdvance = static_cast<int32_t>(in.timingAdvance);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaSignalStrength& in,
+        aidl::android::hardware::radio::CdmaSignalStrength* out) {
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.dbm > std::numeric_limits<int32_t>::max() || in.dbm < 0) {
+        return false;
+    }
+    out->dbm = static_cast<int32_t>(in.dbm);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.ecio > std::numeric_limits<int32_t>::max() || in.ecio < 0) {
+        return false;
+    }
+    out->ecio = static_cast<int32_t>(in.ecio);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::EvdoSignalStrength& in,
+        aidl::android::hardware::radio::EvdoSignalStrength* out) {
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.dbm > std::numeric_limits<int32_t>::max() || in.dbm < 0) {
+        return false;
+    }
+    out->dbm = static_cast<int32_t>(in.dbm);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.ecio > std::numeric_limits<int32_t>::max() || in.ecio < 0) {
+        return false;
+    }
+    out->ecio = static_cast<int32_t>(in.ecio);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.signalNoiseRatio > std::numeric_limits<int32_t>::max() || in.signalNoiseRatio < 0) {
+        return false;
+    }
+    out->signalNoiseRatio = static_cast<int32_t>(in.signalNoiseRatio);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::SendSmsResult& in,
+        aidl::android::hardware::radio::SendSmsResult* out) {
+    out->messageRef = static_cast<int32_t>(in.messageRef);
+    out->ackPDU = in.ackPDU;
+    out->errorCode = static_cast<int32_t>(in.errorCode);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::IccIoResult& in,
+        aidl::android::hardware::radio::IccIoResult* out) {
+    out->sw1 = static_cast<int32_t>(in.sw1);
+    out->sw2 = static_cast<int32_t>(in.sw2);
+    out->simResponse = in.simResponse;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CallForwardInfo& in,
+        aidl::android::hardware::radio::CallForwardInfo* out) {
+    out->status = static_cast<aidl::android::hardware::radio::CallForwardInfoStatus>(in.status);
+    out->reason = static_cast<int32_t>(in.reason);
+    out->serviceClass = static_cast<int32_t>(in.serviceClass);
+    out->toa = static_cast<int32_t>(in.toa);
+    out->number = in.number;
+    out->timeSeconds = static_cast<int32_t>(in.timeSeconds);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::OperatorInfo& in,
+        aidl::android::hardware::radio::OperatorInfo* out) {
+    out->alphaLong = in.alphaLong;
+    out->alphaShort = in.alphaShort;
+    out->operatorNumeric = in.operatorNumeric;
+    out->status = static_cast<aidl::android::hardware::radio::OperatorStatus>(in.status);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::SmsWriteArgs& in,
+        aidl::android::hardware::radio::SmsWriteArgs* out) {
+    out->status = static_cast<aidl::android::hardware::radio::SmsWriteArgsStatus>(in.status);
+    out->pdu = in.pdu;
+    out->smsc = in.smsc;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaSmsAddress& in,
+        aidl::android::hardware::radio::CdmaSmsAddress* out) {
+    out->digitMode = static_cast<aidl::android::hardware::radio::CdmaSmsDigitMode>(in.digitMode);
+    out->numberMode = static_cast<aidl::android::hardware::radio::CdmaSmsNumberMode>(in.numberMode);
+    out->numberType = static_cast<aidl::android::hardware::radio::CdmaSmsNumberType>(in.numberType);
+    out->numberPlan = static_cast<aidl::android::hardware::radio::CdmaSmsNumberPlan>(in.numberPlan);
+    {
+        size_t size = in.digits.size();
+        for (size_t i = 0; i < size; i++) {
+            // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+            // suit your needs.
+            if (in.digits[i] > std::numeric_limits<int8_t>::max() || in.digits[i] < 0) {
+                return false;
+            }
+            out->digits.push_back(static_cast<int8_t>(in.digits[i]));
+        }
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaSmsSubaddress& in,
+        aidl::android::hardware::radio::CdmaSmsSubaddress* out) {
+    out->subaddressType =
+            static_cast<aidl::android::hardware::radio::CdmaSmsSubaddressType>(in.subaddressType);
+    out->odd = static_cast<bool>(in.odd);
+    {
+        size_t size = in.digits.size();
+        for (size_t i = 0; i < size; i++) {
+            // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+            // suit your needs.
+            if (in.digits[i] > std::numeric_limits<int8_t>::max() || in.digits[i] < 0) {
+                return false;
+            }
+            out->digits.push_back(static_cast<int8_t>(in.digits[i]));
+        }
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaSmsMessage& in,
+        aidl::android::hardware::radio::CdmaSmsMessage* out) {
+    out->teleserviceId = static_cast<int32_t>(in.teleserviceId);
+    out->isServicePresent = static_cast<bool>(in.isServicePresent);
+    out->serviceCategory = static_cast<int32_t>(in.serviceCategory);
+    if (!translate(in.address, &out->address)) return false;
+    if (!translate(in.subAddress, &out->subAddress)) return false;
+    {
+        size_t size = in.bearerData.size();
+        for (size_t i = 0; i < size; i++) {
+            // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+            // suit your needs.
+            if (in.bearerData[i] > std::numeric_limits<int8_t>::max() || in.bearerData[i] < 0) {
+                return false;
+            }
+            out->bearerData.push_back(static_cast<int8_t>(in.bearerData[i]));
+        }
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaSmsAck& in,
+        aidl::android::hardware::radio::CdmaSmsAck* out) {
+    out->errorClass = static_cast<aidl::android::hardware::radio::CdmaSmsErrorClass>(in.errorClass);
+    out->smsCauseCode = static_cast<int32_t>(in.smsCauseCode);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaBroadcastSmsConfigInfo& in,
+        aidl::android::hardware::radio::CdmaBroadcastSmsConfigInfo* out) {
+    out->serviceCategory = static_cast<int32_t>(in.serviceCategory);
+    out->language = static_cast<int32_t>(in.language);
+    out->selected = static_cast<bool>(in.selected);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaSmsWriteArgs& in,
+        aidl::android::hardware::radio::CdmaSmsWriteArgs* out) {
+    out->status = static_cast<aidl::android::hardware::radio::CdmaSmsWriteArgsStatus>(in.status);
+    if (!translate(in.message, &out->message)) return false;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::GsmBroadcastSmsConfigInfo& in,
+        aidl::android::hardware::radio::GsmBroadcastSmsConfigInfo* out) {
+    out->fromServiceId = static_cast<int32_t>(in.fromServiceId);
+    out->toServiceId = static_cast<int32_t>(in.toServiceId);
+    out->fromCodeScheme = static_cast<int32_t>(in.fromCodeScheme);
+    out->toCodeScheme = static_cast<int32_t>(in.toCodeScheme);
+    out->selected = static_cast<bool>(in.selected);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::GsmSmsMessage& in,
+        aidl::android::hardware::radio::GsmSmsMessage* out) {
+    out->smscPdu = in.smscPdu;
+    out->pdu = in.pdu;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::ImsSmsMessage& in,
+        aidl::android::hardware::radio::ImsSmsMessage* out) {
+    out->tech = static_cast<aidl::android::hardware::radio::RadioTechnologyFamily>(in.tech);
+    out->retry = static_cast<bool>(in.retry);
+    out->messageRef = static_cast<int32_t>(in.messageRef);
+    {
+        size_t size = in.cdmaMessage.size();
+        aidl::android::hardware::radio::CdmaSmsMessage cdmaMessage;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.cdmaMessage[i], &cdmaMessage)) return false;
+            out->cdmaMessage.push_back(cdmaMessage);
+        }
+    }
+    {
+        size_t size = in.gsmMessage.size();
+        aidl::android::hardware::radio::GsmSmsMessage gsmMessage;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.gsmMessage[i], &gsmMessage)) return false;
+            out->gsmMessage.push_back(gsmMessage);
+        }
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::SimApdu& in,
+        aidl::android::hardware::radio::SimApdu* out) {
+    out->sessionId = static_cast<int32_t>(in.sessionId);
+    out->cla = static_cast<int32_t>(in.cla);
+    out->instruction = static_cast<int32_t>(in.instruction);
+    out->p1 = static_cast<int32_t>(in.p1);
+    out->p2 = static_cast<int32_t>(in.p2);
+    out->p3 = static_cast<int32_t>(in.p3);
+    out->data = in.data;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::NvWriteItem& in,
+        aidl::android::hardware::radio::NvWriteItem* out) {
+    out->itemId = static_cast<aidl::android::hardware::radio::NvItem>(in.itemId);
+    out->value = in.value;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::SelectUiccSub& in,
+        aidl::android::hardware::radio::SelectUiccSub* out) {
+    out->slot = static_cast<int32_t>(in.slot);
+    out->appIndex = static_cast<int32_t>(in.appIndex);
+    out->subType = static_cast<aidl::android::hardware::radio::SubscriptionType>(in.subType);
+    out->actStatus = static_cast<aidl::android::hardware::radio::UiccSubActStatus>(in.actStatus);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::HardwareConfigModem& in,
+        aidl::android::hardware::radio::HardwareConfigModem* out) {
+    out->rilModel = static_cast<int32_t>(in.rilModel);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.rat > std::numeric_limits<int32_t>::max() || in.rat < 0) {
+        return false;
+    }
+    out->rat = static_cast<int32_t>(in.rat);
+    out->maxVoice = static_cast<int32_t>(in.maxVoice);
+    out->maxData = static_cast<int32_t>(in.maxData);
+    out->maxStandby = static_cast<int32_t>(in.maxStandby);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::HardwareConfigSim& in,
+        aidl::android::hardware::radio::HardwareConfigSim* out) {
+    out->modemUuid = in.modemUuid;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::HardwareConfig& in,
+        aidl::android::hardware::radio::HardwareConfig* out) {
+    out->type = static_cast<aidl::android::hardware::radio::HardwareConfigType>(in.type);
+    out->uuid = in.uuid;
+    out->state = static_cast<aidl::android::hardware::radio::HardwareConfigState>(in.state);
+    {
+        size_t size = in.modem.size();
+        aidl::android::hardware::radio::HardwareConfigModem modem;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.modem[i], &modem)) return false;
+            out->modem.push_back(modem);
+        }
+    }
+    {
+        size_t size = in.sim.size();
+        aidl::android::hardware::radio::HardwareConfigSim sim;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.sim[i], &sim)) return false;
+            out->sim.push_back(sim);
+        }
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::LceStatusInfo& in,
+        aidl::android::hardware::radio::LceStatusInfo* out) {
+    out->lceStatus = static_cast<aidl::android::hardware::radio::LceStatus>(in.lceStatus);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.actualIntervalMs > std::numeric_limits<int8_t>::max() || in.actualIntervalMs < 0) {
+        return false;
+    }
+    out->actualIntervalMs = static_cast<int8_t>(in.actualIntervalMs);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::LceDataInfo& in,
+        aidl::android::hardware::radio::LceDataInfo* out) {
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.lastHopCapacityKbps > std::numeric_limits<int32_t>::max() ||
+        in.lastHopCapacityKbps < 0) {
+        return false;
+    }
+    out->lastHopCapacityKbps = static_cast<int32_t>(in.lastHopCapacityKbps);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.confidenceLevel > std::numeric_limits<int8_t>::max() || in.confidenceLevel < 0) {
+        return false;
+    }
+    out->confidenceLevel = static_cast<int8_t>(in.confidenceLevel);
+    out->lceSuspended = static_cast<bool>(in.lceSuspended);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::ActivityStatsInfo& in,
+        aidl::android::hardware::radio::ActivityStatsInfo* out) {
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.sleepModeTimeMs > std::numeric_limits<int32_t>::max() || in.sleepModeTimeMs < 0) {
+        return false;
+    }
+    out->sleepModeTimeMs = static_cast<int32_t>(in.sleepModeTimeMs);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.idleModeTimeMs > std::numeric_limits<int32_t>::max() || in.idleModeTimeMs < 0) {
+        return false;
+    }
+    out->idleModeTimeMs = static_cast<int32_t>(in.idleModeTimeMs);
+    {
+        size_t size = sizeof(in.txmModetimeMs) / sizeof(in.txmModetimeMs[0]);
+        for (size_t i = 0; i < size; i++) {
+            // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+            // suit your needs.
+            if (in.txmModetimeMs[i] > std::numeric_limits<int32_t>::max() ||
+                in.txmModetimeMs[i] < 0) {
+                return false;
+            }
+            out->txmModetimeMs.push_back(static_cast<int32_t>(in.txmModetimeMs[i]));
+        }
+    }
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.rxModeTimeMs > std::numeric_limits<int32_t>::max() || in.rxModeTimeMs < 0) {
+        return false;
+    }
+    out->rxModeTimeMs = static_cast<int32_t>(in.rxModeTimeMs);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::Carrier& in,
+        aidl::android::hardware::radio::Carrier* out) {
+    out->mcc = in.mcc;
+    out->mnc = in.mnc;
+    out->matchType = static_cast<aidl::android::hardware::radio::CarrierMatchType>(in.matchType);
+    out->matchData = in.matchData;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CarrierRestrictions& in,
+        aidl::android::hardware::radio::CarrierRestrictions* out) {
+    {
+        size_t size = in.allowedCarriers.size();
+        aidl::android::hardware::radio::Carrier allowedCarriers;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.allowedCarriers[i], &allowedCarriers)) return false;
+            out->allowedCarriers.push_back(allowedCarriers);
+        }
+    }
+    {
+        size_t size = in.excludedCarriers.size();
+        aidl::android::hardware::radio::Carrier excludedCarriers;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.excludedCarriers[i], &excludedCarriers)) return false;
+            out->excludedCarriers.push_back(excludedCarriers);
+        }
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::SuppSvcNotification& in,
+        aidl::android::hardware::radio::SuppSvcNotification* out) {
+    out->isMT = static_cast<bool>(in.isMT);
+    out->code = static_cast<int32_t>(in.code);
+    out->index = static_cast<int32_t>(in.index);
+    out->type = static_cast<int32_t>(in.type);
+    out->number = in.number;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::SimRefreshResult& in,
+        aidl::android::hardware::radio::SimRefreshResult* out) {
+    out->type = static_cast<aidl::android::hardware::radio::SimRefreshType>(in.type);
+    out->efId = static_cast<int32_t>(in.efId);
+    out->aid = in.aid;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaSignalInfoRecord& in,
+        aidl::android::hardware::radio::CdmaSignalInfoRecord* out) {
+    out->isPresent = static_cast<bool>(in.isPresent);
+    out->signalType = static_cast<int8_t>(in.signalType);
+    out->alertPitch = static_cast<int8_t>(in.alertPitch);
+    out->signal = static_cast<int8_t>(in.signal);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaCallWaiting& in,
+        aidl::android::hardware::radio::CdmaCallWaiting* out) {
+    out->number = in.number;
+    out->numberPresentation =
+            static_cast<aidl::android::hardware::radio::CdmaCallWaitingNumberPresentation>(
+                    in.numberPresentation);
+    out->name = in.name;
+    if (!translate(in.signalInfoRecord, &out->signalInfoRecord)) return false;
+    out->numberType =
+            static_cast<aidl::android::hardware::radio::CdmaCallWaitingNumberType>(in.numberType);
+    out->numberPlan =
+            static_cast<aidl::android::hardware::radio::CdmaCallWaitingNumberPlan>(in.numberPlan);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaDisplayInfoRecord& in,
+        aidl::android::hardware::radio::CdmaDisplayInfoRecord* out) {
+    out->alphaBuf = in.alphaBuf;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaNumberInfoRecord& in,
+        aidl::android::hardware::radio::CdmaNumberInfoRecord* out) {
+    out->number = in.number;
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.numberType > std::numeric_limits<int8_t>::max() || in.numberType < 0) {
+        return false;
+    }
+    out->numberType = static_cast<int8_t>(in.numberType);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.numberPlan > std::numeric_limits<int8_t>::max() || in.numberPlan < 0) {
+        return false;
+    }
+    out->numberPlan = static_cast<int8_t>(in.numberPlan);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.pi > std::numeric_limits<int8_t>::max() || in.pi < 0) {
+        return false;
+    }
+    out->pi = static_cast<int8_t>(in.pi);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.si > std::numeric_limits<int8_t>::max() || in.si < 0) {
+        return false;
+    }
+    out->si = static_cast<int8_t>(in.si);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaRedirectingNumberInfoRecord& in,
+        aidl::android::hardware::radio::CdmaRedirectingNumberInfoRecord* out) {
+    if (!translate(in.redirectingNumber, &out->redirectingNumber)) return false;
+    out->redirectingReason = static_cast<aidl::android::hardware::radio::CdmaRedirectingReason>(
+            in.redirectingReason);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaLineControlInfoRecord& in,
+        aidl::android::hardware::radio::CdmaLineControlInfoRecord* out) {
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.lineCtrlPolarityIncluded > std::numeric_limits<int8_t>::max() ||
+        in.lineCtrlPolarityIncluded < 0) {
+        return false;
+    }
+    out->lineCtrlPolarityIncluded = static_cast<int8_t>(in.lineCtrlPolarityIncluded);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.lineCtrlToggle > std::numeric_limits<int8_t>::max() || in.lineCtrlToggle < 0) {
+        return false;
+    }
+    out->lineCtrlToggle = static_cast<int8_t>(in.lineCtrlToggle);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.lineCtrlReverse > std::numeric_limits<int8_t>::max() || in.lineCtrlReverse < 0) {
+        return false;
+    }
+    out->lineCtrlReverse = static_cast<int8_t>(in.lineCtrlReverse);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.lineCtrlPowerDenial > std::numeric_limits<int8_t>::max() || in.lineCtrlPowerDenial < 0) {
+        return false;
+    }
+    out->lineCtrlPowerDenial = static_cast<int8_t>(in.lineCtrlPowerDenial);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaT53ClirInfoRecord& in,
+        aidl::android::hardware::radio::CdmaT53ClirInfoRecord* out) {
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.cause > std::numeric_limits<int8_t>::max() || in.cause < 0) {
+        return false;
+    }
+    out->cause = static_cast<int8_t>(in.cause);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaT53AudioControlInfoRecord& in,
+        aidl::android::hardware::radio::CdmaT53AudioControlInfoRecord* out) {
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.upLink > std::numeric_limits<int8_t>::max() || in.upLink < 0) {
+        return false;
+    }
+    out->upLink = static_cast<int8_t>(in.upLink);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.downLink > std::numeric_limits<int8_t>::max() || in.downLink < 0) {
+        return false;
+    }
+    out->downLink = static_cast<int8_t>(in.downLink);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaInformationRecord& in,
+        aidl::android::hardware::radio::CdmaInformationRecord* out) {
+    out->name = static_cast<aidl::android::hardware::radio::CdmaInfoRecName>(in.name);
+    {
+        size_t size = in.display.size();
+        aidl::android::hardware::radio::CdmaDisplayInfoRecord display;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.display[i], &display)) return false;
+            out->display.push_back(display);
+        }
+    }
+    {
+        size_t size = in.number.size();
+        aidl::android::hardware::radio::CdmaNumberInfoRecord number;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.number[i], &number)) return false;
+            out->number.push_back(number);
+        }
+    }
+    {
+        size_t size = in.signal.size();
+        aidl::android::hardware::radio::CdmaSignalInfoRecord signal;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.signal[i], &signal)) return false;
+            out->signal.push_back(signal);
+        }
+    }
+    {
+        size_t size = in.redir.size();
+        aidl::android::hardware::radio::CdmaRedirectingNumberInfoRecord redir;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.redir[i], &redir)) return false;
+            out->redir.push_back(redir);
+        }
+    }
+    {
+        size_t size = in.lineCtrl.size();
+        aidl::android::hardware::radio::CdmaLineControlInfoRecord lineCtrl;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.lineCtrl[i], &lineCtrl)) return false;
+            out->lineCtrl.push_back(lineCtrl);
+        }
+    }
+    {
+        size_t size = in.clir.size();
+        aidl::android::hardware::radio::CdmaT53ClirInfoRecord clir;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.clir[i], &clir)) return false;
+            out->clir.push_back(clir);
+        }
+    }
+    {
+        size_t size = in.audioCtrl.size();
+        aidl::android::hardware::radio::CdmaT53AudioControlInfoRecord audioCtrl;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.audioCtrl[i], &audioCtrl)) return false;
+            out->audioCtrl.push_back(audioCtrl);
+        }
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaInformationRecords& in,
+        aidl::android::hardware::radio::CdmaInformationRecords* out) {
+    {
+        size_t size = in.infoRec.size();
+        aidl::android::hardware::radio::CdmaInformationRecord infoRec;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.infoRec[i], &infoRec)) return false;
+            out->infoRec.push_back(infoRec);
+        }
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CfData& in,
+        aidl::android::hardware::radio::CfData* out) {
+    {
+        size_t size = in.cfInfo.size();
+        aidl::android::hardware::radio::CallForwardInfo cfInfo;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.cfInfo[i], &cfInfo)) return false;
+            out->cfInfo.push_back(cfInfo);
+        }
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::SsInfoData& in,
+        aidl::android::hardware::radio::SsInfoData* out) {
+    {
+        size_t size = in.ssInfo.size();
+        for (size_t i = 0; i < size; i++) {
+            out->ssInfo.push_back(static_cast<int32_t>(in.ssInfo[i]));
+        }
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::StkCcUnsolSsResult& in,
+        aidl::android::hardware::radio::StkCcUnsolSsResult* out) {
+    out->serviceType = static_cast<aidl::android::hardware::radio::SsServiceType>(in.serviceType);
+    out->requestType = static_cast<aidl::android::hardware::radio::SsRequestType>(in.requestType);
+    out->teleserviceType =
+            static_cast<aidl::android::hardware::radio::SsTeleserviceType>(in.teleserviceType);
+    out->serviceClass =
+            static_cast<aidl::android::hardware::radio::SuppServiceClass>(in.serviceClass);
+    out->result = static_cast<aidl::android::hardware::radio::RadioError>(in.result);
+    {
+        size_t size = in.ssInfo.size();
+        aidl::android::hardware::radio::SsInfoData ssInfo;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.ssInfo[i], &ssInfo)) return false;
+            out->ssInfo.push_back(ssInfo);
+        }
+    }
+    {
+        size_t size = in.cfData.size();
+        aidl::android::hardware::radio::CfData cfData;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.cfData[i], &cfData)) return false;
+            out->cfData.push_back(cfData);
+        }
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::PcoDataInfo& in,
+        aidl::android::hardware::radio::PcoDataInfo* out) {
+    out->cid = static_cast<int32_t>(in.cid);
+    out->bearerProto = in.bearerProto;
+    out->pcoId = static_cast<int32_t>(in.pcoId);
+    {
+        size_t size = in.contents.size();
+        for (size_t i = 0; i < size; i++) {
+            // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+            // suit your needs.
+            if (in.contents[i] > std::numeric_limits<int8_t>::max() || in.contents[i] < 0) {
+                return false;
+            }
+            out->contents.push_back(static_cast<int8_t>(in.contents[i]));
+        }
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_1::KeepaliveRequest& in,
+        aidl::android::hardware::radio::KeepaliveRequest* out) {
+    out->type = static_cast<aidl::android::hardware::radio::KeepaliveType>(in.type);
+    {
+        size_t size = in.sourceAddress.size();
+        for (size_t i = 0; i < size; i++) {
+            // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+            // suit your needs.
+            if (in.sourceAddress[i] > std::numeric_limits<int8_t>::max() ||
+                in.sourceAddress[i] < 0) {
+                return false;
+            }
+            out->sourceAddress.push_back(static_cast<int8_t>(in.sourceAddress[i]));
+        }
+    }
+    out->sourcePort = static_cast<int32_t>(in.sourcePort);
+    {
+        size_t size = in.destinationAddress.size();
+        for (size_t i = 0; i < size; i++) {
+            // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+            // suit your needs.
+            if (in.destinationAddress[i] > std::numeric_limits<int8_t>::max() ||
+                in.destinationAddress[i] < 0) {
+                return false;
+            }
+            out->destinationAddress.push_back(static_cast<int8_t>(in.destinationAddress[i]));
+        }
+    }
+    out->destinationPort = static_cast<int32_t>(in.destinationPort);
+    out->maxKeepaliveIntervalMillis = static_cast<int32_t>(in.maxKeepaliveIntervalMillis);
+    out->cid = static_cast<int32_t>(in.cid);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_1::KeepaliveStatus& in,
+        aidl::android::hardware::radio::KeepaliveStatus* out) {
+    out->sessionHandle = static_cast<int32_t>(in.sessionHandle);
+    out->code = static_cast<aidl::android::hardware::radio::KeepaliveStatusCode>(in.code);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_2::CellIdentityOperatorNames& in,
+        aidl::android::hardware::radio::CellIdentityOperatorNames* out) {
+    out->alphaLong = in.alphaLong;
+    out->alphaShort = in.alphaShort;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_2::CellIdentityCdma& in,
+        aidl::android::hardware::radio::CellIdentityCdma* out) {
+    out->networkId = static_cast<int32_t>(in.base.networkId);
+    out->systemId = static_cast<int32_t>(in.base.systemId);
+    out->baseStationId = static_cast<int32_t>(in.base.baseStationId);
+    out->longitude = static_cast<int32_t>(in.base.longitude);
+    out->latitude = static_cast<int32_t>(in.base.latitude);
+    if (!translate(in.operatorNames, &out->operatorNames)) return false;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_2::CellInfoCdma& in,
+        aidl::android::hardware::radio::CellInfoCdma* out) {
+    if (!translate(in.cellIdentityCdma, &out->cellIdentityCdma)) return false;
+    if (!translate(in.signalStrengthCdma, &out->signalStrengthCdma)) return false;
+    if (!translate(in.signalStrengthEvdo, &out->signalStrengthEvdo)) return false;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_2::WcdmaSignalStrength& in,
+        aidl::android::hardware::radio::WcdmaSignalStrength* out) {
+    out->signalStrength = static_cast<int32_t>(in.base.signalStrength);
+    out->bitErrorRate = static_cast<int32_t>(in.base.bitErrorRate);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.rscp > std::numeric_limits<int32_t>::max() || in.rscp < 0) {
+        return false;
+    }
+    out->rscp = static_cast<int32_t>(in.rscp);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.ecno > std::numeric_limits<int32_t>::max() || in.ecno < 0) {
+        return false;
+    }
+    out->ecno = static_cast<int32_t>(in.ecno);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_2::TdscdmaSignalStrength& in,
+        aidl::android::hardware::radio::TdscdmaSignalStrength* out) {
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.signalStrength > std::numeric_limits<int32_t>::max() || in.signalStrength < 0) {
+        return false;
+    }
+    out->signalStrength = static_cast<int32_t>(in.signalStrength);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.bitErrorRate > std::numeric_limits<int32_t>::max() || in.bitErrorRate < 0) {
+        return false;
+    }
+    out->bitErrorRate = static_cast<int32_t>(in.bitErrorRate);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.rscp > std::numeric_limits<int32_t>::max() || in.rscp < 0) {
+        return false;
+    }
+    out->rscp = static_cast<int32_t>(in.rscp);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_2::VoiceRegStateResult& in,
+        aidl::android::hardware::radio::VoiceRegStateResult* out) {
+    out->regState = static_cast<aidl::android::hardware::radio::RegState>(in.regState);
+    out->rat = static_cast<int32_t>(in.rat);
+    out->cssSupported = static_cast<bool>(in.cssSupported);
+    out->roamingIndicator = static_cast<int32_t>(in.roamingIndicator);
+    out->systemIsInPrl = static_cast<int32_t>(in.systemIsInPrl);
+    out->defaultRoamingIndicator = static_cast<int32_t>(in.defaultRoamingIndicator);
+    out->reasonForDenial = static_cast<int32_t>(in.reasonForDenial);
+    // FIXME Unknown type: android.hardware.radio@1.2::CellIdentity
+    // That type's package needs to be converted separately and the corresponding translate function
+    // should be added here.
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_3::RadioResponseInfoModem& in,
+        aidl::android::hardware::radio::RadioResponseInfoModem* out) {
+    out->type = static_cast<aidl::android::hardware::radio::RadioResponseType>(in.type);
+    out->serial = static_cast<int32_t>(in.serial);
+    out->error = static_cast<aidl::android::hardware::radio::RadioError>(in.error);
+    out->isEnabled = static_cast<bool>(in.isEnabled);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_4::EmergencyNumber& in,
+        aidl::android::hardware::radio::EmergencyNumber* out) {
+    out->number = in.number;
+    out->mcc = in.mcc;
+    out->mnc = in.mnc;
+    out->categories =
+            static_cast<aidl::android::hardware::radio::EmergencyServiceCategory>(in.categories);
+    {
+        size_t size = in.urns.size();
+        for (size_t i = 0; i < size; i++) {
+            out->urns.push_back(in.urns[i]);
+        }
+    }
+    out->sources = static_cast<aidl::android::hardware::radio::EmergencyNumberSource>(in.sources);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_4::RadioFrequencyInfo& in,
+        aidl::android::hardware::radio::RadioFrequencyInfo* out) {
+    switch (in.getDiscriminator()) {
+        case ::android::hardware::radio::V1_4::RadioFrequencyInfo::hidl_discriminator::range:
+            *out = static_cast<aidl::android::hardware::radio::FrequencyRange>(in.range());
+            break;
+        case ::android::hardware::radio::V1_4::RadioFrequencyInfo::hidl_discriminator::
+                channelNumber:
+            *out = static_cast<int32_t>(in.channelNumber());
+            break;
+        default:
+            return false;
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_4::LteVopsInfo& in,
+        aidl::android::hardware::radio::LteVopsInfo* out) {
+    out->isVopsSupported = static_cast<bool>(in.isVopsSupported);
+    out->isEmcBearerSupported = static_cast<bool>(in.isEmcBearerSupported);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_4::NrIndicators& in,
+        aidl::android::hardware::radio::NrIndicators* out) {
+    out->isEndcAvailable = static_cast<bool>(in.isEndcAvailable);
+    out->isDcNrRestricted = static_cast<bool>(in.isDcNrRestricted);
+    out->isNrAvailable = static_cast<bool>(in.isNrAvailable);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_4::DataRegStateResult& in,
+        aidl::android::hardware::radio::DataRegStateResult* out) {
+    out->regState = static_cast<aidl::android::hardware::radio::RegState>(in.base.regState);
+    out->rat = static_cast<int32_t>(in.base.rat);
+    out->reasonDataDenied = static_cast<int32_t>(in.base.reasonDataDenied);
+    out->maxDataCalls = static_cast<int32_t>(in.base.maxDataCalls);
+    // FIXME Unknown type: android.hardware.radio@1.2::CellIdentity
+    // That type's package needs to be converted separately and the corresponding translate function
+    // should be added here.
+    if (!translate(in.vopsInfo, &out->vopsInfo)) return false;
+    if (!translate(in.nrIndicators, &out->nrIndicators)) return false;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_4::DataRegStateResult::VopsInfo& in,
+        aidl::android::hardware::radio::DataRegStateResultVopsInfo* out) {
+    switch (in.getDiscriminator()) {
+        case ::android::hardware::radio::V1_4::DataRegStateResult::VopsInfo::hidl_discriminator::
+                noinit:
+            // Nothing to translate for Monostate.
+            break;
+        case ::android::hardware::radio::V1_4::DataRegStateResult::VopsInfo::hidl_discriminator::
+                lteVopsInfo: {
+            aidl::android::hardware::radio::LteVopsInfo lteVopsInfo;
+            if (!translate(in.lteVopsInfo(), &lteVopsInfo)) return false;
+            out->set<aidl::android::hardware::radio::DataRegStateResultVopsInfo::lteVopsInfo>(
+                    lteVopsInfo);
+        } break;
+        default:
+            return false;
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_4::CellConfigLte& in,
+        aidl::android::hardware::radio::CellConfigLte* out) {
+    out->isEndcAvailable = static_cast<bool>(in.isEndcAvailable);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_4::CellInfo::Info& in,
+        aidl::android::hardware::radio::CellInfoInfo* out) {
+    switch (in.getDiscriminator()) {
+        case ::android::hardware::radio::V1_4::CellInfo::Info::hidl_discriminator::gsm:
+            // FIXME Unknown type: android.hardware.radio@1.2::CellInfoGsm
+            // That type's package needs to be converted separately and the corresponding translate
+            // function should be added here.
+            break;
+        case ::android::hardware::radio::V1_4::CellInfo::Info::hidl_discriminator::cdma: {
+            aidl::android::hardware::radio::CellInfoCdma cdma;
+            if (!translate(in.cdma(), &cdma)) return false;
+            out->set<aidl::android::hardware::radio::CellInfoInfo::cdma>(cdma);
+        } break;
+        case ::android::hardware::radio::V1_4::CellInfo::Info::hidl_discriminator::wcdma:
+            // FIXME Unknown type: android.hardware.radio@1.2::CellInfoWcdma
+            // That type's package needs to be converted separately and the corresponding translate
+            // function should be added here.
+            break;
+        case ::android::hardware::radio::V1_4::CellInfo::Info::hidl_discriminator::tdscdma:
+            // FIXME Unknown type: android.hardware.radio@1.2::CellInfoTdscdma
+            // That type's package needs to be converted separately and the corresponding translate
+            // function should be added here.
+            break;
+        case ::android::hardware::radio::V1_4::CellInfo::Info::hidl_discriminator::lte:
+            // FIXME Unknown type: android.hardware.radio@1.4::CellInfoLte
+            // That type's package needs to be converted separately and the corresponding translate
+            // function should be added here.
+            break;
+        case ::android::hardware::radio::V1_4::CellInfo::Info::hidl_discriminator::nr:
+            // FIXME Unknown type: android.hardware.radio@1.4::CellInfoNr
+            // That type's package needs to be converted separately and the corresponding translate
+            // function should be added here.
+            break;
+        default:
+            return false;
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_4::RadioCapability& in,
+        aidl::android::hardware::radio::RadioCapability* out) {
+    out->session = static_cast<int32_t>(in.session);
+    out->phase = static_cast<aidl::android::hardware::radio::RadioCapabilityPhase>(in.phase);
+    out->raf = static_cast<aidl::android::hardware::radio::RadioAccessFamily>(in.raf);
+    out->logicalModemUuid = in.logicalModemUuid;
+    out->status = static_cast<aidl::android::hardware::radio::RadioCapabilityStatus>(in.status);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_4::CarrierRestrictionsWithPriority& in,
+        aidl::android::hardware::radio::CarrierRestrictionsWithPriority* out) {
+    {
+        size_t size = in.allowedCarriers.size();
+        aidl::android::hardware::radio::Carrier allowedCarriers;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.allowedCarriers[i], &allowedCarriers)) return false;
+            out->allowedCarriers.push_back(allowedCarriers);
+        }
+    }
+    {
+        size_t size = in.excludedCarriers.size();
+        aidl::android::hardware::radio::Carrier excludedCarriers;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.excludedCarriers[i], &excludedCarriers)) return false;
+            out->excludedCarriers.push_back(excludedCarriers);
+        }
+    }
+    out->allowedCarriersPrioritized = static_cast<bool>(in.allowedCarriersPrioritized);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::RadioAccessSpecifier& in,
+        aidl::android::hardware::radio::RadioAccessSpecifier* out) {
+    out->radioAccessNetwork =
+            static_cast<aidl::android::hardware::radio::RadioAccessNetworks>(in.radioAccessNetwork);
+    if (!translate(in.bands, &out->bands)) return false;
+    {
+        size_t size = in.channels.size();
+        for (size_t i = 0; i < size; i++) {
+            out->channels.push_back(static_cast<int32_t>(in.channels[i]));
+        }
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::RadioAccessSpecifier::Bands& in,
+        aidl::android::hardware::radio::RadioAccessSpecifierBands* out) {
+    switch (in.getDiscriminator()) {
+        case ::android::hardware::radio::V1_5::RadioAccessSpecifier::Bands::hidl_discriminator::
+                geranBands: {
+            ::android::hardware::hidl_vec<::android::hardware::radio::V1_1::GeranBands> geranBands =
+                    in.geranBands();
+            size_t size = geranBands.size();
+            for (size_t i = 0; i < size; i++) {
+                out->get<aidl::android::hardware::radio::RadioAccessSpecifierBands::Tag::
+                                 geranBands>()
+                        .push_back(static_cast<aidl::android::hardware::radio::GeranBands>(
+                                geranBands[i]));
+            }
+        } break;
+        case ::android::hardware::radio::V1_5::RadioAccessSpecifier::Bands::hidl_discriminator::
+                utranBands: {
+            ::android::hardware::hidl_vec<::android::hardware::radio::V1_5::UtranBands> utranBands =
+                    in.utranBands();
+            size_t size = utranBands.size();
+            for (size_t i = 0; i < size; i++) {
+                out->get<aidl::android::hardware::radio::RadioAccessSpecifierBands::Tag::
+                                 utranBands>()
+                        .push_back(static_cast<aidl::android::hardware::radio::UtranBands>(
+                                utranBands[i]));
+            }
+        } break;
+        case ::android::hardware::radio::V1_5::RadioAccessSpecifier::Bands::hidl_discriminator::
+                eutranBands: {
+            ::android::hardware::hidl_vec<::android::hardware::radio::V1_5::EutranBands>
+                    eutranBands = in.eutranBands();
+            size_t size = eutranBands.size();
+            for (size_t i = 0; i < size; i++) {
+                out->get<aidl::android::hardware::radio::RadioAccessSpecifierBands::Tag::
+                                 eutranBands>()
+                        .push_back(static_cast<aidl::android::hardware::radio::EutranBands>(
+                                eutranBands[i]));
+            }
+        } break;
+        case ::android::hardware::radio::V1_5::RadioAccessSpecifier::Bands::hidl_discriminator::
+                ngranBands: {
+            ::android::hardware::hidl_vec<::android::hardware::radio::V1_5::NgranBands> ngranBands =
+                    in.ngranBands();
+            size_t size = ngranBands.size();
+            for (size_t i = 0; i < size; i++) {
+                out->get<aidl::android::hardware::radio::RadioAccessSpecifierBands::Tag::
+                                 ngranBands>()
+                        .push_back(static_cast<aidl::android::hardware::radio::NgranBands>(
+                                ngranBands[i]));
+            }
+        } break;
+        default:
+            return false;
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::SignalThresholdInfo& in,
+        aidl::android::hardware::radio::SignalThresholdInfo* out) {
+    out->signalMeasurement = static_cast<aidl::android::hardware::radio::SignalMeasurementType>(
+            in.signalMeasurement);
+    out->hysteresisMs = static_cast<int32_t>(in.hysteresisMs);
+    out->hysteresisDb = static_cast<int32_t>(in.hysteresisDb);
+    {
+        size_t size = in.thresholds.size();
+        for (size_t i = 0; i < size; i++) {
+            out->thresholds.push_back(static_cast<int32_t>(in.thresholds[i]));
+        }
+    }
+    out->isEnabled = static_cast<bool>(in.isEnabled);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::NetworkScanRequest& in,
+        aidl::android::hardware::radio::NetworkScanRequest* out) {
+    out->type = static_cast<aidl::android::hardware::radio::ScanType>(in.type);
+    out->interval = static_cast<int32_t>(in.interval);
+    {
+        size_t size = in.specifiers.size();
+        aidl::android::hardware::radio::RadioAccessSpecifier specifiers;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.specifiers[i], &specifiers)) return false;
+            out->specifiers.push_back(specifiers);
+        }
+    }
+    out->maxSearchTime = static_cast<int32_t>(in.maxSearchTime);
+    out->incrementalResults = static_cast<bool>(in.incrementalResults);
+    out->incrementalResultsPeriodicity = static_cast<int32_t>(in.incrementalResultsPeriodicity);
+    {
+        size_t size = in.mccMncs.size();
+        for (size_t i = 0; i < size; i++) {
+            out->mccMncs.push_back(in.mccMncs[i]);
+        }
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::DataProfileInfo& in,
+        aidl::android::hardware::radio::DataProfileInfo* out) {
+    out->profileId = static_cast<aidl::android::hardware::radio::DataProfileId>(in.profileId);
+    out->apn = in.apn;
+    out->protocol = static_cast<aidl::android::hardware::radio::PdpProtocolType>(in.protocol);
+    out->roamingProtocol =
+            static_cast<aidl::android::hardware::radio::PdpProtocolType>(in.roamingProtocol);
+    out->authType = static_cast<aidl::android::hardware::radio::ApnAuthType>(in.authType);
+    out->user = in.user;
+    out->password = in.password;
+    out->type = static_cast<aidl::android::hardware::radio::DataProfileInfoType>(in.type);
+    out->maxConnsTime = static_cast<int32_t>(in.maxConnsTime);
+    out->maxConns = static_cast<int32_t>(in.maxConns);
+    out->waitTime = static_cast<int32_t>(in.waitTime);
+    out->enabled = static_cast<bool>(in.enabled);
+    out->supportedApnTypesBitmap =
+            static_cast<aidl::android::hardware::radio::ApnTypes>(in.supportedApnTypesBitmap);
+    out->bearerBitmap =
+            static_cast<aidl::android::hardware::radio::RadioAccessFamily>(in.bearerBitmap);
+    out->mtuV4 = static_cast<int32_t>(in.mtuV4);
+    out->mtuV6 = static_cast<int32_t>(in.mtuV6);
+    out->preferred = static_cast<bool>(in.preferred);
+    out->persistent = static_cast<bool>(in.persistent);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::LinkAddress& in,
+        aidl::android::hardware::radio::LinkAddress* out) {
+    out->address = in.address;
+    out->properties = static_cast<aidl::android::hardware::radio::AddressProperty>(in.properties);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.deprecationTime > std::numeric_limits<int64_t>::max() || in.deprecationTime < 0) {
+        return false;
+    }
+    out->deprecationTime = static_cast<int64_t>(in.deprecationTime);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.expirationTime > std::numeric_limits<int64_t>::max() || in.expirationTime < 0) {
+        return false;
+    }
+    out->expirationTime = static_cast<int64_t>(in.expirationTime);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::ClosedSubscriberGroupInfo& in,
+        aidl::android::hardware::radio::ClosedSubscriberGroupInfo* out) {
+    out->csgIndication = static_cast<bool>(in.csgIndication);
+    out->homeNodebName = in.homeNodebName;
+    out->csgIdentity = static_cast<int32_t>(in.csgIdentity);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::OptionalCsgInfo& in,
+        aidl::android::hardware::radio::OptionalCsgInfo* out) {
+    switch (in.getDiscriminator()) {
+        case ::android::hardware::radio::V1_5::OptionalCsgInfo::hidl_discriminator::noinit:
+            // Nothing to translate for Monostate.
+            break;
+        case ::android::hardware::radio::V1_5::OptionalCsgInfo::hidl_discriminator::csgInfo: {
+            aidl::android::hardware::radio::ClosedSubscriberGroupInfo csgInfo;
+            if (!translate(in.csgInfo(), &csgInfo)) return false;
+            out->set<aidl::android::hardware::radio::OptionalCsgInfo::csgInfo>(csgInfo);
+        } break;
+        default:
+            return false;
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::CellIdentityGsm& in,
+        aidl::android::hardware::radio::CellIdentityGsm* out) {
+    out->mcc = in.base.base.mcc;
+    out->mnc = in.base.base.mnc;
+    out->lac = static_cast<int32_t>(in.base.base.lac);
+    out->cid = static_cast<int32_t>(in.base.base.cid);
+    out->arfcn = static_cast<int32_t>(in.base.base.arfcn);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.base.base.bsic > std::numeric_limits<int8_t>::max() || in.base.base.bsic < 0) {
+        return false;
+    }
+    out->bsic = static_cast<int8_t>(in.base.base.bsic);
+    if (!translate(in.base.operatorNames, &out->operatorNames)) return false;
+    {
+        size_t size = in.additionalPlmns.size();
+        for (size_t i = 0; i < size; i++) {
+            out->additionalPlmns.push_back(in.additionalPlmns[i]);
+        }
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::CellIdentityWcdma& in,
+        aidl::android::hardware::radio::CellIdentityWcdma* out) {
+    out->mcc = in.base.base.mcc;
+    out->mnc = in.base.base.mnc;
+    out->lac = static_cast<int32_t>(in.base.base.lac);
+    out->cid = static_cast<int32_t>(in.base.base.cid);
+    out->psc = static_cast<int32_t>(in.base.base.psc);
+    out->uarfcn = static_cast<int32_t>(in.base.base.uarfcn);
+    if (!translate(in.base.operatorNames, &out->operatorNames)) return false;
+    {
+        size_t size = in.additionalPlmns.size();
+        for (size_t i = 0; i < size; i++) {
+            out->additionalPlmns.push_back(in.additionalPlmns[i]);
+        }
+    }
+    if (!translate(in.optionalCsgInfo, &out->optionalCsgInfo)) return false;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::CellIdentityTdscdma& in,
+        aidl::android::hardware::radio::CellIdentityTdscdma* out) {
+    out->mcc = in.base.base.mcc;
+    out->mnc = in.base.base.mnc;
+    out->lac = static_cast<int32_t>(in.base.base.lac);
+    out->cid = static_cast<int32_t>(in.base.base.cid);
+    out->cpid = static_cast<int32_t>(in.base.base.cpid);
+    out->uarfcn = static_cast<int32_t>(in.base.uarfcn);
+    if (!translate(in.base.operatorNames, &out->operatorNames)) return false;
+    {
+        size_t size = in.additionalPlmns.size();
+        for (size_t i = 0; i < size; i++) {
+            out->additionalPlmns.push_back(in.additionalPlmns[i]);
+        }
+    }
+    if (!translate(in.optionalCsgInfo, &out->optionalCsgInfo)) return false;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::CellIdentityLte& in,
+        aidl::android::hardware::radio::CellIdentityLte* out) {
+    out->mcc = in.base.base.mcc;
+    out->mnc = in.base.base.mnc;
+    out->ci = static_cast<int32_t>(in.base.base.ci);
+    out->pci = static_cast<int32_t>(in.base.base.pci);
+    out->tac = static_cast<int32_t>(in.base.base.tac);
+    out->earfcn = static_cast<int32_t>(in.base.base.earfcn);
+    if (!translate(in.base.operatorNames, &out->operatorNames)) return false;
+    out->bandwidth = static_cast<int32_t>(in.base.bandwidth);
+    {
+        size_t size = in.additionalPlmns.size();
+        for (size_t i = 0; i < size; i++) {
+            out->additionalPlmns.push_back(in.additionalPlmns[i]);
+        }
+    }
+    if (!translate(in.optionalCsgInfo, &out->optionalCsgInfo)) return false;
+    {
+        size_t size = in.bands.size();
+        for (size_t i = 0; i < size; i++) {
+            out->bands.push_back(
+                    static_cast<aidl::android::hardware::radio::EutranBands>(in.bands[i]));
+        }
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::CellIdentityNr& in,
+        aidl::android::hardware::radio::CellIdentityNr* out) {
+    out->mcc = in.base.mcc;
+    out->mnc = in.base.mnc;
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.base.nci > std::numeric_limits<int64_t>::max() || in.base.nci < 0) {
+        return false;
+    }
+    out->nci = static_cast<int64_t>(in.base.nci);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.base.pci > std::numeric_limits<int32_t>::max() || in.base.pci < 0) {
+        return false;
+    }
+    out->pci = static_cast<int32_t>(in.base.pci);
+    out->tac = static_cast<int32_t>(in.base.tac);
+    out->nrarfcn = static_cast<int32_t>(in.base.nrarfcn);
+    if (!translate(in.base.operatorNames, &out->operatorNames)) return false;
+    {
+        size_t size = in.additionalPlmns.size();
+        for (size_t i = 0; i < size; i++) {
+            out->additionalPlmns.push_back(in.additionalPlmns[i]);
+        }
+    }
+    {
+        size_t size = in.bands.size();
+        for (size_t i = 0; i < size; i++) {
+            out->bands.push_back(
+                    static_cast<aidl::android::hardware::radio::NgranBands>(in.bands[i]));
+        }
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::CellInfoGsm& in,
+        aidl::android::hardware::radio::CellInfoGsm* out) {
+    if (!translate(in.cellIdentityGsm, &out->cellIdentityGsm)) return false;
+    if (!translate(in.signalStrengthGsm, &out->signalStrengthGsm)) return false;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::CellInfoWcdma& in,
+        aidl::android::hardware::radio::CellInfoWcdma* out) {
+    if (!translate(in.cellIdentityWcdma, &out->cellIdentityWcdma)) return false;
+    if (!translate(in.signalStrengthWcdma, &out->signalStrengthWcdma)) return false;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::CellInfoTdscdma& in,
+        aidl::android::hardware::radio::CellInfoTdscdma* out) {
+    if (!translate(in.cellIdentityTdscdma, &out->cellIdentityTdscdma)) return false;
+    if (!translate(in.signalStrengthTdscdma, &out->signalStrengthTdscdma)) return false;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::CellIdentity& in,
+        aidl::android::hardware::radio::CellIdentity* out) {
+    switch (in.getDiscriminator()) {
+        case ::android::hardware::radio::V1_5::CellIdentity::hidl_discriminator::noinit:
+            // Nothing to translate for Monostate.
+            break;
+        case ::android::hardware::radio::V1_5::CellIdentity::hidl_discriminator::gsm: {
+            aidl::android::hardware::radio::CellIdentityGsm gsm;
+            if (!translate(in.gsm(), &gsm)) return false;
+            out->set<aidl::android::hardware::radio::CellIdentity::gsm>(gsm);
+        } break;
+        case ::android::hardware::radio::V1_5::CellIdentity::hidl_discriminator::wcdma: {
+            aidl::android::hardware::radio::CellIdentityWcdma wcdma;
+            if (!translate(in.wcdma(), &wcdma)) return false;
+            out->set<aidl::android::hardware::radio::CellIdentity::wcdma>(wcdma);
+        } break;
+        case ::android::hardware::radio::V1_5::CellIdentity::hidl_discriminator::tdscdma: {
+            aidl::android::hardware::radio::CellIdentityTdscdma tdscdma;
+            if (!translate(in.tdscdma(), &tdscdma)) return false;
+            out->set<aidl::android::hardware::radio::CellIdentity::tdscdma>(tdscdma);
+        } break;
+        case ::android::hardware::radio::V1_5::CellIdentity::hidl_discriminator::cdma: {
+            aidl::android::hardware::radio::CellIdentityCdma cdma;
+            if (!translate(in.cdma(), &cdma)) return false;
+            out->set<aidl::android::hardware::radio::CellIdentity::cdma>(cdma);
+        } break;
+        case ::android::hardware::radio::V1_5::CellIdentity::hidl_discriminator::lte: {
+            aidl::android::hardware::radio::CellIdentityLte lte;
+            if (!translate(in.lte(), &lte)) return false;
+            out->set<aidl::android::hardware::radio::CellIdentity::lte>(lte);
+        } break;
+        case ::android::hardware::radio::V1_5::CellIdentity::hidl_discriminator::nr: {
+            aidl::android::hardware::radio::CellIdentityNr nr;
+            if (!translate(in.nr(), &nr)) return false;
+            out->set<aidl::android::hardware::radio::CellIdentity::nr>(nr);
+        } break;
+        default:
+            return false;
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::BarringInfo& in,
+        aidl::android::hardware::radio::BarringInfo* out) {
+    out->serviceType =
+            static_cast<aidl::android::hardware::radio::BarringInfoServiceType>(in.serviceType);
+    out->barringType =
+            static_cast<aidl::android::hardware::radio::BarringInfoBarringType>(in.barringType);
+    if (!translate(in.barringTypeSpecificInfo, &out->barringTypeSpecificInfo)) return false;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::BarringInfo::BarringTypeSpecificInfo::Conditional&
+                in,
+        aidl::android::hardware::radio::BarringInfoBarringTypeSpecificInfoConditional* out) {
+    out->factor = static_cast<int32_t>(in.factor);
+    out->timeSeconds = static_cast<int32_t>(in.timeSeconds);
+    out->isBarred = static_cast<bool>(in.isBarred);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::BarringInfo::BarringTypeSpecificInfo& in,
+        aidl::android::hardware::radio::BarringInfoBarringTypeSpecificInfo* out) {
+    switch (in.getDiscriminator()) {
+        case ::android::hardware::radio::V1_5::BarringInfo::BarringTypeSpecificInfo::
+                hidl_discriminator::noinit:
+            // Nothing to translate for Monostate.
+            break;
+        case ::android::hardware::radio::V1_5::BarringInfo::BarringTypeSpecificInfo::
+                hidl_discriminator::conditional: {
+            aidl::android::hardware::radio::BarringInfoBarringTypeSpecificInfoConditional
+                    conditional;
+            if (!translate(in.conditional(), &conditional)) return false;
+            out->set<aidl::android::hardware::radio::BarringInfoBarringTypeSpecificInfo::
+                             conditional>(conditional);
+        } break;
+        default:
+            return false;
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::RegStateResult::AccessTechnologySpecificInfo::
+                Cdma2000RegistrationInfo& in,
+        aidl::android::hardware::radio::
+                RegStateResultAccessTechnologySpecificInfoCdma2000RegistrationInfo* out) {
+    out->cssSupported = static_cast<bool>(in.cssSupported);
+    out->roamingIndicator = static_cast<int32_t>(in.roamingIndicator);
+    out->systemIsInPrl =
+            static_cast<aidl::android::hardware::radio::PrlIndicator>(in.systemIsInPrl);
+    out->defaultRoamingIndicator = static_cast<int32_t>(in.defaultRoamingIndicator);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::RegStateResult::AccessTechnologySpecificInfo::
+                EutranRegistrationInfo& in,
+        aidl::android::hardware::radio::
+                RegStateResultAccessTechnologySpecificInfoEutranRegistrationInfo* out) {
+    if (!translate(in.lteVopsInfo, &out->lteVopsInfo)) return false;
+    if (!translate(in.nrIndicators, &out->nrIndicators)) return false;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::AppStatus& in,
+        aidl::android::hardware::radio::AppStatus* out) {
+    out->appType = static_cast<aidl::android::hardware::radio::AppType>(in.base.appType);
+    out->appState = static_cast<aidl::android::hardware::radio::AppState>(in.base.appState);
+    out->persoSubstate =
+            static_cast<aidl::android::hardware::radio::PersoSubstate>(in.persoSubstate);
+    out->aidPtr = in.base.aidPtr;
+    out->appLabelPtr = in.base.appLabelPtr;
+    out->pin1Replaced = static_cast<int32_t>(in.base.pin1Replaced);
+    out->pin1 = static_cast<aidl::android::hardware::radio::PinState>(in.base.pin1);
+    out->pin2 = static_cast<aidl::android::hardware::radio::PinState>(in.base.pin2);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::CardStatus& in,
+        aidl::android::hardware::radio::CardStatus* out) {
+    out->cardState =
+            static_cast<aidl::android::hardware::radio::CardState>(in.base.base.base.cardState);
+    out->universalPinState = static_cast<aidl::android::hardware::radio::PinState>(
+            in.base.base.base.universalPinState);
+    out->gsmUmtsSubscriptionAppIndex =
+            static_cast<int32_t>(in.base.base.base.gsmUmtsSubscriptionAppIndex);
+    out->cdmaSubscriptionAppIndex =
+            static_cast<int32_t>(in.base.base.base.cdmaSubscriptionAppIndex);
+    out->imsSubscriptionAppIndex = static_cast<int32_t>(in.base.base.base.imsSubscriptionAppIndex);
+    {
+        size_t size = in.applications.size();
+        aidl::android::hardware::radio::AppStatus applications;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.applications[i], &applications)) return false;
+            out->applications.push_back(applications);
+        }
+    }
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.base.base.physicalSlotId > std::numeric_limits<int32_t>::max() ||
+        in.base.base.physicalSlotId < 0) {
+        return false;
+    }
+    out->physicalSlotId = static_cast<int32_t>(in.base.base.physicalSlotId);
+    out->atr = in.base.base.atr;
+    out->iccid = in.base.base.iccid;
+    out->eid = in.base.eid;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::QosBandwidth& in,
+        aidl::android::hardware::radio::QosBandwidth* out) {
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.maxBitrateKbps > std::numeric_limits<int32_t>::max() || in.maxBitrateKbps < 0) {
+        return false;
+    }
+    out->maxBitrateKbps = static_cast<int32_t>(in.maxBitrateKbps);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.guaranteedBitrateKbps > std::numeric_limits<int32_t>::max() ||
+        in.guaranteedBitrateKbps < 0) {
+        return false;
+    }
+    out->guaranteedBitrateKbps = static_cast<int32_t>(in.guaranteedBitrateKbps);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::EpsQos& in,
+        aidl::android::hardware::radio::EpsQos* out) {
+    out->qci = static_cast<char16_t>(in.qci);
+    if (!translate(in.downlink, &out->downlink)) return false;
+    if (!translate(in.uplink, &out->uplink)) return false;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::NrQos& in,
+        aidl::android::hardware::radio::NrQos* out) {
+    out->fiveQi = static_cast<char16_t>(in.fiveQi);
+    if (!translate(in.downlink, &out->downlink)) return false;
+    if (!translate(in.uplink, &out->uplink)) return false;
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.qfi > std::numeric_limits<int8_t>::max() || in.qfi < 0) {
+        return false;
+    }
+    out->qfi = static_cast<int8_t>(in.qfi);
+    out->averagingWindowMs = static_cast<char16_t>(in.averagingWindowMs);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(const ::android::hardware::radio::V1_6::Qos& in,
+                                                   aidl::android::hardware::radio::Qos* out) {
+    switch (in.getDiscriminator()) {
+        case ::android::hardware::radio::V1_6::Qos::hidl_discriminator::noinit:
+            // Nothing to translate for Monostate.
+            break;
+        case ::android::hardware::radio::V1_6::Qos::hidl_discriminator::eps: {
+            aidl::android::hardware::radio::EpsQos eps;
+            if (!translate(in.eps(), &eps)) return false;
+            out->set<aidl::android::hardware::radio::Qos::eps>(eps);
+        } break;
+        case ::android::hardware::radio::V1_6::Qos::hidl_discriminator::nr: {
+            aidl::android::hardware::radio::NrQos nr;
+            if (!translate(in.nr(), &nr)) return false;
+            out->set<aidl::android::hardware::radio::Qos::nr>(nr);
+        } break;
+        default:
+            return false;
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::RadioResponseInfo& in,
+        aidl::android::hardware::radio::RadioResponseInfo* out) {
+    out->type = static_cast<aidl::android::hardware::radio::RadioResponseType>(in.type);
+    out->serial = static_cast<int32_t>(in.serial);
+    out->error = static_cast<aidl::android::hardware::radio::RadioError>(in.error);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::PortRange& in,
+        aidl::android::hardware::radio::PortRange* out) {
+    out->start = static_cast<int32_t>(in.start);
+    out->end = static_cast<int32_t>(in.end);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::MaybePort& in,
+        aidl::android::hardware::radio::MaybePort* out) {
+    switch (in.getDiscriminator()) {
+        case ::android::hardware::radio::V1_6::MaybePort::hidl_discriminator::noinit:
+            // Nothing to translate for Monostate.
+            break;
+        case ::android::hardware::radio::V1_6::MaybePort::hidl_discriminator::range: {
+            aidl::android::hardware::radio::PortRange range;
+            if (!translate(in.range(), &range)) return false;
+            out->set<aidl::android::hardware::radio::MaybePort::range>(range);
+        } break;
+        default:
+            return false;
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::QosFilter& in,
+        aidl::android::hardware::radio::QosFilter* out) {
+    {
+        size_t size = in.localAddresses.size();
+        for (size_t i = 0; i < size; i++) {
+            out->localAddresses.push_back(in.localAddresses[i]);
+        }
+    }
+    {
+        size_t size = in.remoteAddresses.size();
+        for (size_t i = 0; i < size; i++) {
+            out->remoteAddresses.push_back(in.remoteAddresses[i]);
+        }
+    }
+    if (!translate(in.localPort, &out->localPort)) return false;
+    if (!translate(in.remotePort, &out->remotePort)) return false;
+    out->protocol = static_cast<aidl::android::hardware::radio::QosProtocol>(in.protocol);
+    if (!translate(in.tos, &out->tos)) return false;
+    if (!translate(in.flowLabel, &out->flowLabel)) return false;
+    if (!translate(in.spi, &out->spi)) return false;
+    out->direction = static_cast<aidl::android::hardware::radio::QosFilterDirection>(in.direction);
+    out->precedence = static_cast<int32_t>(in.precedence);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::QosFilter::TypeOfService& in,
+        aidl::android::hardware::radio::QosFilterTypeOfService* out) {
+    switch (in.getDiscriminator()) {
+        case ::android::hardware::radio::V1_6::QosFilter::TypeOfService::hidl_discriminator::noinit:
+            // Nothing to translate for Monostate.
+            break;
+        case ::android::hardware::radio::V1_6::QosFilter::TypeOfService::hidl_discriminator::value:
+            // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+            // suit your needs.
+            if (in.value() > std::numeric_limits<int8_t>::max() || in.value() < 0) {
+                return false;
+            }
+            *out = static_cast<int8_t>(in.value());
+            break;
+        default:
+            return false;
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::QosFilter::Ipv6FlowLabel& in,
+        aidl::android::hardware::radio::QosFilterIpv6FlowLabel* out) {
+    switch (in.getDiscriminator()) {
+        case ::android::hardware::radio::V1_6::QosFilter::Ipv6FlowLabel::hidl_discriminator::noinit:
+            // Nothing to translate for Monostate.
+            break;
+        case ::android::hardware::radio::V1_6::QosFilter::Ipv6FlowLabel::hidl_discriminator::value:
+            // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+            // suit your needs.
+            if (in.value() > std::numeric_limits<int32_t>::max() || in.value() < 0) {
+                return false;
+            }
+            *out = static_cast<int32_t>(in.value());
+            break;
+        default:
+            return false;
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::QosFilter::IpsecSpi& in,
+        aidl::android::hardware::radio::QosFilterIpsecSpi* out) {
+    switch (in.getDiscriminator()) {
+        case ::android::hardware::radio::V1_6::QosFilter::IpsecSpi::hidl_discriminator::noinit:
+            // Nothing to translate for Monostate.
+            break;
+        case ::android::hardware::radio::V1_6::QosFilter::IpsecSpi::hidl_discriminator::value:
+            // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+            // suit your needs.
+            if (in.value() > std::numeric_limits<int32_t>::max() || in.value() < 0) {
+                return false;
+            }
+            *out = static_cast<int32_t>(in.value());
+            break;
+        default:
+            return false;
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::QosSession& in,
+        aidl::android::hardware::radio::QosSession* out) {
+    out->qosSessionId = static_cast<int32_t>(in.qosSessionId);
+    if (!translate(in.qos, &out->qos)) return false;
+    {
+        size_t size = in.qosFilters.size();
+        aidl::android::hardware::radio::QosFilter qosFilters;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.qosFilters[i], &qosFilters)) return false;
+            out->qosFilters.push_back(qosFilters);
+        }
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::SetupDataCallResult& in,
+        aidl::android::hardware::radio::SetupDataCallResult* out) {
+    out->cause = static_cast<aidl::android::hardware::radio::DataCallFailCause>(in.cause);
+    out->suggestedRetryTime = static_cast<int64_t>(in.suggestedRetryTime);
+    out->cid = static_cast<int32_t>(in.cid);
+    out->active = static_cast<aidl::android::hardware::radio::DataConnActiveStatus>(in.active);
+    out->type = static_cast<aidl::android::hardware::radio::PdpProtocolType>(in.type);
+    out->ifname = in.ifname;
+    {
+        size_t size = in.addresses.size();
+        aidl::android::hardware::radio::LinkAddress addresses;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.addresses[i], &addresses)) return false;
+            out->addresses.push_back(addresses);
+        }
+    }
+    {
+        size_t size = in.dnses.size();
+        for (size_t i = 0; i < size; i++) {
+            out->dnses.push_back(in.dnses[i]);
+        }
+    }
+    {
+        size_t size = in.gateways.size();
+        for (size_t i = 0; i < size; i++) {
+            out->gateways.push_back(in.gateways[i]);
+        }
+    }
+    {
+        size_t size = in.pcscf.size();
+        for (size_t i = 0; i < size; i++) {
+            out->pcscf.push_back(in.pcscf[i]);
+        }
+    }
+    out->mtuV4 = static_cast<int32_t>(in.mtuV4);
+    out->mtuV6 = static_cast<int32_t>(in.mtuV6);
+    if (!translate(in.defaultQos, &out->defaultQos)) return false;
+    {
+        size_t size = in.qosSessions.size();
+        aidl::android::hardware::radio::QosSession qosSessions;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.qosSessions[i], &qosSessions)) return false;
+            out->qosSessions.push_back(qosSessions);
+        }
+    }
+    out->handoverFailureMode = static_cast<aidl::android::hardware::radio::HandoverFailureMode>(
+            in.handoverFailureMode);
+    out->pduSessionId = static_cast<int32_t>(in.pduSessionId);
+    if (!translate(in.sliceInfo, &out->sliceInfo)) return false;
+    {
+        size_t size = in.trafficDescriptors.size();
+        aidl::android::hardware::radio::TrafficDescriptor trafficDescriptors;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.trafficDescriptors[i], &trafficDescriptors)) return false;
+            out->trafficDescriptors.push_back(trafficDescriptors);
+        }
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::LinkCapacityEstimate& in,
+        aidl::android::hardware::radio::LinkCapacityEstimate* out) {
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.downlinkCapacityKbps > std::numeric_limits<int32_t>::max() ||
+        in.downlinkCapacityKbps < 0) {
+        return false;
+    }
+    out->downlinkCapacityKbps = static_cast<int32_t>(in.downlinkCapacityKbps);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.uplinkCapacityKbps > std::numeric_limits<int32_t>::max() || in.uplinkCapacityKbps < 0) {
+        return false;
+    }
+    out->uplinkCapacityKbps = static_cast<int32_t>(in.uplinkCapacityKbps);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.secondaryDownlinkCapacityKbps > std::numeric_limits<int32_t>::max() ||
+        in.secondaryDownlinkCapacityKbps < 0) {
+        return false;
+    }
+    out->secondaryDownlinkCapacityKbps = static_cast<int32_t>(in.secondaryDownlinkCapacityKbps);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.secondaryUplinkCapacityKbps > std::numeric_limits<int32_t>::max() ||
+        in.secondaryUplinkCapacityKbps < 0) {
+        return false;
+    }
+    out->secondaryUplinkCapacityKbps = static_cast<int32_t>(in.secondaryUplinkCapacityKbps);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::NrVopsInfo& in,
+        aidl::android::hardware::radio::NrVopsInfo* out) {
+    out->vopsSupported =
+            static_cast<aidl::android::hardware::radio::VopsIndicator>(in.vopsSupported);
+    out->emcSupported = static_cast<aidl::android::hardware::radio::EmcIndicator>(in.emcSupported);
+    out->emfSupported = static_cast<aidl::android::hardware::radio::EmfIndicator>(in.emfSupported);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::LteSignalStrength& in,
+        aidl::android::hardware::radio::LteSignalStrength* out) {
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.base.signalStrength > std::numeric_limits<int32_t>::max() ||
+        in.base.signalStrength < 0) {
+        return false;
+    }
+    out->signalStrength = static_cast<int32_t>(in.base.signalStrength);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.base.rsrp > std::numeric_limits<int32_t>::max() || in.base.rsrp < 0) {
+        return false;
+    }
+    out->rsrp = static_cast<int32_t>(in.base.rsrp);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.base.rsrq > std::numeric_limits<int32_t>::max() || in.base.rsrq < 0) {
+        return false;
+    }
+    out->rsrq = static_cast<int32_t>(in.base.rsrq);
+    out->rssnr = static_cast<int32_t>(in.base.rssnr);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.base.cqi > std::numeric_limits<int32_t>::max() || in.base.cqi < 0) {
+        return false;
+    }
+    out->cqi = static_cast<int32_t>(in.base.cqi);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.base.timingAdvance > std::numeric_limits<int32_t>::max() || in.base.timingAdvance < 0) {
+        return false;
+    }
+    out->timingAdvance = static_cast<int32_t>(in.base.timingAdvance);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.cqiTableIndex > std::numeric_limits<int32_t>::max() || in.cqiTableIndex < 0) {
+        return false;
+    }
+    out->cqiTableIndex = static_cast<int32_t>(in.cqiTableIndex);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::NrSignalStrength& in,
+        aidl::android::hardware::radio::NrSignalStrength* out) {
+    out->ssRsrp = static_cast<int32_t>(in.base.ssRsrp);
+    out->ssRsrq = static_cast<int32_t>(in.base.ssRsrq);
+    out->ssSinr = static_cast<int32_t>(in.base.ssSinr);
+    out->csiRsrp = static_cast<int32_t>(in.base.csiRsrp);
+    out->csiRsrq = static_cast<int32_t>(in.base.csiRsrq);
+    out->csiSinr = static_cast<int32_t>(in.base.csiSinr);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.csiCqiTableIndex > std::numeric_limits<int32_t>::max() || in.csiCqiTableIndex < 0) {
+        return false;
+    }
+    out->csiCqiTableIndex = static_cast<int32_t>(in.csiCqiTableIndex);
+    {
+        size_t size = in.csiCqiReport.size();
+        for (size_t i = 0; i < size; i++) {
+            // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+            // suit your needs.
+            if (in.csiCqiReport[i] > std::numeric_limits<int8_t>::max() || in.csiCqiReport[i] < 0) {
+                return false;
+            }
+            out->csiCqiReport.push_back(static_cast<int8_t>(in.csiCqiReport[i]));
+        }
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::SignalStrength& in,
+        aidl::android::hardware::radio::SignalStrength* out) {
+    if (!translate(in.gsm, &out->gsm)) return false;
+    if (!translate(in.cdma, &out->cdma)) return false;
+    if (!translate(in.evdo, &out->evdo)) return false;
+    if (!translate(in.lte, &out->lte)) return false;
+    if (!translate(in.tdscdma, &out->tdscdma)) return false;
+    if (!translate(in.wcdma, &out->wcdma)) return false;
+    if (!translate(in.nr, &out->nr)) return false;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::CellInfoLte& in,
+        aidl::android::hardware::radio::CellInfoLte* out) {
+    if (!translate(in.cellIdentityLte, &out->cellIdentityLte)) return false;
+    if (!translate(in.signalStrengthLte, &out->signalStrengthLte)) return false;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::CellInfoNr& in,
+        aidl::android::hardware::radio::CellInfoNr* out) {
+    if (!translate(in.cellIdentityNr, &out->cellIdentityNr)) return false;
+    if (!translate(in.signalStrengthNr, &out->signalStrengthNr)) return false;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::CellInfo& in,
+        aidl::android::hardware::radio::CellInfo* out) {
+    out->registered = static_cast<bool>(in.registered);
+    out->connectionStatus =
+            static_cast<aidl::android::hardware::radio::CellConnectionStatus>(in.connectionStatus);
+    if (!translate(in.ratSpecificInfo, &out->ratSpecificInfo)) return false;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::CellInfo::CellInfoRatSpecificInfo& in,
+        aidl::android::hardware::radio::CellInfoCellInfoRatSpecificInfo* out) {
+    switch (in.getDiscriminator()) {
+        case ::android::hardware::radio::V1_6::CellInfo::CellInfoRatSpecificInfo::
+                hidl_discriminator::gsm: {
+            aidl::android::hardware::radio::CellInfoGsm gsm;
+            if (!translate(in.gsm(), &gsm)) return false;
+            out->set<aidl::android::hardware::radio::CellInfoCellInfoRatSpecificInfo::gsm>(gsm);
+        } break;
+        case ::android::hardware::radio::V1_6::CellInfo::CellInfoRatSpecificInfo::
+                hidl_discriminator::wcdma: {
+            aidl::android::hardware::radio::CellInfoWcdma wcdma;
+            if (!translate(in.wcdma(), &wcdma)) return false;
+            out->set<aidl::android::hardware::radio::CellInfoCellInfoRatSpecificInfo::wcdma>(wcdma);
+        } break;
+        case ::android::hardware::radio::V1_6::CellInfo::CellInfoRatSpecificInfo::
+                hidl_discriminator::tdscdma: {
+            aidl::android::hardware::radio::CellInfoTdscdma tdscdma;
+            if (!translate(in.tdscdma(), &tdscdma)) return false;
+            out->set<aidl::android::hardware::radio::CellInfoCellInfoRatSpecificInfo::tdscdma>(
+                    tdscdma);
+        } break;
+        case ::android::hardware::radio::V1_6::CellInfo::CellInfoRatSpecificInfo::
+                hidl_discriminator::lte: {
+            aidl::android::hardware::radio::CellInfoLte lte;
+            if (!translate(in.lte(), &lte)) return false;
+            out->set<aidl::android::hardware::radio::CellInfoCellInfoRatSpecificInfo::lte>(lte);
+        } break;
+        case ::android::hardware::radio::V1_6::CellInfo::CellInfoRatSpecificInfo::
+                hidl_discriminator::nr: {
+            aidl::android::hardware::radio::CellInfoNr nr;
+            if (!translate(in.nr(), &nr)) return false;
+            out->set<aidl::android::hardware::radio::CellInfoCellInfoRatSpecificInfo::nr>(nr);
+        } break;
+        case ::android::hardware::radio::V1_6::CellInfo::CellInfoRatSpecificInfo::
+                hidl_discriminator::cdma: {
+            aidl::android::hardware::radio::CellInfoCdma cdma;
+            if (!translate(in.cdma(), &cdma)) return false;
+            out->set<aidl::android::hardware::radio::CellInfoCellInfoRatSpecificInfo::cdma>(cdma);
+        } break;
+        default:
+            return false;
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::NetworkScanResult& in,
+        aidl::android::hardware::radio::NetworkScanResult* out) {
+    out->status = static_cast<aidl::android::hardware::radio::ScanStatus>(in.status);
+    out->error = static_cast<aidl::android::hardware::radio::RadioError>(in.error);
+    {
+        size_t size = in.networkInfos.size();
+        aidl::android::hardware::radio::CellInfo networkInfos;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.networkInfos[i], &networkInfos)) return false;
+            out->networkInfos.push_back(networkInfos);
+        }
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::RegStateResult& in,
+        aidl::android::hardware::radio::RegStateResult* out) {
+    out->regState = static_cast<aidl::android::hardware::radio::RegState>(in.regState);
+    out->rat = static_cast<aidl::android::hardware::radio::RadioTechnology>(in.rat);
+    out->reasonForDenial =
+            static_cast<aidl::android::hardware::radio::RegistrationFailCause>(in.reasonForDenial);
+    if (!translate(in.cellIdentity, &out->cellIdentity)) return false;
+    out->registeredPlmn = in.registeredPlmn;
+    if (!translate(in.accessTechnologySpecificInfo, &out->accessTechnologySpecificInfo))
+        return false;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::RegStateResult::AccessTechnologySpecificInfo& in,
+        aidl::android::hardware::radio::RegStateResultAccessTechnologySpecificInfo* out) {
+    switch (in.getDiscriminator()) {
+        case ::android::hardware::radio::V1_6::RegStateResult::AccessTechnologySpecificInfo::
+                hidl_discriminator::noinit:
+            // Nothing to translate for Monostate.
+            break;
+        case ::android::hardware::radio::V1_6::RegStateResult::AccessTechnologySpecificInfo::
+                hidl_discriminator::cdmaInfo: {
+            aidl::android::hardware::radio::
+                    RegStateResultAccessTechnologySpecificInfoCdma2000RegistrationInfo cdmaInfo;
+            if (!translate(in.cdmaInfo(), &cdmaInfo)) return false;
+            out->set<aidl::android::hardware::radio::RegStateResultAccessTechnologySpecificInfo::
+                             cdmaInfo>(cdmaInfo);
+        } break;
+        case ::android::hardware::radio::V1_6::RegStateResult::AccessTechnologySpecificInfo::
+                hidl_discriminator::eutranInfo: {
+            aidl::android::hardware::radio::
+                    RegStateResultAccessTechnologySpecificInfoEutranRegistrationInfo eutranInfo;
+            if (!translate(in.eutranInfo(), &eutranInfo)) return false;
+            out->set<aidl::android::hardware::radio::RegStateResultAccessTechnologySpecificInfo::
+                             eutranInfo>(eutranInfo);
+        } break;
+        case ::android::hardware::radio::V1_6::RegStateResult::AccessTechnologySpecificInfo::
+                hidl_discriminator::ngranNrVopsInfo: {
+            aidl::android::hardware::radio::NrVopsInfo ngranNrVopsInfo;
+            if (!translate(in.ngranNrVopsInfo(), &ngranNrVopsInfo)) return false;
+            out->set<aidl::android::hardware::radio::RegStateResultAccessTechnologySpecificInfo::
+                             ngranNrVopsInfo>(ngranNrVopsInfo);
+        } break;
+        case ::android::hardware::radio::V1_6::RegStateResult::AccessTechnologySpecificInfo::
+                hidl_discriminator::geranDtmSupported:
+            out->set<aidl::android::hardware::radio::RegStateResultAccessTechnologySpecificInfo::
+                             geranDtmSupported>(static_cast<bool>(in.geranDtmSupported()));
+            break;
+        default:
+            return false;
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(const ::android::hardware::radio::V1_6::Call& in,
+                                                   aidl::android::hardware::radio::Call* out) {
+    out->state = static_cast<aidl::android::hardware::radio::CallState>(in.base.base.state);
+    out->index = static_cast<int32_t>(in.base.base.index);
+    out->toa = static_cast<int32_t>(in.base.base.toa);
+    out->isMpty = static_cast<bool>(in.base.base.isMpty);
+    out->isMT = static_cast<bool>(in.base.base.isMT);
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.base.base.als > std::numeric_limits<int8_t>::max() || in.base.base.als < 0) {
+        return false;
+    }
+    out->als = static_cast<int8_t>(in.base.base.als);
+    out->isVoice = static_cast<bool>(in.base.base.isVoice);
+    out->isVoicePrivacy = static_cast<bool>(in.base.base.isVoicePrivacy);
+    out->number = in.base.base.number;
+    out->numberPresentation = static_cast<aidl::android::hardware::radio::CallPresentation>(
+            in.base.base.numberPresentation);
+    out->name = in.base.base.name;
+    out->namePresentation = static_cast<aidl::android::hardware::radio::CallPresentation>(
+            in.base.base.namePresentation);
+    {
+        size_t size = in.base.base.uusInfo.size();
+        aidl::android::hardware::radio::UusInfo uusInfo;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.base.base.uusInfo[i], &uusInfo)) return false;
+            out->uusInfo.push_back(uusInfo);
+        }
+    }
+    out->audioQuality =
+            static_cast<aidl::android::hardware::radio::AudioQuality>(in.base.audioQuality);
+    out->forwardedNumber = in.forwardedNumber;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::PhysicalChannelConfig& in,
+        aidl::android::hardware::radio::PhysicalChannelConfig* out) {
+    out->status = static_cast<aidl::android::hardware::radio::CellConnectionStatus>(in.status);
+    out->rat = static_cast<aidl::android::hardware::radio::RadioTechnology>(in.rat);
+    out->downlinkChannelNumber = static_cast<int32_t>(in.downlinkChannelNumber);
+    out->uplinkChannelNumber = static_cast<int32_t>(in.uplinkChannelNumber);
+    out->cellBandwidthDownlinkKhz = static_cast<int32_t>(in.cellBandwidthDownlinkKhz);
+    out->cellBandwidthUplinkKhz = static_cast<int32_t>(in.cellBandwidthUplinkKhz);
+    {
+        size_t size = in.contextIds.size();
+        for (size_t i = 0; i < size; i++) {
+            out->contextIds.push_back(static_cast<int32_t>(in.contextIds[i]));
+        }
+    }
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.physicalCellId > std::numeric_limits<int32_t>::max() || in.physicalCellId < 0) {
+        return false;
+    }
+    out->physicalCellId = static_cast<int32_t>(in.physicalCellId);
+    if (!translate(in.band, &out->band)) return false;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::PhysicalChannelConfig::Band& in,
+        aidl::android::hardware::radio::PhysicalChannelConfigBand* out) {
+    switch (in.getDiscriminator()) {
+        case ::android::hardware::radio::V1_6::PhysicalChannelConfig::Band::hidl_discriminator::
+                geranBand:
+            *out = static_cast<aidl::android::hardware::radio::GeranBands>(in.geranBand());
+            break;
+        case ::android::hardware::radio::V1_6::PhysicalChannelConfig::Band::hidl_discriminator::
+                utranBand:
+            *out = static_cast<aidl::android::hardware::radio::UtranBands>(in.utranBand());
+            break;
+        case ::android::hardware::radio::V1_6::PhysicalChannelConfig::Band::hidl_discriminator::
+                eutranBand:
+            *out = static_cast<aidl::android::hardware::radio::EutranBands>(in.eutranBand());
+            break;
+        case ::android::hardware::radio::V1_6::PhysicalChannelConfig::Band::hidl_discriminator::
+                ngranBand:
+            *out = static_cast<aidl::android::hardware::radio::NgranBands>(in.ngranBand());
+            break;
+        default:
+            return false;
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::OptionalSliceInfo& in,
+        aidl::android::hardware::radio::OptionalSliceInfo* out) {
+    switch (in.getDiscriminator()) {
+        case ::android::hardware::radio::V1_6::OptionalSliceInfo::hidl_discriminator::noinit:
+            // Nothing to translate for Monostate.
+            break;
+        case ::android::hardware::radio::V1_6::OptionalSliceInfo::hidl_discriminator::value: {
+            aidl::android::hardware::radio::SliceInfo value;
+            if (!translate(in.value(), &value)) return false;
+            out->set<aidl::android::hardware::radio::OptionalSliceInfo::value>(value);
+        } break;
+        default:
+            return false;
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::SliceInfo& in,
+        aidl::android::hardware::radio::SliceInfo* out) {
+    out->sst = static_cast<aidl::android::hardware::radio::SliceServiceType>(in.sst);
+    out->sliceDifferentiator = static_cast<int32_t>(in.sliceDifferentiator);
+    out->mappedHplmnSst =
+            static_cast<aidl::android::hardware::radio::SliceServiceType>(in.mappedHplmnSst);
+    out->mappedHplmnSD = static_cast<int32_t>(in.mappedHplmnSD);
+    out->status = static_cast<aidl::android::hardware::radio::SliceStatus>(in.status);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::OptionalDnn& in,
+        aidl::android::hardware::radio::OptionalDnn* out) {
+    switch (in.getDiscriminator()) {
+        case ::android::hardware::radio::V1_6::OptionalDnn::hidl_discriminator::noinit:
+            // Nothing to translate for Monostate.
+            break;
+        case ::android::hardware::radio::V1_6::OptionalDnn::hidl_discriminator::value:
+            *out = in.value();
+            break;
+        default:
+            return false;
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::OptionalOsAppId& in,
+        aidl::android::hardware::radio::OptionalOsAppId* out) {
+    switch (in.getDiscriminator()) {
+        case ::android::hardware::radio::V1_6::OptionalOsAppId::hidl_discriminator::noinit:
+            // Nothing to translate for Monostate.
+            break;
+        case ::android::hardware::radio::V1_6::OptionalOsAppId::hidl_discriminator::value: {
+            aidl::android::hardware::radio::OsAppId value;
+            if (!translate(in.value(), &value)) return false;
+            out->set<aidl::android::hardware::radio::OptionalOsAppId::value>(value);
+        } break;
+        default:
+            return false;
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::OptionalTrafficDescriptor& in,
+        aidl::android::hardware::radio::OptionalTrafficDescriptor* out) {
+    switch (in.getDiscriminator()) {
+        case ::android::hardware::radio::V1_6::OptionalTrafficDescriptor::hidl_discriminator::
+                noinit:
+            // Nothing to translate for Monostate.
+            break;
+        case ::android::hardware::radio::V1_6::OptionalTrafficDescriptor::hidl_discriminator::
+                value: {
+            aidl::android::hardware::radio::TrafficDescriptor value;
+            if (!translate(in.value(), &value)) return false;
+            out->set<aidl::android::hardware::radio::OptionalTrafficDescriptor::value>(value);
+        } break;
+        default:
+            return false;
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::TrafficDescriptor& in,
+        aidl::android::hardware::radio::TrafficDescriptor* out) {
+    if (!translate(in.dnn, &out->dnn)) return false;
+    if (!translate(in.osAppId, &out->osAppId)) return false;
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::OsAppId& in,
+        aidl::android::hardware::radio::OsAppId* out) {
+    {
+        size_t size = in.osAppId.size();
+        for (size_t i = 0; i < size; i++) {
+            // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+            // suit your needs.
+            if (in.osAppId[i] > std::numeric_limits<int8_t>::max() || in.osAppId[i] < 0) {
+                return false;
+            }
+            out->osAppId.push_back(static_cast<int8_t>(in.osAppId[i]));
+        }
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::SlicingConfig& in,
+        aidl::android::hardware::radio::SlicingConfig* out) {
+    {
+        size_t size = in.urspRules.size();
+        aidl::android::hardware::radio::UrspRule urspRules;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.urspRules[i], &urspRules)) return false;
+            out->urspRules.push_back(urspRules);
+        }
+    }
+    {
+        size_t size = in.sliceInfo.size();
+        aidl::android::hardware::radio::SliceInfo sliceInfo;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.sliceInfo[i], &sliceInfo)) return false;
+            out->sliceInfo.push_back(sliceInfo);
+        }
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::UrspRule& in,
+        aidl::android::hardware::radio::UrspRule* out) {
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.precedence > std::numeric_limits<int8_t>::max() || in.precedence < 0) {
+        return false;
+    }
+    out->precedence = static_cast<int8_t>(in.precedence);
+    {
+        size_t size = in.trafficDescriptors.size();
+        aidl::android::hardware::radio::TrafficDescriptor trafficDescriptors;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.trafficDescriptors[i], &trafficDescriptors)) return false;
+            out->trafficDescriptors.push_back(trafficDescriptors);
+        }
+    }
+    {
+        size_t size = in.routeSelectionDescriptor.size();
+        aidl::android::hardware::radio::RouteSelectionDescriptor routeSelectionDescriptor;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.routeSelectionDescriptor[i], &routeSelectionDescriptor)) return false;
+            out->routeSelectionDescriptor.push_back(routeSelectionDescriptor);
+        }
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::RouteSelectionDescriptor& in,
+        aidl::android::hardware::radio::RouteSelectionDescriptor* out) {
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.precedence > std::numeric_limits<int8_t>::max() || in.precedence < 0) {
+        return false;
+    }
+    out->precedence = static_cast<int8_t>(in.precedence);
+    if (!translate(in.sessionType, &out->sessionType)) return false;
+    if (!translate(in.sscMode, &out->sscMode)) return false;
+    {
+        size_t size = in.sliceInfo.size();
+        aidl::android::hardware::radio::SliceInfo sliceInfo;
+        for (size_t i = 0; i < size; i++) {
+            if (!translate(in.sliceInfo[i], &sliceInfo)) return false;
+            out->sliceInfo.push_back(sliceInfo);
+        }
+    }
+    {
+        size_t size = in.dnn.size();
+        for (size_t i = 0; i < size; i++) {
+            out->dnn.push_back(in.dnn[i]);
+        }
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::OptionalPdpProtocolType& in,
+        aidl::android::hardware::radio::OptionalPdpProtocolType* out) {
+    switch (in.getDiscriminator()) {
+        case ::android::hardware::radio::V1_6::OptionalPdpProtocolType::hidl_discriminator::noinit:
+            // Nothing to translate for Monostate.
+            break;
+        case ::android::hardware::radio::V1_6::OptionalPdpProtocolType::hidl_discriminator::value:
+            *out = static_cast<aidl::android::hardware::radio::PdpProtocolType>(in.value());
+            break;
+        default:
+            return false;
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::OptionalSscMode& in,
+        aidl::android::hardware::radio::OptionalSscMode* out) {
+    switch (in.getDiscriminator()) {
+        case ::android::hardware::radio::V1_6::OptionalSscMode::hidl_discriminator::noinit:
+            // Nothing to translate for Monostate.
+            break;
+        case ::android::hardware::radio::V1_6::OptionalSscMode::hidl_discriminator::value:
+            *out = static_cast<aidl::android::hardware::radio::SscMode>(in.value());
+            break;
+        default:
+            return false;
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::ImsiEncryptionInfo& in,
+        aidl::android::hardware::radio::ImsiEncryptionInfo* out) {
+    out->mcc = in.base.mcc;
+    out->mnc = in.base.mnc;
+    {
+        size_t size = in.base.carrierKey.size();
+        for (size_t i = 0; i < size; i++) {
+            // FIXME This requires conversion between signed and unsigned. Change this if it doesn't
+            // suit your needs.
+            if (in.base.carrierKey[i] > std::numeric_limits<int8_t>::max() ||
+                in.base.carrierKey[i] < 0) {
+                return false;
+            }
+            out->carrierKey.push_back(static_cast<int8_t>(in.base.carrierKey[i]));
+        }
+    }
+    out->keyIdentifier = in.base.keyIdentifier;
+    out->expirationTime = static_cast<int64_t>(in.base.expirationTime);
+    out->keyType = static_cast<aidl::android::hardware::radio::PublicKeyType>(in.keyType);
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::PhonebookRecordInfo& in,
+        aidl::android::hardware::radio::PhonebookRecordInfo* out) {
+    // FIXME This requires conversion between signed and unsigned. Change this if it doesn't suit
+    // your needs.
+    if (in.recordId > std::numeric_limits<int32_t>::max() || in.recordId < 0) {
+        return false;
+    }
+    out->recordId = static_cast<int32_t>(in.recordId);
+    out->name = in.name;
+    out->number = in.number;
+    {
+        size_t size = in.emails.size();
+        for (size_t i = 0; i < size; i++) {
+            out->emails.push_back(in.emails[i]);
+        }
+    }
+    {
+        size_t size = in.additionalNumbers.size();
+        for (size_t i = 0; i < size; i++) {
+            out->additionalNumbers.push_back(in.additionalNumbers[i]);
+        }
+    }
+    return true;
+}
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::PhonebookCapacity& in,
+        aidl::android::hardware::radio::PhonebookCapacity* out) {
+    out->maxAdnRecords = static_cast<int32_t>(in.maxAdnRecords);
+    out->usedAdnRecords = static_cast<int32_t>(in.usedAdnRecords);
+    out->maxEmailRecords = static_cast<int32_t>(in.maxEmailRecords);
+    out->usedEmailRecords = static_cast<int32_t>(in.usedEmailRecords);
+    out->maxAdditionalNumberRecords = static_cast<int32_t>(in.maxAdditionalNumberRecords);
+    out->usedAdditionalNumberRecords = static_cast<int32_t>(in.usedAdditionalNumberRecords);
+    out->maxNameLen = static_cast<int32_t>(in.maxNameLen);
+    out->maxNumberLen = static_cast<int32_t>(in.maxNumberLen);
+    out->maxEmailLen = static_cast<int32_t>(in.maxEmailLen);
+    out->maxAdditionalNumberLen = static_cast<int32_t>(in.maxAdditionalNumberLen);
+    return true;
+}
+
+}  // namespace android::h2a
diff --git a/radio/aidl/include/android/hardware/radio/translate-ndk.h b/radio/aidl/include/android/hardware/radio/translate-ndk.h
new file mode 100644
index 0000000..b136029
--- /dev/null
+++ b/radio/aidl/include/android/hardware/radio/translate-ndk.h
@@ -0,0 +1,699 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#include <limits>
+#include "aidl/android/hardware/radio/AccessNetwork.h"
+#include "aidl/android/hardware/radio/ActivityStatsInfo.h"
+#include "aidl/android/hardware/radio/AddressProperty.h"
+#include "aidl/android/hardware/radio/ApnAuthType.h"
+#include "aidl/android/hardware/radio/ApnTypes.h"
+#include "aidl/android/hardware/radio/AppState.h"
+#include "aidl/android/hardware/radio/AppStatus.h"
+#include "aidl/android/hardware/radio/AppType.h"
+#include "aidl/android/hardware/radio/AudioQuality.h"
+#include "aidl/android/hardware/radio/BarringInfo.h"
+#include "aidl/android/hardware/radio/BarringInfoBarringType.h"
+#include "aidl/android/hardware/radio/BarringInfoBarringTypeSpecificInfo.h"
+#include "aidl/android/hardware/radio/BarringInfoBarringTypeSpecificInfoConditional.h"
+#include "aidl/android/hardware/radio/BarringInfoServiceType.h"
+#include "aidl/android/hardware/radio/Call.h"
+#include "aidl/android/hardware/radio/CallForwardInfo.h"
+#include "aidl/android/hardware/radio/CallForwardInfoStatus.h"
+#include "aidl/android/hardware/radio/CallPresentation.h"
+#include "aidl/android/hardware/radio/CallState.h"
+#include "aidl/android/hardware/radio/CardPowerState.h"
+#include "aidl/android/hardware/radio/CardState.h"
+#include "aidl/android/hardware/radio/CardStatus.h"
+#include "aidl/android/hardware/radio/Carrier.h"
+#include "aidl/android/hardware/radio/CarrierMatchType.h"
+#include "aidl/android/hardware/radio/CarrierRestrictions.h"
+#include "aidl/android/hardware/radio/CarrierRestrictionsWithPriority.h"
+#include "aidl/android/hardware/radio/CdmaBroadcastSmsConfigInfo.h"
+#include "aidl/android/hardware/radio/CdmaCallWaiting.h"
+#include "aidl/android/hardware/radio/CdmaCallWaitingNumberPlan.h"
+#include "aidl/android/hardware/radio/CdmaCallWaitingNumberPresentation.h"
+#include "aidl/android/hardware/radio/CdmaCallWaitingNumberType.h"
+#include "aidl/android/hardware/radio/CdmaDisplayInfoRecord.h"
+#include "aidl/android/hardware/radio/CdmaInfoRecName.h"
+#include "aidl/android/hardware/radio/CdmaInformationRecord.h"
+#include "aidl/android/hardware/radio/CdmaInformationRecords.h"
+#include "aidl/android/hardware/radio/CdmaLineControlInfoRecord.h"
+#include "aidl/android/hardware/radio/CdmaNumberInfoRecord.h"
+#include "aidl/android/hardware/radio/CdmaOtaProvisionStatus.h"
+#include "aidl/android/hardware/radio/CdmaRedirectingNumberInfoRecord.h"
+#include "aidl/android/hardware/radio/CdmaRedirectingReason.h"
+#include "aidl/android/hardware/radio/CdmaRoamingType.h"
+#include "aidl/android/hardware/radio/CdmaSignalInfoRecord.h"
+#include "aidl/android/hardware/radio/CdmaSignalStrength.h"
+#include "aidl/android/hardware/radio/CdmaSmsAck.h"
+#include "aidl/android/hardware/radio/CdmaSmsAddress.h"
+#include "aidl/android/hardware/radio/CdmaSmsDigitMode.h"
+#include "aidl/android/hardware/radio/CdmaSmsErrorClass.h"
+#include "aidl/android/hardware/radio/CdmaSmsMessage.h"
+#include "aidl/android/hardware/radio/CdmaSmsNumberMode.h"
+#include "aidl/android/hardware/radio/CdmaSmsNumberPlan.h"
+#include "aidl/android/hardware/radio/CdmaSmsNumberType.h"
+#include "aidl/android/hardware/radio/CdmaSmsSubaddress.h"
+#include "aidl/android/hardware/radio/CdmaSmsSubaddressType.h"
+#include "aidl/android/hardware/radio/CdmaSmsWriteArgs.h"
+#include "aidl/android/hardware/radio/CdmaSmsWriteArgsStatus.h"
+#include "aidl/android/hardware/radio/CdmaSubscriptionSource.h"
+#include "aidl/android/hardware/radio/CdmaT53AudioControlInfoRecord.h"
+#include "aidl/android/hardware/radio/CdmaT53ClirInfoRecord.h"
+#include "aidl/android/hardware/radio/CellConfigLte.h"
+#include "aidl/android/hardware/radio/CellConnectionStatus.h"
+#include "aidl/android/hardware/radio/CellIdentity.h"
+#include "aidl/android/hardware/radio/CellIdentityCdma.h"
+#include "aidl/android/hardware/radio/CellIdentityGsm.h"
+#include "aidl/android/hardware/radio/CellIdentityLte.h"
+#include "aidl/android/hardware/radio/CellIdentityNr.h"
+#include "aidl/android/hardware/radio/CellIdentityOperatorNames.h"
+#include "aidl/android/hardware/radio/CellIdentityTdscdma.h"
+#include "aidl/android/hardware/radio/CellIdentityWcdma.h"
+#include "aidl/android/hardware/radio/CellInfo.h"
+#include "aidl/android/hardware/radio/CellInfoCdma.h"
+#include "aidl/android/hardware/radio/CellInfoCellInfoRatSpecificInfo.h"
+#include "aidl/android/hardware/radio/CellInfoGsm.h"
+#include "aidl/android/hardware/radio/CellInfoInfo.h"
+#include "aidl/android/hardware/radio/CellInfoLte.h"
+#include "aidl/android/hardware/radio/CellInfoNr.h"
+#include "aidl/android/hardware/radio/CellInfoTdscdma.h"
+#include "aidl/android/hardware/radio/CellInfoType.h"
+#include "aidl/android/hardware/radio/CellInfoWcdma.h"
+#include "aidl/android/hardware/radio/CfData.h"
+#include "aidl/android/hardware/radio/ClipStatus.h"
+#include "aidl/android/hardware/radio/Clir.h"
+#include "aidl/android/hardware/radio/ClosedSubscriberGroupInfo.h"
+#include "aidl/android/hardware/radio/DataCallFailCause.h"
+#include "aidl/android/hardware/radio/DataConnActiveStatus.h"
+#include "aidl/android/hardware/radio/DataProfileId.h"
+#include "aidl/android/hardware/radio/DataProfileInfo.h"
+#include "aidl/android/hardware/radio/DataProfileInfoType.h"
+#include "aidl/android/hardware/radio/DataRegStateResult.h"
+#include "aidl/android/hardware/radio/DataRegStateResultVopsInfo.h"
+#include "aidl/android/hardware/radio/DataRequestReason.h"
+#include "aidl/android/hardware/radio/DataThrottlingAction.h"
+#include "aidl/android/hardware/radio/DeviceStateType.h"
+#include "aidl/android/hardware/radio/Dial.h"
+#include "aidl/android/hardware/radio/Domain.h"
+#include "aidl/android/hardware/radio/EmcIndicator.h"
+#include "aidl/android/hardware/radio/EmergencyCallRouting.h"
+#include "aidl/android/hardware/radio/EmergencyNumber.h"
+#include "aidl/android/hardware/radio/EmergencyNumberSource.h"
+#include "aidl/android/hardware/radio/EmergencyServiceCategory.h"
+#include "aidl/android/hardware/radio/EmfIndicator.h"
+#include "aidl/android/hardware/radio/EpsQos.h"
+#include "aidl/android/hardware/radio/EutranBands.h"
+#include "aidl/android/hardware/radio/EvdoSignalStrength.h"
+#include "aidl/android/hardware/radio/FrequencyRange.h"
+#include "aidl/android/hardware/radio/GeranBands.h"
+#include "aidl/android/hardware/radio/GsmBroadcastSmsConfigInfo.h"
+#include "aidl/android/hardware/radio/GsmSignalStrength.h"
+#include "aidl/android/hardware/radio/GsmSmsMessage.h"
+#include "aidl/android/hardware/radio/HandoverFailureMode.h"
+#include "aidl/android/hardware/radio/HardwareConfig.h"
+#include "aidl/android/hardware/radio/HardwareConfigModem.h"
+#include "aidl/android/hardware/radio/HardwareConfigSim.h"
+#include "aidl/android/hardware/radio/HardwareConfigState.h"
+#include "aidl/android/hardware/radio/HardwareConfigType.h"
+#include "aidl/android/hardware/radio/IccIo.h"
+#include "aidl/android/hardware/radio/IccIoResult.h"
+#include "aidl/android/hardware/radio/ImsSmsMessage.h"
+#include "aidl/android/hardware/radio/ImsiEncryptionInfo.h"
+#include "aidl/android/hardware/radio/IncrementalResultsPeriodicityRange.h"
+#include "aidl/android/hardware/radio/IndicationFilter.h"
+#include "aidl/android/hardware/radio/KeepaliveRequest.h"
+#include "aidl/android/hardware/radio/KeepaliveStatus.h"
+#include "aidl/android/hardware/radio/KeepaliveStatusCode.h"
+#include "aidl/android/hardware/radio/KeepaliveType.h"
+#include "aidl/android/hardware/radio/LastCallFailCause.h"
+#include "aidl/android/hardware/radio/LastCallFailCauseInfo.h"
+#include "aidl/android/hardware/radio/LceDataInfo.h"
+#include "aidl/android/hardware/radio/LceStatus.h"
+#include "aidl/android/hardware/radio/LceStatusInfo.h"
+#include "aidl/android/hardware/radio/LinkAddress.h"
+#include "aidl/android/hardware/radio/LinkCapacityEstimate.h"
+#include "aidl/android/hardware/radio/LteSignalStrength.h"
+#include "aidl/android/hardware/radio/LteVopsInfo.h"
+#include "aidl/android/hardware/radio/MaxSearchTimeRange.h"
+#include "aidl/android/hardware/radio/MaybePort.h"
+#include "aidl/android/hardware/radio/MvnoType.h"
+#include "aidl/android/hardware/radio/NeighboringCell.h"
+#include "aidl/android/hardware/radio/NetworkScanRequest.h"
+#include "aidl/android/hardware/radio/NetworkScanResult.h"
+#include "aidl/android/hardware/radio/NgranBands.h"
+#include "aidl/android/hardware/radio/NrDualConnectivityState.h"
+#include "aidl/android/hardware/radio/NrIndicators.h"
+#include "aidl/android/hardware/radio/NrQos.h"
+#include "aidl/android/hardware/radio/NrSignalStrength.h"
+#include "aidl/android/hardware/radio/NrVopsInfo.h"
+#include "aidl/android/hardware/radio/NvItem.h"
+#include "aidl/android/hardware/radio/NvWriteItem.h"
+#include "aidl/android/hardware/radio/OperatorInfo.h"
+#include "aidl/android/hardware/radio/OperatorStatus.h"
+#include "aidl/android/hardware/radio/OptionalCsgInfo.h"
+#include "aidl/android/hardware/radio/OptionalDnn.h"
+#include "aidl/android/hardware/radio/OptionalOsAppId.h"
+#include "aidl/android/hardware/radio/OptionalPdpProtocolType.h"
+#include "aidl/android/hardware/radio/OptionalSliceInfo.h"
+#include "aidl/android/hardware/radio/OptionalSscMode.h"
+#include "aidl/android/hardware/radio/OptionalTrafficDescriptor.h"
+#include "aidl/android/hardware/radio/OsAppId.h"
+#include "aidl/android/hardware/radio/P2Constant.h"
+#include "aidl/android/hardware/radio/PbReceivedStatus.h"
+#include "aidl/android/hardware/radio/PcoDataInfo.h"
+#include "aidl/android/hardware/radio/PdpProtocolType.h"
+#include "aidl/android/hardware/radio/PersoSubstate.h"
+#include "aidl/android/hardware/radio/PhoneRestrictedState.h"
+#include "aidl/android/hardware/radio/PhonebookCapacity.h"
+#include "aidl/android/hardware/radio/PhonebookRecordInfo.h"
+#include "aidl/android/hardware/radio/PhysicalChannelConfig.h"
+#include "aidl/android/hardware/radio/PhysicalChannelConfigBand.h"
+#include "aidl/android/hardware/radio/PinState.h"
+#include "aidl/android/hardware/radio/PortRange.h"
+#include "aidl/android/hardware/radio/PreferredNetworkType.h"
+#include "aidl/android/hardware/radio/PrlIndicator.h"
+#include "aidl/android/hardware/radio/PublicKeyType.h"
+#include "aidl/android/hardware/radio/Qos.h"
+#include "aidl/android/hardware/radio/QosBandwidth.h"
+#include "aidl/android/hardware/radio/QosFilter.h"
+#include "aidl/android/hardware/radio/QosFilterDirection.h"
+#include "aidl/android/hardware/radio/QosFilterIpsecSpi.h"
+#include "aidl/android/hardware/radio/QosFilterIpv6FlowLabel.h"
+#include "aidl/android/hardware/radio/QosFilterTypeOfService.h"
+#include "aidl/android/hardware/radio/QosFlowIdRange.h"
+#include "aidl/android/hardware/radio/QosPortRange.h"
+#include "aidl/android/hardware/radio/QosProtocol.h"
+#include "aidl/android/hardware/radio/QosSession.h"
+#include "aidl/android/hardware/radio/RadioAccessFamily.h"
+#include "aidl/android/hardware/radio/RadioAccessNetworks.h"
+#include "aidl/android/hardware/radio/RadioAccessSpecifier.h"
+#include "aidl/android/hardware/radio/RadioAccessSpecifierBands.h"
+#include "aidl/android/hardware/radio/RadioBandMode.h"
+#include "aidl/android/hardware/radio/RadioCapability.h"
+#include "aidl/android/hardware/radio/RadioCapabilityPhase.h"
+#include "aidl/android/hardware/radio/RadioCapabilityStatus.h"
+#include "aidl/android/hardware/radio/RadioCdmaSmsConst.h"
+#include "aidl/android/hardware/radio/RadioConst.h"
+#include "aidl/android/hardware/radio/RadioError.h"
+#include "aidl/android/hardware/radio/RadioFrequencyInfo.h"
+#include "aidl/android/hardware/radio/RadioIndicationType.h"
+#include "aidl/android/hardware/radio/RadioResponseInfo.h"
+#include "aidl/android/hardware/radio/RadioResponseInfoModem.h"
+#include "aidl/android/hardware/radio/RadioResponseType.h"
+#include "aidl/android/hardware/radio/RadioState.h"
+#include "aidl/android/hardware/radio/RadioTechnology.h"
+#include "aidl/android/hardware/radio/RadioTechnologyFamily.h"
+#include "aidl/android/hardware/radio/RegState.h"
+#include "aidl/android/hardware/radio/RegStateResult.h"
+#include "aidl/android/hardware/radio/RegStateResultAccessTechnologySpecificInfo.h"
+#include "aidl/android/hardware/radio/RegStateResultAccessTechnologySpecificInfoCdma2000RegistrationInfo.h"
+#include "aidl/android/hardware/radio/RegStateResultAccessTechnologySpecificInfoEutranRegistrationInfo.h"
+#include "aidl/android/hardware/radio/RegistrationFailCause.h"
+#include "aidl/android/hardware/radio/ResetNvType.h"
+#include "aidl/android/hardware/radio/RestrictedState.h"
+#include "aidl/android/hardware/radio/RouteSelectionDescriptor.h"
+#include "aidl/android/hardware/radio/SapApduType.h"
+#include "aidl/android/hardware/radio/SapConnectRsp.h"
+#include "aidl/android/hardware/radio/SapDisconnectType.h"
+#include "aidl/android/hardware/radio/SapResultCode.h"
+#include "aidl/android/hardware/radio/SapStatus.h"
+#include "aidl/android/hardware/radio/SapTransferProtocol.h"
+#include "aidl/android/hardware/radio/ScanIntervalRange.h"
+#include "aidl/android/hardware/radio/ScanStatus.h"
+#include "aidl/android/hardware/radio/ScanType.h"
+#include "aidl/android/hardware/radio/SelectUiccSub.h"
+#include "aidl/android/hardware/radio/SendSmsResult.h"
+#include "aidl/android/hardware/radio/SetupDataCallResult.h"
+#include "aidl/android/hardware/radio/SignalMeasurementType.h"
+#include "aidl/android/hardware/radio/SignalStrength.h"
+#include "aidl/android/hardware/radio/SignalThresholdInfo.h"
+#include "aidl/android/hardware/radio/SimApdu.h"
+#include "aidl/android/hardware/radio/SimLockMultiSimPolicy.h"
+#include "aidl/android/hardware/radio/SimRefreshResult.h"
+#include "aidl/android/hardware/radio/SimRefreshType.h"
+#include "aidl/android/hardware/radio/SliceInfo.h"
+#include "aidl/android/hardware/radio/SliceServiceType.h"
+#include "aidl/android/hardware/radio/SliceStatus.h"
+#include "aidl/android/hardware/radio/SlicingConfig.h"
+#include "aidl/android/hardware/radio/SmsAcknowledgeFailCause.h"
+#include "aidl/android/hardware/radio/SmsWriteArgs.h"
+#include "aidl/android/hardware/radio/SmsWriteArgsStatus.h"
+#include "aidl/android/hardware/radio/SrvccState.h"
+#include "aidl/android/hardware/radio/SsInfoData.h"
+#include "aidl/android/hardware/radio/SsRequestType.h"
+#include "aidl/android/hardware/radio/SsServiceType.h"
+#include "aidl/android/hardware/radio/SsTeleserviceType.h"
+#include "aidl/android/hardware/radio/SscMode.h"
+#include "aidl/android/hardware/radio/StkCcUnsolSsResult.h"
+#include "aidl/android/hardware/radio/SubscriptionType.h"
+#include "aidl/android/hardware/radio/SuppServiceClass.h"
+#include "aidl/android/hardware/radio/SuppSvcNotification.h"
+#include "aidl/android/hardware/radio/TdscdmaSignalStrength.h"
+#include "aidl/android/hardware/radio/TimeStampType.h"
+#include "aidl/android/hardware/radio/TrafficDescriptor.h"
+#include "aidl/android/hardware/radio/TtyMode.h"
+#include "aidl/android/hardware/radio/UiccSubActStatus.h"
+#include "aidl/android/hardware/radio/UrspRule.h"
+#include "aidl/android/hardware/radio/UssdModeType.h"
+#include "aidl/android/hardware/radio/UtranBands.h"
+#include "aidl/android/hardware/radio/UusDcs.h"
+#include "aidl/android/hardware/radio/UusInfo.h"
+#include "aidl/android/hardware/radio/UusType.h"
+#include "aidl/android/hardware/radio/VoiceRegStateResult.h"
+#include "aidl/android/hardware/radio/VopsIndicator.h"
+#include "aidl/android/hardware/radio/WcdmaSignalStrength.h"
+#include "android/hardware/radio/1.0/types.h"
+#include "android/hardware/radio/1.1/types.h"
+#include "android/hardware/radio/1.2/types.h"
+#include "android/hardware/radio/1.3/types.h"
+#include "android/hardware/radio/1.4/types.h"
+#include "android/hardware/radio/1.5/types.h"
+#include "android/hardware/radio/1.6/types.h"
+
+namespace android::h2a {
+
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::IccIo& in,
+        aidl::android::hardware::radio::IccIo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::NeighboringCell& in,
+        aidl::android::hardware::radio::NeighboringCell* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::UusInfo& in,
+        aidl::android::hardware::radio::UusInfo* out);
+__attribute__((warn_unused_result)) bool translate(const ::android::hardware::radio::V1_0::Dial& in,
+                                                   aidl::android::hardware::radio::Dial* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::LastCallFailCauseInfo& in,
+        aidl::android::hardware::radio::LastCallFailCauseInfo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::GsmSignalStrength& in,
+        aidl::android::hardware::radio::GsmSignalStrength* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaSignalStrength& in,
+        aidl::android::hardware::radio::CdmaSignalStrength* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::EvdoSignalStrength& in,
+        aidl::android::hardware::radio::EvdoSignalStrength* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::SendSmsResult& in,
+        aidl::android::hardware::radio::SendSmsResult* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::IccIoResult& in,
+        aidl::android::hardware::radio::IccIoResult* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CallForwardInfo& in,
+        aidl::android::hardware::radio::CallForwardInfo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::OperatorInfo& in,
+        aidl::android::hardware::radio::OperatorInfo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::SmsWriteArgs& in,
+        aidl::android::hardware::radio::SmsWriteArgs* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaSmsAddress& in,
+        aidl::android::hardware::radio::CdmaSmsAddress* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaSmsSubaddress& in,
+        aidl::android::hardware::radio::CdmaSmsSubaddress* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaSmsMessage& in,
+        aidl::android::hardware::radio::CdmaSmsMessage* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaSmsAck& in,
+        aidl::android::hardware::radio::CdmaSmsAck* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaBroadcastSmsConfigInfo& in,
+        aidl::android::hardware::radio::CdmaBroadcastSmsConfigInfo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaSmsWriteArgs& in,
+        aidl::android::hardware::radio::CdmaSmsWriteArgs* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::GsmBroadcastSmsConfigInfo& in,
+        aidl::android::hardware::radio::GsmBroadcastSmsConfigInfo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::GsmSmsMessage& in,
+        aidl::android::hardware::radio::GsmSmsMessage* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::ImsSmsMessage& in,
+        aidl::android::hardware::radio::ImsSmsMessage* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::SimApdu& in,
+        aidl::android::hardware::radio::SimApdu* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::NvWriteItem& in,
+        aidl::android::hardware::radio::NvWriteItem* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::SelectUiccSub& in,
+        aidl::android::hardware::radio::SelectUiccSub* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::HardwareConfigModem& in,
+        aidl::android::hardware::radio::HardwareConfigModem* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::HardwareConfigSim& in,
+        aidl::android::hardware::radio::HardwareConfigSim* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::HardwareConfig& in,
+        aidl::android::hardware::radio::HardwareConfig* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::LceStatusInfo& in,
+        aidl::android::hardware::radio::LceStatusInfo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::LceDataInfo& in,
+        aidl::android::hardware::radio::LceDataInfo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::ActivityStatsInfo& in,
+        aidl::android::hardware::radio::ActivityStatsInfo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::Carrier& in,
+        aidl::android::hardware::radio::Carrier* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CarrierRestrictions& in,
+        aidl::android::hardware::radio::CarrierRestrictions* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::SuppSvcNotification& in,
+        aidl::android::hardware::radio::SuppSvcNotification* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::SimRefreshResult& in,
+        aidl::android::hardware::radio::SimRefreshResult* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaSignalInfoRecord& in,
+        aidl::android::hardware::radio::CdmaSignalInfoRecord* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaCallWaiting& in,
+        aidl::android::hardware::radio::CdmaCallWaiting* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaDisplayInfoRecord& in,
+        aidl::android::hardware::radio::CdmaDisplayInfoRecord* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaNumberInfoRecord& in,
+        aidl::android::hardware::radio::CdmaNumberInfoRecord* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaRedirectingNumberInfoRecord& in,
+        aidl::android::hardware::radio::CdmaRedirectingNumberInfoRecord* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaLineControlInfoRecord& in,
+        aidl::android::hardware::radio::CdmaLineControlInfoRecord* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaT53ClirInfoRecord& in,
+        aidl::android::hardware::radio::CdmaT53ClirInfoRecord* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaT53AudioControlInfoRecord& in,
+        aidl::android::hardware::radio::CdmaT53AudioControlInfoRecord* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaInformationRecord& in,
+        aidl::android::hardware::radio::CdmaInformationRecord* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CdmaInformationRecords& in,
+        aidl::android::hardware::radio::CdmaInformationRecords* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::CfData& in,
+        aidl::android::hardware::radio::CfData* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::SsInfoData& in,
+        aidl::android::hardware::radio::SsInfoData* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::StkCcUnsolSsResult& in,
+        aidl::android::hardware::radio::StkCcUnsolSsResult* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_0::PcoDataInfo& in,
+        aidl::android::hardware::radio::PcoDataInfo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_1::KeepaliveRequest& in,
+        aidl::android::hardware::radio::KeepaliveRequest* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_1::KeepaliveStatus& in,
+        aidl::android::hardware::radio::KeepaliveStatus* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_2::CellIdentityOperatorNames& in,
+        aidl::android::hardware::radio::CellIdentityOperatorNames* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_2::CellIdentityCdma& in,
+        aidl::android::hardware::radio::CellIdentityCdma* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_2::CellInfoCdma& in,
+        aidl::android::hardware::radio::CellInfoCdma* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_2::WcdmaSignalStrength& in,
+        aidl::android::hardware::radio::WcdmaSignalStrength* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_2::TdscdmaSignalStrength& in,
+        aidl::android::hardware::radio::TdscdmaSignalStrength* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_2::VoiceRegStateResult& in,
+        aidl::android::hardware::radio::VoiceRegStateResult* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_3::RadioResponseInfoModem& in,
+        aidl::android::hardware::radio::RadioResponseInfoModem* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_4::EmergencyNumber& in,
+        aidl::android::hardware::radio::EmergencyNumber* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_4::RadioFrequencyInfo& in,
+        aidl::android::hardware::radio::RadioFrequencyInfo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_4::LteVopsInfo& in,
+        aidl::android::hardware::radio::LteVopsInfo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_4::NrIndicators& in,
+        aidl::android::hardware::radio::NrIndicators* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_4::DataRegStateResult& in,
+        aidl::android::hardware::radio::DataRegStateResult* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_4::DataRegStateResult::VopsInfo& in,
+        aidl::android::hardware::radio::DataRegStateResultVopsInfo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_4::CellConfigLte& in,
+        aidl::android::hardware::radio::CellConfigLte* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_4::CellInfo::Info& in,
+        aidl::android::hardware::radio::CellInfoInfo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_4::RadioCapability& in,
+        aidl::android::hardware::radio::RadioCapability* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_4::CarrierRestrictionsWithPriority& in,
+        aidl::android::hardware::radio::CarrierRestrictionsWithPriority* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::RadioAccessSpecifier& in,
+        aidl::android::hardware::radio::RadioAccessSpecifier* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::RadioAccessSpecifier::Bands& in,
+        aidl::android::hardware::radio::RadioAccessSpecifierBands* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::SignalThresholdInfo& in,
+        aidl::android::hardware::radio::SignalThresholdInfo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::NetworkScanRequest& in,
+        aidl::android::hardware::radio::NetworkScanRequest* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::DataProfileInfo& in,
+        aidl::android::hardware::radio::DataProfileInfo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::LinkAddress& in,
+        aidl::android::hardware::radio::LinkAddress* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::ClosedSubscriberGroupInfo& in,
+        aidl::android::hardware::radio::ClosedSubscriberGroupInfo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::OptionalCsgInfo& in,
+        aidl::android::hardware::radio::OptionalCsgInfo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::CellIdentityGsm& in,
+        aidl::android::hardware::radio::CellIdentityGsm* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::CellIdentityWcdma& in,
+        aidl::android::hardware::radio::CellIdentityWcdma* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::CellIdentityTdscdma& in,
+        aidl::android::hardware::radio::CellIdentityTdscdma* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::CellIdentityLte& in,
+        aidl::android::hardware::radio::CellIdentityLte* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::CellIdentityNr& in,
+        aidl::android::hardware::radio::CellIdentityNr* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::CellInfoGsm& in,
+        aidl::android::hardware::radio::CellInfoGsm* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::CellInfoWcdma& in,
+        aidl::android::hardware::radio::CellInfoWcdma* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::CellInfoTdscdma& in,
+        aidl::android::hardware::radio::CellInfoTdscdma* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::CellIdentity& in,
+        aidl::android::hardware::radio::CellIdentity* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::BarringInfo& in,
+        aidl::android::hardware::radio::BarringInfo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::BarringInfo::BarringTypeSpecificInfo::Conditional&
+                in,
+        aidl::android::hardware::radio::BarringInfoBarringTypeSpecificInfoConditional* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::BarringInfo::BarringTypeSpecificInfo& in,
+        aidl::android::hardware::radio::BarringInfoBarringTypeSpecificInfo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::RegStateResult::AccessTechnologySpecificInfo::
+                Cdma2000RegistrationInfo& in,
+        aidl::android::hardware::radio::
+                RegStateResultAccessTechnologySpecificInfoCdma2000RegistrationInfo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::RegStateResult::AccessTechnologySpecificInfo::
+                EutranRegistrationInfo& in,
+        aidl::android::hardware::radio::
+                RegStateResultAccessTechnologySpecificInfoEutranRegistrationInfo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::AppStatus& in,
+        aidl::android::hardware::radio::AppStatus* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_5::CardStatus& in,
+        aidl::android::hardware::radio::CardStatus* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::QosBandwidth& in,
+        aidl::android::hardware::radio::QosBandwidth* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::EpsQos& in,
+        aidl::android::hardware::radio::EpsQos* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::NrQos& in,
+        aidl::android::hardware::radio::NrQos* out);
+__attribute__((warn_unused_result)) bool translate(const ::android::hardware::radio::V1_6::Qos& in,
+                                                   aidl::android::hardware::radio::Qos* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::RadioResponseInfo& in,
+        aidl::android::hardware::radio::RadioResponseInfo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::PortRange& in,
+        aidl::android::hardware::radio::PortRange* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::MaybePort& in,
+        aidl::android::hardware::radio::MaybePort* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::QosFilter& in,
+        aidl::android::hardware::radio::QosFilter* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::QosFilter::TypeOfService& in,
+        aidl::android::hardware::radio::QosFilterTypeOfService* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::QosFilter::Ipv6FlowLabel& in,
+        aidl::android::hardware::radio::QosFilterIpv6FlowLabel* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::QosFilter::IpsecSpi& in,
+        aidl::android::hardware::radio::QosFilterIpsecSpi* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::QosSession& in,
+        aidl::android::hardware::radio::QosSession* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::SetupDataCallResult& in,
+        aidl::android::hardware::radio::SetupDataCallResult* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::LinkCapacityEstimate& in,
+        aidl::android::hardware::radio::LinkCapacityEstimate* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::NrVopsInfo& in,
+        aidl::android::hardware::radio::NrVopsInfo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::LteSignalStrength& in,
+        aidl::android::hardware::radio::LteSignalStrength* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::NrSignalStrength& in,
+        aidl::android::hardware::radio::NrSignalStrength* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::SignalStrength& in,
+        aidl::android::hardware::radio::SignalStrength* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::CellInfoLte& in,
+        aidl::android::hardware::radio::CellInfoLte* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::CellInfoNr& in,
+        aidl::android::hardware::radio::CellInfoNr* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::CellInfo& in,
+        aidl::android::hardware::radio::CellInfo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::CellInfo::CellInfoRatSpecificInfo& in,
+        aidl::android::hardware::radio::CellInfoCellInfoRatSpecificInfo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::NetworkScanResult& in,
+        aidl::android::hardware::radio::NetworkScanResult* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::RegStateResult& in,
+        aidl::android::hardware::radio::RegStateResult* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::RegStateResult::AccessTechnologySpecificInfo& in,
+        aidl::android::hardware::radio::RegStateResultAccessTechnologySpecificInfo* out);
+__attribute__((warn_unused_result)) bool translate(const ::android::hardware::radio::V1_6::Call& in,
+                                                   aidl::android::hardware::radio::Call* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::PhysicalChannelConfig& in,
+        aidl::android::hardware::radio::PhysicalChannelConfig* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::PhysicalChannelConfig::Band& in,
+        aidl::android::hardware::radio::PhysicalChannelConfigBand* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::OptionalSliceInfo& in,
+        aidl::android::hardware::radio::OptionalSliceInfo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::SliceInfo& in,
+        aidl::android::hardware::radio::SliceInfo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::OptionalDnn& in,
+        aidl::android::hardware::radio::OptionalDnn* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::OptionalOsAppId& in,
+        aidl::android::hardware::radio::OptionalOsAppId* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::OptionalTrafficDescriptor& in,
+        aidl::android::hardware::radio::OptionalTrafficDescriptor* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::TrafficDescriptor& in,
+        aidl::android::hardware::radio::TrafficDescriptor* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::OsAppId& in,
+        aidl::android::hardware::radio::OsAppId* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::SlicingConfig& in,
+        aidl::android::hardware::radio::SlicingConfig* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::UrspRule& in,
+        aidl::android::hardware::radio::UrspRule* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::RouteSelectionDescriptor& in,
+        aidl::android::hardware::radio::RouteSelectionDescriptor* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::OptionalPdpProtocolType& in,
+        aidl::android::hardware::radio::OptionalPdpProtocolType* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::OptionalSscMode& in,
+        aidl::android::hardware::radio::OptionalSscMode* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::ImsiEncryptionInfo& in,
+        aidl::android::hardware::radio::ImsiEncryptionInfo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::PhonebookRecordInfo& in,
+        aidl::android::hardware::radio::PhonebookRecordInfo* out);
+__attribute__((warn_unused_result)) bool translate(
+        const ::android::hardware::radio::V1_6::PhonebookCapacity& in,
+        aidl::android::hardware::radio::PhonebookCapacity* out);
+
+}  // namespace android::h2a