From e7a9201edbb4d18f12d00ba1b80e2481a5cb446f Mon Sep 17 00:00:00 2001 From: jsh Date: Tue, 4 Aug 2009 11:26:58 -0700 Subject: [PATCH] Add a DISCONNECTING call state. This indicates to the UI that the hangup command has been received by the Telephony layer and passed down to the RIL, but we have not yet been notified of a successful DISCONNECT. Addresses http://b/issue?id=1659876. --- telephony/java/com/android/internal/telephony/Call.java | 4 ++-- .../java/com/android/internal/telephony/cdma/CdmaCall.java | 2 ++ .../com/android/internal/telephony/cdma/CdmaCallTracker.java | 1 + .../java/com/android/internal/telephony/gsm/GsmCall.java | 1 + .../com/android/internal/telephony/gsm/GsmCallTracker.java | 1 + 5 files changed, 7 insertions(+), 2 deletions(-) diff --git a/telephony/java/com/android/internal/telephony/Call.java b/telephony/java/com/android/internal/telephony/Call.java index 7eb9d85d6724a..b95dd11046dd8 100644 --- a/telephony/java/com/android/internal/telephony/Call.java +++ b/telephony/java/com/android/internal/telephony/Call.java @@ -25,10 +25,10 @@ public abstract class Call { /* Enums */ public enum State { - IDLE, ACTIVE, HOLDING, DIALING, ALERTING, INCOMING, WAITING, DISCONNECTED; + IDLE, ACTIVE, HOLDING, DIALING, ALERTING, INCOMING, WAITING, DISCONNECTED, DISCONNECTING; public boolean isAlive() { - return !(this == IDLE || this == DISCONNECTED); + return !(this == IDLE || this == DISCONNECTED || this == DISCONNECTING); } public boolean isRinging() { diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaCall.java b/telephony/java/com/android/internal/telephony/cdma/CdmaCall.java index e8724c2cd640b..c3bb01f6db599 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaCall.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaCall.java @@ -24,6 +24,7 @@ import com.android.internal.telephony.CallStateException; import com.android.internal.telephony.Connection; import com.android.internal.telephony.DriverCall; import com.android.internal.telephony.Phone; +import com.android.internal.telephony.Call.State; /** * {@hide} @@ -186,6 +187,7 @@ public final class CdmaCall extends Call { cn.onHangupLocal(); } + state = State.DISCONNECTING; } /** diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaCallTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaCallTracker.java index 84d6b3d283f9e..005db47b2d13e 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaCallTracker.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaCallTracker.java @@ -761,6 +761,7 @@ public final class CdmaCallTracker extends CallTracker { } call.onHangupLocal(); + phone.notifyPreciseCallStateChanged(); } /* package */ diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmCall.java b/telephony/java/com/android/internal/telephony/gsm/GsmCall.java index a92e52d0e1d52..9542d20e1e4c7 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmCall.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmCall.java @@ -185,6 +185,7 @@ class GsmCall extends Call { cn.onHangupLocal(); } + state = State.DISCONNECTING; } /** diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmCallTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmCallTracker.java index f3b7596f6bd3b..db6e339025741 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmCallTracker.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmCallTracker.java @@ -738,6 +738,7 @@ public final class GsmCallTracker extends CallTracker { } call.onHangupLocal(); + phone.notifyPreciseCallStateChanged(); } /* package */