aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShriram Ganesh <sganesh@codeaurora.org>2015-05-31 10:06:15 -0700
committerEtan Cohen <etancohen@google.com>2015-07-06 11:28:19 -0700
commitd3adfadd868b19e2423674bfefa5ba778f743bf2 (patch)
treec57bb70058dc26f57e78920e1a18499f05d9cd2b
parente7663c09acfdfa34d423be3c1ac7fecf2eb5e3e1 (diff)
downloadims-d3adfadd868b19e2423674bfefa5ba778f743bf2.tar.gz
MWI,phantom call,Suppl services
1. IMS MWI Feature - Add new API to update waiting voice message count, for UI propagation based on RFC 3842 2. phantom call support Supplementary services 3. IMS: CallForward Unconditional Timer - Add new API for callforward unconditional timer in aidl file. 4. IMS : Incoming Call Barring - Added new field to display ICB anonymous number. - Modified existing API to support request like registration,activation, deactivation,erasure,interogation. 5.Unsol supplementary service notification - send unsol supplementary notification to UI - add call history info 6. Don't reset mUpdateRequest flag upon receiving call update notification, oncallSessionUpdated(). 7. Reset mHold variable when hold request failed reset mHold variable so that ImsCall's state corresponds to the actual state of the call Change-Id: I7a0293d21fca4bf40dbe764c5d9d9dbb8665d55d
-rw-r--r--src/java/com/android/ims/ImsCall.java42
-rw-r--r--src/java/com/android/ims/ImsConnectionStateListener.java7
-rw-r--r--src/java/com/android/ims/ImsManager.java21
-rw-r--r--src/java/com/android/ims/ImsUt.java8
-rw-r--r--src/java/com/android/ims/ImsUtInterface.java2
-rw-r--r--src/java/com/android/ims/internal/ImsCallSession.java19
6 files changed, 93 insertions, 6 deletions
diff --git a/src/java/com/android/ims/ImsCall.java b/src/java/com/android/ims/ImsCall.java
index 32fda761..9d3ca7d7 100644
--- a/src/java/com/android/ims/ImsCall.java
+++ b/src/java/com/android/ims/ImsCall.java
@@ -386,6 +386,16 @@ public class ImsCall implements ICall {
}
/**
+ * Called when the call supp service is received
+ * The default implementation calls {@link #onCallStateChanged}.
+ *
+ * @param call the call object that carries out the IMS call
+ */
+ public void onCallSuppServiceReceived(ImsCall call,
+ ImsSuppServiceNotification suppServiceInfo) {
+ }
+
+ /**
* Called when TTY mode of remote party changed
*
* @param call the call object that carries out the IMS call
@@ -2135,7 +2145,10 @@ public class ImsCall implements ICall {
return;
}
- synchronized(mLockObj) {
+ logi("callSessionHoldFailed :: session=" + session +
+ ", reasonInfo=" + reasonInfo);
+
+ synchronized (mLockObj) {
mHold = false;
}
@@ -2797,6 +2810,33 @@ public class ImsCall implements ICall {
}
}
}
+
+ @Override
+ public void callSessionSuppServiceReceived(ImsCallSession session,
+ ImsSuppServiceNotification suppServiceInfo ) {
+ if (isTransientConferenceSession(session)) {
+ logi("callSessionSuppServiceReceived :: not supported for transient conference"
+ + " session=" + session);
+ return;
+ }
+
+ logi("callSessionSuppServiceReceived :: session=" + session +
+ ", suppServiceInfo" + suppServiceInfo);
+
+ ImsCall.Listener listener;
+
+ synchronized(ImsCall.this) {
+ listener = mListener;
+ }
+
+ if (listener != null) {
+ try {
+ listener.onCallSuppServiceReceived(ImsCall.this, suppServiceInfo);
+ } catch (Throwable t) {
+ loge("callSessionSuppServiceReceived :: ", t);
+ }
+ }
+ }
}
/**
diff --git a/src/java/com/android/ims/ImsConnectionStateListener.java b/src/java/com/android/ims/ImsConnectionStateListener.java
index b19141ef..1afec8e7 100644
--- a/src/java/com/android/ims/ImsConnectionStateListener.java
+++ b/src/java/com/android/ims/ImsConnectionStateListener.java
@@ -67,4 +67,11 @@ public class ImsConnectionStateListener {
int[] enabledFeatures, int[] disabledFeatures) {
// no-op
}
+
+ /**
+ * Called when waiting voice message count changes.
+ */
+ public void onVoiceMessageCountChanged(int count) {
+ // no-op
+ }
}
diff --git a/src/java/com/android/ims/ImsManager.java b/src/java/com/android/ims/ImsManager.java
index f8f2bf6f..d898f9fd 100644
--- a/src/java/com/android/ims/ImsManager.java
+++ b/src/java/com/android/ims/ImsManager.java
@@ -139,6 +139,18 @@ public class ImsManager {
*/
public static final String EXTRA_USSD = "android:ussd";
+ /**
+ * Part of the ACTION_IMS_INCOMING_CALL intents.
+ * A boolean value; Flag to indicate whether the call is an unknown
+ * dialing call. Such calls are originated by sending commands (like
+ * AT commands) directly to modem without Android involvement.
+ * Even though they are not incoming calls, they are propagated
+ * to Phone app using same ACTION_IMS_INCOMING_CALL intent.
+ * Internal use only.
+ * @hide
+ */
+ public static final String EXTRA_IS_UNKNOWN_CALL = "codeaurora:isUnknown";
+
private static final String TAG = "ImsManager";
private static final boolean DBG = true;
@@ -1069,6 +1081,15 @@ public class ImsManager {
}
}
+ @Override
+ public void voiceMessageCountUpdate(int count) {
+ log("voiceMessageCountUpdate :: count=" + count);
+
+ if (mListener != null) {
+ mListener.onVoiceMessageCountChanged(count);
+ }
+ }
+
}
/**
* Gets the ECBM interface to request ECBM exit.
diff --git a/src/java/com/android/ims/ImsUt.java b/src/java/com/android/ims/ImsUt.java
index 2152be7a..d72e5fd5 100644
--- a/src/java/com/android/ims/ImsUt.java
+++ b/src/java/com/android/ims/ImsUt.java
@@ -307,7 +307,7 @@ public class ImsUt implements ImsUtInterface {
* Modifies the configuration of the call barring.
*/
@Override
- public void updateCallBarring(int cbType, boolean enable, Message result, String[] barrList) {
+ public void updateCallBarring(int cbType, int action, Message result, String[] barrList) {
if (DBG) {
if (barrList != null) {
String bList = new String();
@@ -315,17 +315,17 @@ public class ImsUt implements ImsUtInterface {
bList.concat(barrList[i] + " ");
}
log("updateCallBarring :: Ut=" + miUt + ", cbType=" + cbType
- + ", enable=" + enable + ", barrList=" + bList);
+ + ", action=" + action + ", barrList=" + bList);
}
else {
log("updateCallBarring :: Ut=" + miUt + ", cbType=" + cbType
- + ", enable=" + enable);
+ + ", action=" + action);
}
}
synchronized(mLockObj) {
try {
- int id = miUt.updateCallBarring(cbType, enable, barrList);
+ int id = miUt.updateCallBarring(cbType, action, barrList);
if (id < 0) {
sendFailureReport(result,
diff --git a/src/java/com/android/ims/ImsUtInterface.java b/src/java/com/android/ims/ImsUtInterface.java
index fa8aef32..5984e789 100644
--- a/src/java/com/android/ims/ImsUtInterface.java
+++ b/src/java/com/android/ims/ImsUtInterface.java
@@ -143,7 +143,7 @@ public interface ImsUtInterface {
/**
* Modifies the configuration of the call barring.
*/
- public void updateCallBarring(int cbType, boolean enable,
+ public void updateCallBarring(int cbType, int action,
Message result, String[] barrList);
/**
diff --git a/src/java/com/android/ims/internal/ImsCallSession.java b/src/java/com/android/ims/internal/ImsCallSession.java
index d7b0392f..258af4c3 100644
--- a/src/java/com/android/ims/internal/ImsCallSession.java
+++ b/src/java/com/android/ims/internal/ImsCallSession.java
@@ -26,6 +26,7 @@ import com.android.ims.ImsCallProfile;
import com.android.ims.ImsConferenceState;
import com.android.ims.ImsReasonInfo;
import com.android.ims.ImsStreamMediaProfile;
+import com.android.ims.ImsSuppServiceNotification;
/**
* Provides the call initiation/termination, and media exchange between two IMS endpoints.
@@ -392,6 +393,15 @@ public class ImsCallSession {
boolean isMultiParty) {
// no-op
}
+
+ /**
+ * Called when the session supplementary service is received
+ *
+ * @param session the session object that carries out the IMS session
+ */
+ public void callSessionSuppServiceReceived(ImsCallSession session,
+ ImsSuppServiceNotification suppServiceInfo) {
+ }
}
private final IImsCallSession miSession;
@@ -1243,6 +1253,15 @@ public class ImsCallSession {
mListener.callSessionMultipartyStateChanged(ImsCallSession.this, isMultiParty);
}
}
+
+ @Override
+ public void callSessionSuppServiceReceived(IImsCallSession session,
+ ImsSuppServiceNotification suppServiceInfo ) {
+ if (mListener != null) {
+ mListener.callSessionSuppServiceReceived(ImsCallSession.this, suppServiceInfo);
+ }
+ }
+
}
/**