Merge "Added global retry support"
diff --git a/jarjar-rules-shared.txt b/jarjar-rules-shared.txt
index 2bac95f..5635b18 100644
--- a/jarjar-rules-shared.txt
+++ b/jarjar-rules-shared.txt
@@ -1,5 +1,5 @@
rule android.net.NetworkFactory* com.android.internal.telephony.NetworkFactory@1
-rule android.os.BasicShellCommandHandler* com.android.internal.telephony.BasicShellCommandHandler@1
+rule com.android.modules.utils.** com.android.internal.telephony.@1
rule android.os.RegistrantList* com.android.internal.telephony.RegistrantList@1
rule android.os.Registrant* com.android.internal.telephony.Registrant@1
rule android.hidl.** android.internal.hidl.@1
diff --git a/src/java/com/android/internal/telephony/NetworkTypeController.java b/src/java/com/android/internal/telephony/NetworkTypeController.java
index 14b38da..25b6fc0 100644
--- a/src/java/com/android/internal/telephony/NetworkTypeController.java
+++ b/src/java/com/android/internal/telephony/NetworkTypeController.java
@@ -50,6 +50,7 @@
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import java.util.stream.IntStream;
/**
* The NetworkTypeController evaluates the override network type of {@link TelephonyDisplayInfo}
@@ -135,6 +136,7 @@
private boolean mIsPrimaryTimerActive;
private boolean mIsSecondaryTimerActive;
private boolean mIsTimerResetEnabledForLegacyStateRRCIdle;
+ private int mLtePlusThresholdBandwidth;
private String mPrimaryTimerState;
private String mSecondaryTimerState;
private String mPreviousState;
@@ -215,6 +217,8 @@
mIsTimerResetEnabledForLegacyStateRRCIdle =
CarrierConfigManager.getDefaultConfig().getBoolean(
CarrierConfigManager.KEY_NR_TIMERS_RESET_IF_NON_ENDC_AND_RRC_IDLE_BOOL);
+ mLtePlusThresholdBandwidth = CarrierConfigManager.getDefaultConfig().getInt(
+ CarrierConfigManager.KEY_LTE_PLUS_THRESHOLD_BANDWIDTH_KHZ_INT);
CarrierConfigManager configManager = (CarrierConfigManager) mPhone.getContext()
.getSystemService(Context.CARRIER_CONFIG_SERVICE);
@@ -242,6 +246,9 @@
}
mIsTimerResetEnabledForLegacyStateRRCIdle = b.getBoolean(
CarrierConfigManager.KEY_NR_TIMERS_RESET_IF_NON_ENDC_AND_RRC_IDLE_BOOL);
+ mLtePlusThresholdBandwidth = b.getInt(
+ CarrierConfigManager.KEY_LTE_PLUS_THRESHOLD_BANDWIDTH_KHZ_INT,
+ mLtePlusThresholdBandwidth);
}
}
createTimerRules(nrIconConfiguration, overrideTimerRule, overrideSecondaryTimerRule);
@@ -400,8 +407,10 @@
private @Annotation.OverrideNetworkType int getLteDisplayType() {
int value = TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE;
- if (mPhone.getServiceState().getDataNetworkType() == TelephonyManager.NETWORK_TYPE_LTE_CA
- || mPhone.getServiceState().isUsingCarrierAggregation()) {
+ if ((mPhone.getServiceState().getDataNetworkType() == TelephonyManager.NETWORK_TYPE_LTE_CA
+ || mPhone.getServiceState().isUsingCarrierAggregation())
+ && (IntStream.of(mPhone.getServiceState().getCellBandwidths()).sum()
+ > mLtePlusThresholdBandwidth)) {
value = TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_CA;
}
if (isLteEnhancedAvailable()) {
@@ -497,7 +506,8 @@
break;
case EVENT_PREFERRED_NETWORK_MODE_CHANGED:
resetAllTimers();
- transitionToCurrentState();
+ // Don't transition to current state. If anything significant changes,
+ // a new broadcast will be sent to update the state then.
break;
default:
throw new RuntimeException("Received invalid event: " + msg.what);
@@ -1059,9 +1069,13 @@
pw.println("mIsPhysicalChannelConfigOn=" + mIsPhysicalChannelConfigOn);
pw.println("mIsPrimaryTimerActive=" + mIsPrimaryTimerActive);
pw.println("mIsSecondaryTimerActive=" + mIsSecondaryTimerActive);
+ pw.println("mIsTimerRestEnabledForLegacyStateRRCIdle="
+ + mIsTimerResetEnabledForLegacyStateRRCIdle);
+ pw.println("mLtePlusThresholdBandwidth=" + mLtePlusThresholdBandwidth);
pw.println("mPrimaryTimerState=" + mPrimaryTimerState);
pw.println("mSecondaryTimerState=" + mSecondaryTimerState);
pw.println("mPreviousState=" + mPreviousState);
+ pw.println("mPhysicalLinkState=" + mPhysicalLinkState);
pw.decreaseIndent();
pw.flush();
}
diff --git a/src/java/com/android/internal/telephony/Phone.java b/src/java/com/android/internal/telephony/Phone.java
index 031a07a..44870e8 100644
--- a/src/java/com/android/internal/telephony/Phone.java
+++ b/src/java/com/android/internal/telephony/Phone.java
@@ -2130,15 +2130,24 @@
}
/**
- * Query the CDMA roaming preference setting
+ * Query the CDMA roaming preference setting.
*
- * @param response is callback message to report one of CDMA_RM_*
+ * @param response is callback message to report one of TelephonyManager#CDMA_ROAMING_MODE_*
*/
public void queryCdmaRoamingPreference(Message response) {
mCi.queryCdmaRoamingPreference(response);
}
/**
+ * Get the CDMA subscription mode setting.
+ *
+ * @param response is callback message to report one of TelephonyManager#CDMA_SUBSCRIPTION_*
+ */
+ public void queryCdmaSubscriptionMode(Message response) {
+ mCi.getCdmaSubscriptionSource(response);
+ }
+
+ /**
* Get current signal strength. No change notification available on this
* interface. Use <code>PhoneStateNotifier</code> or an equivalent.
* An ASU is 0-31 or -1 if unknown (for GSM, dBm = -113 - 2 * asu).
@@ -2167,8 +2176,8 @@
}
/**
- * Requests to set the CDMA roaming preference
- * @param cdmaRoamingType one of CDMA_RM_*
+ * Requests to set the CDMA roaming preference
+ * @param cdmaRoamingType one of TelephonyManager#CDMA_ROAMING_MODE_*
* @param response is callback message
*/
public void setCdmaRoamingPreference(int cdmaRoamingType, Message response) {
@@ -2176,11 +2185,11 @@
}
/**
- * Requests to set the CDMA subscription mode
- * @param cdmaSubscriptionType one of CDMA_SUBSCRIPTION_*
+ * Requests to set the CDMA subscription mode
+ * @param cdmaSubscriptionType one of TelephonyManager#CDMA_SUBSCRIPTION_*
* @param response is callback message
*/
- public void setCdmaSubscription(int cdmaSubscriptionType, Message response) {
+ public void setCdmaSubscriptionMode(int cdmaSubscriptionType, Message response) {
mCi.setCdmaSubscriptionSource(cdmaSubscriptionType, response);
}
diff --git a/src/java/com/android/internal/telephony/cdma/EriInfo.java b/src/java/com/android/internal/telephony/cdma/EriInfo.java
index bd27f94..bff4b0e 100644
--- a/src/java/com/android/internal/telephony/cdma/EriInfo.java
+++ b/src/java/com/android/internal/telephony/cdma/EriInfo.java
@@ -16,16 +16,16 @@
package com.android.internal.telephony.cdma;
-import android.telephony.CdmaEriInformation;
+import android.telephony.TelephonyManager;
public final class EriInfo {
- public static final int ROAMING_INDICATOR_ON = CdmaEriInformation.ERI_ON;
- public static final int ROAMING_INDICATOR_OFF = CdmaEriInformation.ERI_OFF;
- public static final int ROAMING_INDICATOR_FLASH = CdmaEriInformation.ERI_FLASH;
+ public static final int ROAMING_INDICATOR_ON = TelephonyManager.ERI_ON;
+ public static final int ROAMING_INDICATOR_OFF = TelephonyManager.ERI_OFF;
+ public static final int ROAMING_INDICATOR_FLASH = TelephonyManager.ERI_FLASH;
- public static final int ROAMING_ICON_MODE_NORMAL = CdmaEriInformation.ERI_ICON_MODE_NORMAL;
- public static final int ROAMING_ICON_MODE_FLASH = CdmaEriInformation.ERI_ICON_MODE_FLASH;
+ public static final int ROAMING_ICON_MODE_NORMAL = TelephonyManager.ERI_ICON_MODE_NORMAL;
+ public static final int ROAMING_ICON_MODE_FLASH = TelephonyManager.ERI_ICON_MODE_FLASH;
public int roamingIndicator;
public int iconIndex;
diff --git a/tests/telephonytests/src/com/android/internal/telephony/NetworkTypeControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/NetworkTypeControllerTest.java
index 001ba39..244839f 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/NetworkTypeControllerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/NetworkTypeControllerTest.java
@@ -150,8 +150,15 @@
assertEquals(TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE,
mNetworkTypeController.getOverrideNetworkType());
- // LTE CA
+ // LTE CA at bandwidth threshold
doReturn(true).when(mServiceState).isUsingCarrierAggregation();
+ doReturn(new int[] {20000}).when(mServiceState).getCellBandwidths();
+ updateOverrideNetworkType();
+ assertEquals(TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE,
+ mNetworkTypeController.getOverrideNetworkType());
+
+ // LTE CA above bandwidth threshold
+ doReturn(new int[] {20000, 1400}).when(mServiceState).getCellBandwidths();
updateOverrideNetworkType();
assertEquals(TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_CA,
mNetworkTypeController.getOverrideNetworkType());
@@ -343,6 +350,11 @@
mNetworkTypeController.sendMessage(EVENT_PREFERRED_NETWORK_MODE_CHANGED);
processAllMessages();
+ assertEquals(TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA,
+ mNetworkTypeController.getOverrideNetworkType());
+
+ mNetworkTypeController.sendMessage(EVENT_DATA_RAT_CHANGED);
+ processAllMessages();
assertEquals(TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE,
mNetworkTypeController.getOverrideNetworkType());
}