From eafe72a0db89b5867ccd4b8170377309827785a2 Mon Sep 17 00:00:00 2001 From: "Satish.Kulkarni" Date: Tue, 7 Jul 2009 15:28:11 -0500 Subject: Fix for missing call drop notice in CDMA mode In case the cdma modem indicates unspecified error as a reason for a dropped call, then the cause was wrongly being translated to NORMAL call in DisconnectCause. This has been fixed to report ERROR_UNSPECIFIED as DisconnectCause in Connection.java. --- telephony/java/com/android/internal/telephony/Connection.java | 3 ++- .../java/com/android/internal/telephony/cdma/CdmaConnection.java | 4 +++- .../java/com/android/internal/telephony/gsm/GsmConnection.java | 8 ++++++-- 3 files changed, 11 insertions(+), 4 deletions(-) (limited to 'telephony') diff --git a/telephony/java/com/android/internal/telephony/Connection.java b/telephony/java/com/android/internal/telephony/Connection.java index 92f6cb8..e6fd0a0 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 905dedf..69ef0e3 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 d93ca1d..2091fb6 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; } } } -- cgit v1.1