diff options
author | Rekha Kumar <rekhak@codeaurora.org> | 2015-02-04 10:47:00 -0800 |
---|---|---|
committer | Pavel Zhamaitsiak <pavelz@google.com> | 2015-03-05 09:37:14 -0800 |
commit | 1463174fa4bab35f04dfa71196c277dfeb603717 (patch) | |
tree | 29994f8ccad8a7362d80f7e5d4d17f16ae4d892d | |
parent | 71b788a38f0ce4c43ad1c3f9873493f5235ee81e (diff) | |
download | ims-1463174fa4bab35f04dfa71196c277dfeb603717.tar.gz |
IMS: IMS Registration and handover error codes support
- Add support for propagating IMS Registration error codes and error
messages.
- Propagate the call session handover info to the UI
Change-Id: If2f2008734735f52614bd046fee144843a465ecf
-rw-r--r-- | src/java/com/android/ims/ImsCall.java | 73 | ||||
-rw-r--r-- | src/java/com/android/ims/ImsConnectionStateListener.java | 9 | ||||
-rw-r--r-- | src/java/com/android/ims/ImsManager.java | 17 | ||||
-rw-r--r-- | src/java/com/android/ims/internal/ImsCallSession.java | 3 |
4 files changed, 98 insertions, 4 deletions
diff --git a/src/java/com/android/ims/ImsCall.java b/src/java/com/android/ims/ImsCall.java index a50d06cc..37e93c1f 100644 --- a/src/java/com/android/ims/ImsCall.java +++ b/src/java/com/android/ims/ImsCall.java @@ -374,6 +374,30 @@ public class ImsCall implements ICall { public void onCallSessionTtyModeReceived(ImsCall call, int mode) { // no-op } + + /** + * Called when handover occurs from one access technology to another. + * + * @param session IMS session object + * @param srcAccessTech original access technology + * @param targetAccessTech new access technology + * @param reasonInfo + */ + public void onCallHandover(ImsCall imsCall, int srcAccessTech, int targetAccessTech, + ImsReasonInfo reasonInfo) { + } + + /** + * Called when handover from one access technology to another fails. + * + * @param session IMS session object + * @param srcAccessTech original access technology + * @param targetAccessTech new access technology + * @param reasonInfo + */ + public void onCallHandoverFailed(ImsCall imsCall, int srcAccessTech, int targetAccessTech, + ImsReasonInfo reasonInfo) { + } } @@ -2693,6 +2717,55 @@ public class ImsCall implements ICall { } } } + + public void callSessionHandover(ImsCallSession session, int srcAccessTech, + int targetAccessTech, ImsReasonInfo reasonInfo) { + if (DBG) { + log("callSessionHandover :: session=" + session + ", srcAccessTech=" + + srcAccessTech + ", targetAccessTech=" + targetAccessTech + ", reasonInfo=" + + reasonInfo); + } + + ImsCall.Listener listener; + + synchronized(ImsCall.this) { + listener = mListener; + } + + if (listener != null) { + try { + listener.onCallHandover(ImsCall.this, srcAccessTech, targetAccessTech, + reasonInfo); + } catch (Throwable t) { + loge("callSessionHandover :: ", t); + } + } + } + + @Override + public void callSessionHandoverFailed(ImsCallSession session, int srcAccessTech, + int targetAccessTech, ImsReasonInfo reasonInfo) { + if (DBG) { + log("callSessionHandoverFailed :: session=" + session + ", srcAccessTech=" + + srcAccessTech + ", targetAccessTech=" + targetAccessTech + ", reasonInfo=" + + reasonInfo); + } + + ImsCall.Listener listener; + + synchronized(ImsCall.this) { + listener = mListener; + } + + if (listener != null) { + try { + listener.onCallHandoverFailed(ImsCall.this, srcAccessTech, targetAccessTech, + reasonInfo); + } catch (Throwable t) { + loge("callSessionHandoverFailed :: ", t); + } + } + } } /** diff --git a/src/java/com/android/ims/ImsConnectionStateListener.java b/src/java/com/android/ims/ImsConnectionStateListener.java index 4962591c..b19141ef 100644 --- a/src/java/com/android/ims/ImsConnectionStateListener.java +++ b/src/java/com/android/ims/ImsConnectionStateListener.java @@ -32,9 +32,16 @@ public class ImsConnectionStateListener { } /** + * Called when the device is trying to connect to the IMS network. + */ + public void onImsProgressing() { + // no-op + } + + /** * Called when the device is disconnected from the IMS network. */ - public void onImsDisconnected() { + public void onImsDisconnected(ImsReasonInfo imsReasonInfo) { // no-op } diff --git a/src/java/com/android/ims/ImsManager.java b/src/java/com/android/ims/ImsManager.java index 26389a12..eaae2994 100644 --- a/src/java/com/android/ims/ImsManager.java +++ b/src/java/com/android/ims/ImsManager.java @@ -968,13 +968,24 @@ public class ImsManager { } @Override - public void registrationDisconnected() { + public void registrationProgressing() { if (DBG) { - log("registrationDisconnected ::"); + log("registrationProgressing ::"); } if (mListener != null) { - mListener.onImsDisconnected(); + mListener.onImsProgressing(); + } + } + + @Override + public void registrationDisconnected(ImsReasonInfo imsReasonInfo) { + if (DBG) { + log("registrationDisconnected :: imsReasonInfo" + imsReasonInfo); + } + + if (mListener != null) { + mListener.onImsDisconnected(imsReasonInfo); } } diff --git a/src/java/com/android/ims/internal/ImsCallSession.java b/src/java/com/android/ims/internal/ImsCallSession.java index 7e2f65c2..227c6be7 100644 --- a/src/java/com/android/ims/internal/ImsCallSession.java +++ b/src/java/com/android/ims/internal/ImsCallSession.java @@ -1178,6 +1178,9 @@ public class ImsCallSession { } } + /** + * Notifies of handover failure info for this call + */ @Override public void callSessionHandoverFailed(IImsCallSession session, int srcAccessTech, int targetAccessTech, |