Loading src/java/com/android/internal/telephony/Phone.java +5 −0 Original line number Diff line number Diff line Loading @@ -2998,6 +2998,11 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { return false; } public boolean isInCdmaEcm() { return getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA && isInEcm() && (mImsPhone == null || !mImsPhone.isInImsEcm()); } public void setIsInEcm(boolean isInEcm) { if (!getUnitTestMode()) { TelephonyProperties.in_ecm_mode(isInEcm); Loading src/java/com/android/internal/telephony/data/DataEvaluation.java +2 −2 Original line number Diff line number Diff line Loading @@ -261,8 +261,8 @@ public class DataEvaluation { NO_SUITABLE_DATA_PROFILE(true), /** Current data network type not allowed. */ DATA_NETWORK_TYPE_NOT_ALLOWED(true), /** Device is currently in an emergency call. */ EMERGENCY_CALL(true), /** Device is currently in CDMA ECBM. */ CDMA_EMERGENCY_CALLBACK_MODE(true), /** There is already a retry setup/handover scheduled. */ RETRY_SCHEDULED(true), /** Network has explicitly request to throttle setup attempt. */ Loading src/java/com/android/internal/telephony/data/DataNetwork.java +5 −5 Original line number Diff line number Diff line Loading @@ -273,7 +273,7 @@ public class DataNetwork extends StateMachine { TEAR_DOWN_REASON_DATA_CONFIG_NOT_READY, TEAR_DOWN_REASON_PENDING_TEAR_DOWN_ALL, TEAR_DOWN_REASON_NO_SUITABLE_DATA_PROFILE, TEAR_DOWN_REASON_EMERGENCY_CALL, TEAR_DOWN_REASON_CDMA_EMERGENCY_CALLBACK_MODE, TEAR_DOWN_REASON_RETRY_SCHEDULED, TEAR_DOWN_REASON_DATA_THROTTLED, TEAR_DOWN_REASON_DATA_PROFILE_INVALID, Loading Loading @@ -347,8 +347,8 @@ public class DataNetwork extends StateMachine { /** Data network tear down due to no suitable data profile. */ public static final int TEAR_DOWN_REASON_NO_SUITABLE_DATA_PROFILE = 21; /** Data network tear down due to emergency call. */ public static final int TEAR_DOWN_REASON_EMERGENCY_CALL = 22; /** Data network tear down due to CDMA ECBM. */ public static final int TEAR_DOWN_REASON_CDMA_EMERGENCY_CALLBACK_MODE = 22; /** Data network tear down due to retry scheduled. */ public static final int TEAR_DOWN_REASON_RETRY_SCHEDULED = 23; Loading Loading @@ -2939,8 +2939,8 @@ public class DataNetwork extends StateMachine { return "TEAR_DOWN_REASON_PENDING_TEAR_DOWN_ALL"; case TEAR_DOWN_REASON_NO_SUITABLE_DATA_PROFILE: return "TEAR_DOWN_REASON_NO_SUITABLE_DATA_PROFILE"; case TEAR_DOWN_REASON_EMERGENCY_CALL: return "TEAR_DOWN_REASON_EMERGENCY_CALL"; case TEAR_DOWN_REASON_CDMA_EMERGENCY_CALLBACK_MODE: return "TEAR_DOWN_REASON_CDMA_EMERGENCY_CALLBACK_MODE"; case TEAR_DOWN_REASON_RETRY_SCHEDULED: return "TEAR_DOWN_REASON_RETRY_SCHEDULED"; case TEAR_DOWN_REASON_DATA_THROTTLED: Loading src/java/com/android/internal/telephony/data/DataNetworkController.java +8 −8 Original line number Diff line number Diff line Loading @@ -1382,9 +1382,9 @@ public class DataNetworkController extends Handler { evaluation.addDataDisallowedReason(DataDisallowedReason.DATA_SERVICE_NOT_READY); } // Check if device is CDMA and is currently in ECBM if (mPhone.isInEcm() && mPhone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA) { evaluation.addDataDisallowedReason(DataDisallowedReason.EMERGENCY_CALL); // Check if device is in CDMA ECBM if (mPhone.isInCdmaEcm()) { evaluation.addDataDisallowedReason(DataDisallowedReason.CDMA_EMERGENCY_CALLBACK_MODE); } // Check if only one data network is allowed. Loading Loading @@ -1573,9 +1573,9 @@ public class DataNetworkController extends Handler { } } // Check if device is CDMA and is currently in ECBM if (mPhone.isInEcm() && mPhone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA) { evaluation.addDataDisallowedReason(DataDisallowedReason.EMERGENCY_CALL); // Check if device is in CDMA ECBM if (mPhone.isInCdmaEcm()) { evaluation.addDataDisallowedReason(DataDisallowedReason.CDMA_EMERGENCY_CALLBACK_MODE); } // Check if there are other network that has higher priority, and only single data network Loading Loading @@ -1820,8 +1820,8 @@ public class DataNetworkController extends Handler { return DataNetwork.TEAR_DOWN_REASON_NO_SUITABLE_DATA_PROFILE; case DATA_NETWORK_TYPE_NOT_ALLOWED: return DataNetwork.TEAR_DOWN_REASON_RAT_NOT_ALLOWED; case EMERGENCY_CALL: return DataNetwork.TEAR_DOWN_REASON_EMERGENCY_CALL; case CDMA_EMERGENCY_CALLBACK_MODE: return DataNetwork.TEAR_DOWN_REASON_CDMA_EMERGENCY_CALLBACK_MODE; case RETRY_SCHEDULED: return DataNetwork.TEAR_DOWN_REASON_RETRY_SCHEDULED; case DATA_THROTTLED: Loading tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java +5 −6 Original line number Diff line number Diff line Loading @@ -1067,18 +1067,17 @@ public class DataNetworkControllerTest extends TelephonyTest { } @Test public void testEmergencyCallChanged() throws Exception { doReturn(PhoneConstants.PHONE_TYPE_CDMA).when(mPhone).getPhoneType(); doReturn(true).when(mPhone).isInEcm(); public void testEcbmChanged() throws Exception { doReturn(true).when(mPhone).isInCdmaEcm(); mDataNetworkControllerUT.addNetworkRequest( createNetworkRequest(NetworkCapabilities.NET_CAPABILITY_INTERNET)); processAllMessages(); // Data should not be allowed when the device is in an emergency call. // Data should not be allowed when the device is in ECBM. verifyNoConnectedNetworkHasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET); // Emergency call ended doReturn(false).when(mPhone).isInEcm(); // Exit ECBM doReturn(false).when(mPhone).isInCdmaEcm(); mDataNetworkControllerUT.obtainMessage(20/*EVENT_EMERGENCY_CALL_CHANGED*/).sendToTarget(); processAllMessages(); Loading Loading
src/java/com/android/internal/telephony/Phone.java +5 −0 Original line number Diff line number Diff line Loading @@ -2998,6 +2998,11 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { return false; } public boolean isInCdmaEcm() { return getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA && isInEcm() && (mImsPhone == null || !mImsPhone.isInImsEcm()); } public void setIsInEcm(boolean isInEcm) { if (!getUnitTestMode()) { TelephonyProperties.in_ecm_mode(isInEcm); Loading
src/java/com/android/internal/telephony/data/DataEvaluation.java +2 −2 Original line number Diff line number Diff line Loading @@ -261,8 +261,8 @@ public class DataEvaluation { NO_SUITABLE_DATA_PROFILE(true), /** Current data network type not allowed. */ DATA_NETWORK_TYPE_NOT_ALLOWED(true), /** Device is currently in an emergency call. */ EMERGENCY_CALL(true), /** Device is currently in CDMA ECBM. */ CDMA_EMERGENCY_CALLBACK_MODE(true), /** There is already a retry setup/handover scheduled. */ RETRY_SCHEDULED(true), /** Network has explicitly request to throttle setup attempt. */ Loading
src/java/com/android/internal/telephony/data/DataNetwork.java +5 −5 Original line number Diff line number Diff line Loading @@ -273,7 +273,7 @@ public class DataNetwork extends StateMachine { TEAR_DOWN_REASON_DATA_CONFIG_NOT_READY, TEAR_DOWN_REASON_PENDING_TEAR_DOWN_ALL, TEAR_DOWN_REASON_NO_SUITABLE_DATA_PROFILE, TEAR_DOWN_REASON_EMERGENCY_CALL, TEAR_DOWN_REASON_CDMA_EMERGENCY_CALLBACK_MODE, TEAR_DOWN_REASON_RETRY_SCHEDULED, TEAR_DOWN_REASON_DATA_THROTTLED, TEAR_DOWN_REASON_DATA_PROFILE_INVALID, Loading Loading @@ -347,8 +347,8 @@ public class DataNetwork extends StateMachine { /** Data network tear down due to no suitable data profile. */ public static final int TEAR_DOWN_REASON_NO_SUITABLE_DATA_PROFILE = 21; /** Data network tear down due to emergency call. */ public static final int TEAR_DOWN_REASON_EMERGENCY_CALL = 22; /** Data network tear down due to CDMA ECBM. */ public static final int TEAR_DOWN_REASON_CDMA_EMERGENCY_CALLBACK_MODE = 22; /** Data network tear down due to retry scheduled. */ public static final int TEAR_DOWN_REASON_RETRY_SCHEDULED = 23; Loading Loading @@ -2939,8 +2939,8 @@ public class DataNetwork extends StateMachine { return "TEAR_DOWN_REASON_PENDING_TEAR_DOWN_ALL"; case TEAR_DOWN_REASON_NO_SUITABLE_DATA_PROFILE: return "TEAR_DOWN_REASON_NO_SUITABLE_DATA_PROFILE"; case TEAR_DOWN_REASON_EMERGENCY_CALL: return "TEAR_DOWN_REASON_EMERGENCY_CALL"; case TEAR_DOWN_REASON_CDMA_EMERGENCY_CALLBACK_MODE: return "TEAR_DOWN_REASON_CDMA_EMERGENCY_CALLBACK_MODE"; case TEAR_DOWN_REASON_RETRY_SCHEDULED: return "TEAR_DOWN_REASON_RETRY_SCHEDULED"; case TEAR_DOWN_REASON_DATA_THROTTLED: Loading
src/java/com/android/internal/telephony/data/DataNetworkController.java +8 −8 Original line number Diff line number Diff line Loading @@ -1382,9 +1382,9 @@ public class DataNetworkController extends Handler { evaluation.addDataDisallowedReason(DataDisallowedReason.DATA_SERVICE_NOT_READY); } // Check if device is CDMA and is currently in ECBM if (mPhone.isInEcm() && mPhone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA) { evaluation.addDataDisallowedReason(DataDisallowedReason.EMERGENCY_CALL); // Check if device is in CDMA ECBM if (mPhone.isInCdmaEcm()) { evaluation.addDataDisallowedReason(DataDisallowedReason.CDMA_EMERGENCY_CALLBACK_MODE); } // Check if only one data network is allowed. Loading Loading @@ -1573,9 +1573,9 @@ public class DataNetworkController extends Handler { } } // Check if device is CDMA and is currently in ECBM if (mPhone.isInEcm() && mPhone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA) { evaluation.addDataDisallowedReason(DataDisallowedReason.EMERGENCY_CALL); // Check if device is in CDMA ECBM if (mPhone.isInCdmaEcm()) { evaluation.addDataDisallowedReason(DataDisallowedReason.CDMA_EMERGENCY_CALLBACK_MODE); } // Check if there are other network that has higher priority, and only single data network Loading Loading @@ -1820,8 +1820,8 @@ public class DataNetworkController extends Handler { return DataNetwork.TEAR_DOWN_REASON_NO_SUITABLE_DATA_PROFILE; case DATA_NETWORK_TYPE_NOT_ALLOWED: return DataNetwork.TEAR_DOWN_REASON_RAT_NOT_ALLOWED; case EMERGENCY_CALL: return DataNetwork.TEAR_DOWN_REASON_EMERGENCY_CALL; case CDMA_EMERGENCY_CALLBACK_MODE: return DataNetwork.TEAR_DOWN_REASON_CDMA_EMERGENCY_CALLBACK_MODE; case RETRY_SCHEDULED: return DataNetwork.TEAR_DOWN_REASON_RETRY_SCHEDULED; case DATA_THROTTLED: Loading
tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java +5 −6 Original line number Diff line number Diff line Loading @@ -1067,18 +1067,17 @@ public class DataNetworkControllerTest extends TelephonyTest { } @Test public void testEmergencyCallChanged() throws Exception { doReturn(PhoneConstants.PHONE_TYPE_CDMA).when(mPhone).getPhoneType(); doReturn(true).when(mPhone).isInEcm(); public void testEcbmChanged() throws Exception { doReturn(true).when(mPhone).isInCdmaEcm(); mDataNetworkControllerUT.addNetworkRequest( createNetworkRequest(NetworkCapabilities.NET_CAPABILITY_INTERNET)); processAllMessages(); // Data should not be allowed when the device is in an emergency call. // Data should not be allowed when the device is in ECBM. verifyNoConnectedNetworkHasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET); // Emergency call ended doReturn(false).when(mPhone).isInEcm(); // Exit ECBM doReturn(false).when(mPhone).isInCdmaEcm(); mDataNetworkControllerUT.obtainMessage(20/*EVENT_EMERGENCY_CALL_CHANGED*/).sendToTarget(); processAllMessages(); Loading