diff --git a/telephony/java/com/android/internal/telephony/BaseCommands.java b/telephony/java/com/android/internal/telephony/BaseCommands.java index f111dd6341fe0..07b61836e4a67 100644 --- a/telephony/java/com/android/internal/telephony/BaseCommands.java +++ b/telephony/java/com/android/internal/telephony/BaseCommands.java @@ -683,6 +683,13 @@ public abstract class BaseCommands implements CommandsInterface { mRilConnectedRegistrants.remove(h); } + /** + * {@inheritDoc} + */ + @Override + public void setCurrentPreferredNetworkType() { + } + //***** Protected Methods /** * Store new RadioState and send notification based on the changes diff --git a/telephony/java/com/android/internal/telephony/CommandsInterface.java b/telephony/java/com/android/internal/telephony/CommandsInterface.java index 33ead75e8008c..d6e6ae05b854e 100644 --- a/telephony/java/com/android/internal/telephony/CommandsInterface.java +++ b/telephony/java/com/android/internal/telephony/CommandsInterface.java @@ -1310,6 +1310,12 @@ public interface CommandsInterface { */ void queryAvailableBandMode (Message response); + /** + * Set the current preferred network type. This will be the last + * networkType that was passed to setPreferredNetworkType. + */ + void setCurrentPreferredNetworkType(); + /** * Requests to set the preferred network type for searching and registering * (CS/PS domain, RAT, and operation mode) diff --git a/telephony/java/com/android/internal/telephony/RIL.java b/telephony/java/com/android/internal/telephony/RIL.java index 9f93fb8d7c782..f2e7f45923aa4 100644 --- a/telephony/java/com/android/internal/telephony/RIL.java +++ b/telephony/java/com/android/internal/telephony/RIL.java @@ -1820,6 +1820,16 @@ public final class RIL extends BaseCommands implements CommandsInterface { send(rr); } + /** + * {@inheritDoc} + */ + @Override + public void setCurrentPreferredNetworkType() { + if (RILJ_LOGD) riljLog("setCurrentPreferredNetworkType: " + mSetPreferredNetworkType); + setPreferredNetworkType(mSetPreferredNetworkType, null); + } + private int mSetPreferredNetworkType; + /** * {@inheritDoc} */ @@ -1830,6 +1840,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { rr.mp.writeInt(1); rr.mp.writeInt(networkType); + mSetPreferredNetworkType = networkType; mPreferredNetworkType = networkType; if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java index 3d6cd6821c40a..d939e98341811 100755 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java @@ -257,6 +257,9 @@ public class CdmaServiceStateTracker extends ServiceStateTracker { break; case EVENT_RUIM_READY: + // TODO: Consider calling setCurrentPreferredNetworkType as we do in GsmSST. + // cm.setCurrentPreferredNetworkType(); + // The RUIM is now ready i.e if it was locked it has been // unlocked. At this stage, the radio is already powered on. isSubscriptionFromRuim = true; @@ -277,6 +280,9 @@ public class CdmaServiceStateTracker extends ServiceStateTracker { break; case EVENT_NV_READY: + // TODO: Consider calling setCurrentPreferredNetworkType as we do in GsmSST. + // cm.setCurrentPreferredNetworkType(); + isSubscriptionFromRuim = false; // For Non-RUIM phones, the subscription information is stored in // Non Volatile. Here when Non-Volatile is ready, we can poll the CDMA diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java index eea2780fb3dfe..84127cff8c630 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java @@ -270,6 +270,9 @@ final class GsmServiceStateTracker extends ServiceStateTracker { break; case EVENT_SIM_READY: + // Set the network type, in case the radio does not restore it. + cm.setCurrentPreferredNetworkType(); + // The SIM is now ready i.e if it was locked // it has been unlocked. At this stage, the radio is already // powered on.