summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Malcolm Chen <refuhoo@google.com> 2019-01-15 20:14:34 -0800
committer Malcolm Chen <refuhoo@google.com> 2019-01-18 12:29:28 -0800
commitcf21ad751a1f87ad17c110dd83ede2cb866909f6 (patch)
tree28bdc97ff64a7f2cb0db7205f45c3132057beb4b
parent3a1d61d77229c9659b2123b09812745c05dd4e72 (diff)
Add System API to enable / disable a logical modem.
Bug: 122926141 Test: unittest Change-Id: Ifeb3b135ba9ecba8982a911f369fa266468d2e45
-rw-r--r--api/system-current.txt1
-rw-r--r--telephony/java/android/telephony/TelephonyManager.java29
-rw-r--r--telephony/java/com/android/internal/telephony/ITelephony.aidl5
-rw-r--r--telephony/java/com/android/internal/telephony/RILConstants.java1
4 files changed, 36 insertions, 0 deletions
diff --git a/api/system-current.txt b/api/system-current.txt
index eaca6ab96f0e..541afc0f6431 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -6827,6 +6827,7 @@ package android.telephony {
method public void dial(java.lang.String);
method public boolean disableDataConnectivity();
method public boolean enableDataConnectivity();
+ method public boolean enableModemForSlot(int, boolean);
method public void enableVideoCalling(boolean);
method public java.lang.String getAidForAppType(int);
method public java.util.List<android.service.carrier.CarrierIdentifier> getAllowedCarriers(int);
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index 3311218bdb3c..d12d7507f417 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -9972,4 +9972,33 @@ public class TelephonyManager {
}
return ret;
}
+
+ /**
+ * Enable or disable a logical modem stack. When a logical modem is disabled, the corresponding
+ * SIM will still be visible to the user but its mapping modem will not have any radio activity.
+ * For example, we will disable a modem when user or system believes the corresponding SIM
+ * is temporarily not needed (e.g. out of coverage), and will enable it back on when needed.
+ *
+ * Requires that the calling app has permission
+ * {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE}.
+ * @param slotIndex which corresponding modem will operate on.
+ * @param enable whether to enable or disable the modem stack.
+ * @return whether the operation is successful.
+ *
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
+ public boolean enableModemForSlot(int slotIndex, boolean enable) {
+ boolean ret = false;
+ try {
+ ITelephony telephony = getITelephony();
+ if (telephony != null) {
+ ret = telephony.enableModemForSlot(slotIndex, enable);
+ }
+ } catch (RemoteException ex) {
+ Log.e(TAG, "enableModem RemoteException", ex);
+ }
+ return ret;
+ }
}
diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl
index f8e4adcb6785..a3bd1420ec38 100644
--- a/telephony/java/com/android/internal/telephony/ITelephony.aidl
+++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl
@@ -1787,4 +1787,9 @@ interface ITelephony {
* Get the full emergency number list for Test Mode.
*/
List<String> getEmergencyNumberListTestMode();
+
+ /**
+ * Enable or disable a logical modem stack associated with the slotIndex.
+ */
+ boolean enableModemForSlot(int slotIndex, boolean enable);
}
diff --git a/telephony/java/com/android/internal/telephony/RILConstants.java b/telephony/java/com/android/internal/telephony/RILConstants.java
index 1c103a9fc747..930003462110 100644
--- a/telephony/java/com/android/internal/telephony/RILConstants.java
+++ b/telephony/java/com/android/internal/telephony/RILConstants.java
@@ -489,6 +489,7 @@ public interface RILConstants {
int RIL_REQUEST_STOP_NETWORK_SCAN = 143;
int RIL_REQUEST_START_KEEPALIVE = 144;
int RIL_REQUEST_STOP_KEEPALIVE = 145;
+ int RIL_REQUEST_ENABLE_MODEM = 146;
/* The following requests are not defined in RIL.h */
int RIL_REQUEST_HAL_NON_RIL_BASE = 200;