UE doesn't make 1x call if IMS not registered.
Moon Do Seo [Fri, 7 Aug 2015 21:43:10 +0000 (16:43 -0500)]
Root cause: App(telephony service) would check voice and data reg state to make MO call.
if both voice and data is out of service, Telephony service will block the call and pop
up a dialogfor user. FW only check voice reg state without data. When user make a MO
call while data in service, there is no failed notification at Telephony service layer
while the call is rejected by FW layer.

Bug: 23037591
Change-Id: I9762843326d71b801fa1a40b9832bcaea7fb7009

src/java/com/android/internal/telephony/cdma/CDMAPhone.java
src/java/com/android/internal/telephony/gsm/GSMPhone.java

index 085f5b6..6bed5ac 100644 (file)
@@ -472,8 +472,8 @@ public class CDMAPhone extends PhoneBase {
             }
         }
 
-        if ((mSST != null) && (mSST.mSS.getState() == ServiceState.STATE_OUT_OF_SERVICE)
-                && !isEmergency) {
+        if (mSST != null && mSST.mSS.getState() == ServiceState.STATE_OUT_OF_SERVICE
+                && mSST.mSS.getDataRegState() != ServiceState.STATE_IN_SERVICE && !isEmergency) {
             throw new CallStateException("cannot dial in current state");
         }
         if (DBG) Rlog.d(LOG_TAG, "Trying (non-IMS) CS call");
index 3d4fe06..b861095 100755 (executable)
@@ -847,8 +847,8 @@ public class GSMPhone extends PhoneBase {
             }
         }
 
-        if ((mSST != null) && (mSST.mSS.getState() == ServiceState.STATE_OUT_OF_SERVICE)
-                && !isEmergency) {
+        if (mSST != null && mSST.mSS.getState() == ServiceState.STATE_OUT_OF_SERVICE
+                && mSST.mSS.getDataRegState() != ServiceState.STATE_IN_SERVICE && !isEmergency) {
             throw new CallStateException("cannot dial in current state");
         }
         if (LOCAL_DEBUG) Rlog.d(LOG_TAG, "Trying (non-IMS) CS call");