Merge "IMS : Deprecate simless RTT APIs from QtiImsExtUtils"
diff --git a/extphone/src/com/qti/extphone/CiwlanConfig.aidl b/extphone/src/com/qti/extphone/CiwlanConfig.aidl
new file mode 100644
index 0000000..c0d5380
--- /dev/null
+++ b/extphone/src/com/qti/extphone/CiwlanConfig.aidl
@@ -0,0 +1,8 @@
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear
+ */
+
+package com.qti.extphone;
+
+parcelable CiwlanConfig;
diff --git a/extphone/src/com/qti/extphone/CiwlanConfig.java b/extphone/src/com/qti/extphone/CiwlanConfig.java
new file mode 100644
index 0000000..6bd5ea0
--- /dev/null
+++ b/extphone/src/com/qti/extphone/CiwlanConfig.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear
+ */
+
+package com.qti.extphone;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class CiwlanConfig implements Parcelable {
+
+ private static final String TAG = "CiwlanConfig";
+
+ public static final int INVALID = -1;
+ public static final int ONLY = 0;
+ public static final int PREFERRED = 1;
+
+ private int mHomeMode = INVALID;
+ private int mRoamMode = INVALID;
+
+ public CiwlanConfig(int homeMode, int roamMode) {
+ mHomeMode = homeMode;
+ mRoamMode = roamMode;
+ }
+
+ public CiwlanConfig(Parcel in) {
+ mHomeMode = in.readInt();
+ mRoamMode = in.readInt();
+ }
+
+ public String getHomeCiwlanMode() {
+ switch (mHomeMode) {
+ case ONLY:
+ return "ONLY";
+ case PREFERRED:
+ return "PREFERRED";
+ default:
+ return "INVALID";
+ }
+ }
+
+ public String getRoamCiwlanMode() {
+ switch (mRoamMode) {
+ case ONLY:
+ return "ONLY";
+ case PREFERRED:
+ return "PREFERRED";
+ default:
+ return "INVALID";
+ }
+ }
+
+ public boolean isCiwlanOnlyInHome() {
+ return mHomeMode == ONLY;
+ }
+
+ public boolean isCiwlanOnlyInRoam() {
+ return mRoamMode == ONLY;
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel out, int flags) {
+ out.writeInt(mHomeMode);
+ out.writeInt(mRoamMode);
+ }
+
+ public static final Parcelable.Creator<CiwlanConfig> CREATOR = new Parcelable.Creator() {
+ @Override
+ public CiwlanConfig createFromParcel(Parcel in) {
+ return new CiwlanConfig(in);
+ }
+
+ @Override
+ public CiwlanConfig[] newArray(int size) {
+ return new CiwlanConfig[size];
+ }
+ };
+
+ @Override
+ public String toString() {
+ return TAG + " homeMode = " + getHomeCiwlanMode() + ", roamMode = " + getRoamCiwlanMode();
+ }
+}
diff --git a/extphone/src/com/qti/extphone/DualDataRecommendation.aidl b/extphone/src/com/qti/extphone/DualDataRecommendation.aidl
new file mode 100644
index 0000000..5c3d8f9
--- /dev/null
+++ b/extphone/src/com/qti/extphone/DualDataRecommendation.aidl
@@ -0,0 +1,8 @@
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear
+ */
+
+package com.qti.extphone;
+
+parcelable DualDataRecommendation;
diff --git a/extphone/src/com/qti/extphone/DualDataRecommendation.java b/extphone/src/com/qti/extphone/DualDataRecommendation.java
new file mode 100644
index 0000000..c39282b
--- /dev/null
+++ b/extphone/src/com/qti/extphone/DualDataRecommendation.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear
+ */
+
+package com.qti.extphone;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class DualDataRecommendation implements Parcelable {
+
+ private static final String TAG = "DualDataRecommendation";
+
+ // Recommended SUB
+ public static final int DDS = 1;
+ public static final int NON_DDS = 2;
+
+ // Action
+ public static final int ACTION_DATA_NOT_ALLOW = 0;
+ public static final int ACTION_DATA_ALLOW = 1;
+
+ private int mSub;
+ private int mAction;
+
+ public DualDataRecommendation(int sub, int action) {
+ mSub = sub;
+ mAction = action;
+ }
+
+ public DualDataRecommendation(Parcel in) {
+ mSub = in.readInt();
+ mAction = in.readInt();
+ }
+
+ public int getRecommendedSub() {
+ return mSub;
+ }
+
+ public int getAction() {
+ return mAction;
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ public void writeToParcel(Parcel out, int flags) {
+ out.writeInt(mSub);
+ out.writeInt(mAction);
+ }
+
+ public static final Parcelable.Creator<DualDataRecommendation> CREATOR
+ = new Parcelable.Creator() {
+ public DualDataRecommendation createFromParcel(Parcel in) {
+ return new DualDataRecommendation(in);
+ }
+
+ public DualDataRecommendation[] newArray(int size) {
+ return new DualDataRecommendation[size];
+ }
+ };
+
+ @Override
+ public String toString() {
+ return TAG + ": getRecommendedSub(): " + getRecommendedSub()
+ + " getAction: " + getAction();
+ }
+}
diff --git a/extphone/src/com/qti/extphone/ExtPhoneCallbackListener.java b/extphone/src/com/qti/extphone/ExtPhoneCallbackListener.java
index 3f1eb65..c27237c 100644
--- a/extphone/src/com/qti/extphone/ExtPhoneCallbackListener.java
+++ b/extphone/src/com/qti/extphone/ExtPhoneCallbackListener.java
@@ -71,6 +71,7 @@
public static final int EVENT_SET_SMART_DDS_SWITCH_TOGGLE_RESPONSE = 35;
public static final int EVENT_START_NETWORK_SCAN_RESPONSE = 36;
public static final int EVENT_STOP_NETWORK_SCAN_RESPONSE = 37;
+ public static final int EVENT_ON_CIWLAN_CAPABILITY_CHANGE = 38;
private Handler mHandler;
IExtPhoneCallback mCallback = new IExtPhoneCallbackStub(this);
diff --git a/extphone/src/com/qti/extphone/ExtTelephonyManager.java b/extphone/src/com/qti/extphone/ExtTelephonyManager.java
index 49084bc..fc90c6a 100644
--- a/extphone/src/com/qti/extphone/ExtTelephonyManager.java
+++ b/extphone/src/com/qti/extphone/ExtTelephonyManager.java
@@ -1085,6 +1085,20 @@
return null;
}
+ public CiwlanConfig getCiwlanConfig(int slotId) throws RemoteException {
+ CiwlanConfig config = null;
+ if (!isServiceConnected()) {
+ Log.e(LOG_TAG, "service not connected!");
+ return config;
+ }
+ try {
+ config = mExtTelephonyService.getCiwlanConfig(slotId);
+ } catch (RemoteException e) {
+ Log.e(LOG_TAG, "getCiwlanConfig ended in remote exception", e);
+ }
+ return config;
+ }
+
public Client registerCallback(String packageName, IExtPhoneCallback callback) {
Client client = null;
if (!isServiceConnected()) {
diff --git a/extphone/src/com/qti/extphone/IExtPhone.aidl b/extphone/src/com/qti/extphone/IExtPhone.aidl
index 0f4964c..444f2c6 100644
--- a/extphone/src/com/qti/extphone/IExtPhone.aidl
+++ b/extphone/src/com/qti/extphone/IExtPhone.aidl
@@ -38,7 +38,7 @@
import android.telephony.ImsiEncryptionInfo;
-import com.qti.extphone.Token;
+import com.qti.extphone.CiwlanConfig;
import com.qti.extphone.Client;
import com.qti.extphone.IDepersoResCallback;
import com.qti.extphone.IExtPhoneCallback;
@@ -47,6 +47,7 @@
import com.qti.extphone.QtiImeiInfo;
import com.qti.extphone.QtiSetNetworkSelectionMode;
import com.qti.extphone.QtiSimType;
+import com.qti.extphone.Token;
interface IExtPhone {
@@ -584,4 +585,12 @@
* @return - Integer Token can be used to compare with the response.
*/
Token setSimType(in Client client, in QtiSimType[] simType);
+
+ /**
+ * Query the C_IWLAN mode
+ *
+ * @param - slotId slot ID
+ * @return - The C_IWLAN configuration (only vs preferred) for home and roaming
+ */
+ CiwlanConfig getCiwlanConfig(int slotId);
}
diff --git a/extphone/src/com/qti/extphone/IExtPhoneCallback.aidl b/extphone/src/com/qti/extphone/IExtPhoneCallback.aidl
index 484cedd..a068c52 100644
--- a/extphone/src/com/qti/extphone/IExtPhoneCallback.aidl
+++ b/extphone/src/com/qti/extphone/IExtPhoneCallback.aidl
@@ -30,7 +30,7 @@
/*
* Changes from Qualcomm Innovation Center are provided under the following license:
*
- * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
* SPDX-License-Identifier: BSD-3-Clause-Clear
*/
@@ -270,7 +270,7 @@
/**
* Response to getSecureModeStatus
- * @param - token is the same token which is received in setSmartDdsSwitchToggle
+ * @param - token is the same token which is passed in from getSecureModeStatus
* @param - status SUCCESS/FAILURE based on RIL data module response
* @param - enableStatus Secure Mode status - true: enabled, false: disabled
*/
diff --git a/ims/ims-ext-common/src/org/codeaurora/ims/Coordinate2D.aidl b/ims/ims-ext-common/src/org/codeaurora/ims/Coordinate2D.aidl
new file mode 100644
index 0000000..8ffc0c4
--- /dev/null
+++ b/ims/ims-ext-common/src/org/codeaurora/ims/Coordinate2D.aidl
@@ -0,0 +1,8 @@
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear.
+ */
+
+package org.codeaurora.ims;
+
+parcelable Coordinate2D;
diff --git a/ims/ims-ext-common/src/org/codeaurora/ims/Coordinate2D.java b/ims/ims-ext-common/src/org/codeaurora/ims/Coordinate2D.java
new file mode 100644
index 0000000..251366a
--- /dev/null
+++ b/ims/ims-ext-common/src/org/codeaurora/ims/Coordinate2D.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear.
+ */
+
+package org.codeaurora.ims;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * Parcelable object to handle Coordinate2D info
+ * @hide
+ */
+
+public class Coordinate2D implements Parcelable {
+
+ private int mX;
+ private int mY;
+
+ public Coordinate2D(int x, int y) {
+ mX = x;
+ mY = y;
+ }
+
+ public Coordinate2D(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public int getX() {
+ return mX;
+ }
+
+ public int getY() {
+ return mY;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flag) {
+ dest.writeInt(mX);
+ dest.writeInt(mY);
+ }
+
+ public void readFromParcel(Parcel in) {
+ mX = in.readInt();
+ mY = in.readInt();
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+
+ public static final Creator<Coordinate2D> CREATOR =
+ new Creator<Coordinate2D>() {
+ @Override
+ public Coordinate2D createFromParcel(Parcel in) {
+ return new Coordinate2D(in);
+ }
+
+ @Override
+ public Coordinate2D[] newArray(int size) {
+ return new Coordinate2D[size];
+ }
+ };
+
+ public String toString() {
+ return ("{Coordinate2D: " + "x = " + mX + " , y = " + mY + "}");
+ }
+}
diff --git a/ims/ims-ext-common/src/org/codeaurora/ims/QtiCallConstants.java b/ims/ims-ext-common/src/org/codeaurora/ims/QtiCallConstants.java
index 9b92a80..b107e2d 100755
--- a/ims/ims-ext-common/src/org/codeaurora/ims/QtiCallConstants.java
+++ b/ims/ims-ext-common/src/org/codeaurora/ims/QtiCallConstants.java
@@ -27,7 +27,7 @@
*
* Changes from Qualcomm Innovation Center are provided under the following license:
*
- * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted (subject to the limitations in the
@@ -143,6 +143,15 @@
* CODE_CONCURRENT_CALLS_NOT_POSSIBLE} */
public static final int CODE_CONCURRENT_CALLS_NOT_POSSIBLE = 3002;
+ /* Call fail error code to EPSFB failure */
+ public static final int CODE_EPSFB_FAILURE = 3003;
+
+ /* Call fail error code to TWAIT_EXPIRED */
+ public static final int CODE_TWAIT_EXPIRED = 3004;
+
+ /* Call fail error code to TCP_CONNECTION_REQ */
+ public static final int CODE_TCP_CONNECTION_REQ = 3005;
+
// Default code to use for additional call info code.
public static final int CODE_UNSPECIFIED = -1;
@@ -558,4 +567,17 @@
// requires permission "com.qti.permission.RECEIVE_ESSENTIAL_RECORDS_LOADED".
public static final String ACTION_ESSENTIAL_RECORDS_LOADED =
"org.codeaurora.intent.action.ESSENTIAL_RECORDS_LOADED";
+
+ // Video online service
+ public static final String EXTRA_VIDEO_ONLINE_SERVICE_SUPPORTED = "isVosSupported";
+
+ /**
+ * The value of voice/video/text is defined according to the SRTP categories
+ * and the name in the extra is defined by QC IMS service.
+ */
+ public static final String EXTRAS_SRTP_ENCRYPTION_CATEGORY = "srtpEncryptionCategory";
+ public static final int SRTP_CATEGORY_UNENCRYPTED = 0;
+ public static final int SRTP_CATEGORY_VOICE = 1 << 0;
+ public static final int SRTP_CATEGORY_VIDEO = 1 << 1;
+ public static final int SRTP_CATEGORY_TEXT = 1 << 2;
}
diff --git a/ims/ims-ext-common/src/org/codeaurora/ims/QtiCarrierConfigs.java b/ims/ims-ext-common/src/org/codeaurora/ims/QtiCarrierConfigs.java
index ebdc1b6..543aaab 100755
--- a/ims/ims-ext-common/src/org/codeaurora/ims/QtiCarrierConfigs.java
+++ b/ims/ims-ext-common/src/org/codeaurora/ims/QtiCarrierConfigs.java
@@ -27,7 +27,7 @@
*
* Changes from Qualcomm Innovation Center are provided under the following license:
*
- * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted (subject to the limitations in the
@@ -145,25 +145,25 @@
"allow_one_way_accept_video_call";
/* Config to determine if Carrier supports call composer
- * true - if call composer is support else false
+ * true - if call composer is supported else false
*/
public static final String KEY_CARRIER_CALL_COMPOSER_SUPPORTED =
"carrier_call_composer_supported_bool";
/* Config to determine if Carrier supports b2c enriched calling
- * true - if b2c enriched calling is support else false
+ * true - if b2c enriched calling is supported else false
*/
public static final String KEY_CARRIER_B2C_ENRICHED_CALLING_SUPPORTED =
"carrier_b2c_enriched_calling_supported_bool";
/* Config to determine if Carrier supports video CRS
- * true - if video CRS is support else false
+ * true - if video CRS is supported else false
*/
public static final String KEY_CARRIER_VIDEO_CRS_SUPPORTED =
"carrier_video_crs_supported_bool";
/* Config to determine if Carrier supports video CRBT
- * true - if video CRBT is support else false
+ * true - if video CRBT is supported else false
*/
public static final String KEY_CARRIER_VIDEO_CRBT_SUPPORTED =
"config_enable_video_crbt";
@@ -199,8 +199,14 @@
"is_private_network";
/* Config to determine if Carrier supports ims data channel
- * true - if data channel is support else false
+ * true - if data channel is supported else false
*/
public static final String KEY_CARRIER_DATA_CHANNEL_SUPPORTED =
"carrier_data_channel_supported_bool";
+
+ /* Config to determine if Carrier supports video online service
+ * true - if video online service is supported else false
+ */
+ public static final String KEY_CARRIER_VIDEO_ONLINE_SERVICE_SUPPORTED =
+ "carrier_video_online_service_supported_bool";
}
diff --git a/ims/ims-ext-common/src/org/codeaurora/ims/QtiImsExtBase.java b/ims/ims-ext-common/src/org/codeaurora/ims/QtiImsExtBase.java
index c63c29d..dee1a72 100644
--- a/ims/ims-ext-common/src/org/codeaurora/ims/QtiImsExtBase.java
+++ b/ims/ims-ext-common/src/org/codeaurora/ims/QtiImsExtBase.java
@@ -24,6 +24,10 @@
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Changes from Qualcomm Innovation Center are provided under the following license:
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear.
*/
package org.codeaurora.ims;
@@ -36,6 +40,7 @@
import org.codeaurora.ims.internal.IImsMultiIdentityInterface;
import org.codeaurora.ims.internal.IImsScreenShareController;
import org.codeaurora.ims.QtiCallConstants;
+import org.codeaurora.ims.VosActionInfo;
/**
* Base implementation for IQtiImsExt.
*/
@@ -196,6 +201,18 @@
public boolean isDataChannelEnabled(int phoneId) {
return onIsDataChannelEnabled(phoneId);
}
+
+ @Override
+ public void sendVosSupportStatus(int phoneId, boolean isVosSupported,
+ IQtiImsExtListener listener) {
+ onSendVosSupportStatus(phoneId, isVosSupported, listener);
+ }
+
+ @Override
+ public void sendVosActionInfo(int phoneId, VosActionInfo vosActionInfo,
+ IQtiImsExtListener listener) {
+ onSendVosActionInfo(phoneId, vosActionInfo, listener);
+ }
};
private QtiImsExtBinder mQtiImsExtBinder;
@@ -319,4 +336,14 @@
// no-op
return false;
}
+
+ protected void onSendVosSupportStatus(int phoneId, boolean isVosSupported,
+ IQtiImsExtListener listener) {
+ // no-op
+ }
+
+ protected void onSendVosActionInfo(int phoneId, VosActionInfo vosActionInfo,
+ IQtiImsExtListener listener) {
+ // no-op
+ }
}
diff --git a/ims/ims-ext-common/src/org/codeaurora/ims/QtiImsExtListenerBaseImpl.java b/ims/ims-ext-common/src/org/codeaurora/ims/QtiImsExtListenerBaseImpl.java
index 0dac915..e0507fa 100644
--- a/ims/ims-ext-common/src/org/codeaurora/ims/QtiImsExtListenerBaseImpl.java
+++ b/ims/ims-ext-common/src/org/codeaurora/ims/QtiImsExtListenerBaseImpl.java
@@ -24,6 +24,10 @@
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Changes from Qualcomm Innovation Center are provided under the following license:
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear.
*/
package org.codeaurora.ims;
@@ -110,5 +114,13 @@
@Override
public void notifyDataChannelCapability(int phoneId, boolean dcCapability) {
}
+
+ @Override
+ public void handleSendVosSupportStatusResponse(int phoneId, int result) {
+ }
+
+ @Override
+ public void handleSendVosActionInfoResponse(int phoneId, int result) {
+ }
}
diff --git a/ims/ims-ext-common/src/org/codeaurora/ims/QtiImsExtManager.java b/ims/ims-ext-common/src/org/codeaurora/ims/QtiImsExtManager.java
index 42eae0d..8e70265 100644
--- a/ims/ims-ext-common/src/org/codeaurora/ims/QtiImsExtManager.java
+++ b/ims/ims-ext-common/src/org/codeaurora/ims/QtiImsExtManager.java
@@ -24,6 +24,10 @@
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Changes from Qualcomm Innovation Center are provided under the following license:
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear.
*/
package org.codeaurora.ims;
@@ -451,4 +455,24 @@
throw new QtiImsException("Remote ImsService isDataChannelEnabled: " + e);
}
}
+
+ public void sendVosSupportStatus(int phoneId, boolean isVosSupported,
+ IQtiImsExtListener listener) throws QtiImsException {
+ validateInvariants(phoneId);
+ try {
+ mQtiImsExt.sendVosSupportStatus(phoneId, isVosSupported, listener);
+ } catch (RemoteException e) {
+ throw new QtiImsException("Remote ImsService sendVosSupportStatus: " + e);
+ }
+ }
+
+ public void sendVosActionInfo(int phoneId, VosActionInfo vosActionInfo,
+ IQtiImsExtListener listener) throws QtiImsException {
+ validateInvariants(phoneId);
+ try {
+ mQtiImsExt.sendVosActionInfo(phoneId, vosActionInfo, listener);
+ } catch (RemoteException e) {
+ throw new QtiImsException("Remote ImsService sendVosActionInfo: " + e);
+ }
+ }
}
diff --git a/ims/ims-ext-common/src/org/codeaurora/ims/VosActionInfo.aidl b/ims/ims-ext-common/src/org/codeaurora/ims/VosActionInfo.aidl
new file mode 100644
index 0000000..27fac40
--- /dev/null
+++ b/ims/ims-ext-common/src/org/codeaurora/ims/VosActionInfo.aidl
@@ -0,0 +1,8 @@
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear.
+ */
+
+package org.codeaurora.ims;
+
+parcelable VosActionInfo;
diff --git a/ims/ims-ext-common/src/org/codeaurora/ims/VosActionInfo.java b/ims/ims-ext-common/src/org/codeaurora/ims/VosActionInfo.java
new file mode 100644
index 0000000..18e3648
--- /dev/null
+++ b/ims/ims-ext-common/src/org/codeaurora/ims/VosActionInfo.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear.
+ */
+
+package org.codeaurora.ims;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import org.codeaurora.ims.VosMoveInfo;
+import org.codeaurora.ims.VosTouchInfo;
+
+/**
+ * Parcelable object to handle VosActionInfo info
+ * @hide
+ */
+
+public class VosActionInfo implements Parcelable {
+ public static final VosMoveInfo INVALID_MOVEINFO = null;
+ public static final VosTouchInfo INVALID_TOUCHINFO = null;
+
+ private VosMoveInfo mVosMoveInfo;
+ private VosTouchInfo mVosTouchInfo;
+
+ public VosActionInfo(VosMoveInfo vosMoveInfo, VosTouchInfo vosTouchInfo) {
+ mVosMoveInfo = vosMoveInfo;
+ mVosTouchInfo = vosTouchInfo;
+ }
+
+ public VosActionInfo(VosTouchInfo vosTouchInfo) {
+ this(INVALID_MOVEINFO, vosTouchInfo);
+ }
+
+ public VosActionInfo(VosMoveInfo vosMoveInfo) {
+ this(vosMoveInfo, INVALID_TOUCHINFO);
+ }
+
+ public VosActionInfo(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public VosMoveInfo getVosMoveInfo() {
+ return mVosMoveInfo;
+ }
+
+ public VosTouchInfo getVosTouchInfo() {
+ return mVosTouchInfo;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flag) {
+ dest.writeParcelable(mVosMoveInfo, flag);
+ dest.writeParcelable(mVosTouchInfo, flag);
+ }
+
+ public void readFromParcel(Parcel in) {
+ mVosMoveInfo = in.readParcelable(VosMoveInfo.class.getClassLoader());
+ mVosTouchInfo = in.readParcelable(VosTouchInfo.class.getClassLoader());
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+
+ public static final Creator<VosActionInfo> CREATOR =
+ new Creator<VosActionInfo>() {
+ @Override
+ public VosActionInfo createFromParcel(Parcel in) {
+ return new VosActionInfo(in);
+ }
+
+ @Override
+ public VosActionInfo[] newArray(int size) {
+ return new VosActionInfo[size];
+ }
+ };
+
+ public String toString() {
+ return ("{VosActionInfo: " + "vosMoveInfo = " +
+ mVosMoveInfo + " , vosTouchInfo = " + mVosTouchInfo + "}");
+ }
+}
diff --git a/ims/ims-ext-common/src/org/codeaurora/ims/VosMoveInfo.aidl b/ims/ims-ext-common/src/org/codeaurora/ims/VosMoveInfo.aidl
new file mode 100644
index 0000000..db84d92
--- /dev/null
+++ b/ims/ims-ext-common/src/org/codeaurora/ims/VosMoveInfo.aidl
@@ -0,0 +1,8 @@
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear.
+ */
+
+package org.codeaurora.ims;
+
+parcelable VosMoveInfo;
diff --git a/ims/ims-ext-common/src/org/codeaurora/ims/VosMoveInfo.java b/ims/ims-ext-common/src/org/codeaurora/ims/VosMoveInfo.java
new file mode 100644
index 0000000..ae4316a
--- /dev/null
+++ b/ims/ims-ext-common/src/org/codeaurora/ims/VosMoveInfo.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear.
+ */
+
+package org.codeaurora.ims;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import org.codeaurora.ims.Coordinate2D;
+
+/**
+ * Parcelable object to handle VosMoveInfo info
+ * @hide
+ */
+
+public class VosMoveInfo implements Parcelable {
+
+ private Coordinate2D mStart;
+ private Coordinate2D mEnd;
+
+ public VosMoveInfo(Coordinate2D start, Coordinate2D end) {
+ mStart = start;
+ mEnd = end;
+ }
+
+ public VosMoveInfo(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public Coordinate2D getStart() {
+ return mStart;
+ }
+
+ public Coordinate2D getEnd() {
+ return mEnd;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flag) {
+ dest.writeParcelable(mStart, flag);
+ dest.writeParcelable(mEnd, flag);
+ }
+
+ public void readFromParcel(Parcel in) {
+ mStart = in.readParcelable(Coordinate2D.class.getClassLoader());
+ mEnd = in.readParcelable(Coordinate2D.class.getClassLoader());
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+
+ public static final Creator<VosMoveInfo> CREATOR =
+ new Creator<VosMoveInfo>() {
+ @Override
+ public VosMoveInfo createFromParcel(Parcel in) {
+ return new VosMoveInfo(in);
+ }
+
+ @Override
+ public VosMoveInfo[] newArray(int size) {
+ return new VosMoveInfo[size];
+ }
+ };
+
+ public String toString() {
+ return ("{VosMoveInfo: " + "start = " + mStart + " , end = " + mEnd + "}");
+ }
+}
diff --git a/ims/ims-ext-common/src/org/codeaurora/ims/VosTouchInfo.aidl b/ims/ims-ext-common/src/org/codeaurora/ims/VosTouchInfo.aidl
new file mode 100644
index 0000000..1807cab
--- /dev/null
+++ b/ims/ims-ext-common/src/org/codeaurora/ims/VosTouchInfo.aidl
@@ -0,0 +1,8 @@
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear.
+ */
+
+package org.codeaurora.ims;
+
+parcelable VosTouchInfo;
diff --git a/ims/ims-ext-common/src/org/codeaurora/ims/VosTouchInfo.java b/ims/ims-ext-common/src/org/codeaurora/ims/VosTouchInfo.java
new file mode 100644
index 0000000..46e518c
--- /dev/null
+++ b/ims/ims-ext-common/src/org/codeaurora/ims/VosTouchInfo.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear.nd
+ */
+
+package org.codeaurora.ims;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import org.codeaurora.ims.Coordinate2D;
+
+/**
+ * Parcelable object to handle VosTouchInfo info
+ * @hide
+ */
+
+public class VosTouchInfo implements Parcelable {
+
+ private Coordinate2D mTouch;
+ // Milliseconds
+ private int mTouchDuration;
+
+ public VosTouchInfo(Coordinate2D touch, int touchDuration) {
+ mTouch = touch;
+ mTouchDuration = touchDuration;
+ }
+
+ public VosTouchInfo(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public Coordinate2D getTouch() {
+ return mTouch;
+ }
+
+ public int getTouchDuration() {
+ return mTouchDuration;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flag) {
+ dest.writeParcelable(mTouch, flag);
+ dest.writeInt(mTouchDuration);
+ }
+
+ public void readFromParcel(Parcel in) {
+ mTouch = in.readParcelable(Coordinate2D.class.getClassLoader());
+ mTouchDuration = in.readInt();
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+
+ public static final Creator<VosTouchInfo> CREATOR =
+ new Creator<VosTouchInfo>() {
+ @Override
+ public VosTouchInfo createFromParcel(Parcel in) {
+ return new VosTouchInfo(in);
+ }
+
+ @Override
+ public VosTouchInfo[] newArray(int size) {
+ return new VosTouchInfo[size];
+ }
+ };
+
+ public String toString() {
+ return ("{VosTouchInfo: " + "touch = " +
+ mTouch + " , touchDuration = " + mTouchDuration + "}");
+ }
+}
diff --git a/ims/ims-ext-common/src/org/codeaurora/ims/internal/IQtiImsExt.aidl b/ims/ims-ext-common/src/org/codeaurora/ims/internal/IQtiImsExt.aidl
index 8e960a2..12caa31 100644
--- a/ims/ims-ext-common/src/org/codeaurora/ims/internal/IQtiImsExt.aidl
+++ b/ims/ims-ext-common/src/org/codeaurora/ims/internal/IQtiImsExt.aidl
@@ -24,6 +24,10 @@
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Changes from Qualcomm Innovation Center are provided under the following license:
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear.
*/
package org.codeaurora.ims.internal;
@@ -33,6 +37,7 @@
import org.codeaurora.ims.internal.IQtiImsExtListener;
import org.codeaurora.ims.internal.IImsMultiIdentityInterface;
import org.codeaurora.ims.internal.IImsScreenShareController;
+import org.codeaurora.ims.VosActionInfo;
/**
* Interface through which APP and vendor communicates.
@@ -362,4 +367,28 @@
*@throws RemoteException if calling the IMS service results in an error.
*/
boolean isDataChannelEnabled(int phoneId);
+
+ /**
+ * sendVosSupportStatus
+ * Send video online service status supported
+ *
+ * @param phoneId indicates the phone instance which triggered the request
+ * @param isVosSupported sends whether device supports video online service to lower layer
+ * @param listener an IQtiImsExtListener instance to indicate the response
+ * @return void
+ */
+ oneway void sendVosSupportStatus(int phoneId, boolean isVosSupported,
+ IQtiImsExtListener listener);
+
+ /**
+ * sendVosActionInfo
+ * Send user's action info like touch or move
+ *
+ * @param phoneId indicates the phone instance which triggered the request
+ * @param vosActionInfo sends user's touch or move info to lower layer
+ * @param listener an IQtiImsExtListener instance to indicate the response
+ * @return void
+ */
+ oneway void sendVosActionInfo(int phoneId, in VosActionInfo vosActionInfo,
+ IQtiImsExtListener listener);
}
diff --git a/ims/ims-ext-common/src/org/codeaurora/ims/internal/IQtiImsExtListener.aidl b/ims/ims-ext-common/src/org/codeaurora/ims/internal/IQtiImsExtListener.aidl
index 3d3c73c..55f7359 100644
--- a/ims/ims-ext-common/src/org/codeaurora/ims/internal/IQtiImsExtListener.aidl
+++ b/ims/ims-ext-common/src/org/codeaurora/ims/internal/IQtiImsExtListener.aidl
@@ -24,6 +24,10 @@
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Changes from Qualcomm Innovation Center are provided under the following license:
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear.
*/
package org.codeaurora.ims.internal;
@@ -205,4 +209,24 @@
* @return void.
*/
void notifyDataChannelCapability(int phoneId, boolean dcCapability);
+
+ /**
+ * Notifies client the result of send vos support status
+ *
+ * @param phoneId indicates the phone instance which triggered the request
+ * @param <result> is one of the values QTI_IMS_REQUEST_*, as defined in
+ * <code>org.codeaurora.ims.utils.QtiImsExtUtils.</code>
+ * @return void.
+ */
+ void handleSendVosSupportStatusResponse(int phoneId, int result);
+
+ /**
+ * Notifies client the result of send vos action info
+ *
+ * @param phoneId indicates the phone instance which triggered the request
+ * @param <result> is one of the values QTI_IMS_REQUEST_*, as defined in
+ * <code>org.codeaurora.ims.utils.QtiImsExtUtils.</code>
+ * @return void.
+ */
+ void handleSendVosActionInfoResponse(int phoneId, int result);
}
diff --git a/ims/ims-ext-common/src/org/codeaurora/ims/utils/QtiImsExtUtils.java b/ims/ims-ext-common/src/org/codeaurora/ims/utils/QtiImsExtUtils.java
index eff1fad..cf5d2a5 100644
--- a/ims/ims-ext-common/src/org/codeaurora/ims/utils/QtiImsExtUtils.java
+++ b/ims/ims-ext-common/src/org/codeaurora/ims/utils/QtiImsExtUtils.java
@@ -28,7 +28,7 @@
*
* Changes from Qualcomm Innovation Center are provided under the following license:
*
- * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted (subject to the limitations in the
@@ -854,4 +854,10 @@
QtiCallConstants.DATA_CHANNEL + phoneId,
QtiCallConstants.DATA_CHANNEL_DISABLED);
}
+
+ // Returns true if Carrier supports video online service
+ public static boolean isVosSupported(int phoneId, Context context) {
+ return isCarrierConfigEnabled(phoneId, context,
+ QtiCarrierConfigs.KEY_CARRIER_VIDEO_ONLINE_SERVICE_SUPPORTED);
+ }
}