diff options
| author | 2019-01-15 20:14:34 -0800 | |
|---|---|---|
| committer | 2019-01-18 12:29:28 -0800 | |
| commit | cf21ad751a1f87ad17c110dd83ede2cb866909f6 (patch) | |
| tree | 28bdc97ff64a7f2cb0db7205f45c3132057beb4b | |
| parent | 3a1d61d77229c9659b2123b09812745c05dd4e72 (diff) | |
Add System API to enable / disable a logical modem.
Bug: 122926141
Test: unittest
Change-Id: Ifeb3b135ba9ecba8982a911f369fa266468d2e45
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; |