aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRekha Kumar <rekhak@codeaurora.org>2015-02-04 10:47:00 -0800
committerVinit Deshpande <vinitd@google.com>2015-03-15 23:35:15 -0700
commit7b72dc2e9dacdb51e998775e8505744a574afb12 (patch)
tree29994f8ccad8a7362d80f7e5d4d17f16ae4d892d
parent4b09bc28eeb32d2576a44eaa2560b42efb82b1bf (diff)
downloadims-7b72dc2e9dacdb51e998775e8505744a574afb12.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.java73
-rw-r--r--src/java/com/android/ims/ImsConnectionStateListener.java9
-rw-r--r--src/java/com/android/ims/ImsManager.java17
-rw-r--r--src/java/com/android/ims/internal/ImsCallSession.java3
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,