Promotion of atel.lnx.2.0-00006.

CRs      Change ID                                   Subject
--------------------------------------------------------------------------------------------------------------
1046860   I7a55a4b1610b084378a9c94e52aeb63115d89144   IMS: New apis for handling volte preference setting

Change-Id: Iade95853a4585b10b1f319659444515455831479
CRs-Fixed: 1046860
diff --git a/ims/src/org/codeaurora/ims/QtiImsExtBase.java b/ims/src/org/codeaurora/ims/QtiImsExtBase.java
index 98c376c..bbecb69 100644
--- a/ims/src/org/codeaurora/ims/QtiImsExtBase.java
+++ b/ims/src/org/codeaurora/ims/QtiImsExtBase.java
@@ -107,6 +107,16 @@
             onRegisterForParticipantStatusInfo(listener);
         }
 
+        @Override
+        public void updateVoltePreference(int phoneId, int preference,
+                IQtiImsExtListener listener) {
+            onUpdateVoltePreference(phoneId, preference, listener);
+        }
+
+        @Override
+        public void queryVoltePreference(int phoneId, IQtiImsExtListener listener) {
+            onQueryVoltePreference(phoneId, listener);
+        }
     };
 
     private QtiImsExtBinder mQtiImsExtBinder;
@@ -159,4 +169,11 @@
     protected void onRegisterForParticipantStatusInfo(IQtiImsExtListener listener) {
         // no-op
     }
+    protected void onUpdateVoltePreference(int phoneId, int preference,
+            IQtiImsExtListener listener) {
+        // no-op
+    }
+    protected void onQueryVoltePreference(int phoneId, IQtiImsExtListener listener) {
+        // no-op
+    }
 }
diff --git a/ims/src/org/codeaurora/ims/QtiImsExtListenerBaseImpl.java b/ims/src/org/codeaurora/ims/QtiImsExtListenerBaseImpl.java
index a7565ed..b8fcb43 100644
--- a/ims/src/org/codeaurora/ims/QtiImsExtListenerBaseImpl.java
+++ b/ims/src/org/codeaurora/ims/QtiImsExtListenerBaseImpl.java
@@ -81,5 +81,13 @@
     public void notifyParticipantStatusInfo(int operation, int sipStatus,
             String participantUri, boolean isEct) {
     }
+
+    @Override
+    public void onVoltePreferenceUpdated(int result) {
+    }
+
+    @Override
+    public void onVoltePreferenceQueried(int result, int mode) {
+    }
 }
 
diff --git a/ims/src/org/codeaurora/ims/QtiImsExtManager.java b/ims/src/org/codeaurora/ims/QtiImsExtManager.java
index 79716b8..1502a6e 100644
--- a/ims/src/org/codeaurora/ims/QtiImsExtManager.java
+++ b/ims/src/org/codeaurora/ims/QtiImsExtManager.java
@@ -190,6 +190,26 @@
         }
     }
 
+    public void updateVoltePreference(int phoneId, int preference,
+            IQtiImsExtListener listener) throws QtiImsException {
+        obtainBinder();
+        try {
+            mQtiImsExt.updateVoltePreference(phoneId, preference, listener);
+        } catch(RemoteException e) {
+            throw new QtiImsException("Remote ImsService updateVoltePreference : " + e);
+        }
+    }
+
+    public void queryVoltePreference(int phoneId,
+            IQtiImsExtListener listener) throws QtiImsException {
+        obtainBinder();
+        try {
+            mQtiImsExt.queryVoltePreference(phoneId, listener);
+        } catch(RemoteException e) {
+            throw new QtiImsException("Remote ImsService queryVoltePreference : " + e);
+        }
+    }
+
     /**
      * Check if binder is available, else try to retrieve it from ServiceManager
      * if binder still doesn't exists throw {@link QtiImsException}
diff --git a/ims/src/org/codeaurora/ims/internal/IQtiImsExt.aidl b/ims/src/org/codeaurora/ims/internal/IQtiImsExt.aidl
index 1bc69fc..ab1096c 100644
--- a/ims/src/org/codeaurora/ims/internal/IQtiImsExt.aidl
+++ b/ims/src/org/codeaurora/ims/internal/IQtiImsExt.aidl
@@ -53,7 +53,7 @@
      *        SERVICE_CLASS, as defined in
      *        <code>com.android.internal.telephony.CommandsInterface.</code>
      * @param dialingNumber is the target phone number to forward calls to
-     * @param QtiImsExtListener listener to request
+     * @param listener an IQtiImsExtListener instance to indicate the response
      * @return void
      */
     oneway void setCallForwardUncondTimer(int startHour, int startMinute, int endHour,
@@ -70,7 +70,7 @@
      * @param serviceClass is service class, that is used to get CFT
      *        SERVICE_CLASS, as defined in
      *        <code>com.android.internal.telephony.CommandsInterface.</code>
-     * @param QtiImsExtListener listener to request
+     * @param listener an IQtiImsExtListener instance to indicate the response
      * @return void
      */
     oneway void getCallForwardUncondTimer(int reason, int serviceClass,
@@ -113,10 +113,10 @@
      * Transfer an established call to given number or call id
      *
      * @param phoneId indicates the phone instance which triggered the request
-     * @param type is one of the values QTI_IMS_TRANSFER_TYPE_*, as defined in
-     *        <code>org.codeaurora.ims.qtiims.QtiImsInterfaceUtils.</code>
+     * @param type is one of the values QTI_IMS_*_TRANSFER, as defined in
+     *        <code>org.codeaurora.ims.utils.QtiImsExtUtils.</code>
      * @param number indicates the target number to transfer
-     * @param listener an IQtiImsInterfaceListener instance to indicate the response
+     * @param listener an IQtiImsExtListener instance to indicate the response
      * @return void
      */
     oneway void sendCallTransferRequest(int phoneId, int type, String number,
@@ -172,4 +172,25 @@
      */
     oneway void registerForParticipantStatusInfo(IQtiImsExtListener listener);
 
+   /**
+     * updateVoltePreference
+     * Updates the user's VoLTE preference to lower layers
+     *
+     * @param phoneId indicates the phone instance which triggered the request
+     * @param preference is one of the values QTI_IMS_VOLTE_PREF_*, as defined in
+     *        <code>org.codeaurora.ims.utils.QtiImsExtUtils.</code>
+     * @param listener an IQtiImsExtListener instance to indicate the response
+     * @return void
+     */
+    oneway void updateVoltePreference(int phoneId, int preference, IQtiImsExtListener listener);
+
+   /**
+     * queryVoltePreference
+     * Retrieves the user's VoLTE preference from lower layers
+     *
+     * @param phoneId indicates the phone instance which triggered the request
+     * @param listener an IQtiImsExtListener instance to indicate the response
+     * @return void
+     */
+    oneway void queryVoltePreference(int phoneId, IQtiImsExtListener listener);
 }
diff --git a/ims/src/org/codeaurora/ims/internal/IQtiImsExtListener.aidl b/ims/src/org/codeaurora/ims/internal/IQtiImsExtListener.aidl
index 2896e65..46240ca 100644
--- a/ims/src/org/codeaurora/ims/internal/IQtiImsExtListener.aidl
+++ b/ims/src/org/codeaurora/ims/internal/IQtiImsExtListener.aidl
@@ -92,7 +92,7 @@
     /**
      * Notifies client the result of call deflect request
      *
-     * @param <result> is one of the values QTIIMS_REQUEST_*, as defined in
+     * @param <result> is one of the values QTI_IMS_REQUEST_*, as defined in
      *        <code>org.codeaurora.ims.utils.QtiImsExtUtils.</code>
      * @return void.
      */
@@ -102,7 +102,7 @@
      * Notifies client the result of call transfer request
      *
      * @param <result> is one of the values QTI_IMS_REQUEST_*, as defined in
-     *        <code>org.codeaurora.ims.qtiims.QtiImsInterfaceUtils.</code>
+     *        <code>org.codeaurora.ims.utils.QtiImsExtUtils.</code>
      * @return void.
      */
     void receiveCallTransferResponse(int result);
@@ -153,4 +153,25 @@
      */
     void notifyParticipantStatusInfo(int operation, int sipStatus,
             String participantUri, boolean isEct);
+
+    /**
+     * Notifies client the result of updateVoltePreference request
+     *
+     * @param <result> is one of the values QTI_IMS_REQUEST_*, as defined in
+     *        <code>org.codeaurora.ims.utils.QtiImsExtUtils.</code>
+     * @return void.
+     */
+    void onVoltePreferenceUpdated(int result);
+
+    /**
+     * Notifies client the result of queryVoltePreference request
+     *
+     * @param <result> is one of the values QTI_IMS_REQUEST_*, as defined in
+     *        <code>org.codeaurora.ims.utils.QtiImsExtUtils.</code>
+     * @param <mode> is valid only when <result> is QTI_IMS_REQUEST_SUCCESS and
+     *        is one of the values QTI_IMS_VOLTE_PREF_*, as defined in
+     *        <code>org.codeaurora.ims.utils.QtiImsExtUtils.</code>
+     * @return void.
+     */
+    void onVoltePreferenceQueried(int result, int mode);
 }
diff --git a/ims/src/org/codeaurora/ims/utils/QtiImsExtUtils.java b/ims/src/org/codeaurora/ims/utils/QtiImsExtUtils.java
index b87f270..ada22ba 100644
--- a/ims/src/org/codeaurora/ims/utils/QtiImsExtUtils.java
+++ b/ims/src/org/codeaurora/ims/utils/QtiImsExtUtils.java
@@ -93,6 +93,16 @@
      */
     public static final String EXTRA_SSAC = "Ssac";
 
+    /**
+     * Definitions for the volte preference values.
+     */
+    //Value representing volte preference is OFF
+    public static final int QTI_IMS_VOLTE_PREF_OFF = 0;
+    //Value representing volte preference is ON
+    public static final int QTI_IMS_VOLTE_PREF_ON = 1;
+    //Value representing volte preference is NOT known
+    public static final int QTI_IMS_VOLTE_PREF_UNKNOWN = 2;
+
 
     /* Incoming conference call extra key */
     public static final String QTI_IMS_INCOMING_CONF_EXTRA_KEY = "incomingConference";