diff --git a/telephony/java/com/android/internal/telephony/Connection.java b/telephony/java/com/android/internal/telephony/Connection.java index 92f6cb822163d..e6fd0a0e7c714 100644 --- a/telephony/java/com/android/internal/telephony/Connection.java +++ b/telephony/java/com/android/internal/telephony/Connection.java @@ -56,7 +56,8 @@ public abstract class Connection { CDMA_RETRY_ORDER, /* requeseted service is rejected, retry delay is set */ CDMA_ACCESS_FAILURE, CDMA_PREEMPTED, - CDMA_NOT_EMERGENCY /* not an emergency call */ + CDMA_NOT_EMERGENCY, /* not an emergency call */ + ERROR_UNSPECIFIED } Object userData; diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaConnection.java b/telephony/java/com/android/internal/telephony/cdma/CdmaConnection.java index 905dedf2e27d9..69ef0e3e84879 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaConnection.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaConnection.java @@ -435,8 +435,10 @@ public class CdmaConnection extends Connection { } else if (phone.mCM.getRadioState() != CommandsInterface.RadioState.NV_READY && phone.getIccCard().getState() != RuimCard.State.READY) { return DisconnectCause.ICC_ERROR; - } else { + } else if (causeCode==CallFailCause.NORMAL_CLEARING) { return DisconnectCause.NORMAL; + } else { + return DisconnectCause.ERROR_UNSPECIFIED; } } } diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmConnection.java b/telephony/java/com/android/internal/telephony/gsm/GsmConnection.java index d93ca1d6b8abb..2091fb62d1b2c 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmConnection.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmConnection.java @@ -381,10 +381,14 @@ public class GsmConnection extends Connection { } else if (phone.mSST.rs.isCsNormalRestricted()) { return DisconnectCause.CS_RESTRICTED_NORMAL; } else { - return DisconnectCause.NORMAL; + return DisconnectCause.ERROR_UNSPECIFIED; } - } else { + } else if (causeCode == CallFailCause.NORMAL_CLEARING) { return DisconnectCause.NORMAL; + } else { + // If nothing else matches, report unknown call drop reason + // to app, not NORMAL call end. + return DisconnectCause.ERROR_UNSPECIFIED; } } }