diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index bc50906e0c7d1..83163fcd1e210 100755 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -702,6 +702,21 @@ public int getLteOnCdmaMode() { } } + /** + * Return if the current radio is LTE on GSM + * @hide + */ + public int getLteOnGsmMode() { + try { + return getITelephony().getLteOnGsmMode(); + } catch (RemoteException ex) { + return 0; + } catch (NullPointerException ex) { + // This could happen before phone restarts due to crashing + return 0; + } + } + // // // Subscriber Info diff --git a/telephony/java/com/android/internal/telephony/BaseCommands.java b/telephony/java/com/android/internal/telephony/BaseCommands.java index 35cdf9bdfb99f..2ce2fe4f0fb2e 100644 --- a/telephony/java/com/android/internal/telephony/BaseCommands.java +++ b/telephony/java/com/android/internal/telephony/BaseCommands.java @@ -718,4 +718,21 @@ public static int getLteOnCdmaModeStatic() { @Override public void testingEmergencyCall() {} + + /** + * @hide + */ + @Override + public int getLteOnGsmMode() { + return getLteOnGsmModeStatic(); + } + + /** + * Return if the current radio is LTE on GSM + * @hide + */ + public static int getLteOnGsmModeStatic() { + return SystemProperties.getInt(TelephonyProperties.PROPERTY_LTE_ON_GSM_DEVICE, + 0); + } } diff --git a/telephony/java/com/android/internal/telephony/CommandsInterface.java b/telephony/java/com/android/internal/telephony/CommandsInterface.java index 94bd3e8b4e6f7..bbcd077c41a7a 100644 --- a/telephony/java/com/android/internal/telephony/CommandsInterface.java +++ b/telephony/java/com/android/internal/telephony/CommandsInterface.java @@ -1562,6 +1562,12 @@ public void setupDataCall(String radioTechnology, String profile, */ public int getLteOnCdmaMode(); + /** + * Return if the current radio is LTE on GSM + * @hide + */ + public int getLteOnGsmMode(); + /** * Request the ISIM application on the UICC to perform the AKA * challenge/response algorithm for IMS authentication. The nonce string diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl index 12a7286a9c63e..11e01b94f994b 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -284,5 +284,7 @@ interface ITelephony { * Returns the all observed cell information of the device. */ List getAllCellInfo(); + + int getLteOnGsmMode(); } diff --git a/telephony/java/com/android/internal/telephony/Phone.java b/telephony/java/com/android/internal/telephony/Phone.java index 1da6f6f889c5d..2e22378bec436 100644 --- a/telephony/java/com/android/internal/telephony/Phone.java +++ b/telephony/java/com/android/internal/telephony/Phone.java @@ -209,6 +209,7 @@ enum SuppService { int NT_MODE_GSM_ONLY = RILConstants.NETWORK_MODE_GSM_ONLY; int NT_MODE_WCDMA_ONLY = RILConstants.NETWORK_MODE_WCDMA_ONLY; int NT_MODE_GSM_UMTS = RILConstants.NETWORK_MODE_GSM_UMTS; + int NT_MODE_LTE_GSM_WCDMA= RILConstants.NETWORK_MODE_LTE_GSM_WCDMA; int NT_MODE_CDMA = RILConstants.NETWORK_MODE_CDMA; @@ -1732,6 +1733,12 @@ void selectNetworkManually(OperatorInfo network, */ public int getLteOnCdmaMode(); + /** + * Return if the current radio is LTE on GSM + * @hide + */ + public int getLteOnGsmMode(); + /** * TODO: Adding a function for each property is not good. * A fucntion of type getPhoneProp(propType) where propType is an diff --git a/telephony/java/com/android/internal/telephony/PhoneBase.java b/telephony/java/com/android/internal/telephony/PhoneBase.java index 6a41a3fd38963..b30c21bf85a1a 100644 --- a/telephony/java/com/android/internal/telephony/PhoneBase.java +++ b/telephony/java/com/android/internal/telephony/PhoneBase.java @@ -1131,6 +1131,14 @@ public int getLteOnCdmaMode() { return mCM.getLteOnCdmaMode(); } + /** + * {@hide} + */ + @Override + public int getLteOnGsmMode() { + return mCM.getLteOnGsmMode(); + } + /** * Sets the SIM voice message waiting indicator records. * @param line GSM Subscriber Profile Number, one-based. Only '1' is supported diff --git a/telephony/java/com/android/internal/telephony/PhoneFactory.java b/telephony/java/com/android/internal/telephony/PhoneFactory.java index b8177deb9c677..05c6fab0a095e 100644 --- a/telephony/java/com/android/internal/telephony/PhoneFactory.java +++ b/telephony/java/com/android/internal/telephony/PhoneFactory.java @@ -106,6 +106,9 @@ public static void makeDefaultPhone(Context context) { if (BaseCommands.getLteOnCdmaModeStatic() == Phone.LTE_ON_CDMA_TRUE) { preferredNetworkMode = Phone.NT_MODE_GLOBAL; } + if (BaseCommands.getLteOnGsmModeStatic() != 0) { + preferredNetworkMode = Phone.NT_MODE_LTE_GSM_WCDMA; + } int networkMode = Settings.Secure.getInt(context.getContentResolver(), Settings.Secure.PREFERRED_NETWORK_MODE, preferredNetworkMode); Log.i(LOG_TAG, "Network Mode set to " + Integer.toString(networkMode)); @@ -196,6 +199,7 @@ public static int getPhoneType(int networkMode) { case RILConstants.NETWORK_MODE_GSM_ONLY: case RILConstants.NETWORK_MODE_WCDMA_ONLY: case RILConstants.NETWORK_MODE_GSM_UMTS: + case RILConstants.NETWORK_MODE_LTE_GSM_WCDMA: return Phone.PHONE_TYPE_GSM; // Use CDMA Phone for the global mode including CDMA diff --git a/telephony/java/com/android/internal/telephony/PhoneProxy.java b/telephony/java/com/android/internal/telephony/PhoneProxy.java index 1a8b3ca01ca2a..d2f40edf25e99 100644 --- a/telephony/java/com/android/internal/telephony/PhoneProxy.java +++ b/telephony/java/com/android/internal/telephony/PhoneProxy.java @@ -949,6 +949,14 @@ public int getLteOnCdmaMode() { return mActivePhone.getLteOnCdmaMode(); } + /** + * {@hide} + */ + @Override + public int getLteOnGsmMode() { + return mActivePhone.getLteOnGsmMode(); + } + @Override public void setVoiceMessageWaiting(int line, int countWaiting) { mActivePhone.setVoiceMessageWaiting(line, countWaiting); diff --git a/telephony/java/com/android/internal/telephony/TelephonyProperties.java b/telephony/java/com/android/internal/telephony/TelephonyProperties.java index 2a91d6cf3d26c..d512f16bcdb2f 100644 --- a/telephony/java/com/android/internal/telephony/TelephonyProperties.java +++ b/telephony/java/com/android/internal/telephony/TelephonyProperties.java @@ -88,6 +88,11 @@ public interface TelephonyProperties */ static final String PROPERTY_LTE_ON_CDMA_DEVICE = "telephony.lteOnCdmaDevice"; + /** + * {@see BaseCommands#getLteOnGsmMode()} + */ + static final String PROPERTY_LTE_ON_GSM_DEVICE = "telephony.lteOnGsmDevice"; + static final String CURRENT_ACTIVE_PHONE = "gsm.current.phone-type"; //****** SIM Card