diff options
46 files changed, 4010 insertions, 0 deletions
diff --git a/Android.mk b/Android.mk index cf6d946f7406..6a3168ee7ea4 100644 --- a/Android.mk +++ b/Android.mk @@ -422,6 +422,12 @@ LOCAL_SRC_FILES += \ telephony/java/com/android/ims/internal/IImsUtListener.aidl \ telephony/java/com/android/ims/internal/IImsVideoCallCallback.aidl \ telephony/java/com/android/ims/internal/IImsVideoCallProvider.aidl \ + telephony/java/com/android/ims/internal/uce/uceservice/IUceService.aidl \ + telephony/java/com/android/ims/internal/uce/uceservice/IUceListener.aidl \ + telephony/java/com/android/ims/internal/uce/options/IOptionsService.aidl \ + telephony/java/com/android/ims/internal/uce/options/IOptionsListener.aidl \ + telephony/java/com/android/ims/internal/uce/presence/IPresenceService.aidl \ + telephony/java/com/android/ims/internal/uce/presence/IPresenceListener.aidl \ telephony/java/com/android/ims/ImsConfigListener.aidl \ telephony/java/com/android/internal/telephony/ICarrierConfigLoader.aidl \ telephony/java/com/android/internal/telephony/IMms.aidl \ diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 97a51d5e42b3..30607dd71efa 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -458,6 +458,9 @@ <protected-broadcast android:name="android.net.wifi.PASSPOINT_ICON_RECEIVED" /> <protected-broadcast android:name="com.android.server.notification.CountdownConditionProvider" /> + <!-- @hide UCE service Notification --> + <protected-broadcast android:name="com.android.ims.internal.uce.UCE_SERVICE_UP" /> + <!-- ====================================================================== --> <!-- RUNTIME PERMISSIONS --> <!-- ====================================================================== --> @@ -831,6 +834,26 @@ android:protectionLevel="dangerous"/> <!-- ====================================================================== --> + <!-- Permissions for accessing the UCE Service --> + <!-- ====================================================================== --> + + <!-- @hide Allows an application to Access UCE-Presence. + <p>Protection level: dangerous + --> + <permission android:name="android.permission.ACCESS_UCE_PRESENCE_SERVICE" + android:permissionGroup="android.permission-group.PHONE" + android:protectionLevel="dangerous"/> + + <!-- @hide Allows an application to Access UCE-OPTIONS. + <p>Protection level: dangerous + --> + <permission android:name="android.permission.ACCESS_UCE_OPTIONS_SERVICE" + android:permissionGroup="android.permission-group.PHONE" + android:protectionLevel="dangerous"/> + + + + <!-- ====================================================================== --> <!-- Permissions for accessing the device camera --> <!-- ====================================================================== --> <eat-comment /> diff --git a/telephony/java/com/android/ims/internal/uce/common/CapInfo.aidl b/telephony/java/com/android/ims/internal/uce/common/CapInfo.aidl new file mode 100644 index 000000000000..5b0ac1f4da99 --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/common/CapInfo.aidl @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.ims.internal.uce.common; + +parcelable CapInfo;
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/common/CapInfo.java b/telephony/java/com/android/ims/internal/uce/common/CapInfo.java new file mode 100644 index 000000000000..56969a8fb612 --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/common/CapInfo.java @@ -0,0 +1,443 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.common; + +import android.os.Parcel; +import android.os.Parcelable; +import android.util.Log; + +/** Class for capability discovery information. + * @hide */ +public class CapInfo implements Parcelable { + + /** IM session support. */ + private boolean mImSupported = false; + /** File transfer support. */ + private boolean mFtSupported = false; + /** File transfer Thumbnail support. */ + private boolean mFtThumbSupported = false; + /** File transfer Store and forward support. */ + private boolean mFtSnFSupported = false; + /** File transfer HTTP support. */ + private boolean mFtHttpSupported = false; + /** Image sharing support. */ + private boolean mIsSupported = false; + /** Video sharing during a CS call support -- IR-74. */ + private boolean mVsDuringCSSupported = false; + /** Video sharing outside of voice call support -- IR-84. */ + private boolean mVsSupported = false; + /** Social presence support. */ + private boolean mSpSupported = false; + /** Presence discovery support. */ + private boolean mCdViaPresenceSupported = false; + /** IP voice call support (IR-92/IR-58). */ + private boolean mIpVoiceSupported = false; + /** IP video call support (IR-92/IR-58). */ + private boolean mIpVideoSupported = false; + /** IP Geo location Pull using File Transfer support. */ + private boolean mGeoPullFtSupported = false; + /** IP Geo location Pull support. */ + private boolean mGeoPullSupported = false; + /** IP Geo location Push support. */ + private boolean mGeoPushSupported = false; + /** Standalone messaging support. */ + private boolean mSmSupported = false; + /** Full Store and Forward Group Chat information. */ + private boolean mFullSnFGroupChatSupported = false; + /** RCS IP Voice call support . */ + private boolean mRcsIpVoiceCallSupported = false; + /** RCS IP Video call support . */ + private boolean mRcsIpVideoCallSupported = false; + /** RCS IP Video call support . */ + private boolean mRcsIpVideoOnlyCallSupported = false; + /** List of supported extensions. */ + private String[] mExts = new String[10]; + /** Time used to compute when to query again. */ + private long mCapTimestamp = 0; + + + /** + * Constructor for the CapInfo class. + */ + public CapInfo() { + }; + + + /** + * Checks whether IM is supported. + */ + public boolean isImSupported() { + return mImSupported; + } + + /** + * Sets IM as supported or not supported. + */ + public void setImSupported(boolean imSupported) { + this.mImSupported = imSupported; + } + + /** + * Checks whether FT Thumbnail is supported. + */ + public boolean isFtThumbSupported() { + return mFtThumbSupported; + } + + /** + * Sets FT thumbnail as supported or not supported. + */ + public void setFtThumbSupported(boolean ftThumbSupported) { + this.mFtThumbSupported = ftThumbSupported; + } + + + + /** + * Checks whether FT Store and Forward is supported + */ + public boolean isFtSnFSupported() { + return mFtSnFSupported; + } + + /** + * Sets FT Store and Forward as supported or not supported. + */ + public void setFtSnFSupported(boolean ftSnFSupported) { + this.mFtSnFSupported = ftSnFSupported; + } + + /** + * Checks whether File transfer HTTP is supported. + */ + public boolean isFtHttpSupported() { + return mFtHttpSupported; + } + + /** + * Sets File transfer HTTP as supported or not supported. + */ + public void setFtHttpSupported(boolean ftHttpSupported) { + this.mFtHttpSupported = ftHttpSupported; + } + + /** + * Checks whether FT is supported. + */ + public boolean isFtSupported() { + return mFtSupported; + } + + /** + * Sets FT as supported or not supported. + */ + public void setFtSupported(boolean ftSupported) { + this.mFtSupported = ftSupported; + } + + /** + * Checks whether IS is supported. + */ + public boolean isIsSupported() { + return mIsSupported; + } + + /** + * Sets IS as supported or not supported. + */ + public void setIsSupported(boolean isSupported) { + this.mIsSupported = isSupported; + } + + /** + * Checks whether video sharing is supported during a CS call. + */ + public boolean isVsDuringCSSupported() { + return mVsDuringCSSupported; + } + + /** + * Sets video sharing as supported or not supported during a CS + * call. + */ + public void setVsDuringCSSupported(boolean vsDuringCSSupported) { + this.mVsDuringCSSupported = vsDuringCSSupported; + } + + /** + * Checks whether video sharing outside a voice call is + * supported. + */ + public boolean isVsSupported() { + return mVsSupported; + } + + /** + * Sets video sharing as supported or not supported. + */ + public void setVsSupported(boolean vsSupported) { + this.mVsSupported = vsSupported; + } + + /** + * Checks whether social presence is supported. + */ + public boolean isSpSupported() { + return mSpSupported; + } + + /** + * Sets social presence as supported or not supported. + */ + public void setSpSupported(boolean spSupported) { + this.mSpSupported = spSupported; + } + + /** + * Checks whether capability discovery via presence is + * supported. + */ + public boolean isCdViaPresenceSupported() { + return mCdViaPresenceSupported; + } + + /** + * Sets capability discovery via presence as supported or not + * supported. + */ + public void setCdViaPresenceSupported(boolean cdViaPresenceSupported) { + this.mCdViaPresenceSupported = cdViaPresenceSupported; + } + + /** + * Checks whether IP voice call is supported. + */ + public boolean isIpVoiceSupported() { + return mIpVoiceSupported; + } + + /** + * Sets IP voice call as supported or not supported. + */ + public void setIpVoiceSupported(boolean ipVoiceSupported) { + this.mIpVoiceSupported = ipVoiceSupported; + } + + /** + * Checks whether IP video call is supported. + */ + public boolean isIpVideoSupported() { + return mIpVideoSupported; + } + + /** + * Sets IP video call as supported or not supported. + */ + public void setIpVideoSupported(boolean ipVideoSupported) { + this.mIpVideoSupported = ipVideoSupported; + } + + /** + * Checks whether Geo location Pull using File Transfer is + * supported. + */ + public boolean isGeoPullFtSupported() { + return mGeoPullFtSupported; + } + + /** + * Sets Geo location Pull using File Transfer as supported or + * not supported. + */ + public void setGeoPullFtSupported(boolean geoPullFtSupported) { + this.mGeoPullFtSupported = geoPullFtSupported; + } + + /** + * Checks whether Geo Pull is supported. + */ + public boolean isGeoPullSupported() { + return mGeoPullSupported; + } + + /** + * Sets Geo Pull as supported or not supported. + */ + public void setGeoPullSupported(boolean geoPullSupported) { + this.mGeoPullSupported = geoPullSupported; + } + + /** + * Checks whether Geo Push is supported. + */ + public boolean isGeoPushSupported() { + return mGeoPushSupported; + } + + /** + * Sets Geo Push as supported or not supported. + */ + public void setGeoPushSupported(boolean geoPushSupported) { + this.mGeoPushSupported = geoPushSupported; + } + + /** + * Checks whether short messaging is supported. + */ + public boolean isSmSupported() { + return mSmSupported; + } + + /** + * Sets short messaging as supported or not supported. + */ + public void setSmSupported(boolean smSupported) { + this.mSmSupported = smSupported; + } + + /** + * Checks whether store/forward and group chat are supported. + */ + public boolean isFullSnFGroupChatSupported() { + return mFullSnFGroupChatSupported; + } + + public boolean isRcsIpVoiceCallSupported() { + return mRcsIpVoiceCallSupported; + } + + public boolean isRcsIpVideoCallSupported() { + return mRcsIpVideoCallSupported; + } + + public boolean isRcsIpVideoOnlyCallSupported() { + return mRcsIpVideoOnlyCallSupported; + } + + /** + * Sets store/forward and group chat supported or not supported. + */ + public void setFullSnFGroupChatSupported(boolean fullSnFGroupChatSupported) { + this.mFullSnFGroupChatSupported = fullSnFGroupChatSupported; + } + + public void setRcsIpVoiceCallSupported(boolean rcsIpVoiceCallSupported) { + this.mRcsIpVoiceCallSupported = rcsIpVoiceCallSupported; + } + public void setRcsIpVideoCallSupported(boolean rcsIpVideoCallSupported) { + this.mRcsIpVideoCallSupported = rcsIpVideoCallSupported; + } + public void setRcsIpVideoOnlyCallSupported(boolean rcsIpVideoOnlyCallSupported) { + this.mRcsIpVideoOnlyCallSupported = rcsIpVideoOnlyCallSupported; + } + + /** Gets the list of supported extensions. */ + public String[] getExts() { + return mExts; + } + + /** Sets the list of supported extensions. */ + public void setExts(String[] exts) { + this.mExts = exts; + } + + + /** Gets the time stamp for when to query again. */ + public long getCapTimestamp() { + return mCapTimestamp; + } + + /** Sets the time stamp for when to query again. */ + public void setCapTimestamp(long capTimestamp) { + this.mCapTimestamp = capTimestamp; + } + + public int describeContents() { + // TODO Auto-generated method stub + return 0; + } + + public void writeToParcel(Parcel dest, int flags) { + + dest.writeInt(mImSupported ? 1 : 0); + dest.writeInt(mFtSupported ? 1 : 0); + dest.writeInt(mFtThumbSupported ? 1 : 0); + dest.writeInt(mFtSnFSupported ? 1 : 0); + dest.writeInt(mFtHttpSupported ? 1 : 0); + dest.writeInt(mIsSupported ? 1 : 0); + dest.writeInt(mVsDuringCSSupported ? 1 : 0); + dest.writeInt(mVsSupported ? 1 : 0); + dest.writeInt(mSpSupported ? 1 : 0); + dest.writeInt(mCdViaPresenceSupported ? 1 : 0); + dest.writeInt(mIpVoiceSupported ? 1 : 0); + dest.writeInt(mIpVideoSupported ? 1 : 0); + dest.writeInt(mGeoPullFtSupported ? 1 : 0); + dest.writeInt(mGeoPullSupported ? 1 : 0); + dest.writeInt(mGeoPushSupported ? 1 : 0); + dest.writeInt(mSmSupported ? 1 : 0); + dest.writeInt(mFullSnFGroupChatSupported ? 1 : 0); + + dest.writeInt(mRcsIpVoiceCallSupported ? 1 : 0); + dest.writeInt(mRcsIpVideoCallSupported ? 1 : 0); + dest.writeInt(mRcsIpVideoOnlyCallSupported ? 1 : 0); + dest.writeStringArray(mExts); + dest.writeLong(mCapTimestamp); + } + + public static final Parcelable.Creator<CapInfo> CREATOR = new Parcelable.Creator<CapInfo>() { + + public CapInfo createFromParcel(Parcel source) { + return new CapInfo(source); + } + + public CapInfo[] newArray(int size) { + return new CapInfo[size]; + } + }; + + private CapInfo(Parcel source) { + readFromParcel(source); + } + + public void readFromParcel(Parcel source) { + + mImSupported = (source.readInt() == 0) ? false : true; + mFtSupported = (source.readInt() == 0) ? false : true; + mFtThumbSupported = (source.readInt() == 0) ? false : true; + mFtSnFSupported = (source.readInt() == 0) ? false : true; + mFtHttpSupported = (source.readInt() == 0) ? false : true; + mIsSupported = (source.readInt() == 0) ? false : true; + mVsDuringCSSupported = (source.readInt() == 0) ? false : true; + mVsSupported = (source.readInt() == 0) ? false : true; + mSpSupported = (source.readInt() == 0) ? false : true; + mCdViaPresenceSupported = (source.readInt() == 0) ? false : true; + mIpVoiceSupported = (source.readInt() == 0) ? false : true; + mIpVideoSupported = (source.readInt() == 0) ? false : true; + mGeoPullFtSupported = (source.readInt() == 0) ? false : true; + mGeoPullSupported = (source.readInt() == 0) ? false : true; + mGeoPushSupported = (source.readInt() == 0) ? false : true; + mSmSupported = (source.readInt() == 0) ? false : true; + mFullSnFGroupChatSupported = (source.readInt() == 0) ? false : true; + + mRcsIpVoiceCallSupported = (source.readInt() == 0) ? false : true; + mRcsIpVideoCallSupported = (source.readInt() == 0) ? false : true; + mRcsIpVideoOnlyCallSupported = (source.readInt() == 0) ? false : true; + + mExts = source.createStringArray(); + mCapTimestamp = source.readLong(); + } +} diff --git a/telephony/java/com/android/ims/internal/uce/common/StatusCode.aidl b/telephony/java/com/android/ims/internal/uce/common/StatusCode.aidl new file mode 100644 index 000000000000..e1e5798b4333 --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/common/StatusCode.aidl @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.ims.internal.uce.common; + +parcelable StatusCode;
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/common/StatusCode.java b/telephony/java/com/android/ims/internal/uce/common/StatusCode.java new file mode 100644 index 000000000000..ad9b669e5f2b --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/common/StatusCode.java @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.common; + +import android.os.Parcel; +import android.os.Parcelable; +import android.util.Log; + + +/** Class for UCE status codes. + * @hide */ +public class StatusCode implements Parcelable { + + /** + * UCE status code definitions. + * @hide + */ + + /** Request was processed successfully. */ + public static final int UCE_SUCCESS = 0; + /** Request was processed unsuccessfully. */ + public static final int UCE_FAILURE = 1; + /** Asynchronous request was handled successfully; the final + * result will be updated through + * callback. + */ + public static final int UCE_SUCCESS_ASYC_UPDATE = 2; + /** Provided service handle is not valid. */ + public static final int UCE_INVALID_SERVICE_HANDLE = 3; + /** Provided listener handler is not valid. */ + public static final int UCE_INVALID_LISTENER_HANDLE = 4; + /** Invalid parameter(s). */ + public static final int UCE_INVALID_PARAM = 5; + /** Fetch error. */ + public static final int UCE_FETCH_ERROR = 6; + /** Request timed out. */ + public static final int UCE_REQUEST_TIMEOUT = 7; + /** Failure due to insufficient memory available. */ + public static final int UCE_INSUFFICIENT_MEMORY = 8; + /** Network connection is lost. */ + public static final int UCE_LOST_NET = 9; + /** Requested feature/resource is not supported. */ + public static final int UCE_NOT_SUPPORTED = 10; + /** Contact or resource is not found. */ + public static final int UCE_NOT_FOUND = 11; + /** Service is not available. */ + public static final int UCE_SERVICE_UNAVAILABLE = 12; + /** No Change in Capabilities */ + public static final int UCE_NO_CHANGE_IN_CAP = 13; + /** Service is unknown. */ + public static final int UCE_SERVICE_UNKNOWN = 14; + + + private int mStatusCode = UCE_SUCCESS; + + /** + * Constructor for the StatusCode class. + * @hide + */ + public StatusCode() {} + + /** + * Gets the status code. + * @hide + */ + public int getStatusCode() { + return mStatusCode; + } + + /** + * Sets the status code. + * @hide + */ + public void setStatusCode(int nStatusCode) { + this.mStatusCode = nStatusCode; + } + + /** @hide */ + public int describeContents() { + // TODO Auto-generated method stub + return 0; + } + + /** @hide */ + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(mStatusCode); + } + + /** @hide */ + public static final Parcelable.Creator<StatusCode> CREATOR = + new Parcelable.Creator<StatusCode>() { + + public StatusCode createFromParcel(Parcel source) { + // TODO Auto-generated method stub + return new StatusCode(source); + } + + public StatusCode[] newArray(int size) { + // TODO Auto-generated method stub + return new StatusCode[size]; + } + }; + + /** @hide */ + private StatusCode(Parcel source) { + readFromParcel(source); + } + + /** @hide */ + public void readFromParcel(Parcel source) { + mStatusCode = source.readInt(); + } +} diff --git a/telephony/java/com/android/ims/internal/uce/common/UceLong.aidl b/telephony/java/com/android/ims/internal/uce/common/UceLong.aidl new file mode 100644 index 000000000000..2a15f4214544 --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/common/UceLong.aidl @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.ims.internal.uce.common; + +parcelable UceLong;
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/common/UceLong.java b/telephony/java/com/android/ims/internal/uce/common/UceLong.java new file mode 100644 index 000000000000..fd07fe8d2210 --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/common/UceLong.java @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.common; + +import android.os.Parcel; +import android.os.Parcelable; +import android.util.Log; + + +/** Simple object wrapper for a long type. + * @hide */ +public class UceLong implements Parcelable { + + private long mUceLong; + private int mClientId = 1001; + + /** + * Constructor for the UceLong class. + * @hide + */ + public UceLong() { + }; + + /** + * Gets the long value. + * @hide + */ + public long getUceLong() { + return mUceLong; + } + + /** + * Sets the long value. + * @hide + */ + public void setUceLong(long uceLong) { + this.mUceLong = uceLong; + } + + /** Get the client ID as integer value. + * @hide + */ + public int getClientId() { + return mClientId; + } + + /** + * Set the client ID as integer value. + * @hide + */ + public void setClientId(int nClientId) { + this.mClientId = nClientId; + } + + + /** + * Gets the instance of a UceLong class. + * @hide + */ + public static UceLong getUceLongInstance() { + return new UceLong(); + } + + /** @hide */ + public int describeContents() { + return 0; + } + + /** @hide */ + public void writeToParcel(Parcel dest, int flags) { + writeToParcel(dest); + + } + + /** @hide */ + private void writeToParcel(Parcel out) { + out.writeLong(mUceLong); + out.writeInt(mClientId); + } + + /** @hide */ + public static final Parcelable.Creator<UceLong> CREATOR = + new Parcelable.Creator<UceLong>() { + + public UceLong createFromParcel(Parcel source) { + return new UceLong(source); + } + + public UceLong[] newArray(int size) { + return new UceLong[size]; + } + }; + + /** @hide */ + private UceLong(Parcel source) { + readFromParcel(source); + } + + /** @hide */ + public void readFromParcel(Parcel source) { + mUceLong = source.readLong(); + mClientId = source.readInt(); + } +} diff --git a/telephony/java/com/android/ims/internal/uce/options/IOptionsListener.aidl b/telephony/java/com/android/ims/internal/uce/options/IOptionsListener.aidl new file mode 100644 index 000000000000..8cb1153c48bb --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/options/IOptionsListener.aidl @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.options; + +import com.android.ims.internal.uce.options.OptionsSipResponse; +import com.android.ims.internal.uce.options.OptionsCapInfo; +import com.android.ims.internal.uce.options.OptionsCmdStatus; +import com.android.ims.internal.uce.common.StatusCode; + +/** {@hide} */ +interface IOptionsListener +{ + /** + * Callback invoked with the version information of Options service implementation. + * @param version, version information of the service. + * @hide + */ + void getVersionCb(in String version ); + + /** + * Callback function to be invoked by the Options service to notify the listener of service + * availability. + * @param statusCode, UCE_SUCCESS as service availability. + * @hide + */ + void serviceAvailable(in StatusCode statusCode); + + /** + * Callback function to be invoked by the Options service to notify the listener of service + * unavailability. + * @param statusCode, UCE_SUCCESS as service unavailability. + * @hide + */ + void serviceUnavailable(in StatusCode statusCode); + + /** + * Callback function to be invoked to inform the client when the response for a SIP OPTIONS + * has been received. + * @param uri, URI of the remote entity received in network response. + * @param sipResponse, data of the network response received. + * @param capInfo, capabilities of the remote entity received. + * @hide + */ + void sipResponseReceived( String uri, + in OptionsSipResponse sipResponse, in OptionsCapInfo capInfo); + + /** + * Callback function to be invoked to inform the client of the status of an asynchronous call. + * @param cmdStatus, command status of the request placed. + * @hide + */ + void cmdStatus(in OptionsCmdStatus cmdStatus); + + /** + * Callback function to be invoked to inform the client of an incoming OPTIONS request + * from the network. + * @param uri, URI of the remote entity received. + * @param capInfo, capabilities of the remote entity. + * @param tID, transation of the request received from network. + * @hide + */ + void incomingOptions( String uri, in OptionsCapInfo capInfo, + in int tID); +} diff --git a/telephony/java/com/android/ims/internal/uce/options/IOptionsService.aidl b/telephony/java/com/android/ims/internal/uce/options/IOptionsService.aidl new file mode 100644 index 000000000000..839bb5574d33 --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/options/IOptionsService.aidl @@ -0,0 +1,126 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.options; + +import com.android.ims.internal.uce.options.IOptionsListener; +import com.android.ims.internal.uce.options.OptionsCapInfo; +import com.android.ims.internal.uce.common.CapInfo; +import com.android.ims.internal.uce.common.StatusCode; +import com.android.ims.internal.uce.common.UceLong; + +/** {@hide} */ +interface IOptionsService +{ + + /** + * Gets the version of the Options service implementation. + * the result of this Call is received in getVersionCb + * @param optionsServiceHandle, received in serviceCreated() of IOptionsListener. + * @return StatusCode, status of the request placed. + * @hide + */ + StatusCode getVersion(int optionsServiceHandle); + + /** + * Adds a listener to the Options service. + * @param optionsServiceHandle, this returned in serviceCreated() of IOptionsListener. + * @param optionsListener, IOptionsListener object. + * @param optionsServiceListenerHdl wrapper for client's listener handle to be stored. + * + * The service will fill UceLong.mUceLong with optionsServiceListenerHdl + * @return StatusCode, status of the request placed. + */ + StatusCode addListener(int optionsServiceHandle, IOptionsListener optionsListener, + inout UceLong optionsServiceListenerHdl); + + /** + * Removes a listener from the Options service. + * @param optionsServiceHandle, received in serviceCreated() of IOptionsListener. + * @param optionsListenerHandle, received in serviceCreated() of IOptionsListener. + * @param optionsServiceListenerHdl provided in createOptionsService() or Addlistener(). + * @return StatusCode, status of the request placed. + */ + StatusCode removeListener(int optionsServiceHandle, in UceLong optionsServiceListenerHdl); + + /** + * Sets the capabilities information of the self device. + * The status of the call is received in cmdStatus callback + * @param optionsServiceHandle, this returned in serviceCreated() of IOptionsListener. + * @param capInfo, capability information to store. + * @param reqUserData, userData provided by client to identify the request/API call, it + * is returned in the cmdStatus() callback for client to match response + * with original request. + * @return StatusCode, status of the request placed. + */ + StatusCode setMyInfo(int optionsServiceHandle , in CapInfo capInfo, int reqUserData); + + + /** + * Gets the capabilities information of remote device. + * The Capability information is received in cmdStatus callback + * @param optionsServiceHandle, this returned in serviceCreated() of IOptionsListener. + * @param reqUserData, userData provided by client to identify the request/API call, it + * is returned in the cmdStatus() callback for client to match response + * with original request. + * @return StatusCode, status of the request placed. + */ + StatusCode getMyInfo(int optionsServiceHandle , int reqUserdata); + + /** + * Requests the capabilities information of a remote URI. + * the remote party capability is received in sipResponseReceived() callback. + * @param optionsServiceHandle, this returned in serviceCreated() of IOptionsListener. + * @param remoteURI, URI of the remote contact. + * @param reqUserData, userData provided by client to identify the request/API call, it + * is returned in the cmdStatus() callback for client to match response + * with original request. + * @return StatusCode, status of the request placed. + */ + StatusCode getContactCap(int optionsServiceHandle , String remoteURI, int reqUserData); + + + /** + * Requests the capabilities information of specified contacts. + * For each remote party capability is received in sipResponseReceived() callback + * @param optionsServiceHandle, this returned in serviceCreated() of IOptionsListener. + * @param remoteURIList, list of remote contact URI's. + * @param reqUserData, userData provided by client to identify the request/API call, it + * is returned in the cmdStatus() callback for client to match response + * with original request. + * @return StatusCode, status of the request placed. + */ + StatusCode getContactListCap(int optionsServiceHandle, in String[] remoteURIList, + int reqUserData); + + + /** + * Requests the capabilities information of specified contacts. + * The incoming Options request is received in incomingOptions() callback. + * + * @param optionsServiceHandle, this returned in serviceCreated() of IOptionsListener. + * @param tId, transaction ID received in incomingOptions() call of IOptionsListener. + * @param sipResponseCode, SIP response code the UE needs to share to network. + * @param reasonPhrase, response phrase corresponding to the response code. + * @param capInfo, capabilities to share in the resonse to network. + * @param bContactInBL, true if the contact is blacklisted, else false. + * @return StatusCode, status of the request placed. + */ + StatusCode responseIncomingOptions(int optionsServiceHandle, int tId, int sipResponseCode, + String reasonPhrase, in OptionsCapInfo capInfo, + in boolean bContactInBL); + +} diff --git a/telephony/java/com/android/ims/internal/uce/options/OptionsCapInfo.aidl b/telephony/java/com/android/ims/internal/uce/options/OptionsCapInfo.aidl new file mode 100644 index 000000000000..711c51679547 --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/options/OptionsCapInfo.aidl @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.ims.internal.uce.options; + +parcelable OptionsCapInfo;
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/options/OptionsCapInfo.java b/telephony/java/com/android/ims/internal/uce/options/OptionsCapInfo.java new file mode 100644 index 000000000000..c570f495a4ac --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/options/OptionsCapInfo.java @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.ims.internal.uce.options; + +import com.android.ims.internal.uce.common.CapInfo; +import android.os.Parcel; +import android.os.Parcelable; +import android.util.Log; + +/** @hide */ +public class OptionsCapInfo implements Parcelable { + + private String mSdp = ""; // SDP message body. It is client responsibility. + private CapInfo mCapInfo; + + public static OptionsCapInfo getOptionsCapInfoInstance() { + return new OptionsCapInfo(); + } + + public String getSdp() { + return mSdp; + } + + public void setSdp(String sdp) { + this.mSdp = sdp; + } + + /** + * Constructor for the OptionsCapInfo class. + */ + public OptionsCapInfo() { + mCapInfo = new CapInfo(); + }; + + public CapInfo getCapInfo() { + return mCapInfo; + } + /** + * Sets the CapInfo + */ + public void setCapInfo(CapInfo capInfo) { + this.mCapInfo = capInfo; + } + + public int describeContents() { + return 0; + } + + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(mSdp); + dest.writeParcelable(mCapInfo, flags); + } + + public static final Parcelable.Creator<OptionsCapInfo> CREATOR = + new Parcelable.Creator<OptionsCapInfo>() { + + public OptionsCapInfo createFromParcel(Parcel source) { + return new OptionsCapInfo(source); + } + + public OptionsCapInfo[] newArray(int size) { + return new OptionsCapInfo[size]; + } + }; + + private OptionsCapInfo(Parcel source) { + readFromParcel(source); + } + + public void readFromParcel(Parcel source) { + mSdp = source.readString(); + mCapInfo = source.readParcelable(CapInfo.class.getClassLoader()); + } +}
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/options/OptionsCmdId.aidl b/telephony/java/com/android/ims/internal/uce/options/OptionsCmdId.aidl new file mode 100644 index 000000000000..e83e13e8fe44 --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/options/OptionsCmdId.aidl @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.options; + +parcelable OptionsCmdId;
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/options/OptionsCmdId.java b/telephony/java/com/android/ims/internal/uce/options/OptionsCmdId.java new file mode 100644 index 000000000000..35f769cdc072 --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/options/OptionsCmdId.java @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.options; + + +import android.os.Parcel; +import android.os.Parcelable; + +/** @hide */ +public class OptionsCmdId implements Parcelable { + + /** UCE CD command ID types */ + + /** Command ID corresponding to API GetMyInfo(). */ + public static final int UCE_OPTIONS_CMD_GETMYCDINFO = 0; + /** Command ID corresponding to API SetMyInfo(). */ + public static final int UCE_OPTIONS_CMD_SETMYCDINFO = 1; + /** Command ID corresponding to API GetContactCap(). */ + public static final int UCE_OPTIONS_CMD_GETCONTACTCAP = 2; + /** Command ID corresponding to API GetContactListCap(). */ + public static final int UCE_OPTIONS_CMD_GETCONTACTLISTCAP = 3; + /** Command ID corresponding to API ResponseIncomingOptions(). */ + public static final int UCE_OPTIONS_CMD_RESPONSEINCOMINGOPTIONS = 4; + /** Command ID corresponding to API GetVersion(). */ + public static final int UCE_OPTIONS_CMD_GET_VERSION = 5; + /** Default Command ID as Unknown. */ + public static final int UCE_OPTIONS_CMD_UNKNOWN = 6; + + + private int mCmdId = UCE_OPTIONS_CMD_UNKNOWN; + + /** + * Gets the command ID. + * @hide + */ + public int getCmdId() { + return mCmdId; + } + + /** + * Sets the command ID. + * @hide + */ + public void setCmdId(int nCmdId) { + this.mCmdId = nCmdId; + } + + /** + * Constructor for the OptionsCDCmdId class. + * @hide + */ + public OptionsCmdId(){}; + + /** @hide */ + public int describeContents() { + return 0; + } + + /** @hide */ + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(mCmdId); + } + + /** @hide */ + public static final Parcelable.Creator<OptionsCmdId> CREATOR = + new Parcelable.Creator<OptionsCmdId>() { + public OptionsCmdId createFromParcel(Parcel source) { + return new OptionsCmdId(source); + } + + public OptionsCmdId[] newArray(int size) { + return new OptionsCmdId[size]; + } + }; + + /** @hide */ + private OptionsCmdId(Parcel source) { + readFromParcel(source); + } + + /** @hide */ + public void readFromParcel(Parcel source) { + mCmdId = source.readInt(); + } +} diff --git a/telephony/java/com/android/ims/internal/uce/options/OptionsCmdStatus.aidl b/telephony/java/com/android/ims/internal/uce/options/OptionsCmdStatus.aidl new file mode 100644 index 000000000000..1d30a9b2547e --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/options/OptionsCmdStatus.aidl @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.ims.internal.uce.options; + +parcelable OptionsCmdStatus;
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/options/OptionsCmdStatus.java b/telephony/java/com/android/ims/internal/uce/options/OptionsCmdStatus.java new file mode 100644 index 000000000000..dab191cfb364 --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/options/OptionsCmdStatus.java @@ -0,0 +1,147 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.options; + +import com.android.ims.internal.uce.common.StatusCode; +import com.android.ims.internal.uce.common.CapInfo; + +import android.os.Parcel; +import android.os.Parcelable; + +/** @hide */ +public class OptionsCmdStatus implements Parcelable { + + private OptionsCmdId mCmdId; + private StatusCode mStatus; + private int mUserData; + private CapInfo mCapInfo; + + /** + * Gets the UCE command ID. + * @hide + */ + public OptionsCmdId getCmdId() { + return mCmdId; + } + /** + * Sets the command ID. + * @hide + */ + public void setCmdId(OptionsCmdId cmdId) { + this.mCmdId = cmdId; + } + + /** + * Gets the user data. + * @hide + */ + public int getUserData() { + return mUserData; + } + + /** + Sets the user data. + @hide */ + public void setUserData(int userData) { + this.mUserData = userData; + } + + /** + * Gets the status code. + * @hide + */ + public StatusCode getStatus() { + return mStatus; + } + + /** + * Sets the status code. + * @hide + */ + public void setStatus(StatusCode status) { + this.mStatus = status; + } + + /** + * Constructor for the OptionsCmdStatus class. + * @hide + */ + public OptionsCmdStatus() { + mStatus = new StatusCode(); + mCapInfo = new CapInfo(); + mCmdId = new OptionsCmdId(); + mUserData = 0; + }; + + /** @hide */ + public CapInfo getCapInfo() { + return mCapInfo; + } + + /** + * Sets the CapInfo + * @hide + */ + public void setCapInfo(CapInfo capInfo) { + this.mCapInfo = capInfo; + } + + /** + * Gets the instance of the OptionsCmdStatus class. + * @hide + */ + public static OptionsCmdStatus getOptionsCmdStatusInstance() { + return new OptionsCmdStatus(); + } + + /** @hide */ + public int describeContents() { + return 0; + } + + /** @hide */ + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(mUserData); + dest.writeParcelable(mCmdId, flags); + dest.writeParcelable(mStatus, flags); + dest.writeParcelable(mCapInfo, flags); + } + + /** @hide */ + public static final Parcelable.Creator<OptionsCmdStatus> CREATOR = + new Parcelable.Creator<OptionsCmdStatus>() { + public OptionsCmdStatus createFromParcel(Parcel source) { + return new OptionsCmdStatus(source); + } + public OptionsCmdStatus[] newArray(int size) { + return new OptionsCmdStatus[size]; + } + }; + + /** @hide */ + private OptionsCmdStatus(Parcel source) { + readFromParcel(source); + } + + /** @hide */ + public void readFromParcel(Parcel source) { + mUserData = source.readInt(); + mCmdId = source.readParcelable(OptionsCmdId.class.getClassLoader()); + mStatus = source.readParcelable(StatusCode.class.getClassLoader()); + mCapInfo = source.readParcelable(CapInfo.class.getClassLoader()); + } +}
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/options/OptionsSipResponse.aidl b/telephony/java/com/android/ims/internal/uce/options/OptionsSipResponse.aidl new file mode 100644 index 000000000000..6e9583d9c0b8 --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/options/OptionsSipResponse.aidl @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.ims.internal.uce.options; + +parcelable OptionsSipResponse;
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/options/OptionsSipResponse.java b/telephony/java/com/android/ims/internal/uce/options/OptionsSipResponse.java new file mode 100644 index 000000000000..0b9dd21ffe3f --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/options/OptionsSipResponse.java @@ -0,0 +1,160 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.options; + +import android.os.Parcel; +import android.os.Parcelable; + + +/** @hide */ +public class OptionsSipResponse implements Parcelable { + + private OptionsCmdId mCmdId; + private int mRequestId = 0; + private int mSipResponseCode = 0; + private int mRetryAfter = 0; + private String mReasonPhrase = ""; + + /** + * Gets the Options command ID. + * @hide + */ + public OptionsCmdId getCmdId() { + return mCmdId; + } + + /** + * Sets the Options command ID. + * @hide + */ + public void setCmdId(OptionsCmdId cmdId) { + this.mCmdId = cmdId; + } + + /** + * Gets the request ID + * @hide + */ + public int getRequestId() { + return mRequestId; + } + + /** + * Sets the request ID + * @hide + */ + public void setRequestId(int requestId) { + this.mRequestId = requestId; + } + + /** + * Gets the SIP response code. + * @hide + */ + public int getSipResponseCode() { + return mSipResponseCode; + } + + /** + * Sets the SIP response code. + * @hide + */ + public void setSipResponseCode(int sipResponseCode) { + this.mSipResponseCode = sipResponseCode; + } + + /** + * Gets the reason phrase associated with the SIP responce code. + * @hide + */ + public String getReasonPhrase() { + return mReasonPhrase; + } + + /** + * Sets the SIP response code reason phrase. + * @hide + */ + public void setReasonPhrase(String reasonPhrase) { + this.mReasonPhrase = reasonPhrase; + } + + /** + * Gets the SIP retryAfter sec value . + * @hide + */ + public int getRetryAfter() { + return mRetryAfter; + } + + /** + * Sets the SIP retryAfter sec value + * @hide + */ + public void setRetryAfter(int retryAfter) { + this.mRetryAfter = retryAfter; + } + + /** + * Constructor for the OptionsSipResponse class. + * @hide + */ + public OptionsSipResponse() { + mCmdId = new OptionsCmdId(); + }; + + /** @hide */ + public int describeContents() { + return 0; + } + + /** @hide */ + public void writeToParcel(Parcel dest, int flags) { + + dest.writeInt(mRequestId); + dest.writeInt(mSipResponseCode); + dest.writeString(mReasonPhrase); + dest.writeParcelable(mCmdId, flags); + dest.writeInt(mRetryAfter); + } + + /** @hide */ + public static final Parcelable.Creator<OptionsSipResponse> CREATOR = + new Parcelable.Creator<OptionsSipResponse>() { + public OptionsSipResponse createFromParcel(Parcel source) { + return new OptionsSipResponse(source); + } + + public OptionsSipResponse[] newArray(int size) { + return new OptionsSipResponse[size]; + } + }; + + /** @hide */ + private OptionsSipResponse(Parcel source) { + readFromParcel(source); + } + + /** @hide */ + public void readFromParcel(Parcel source) { + mRequestId = source.readInt(); + mSipResponseCode = source.readInt(); + mReasonPhrase = source.readString(); + mCmdId = source.readParcelable(OptionsCmdId.class.getClassLoader()); + mRetryAfter = source.readInt(); + } +} diff --git a/telephony/java/com/android/ims/internal/uce/presence/IPresenceListener.aidl b/telephony/java/com/android/ims/internal/uce/presence/IPresenceListener.aidl new file mode 100644 index 000000000000..5b7114982758 --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/presence/IPresenceListener.aidl @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.presence; + +import com.android.ims.internal.uce.common.StatusCode; +import com.android.ims.internal.uce.presence.PresPublishTriggerType; +import com.android.ims.internal.uce.presence.PresCmdStatus; +import com.android.ims.internal.uce.presence.PresCapInfo; +import com.android.ims.internal.uce.presence.PresSipResponse; +import com.android.ims.internal.uce.presence.PresTupleInfo; +import com.android.ims.internal.uce.presence.PresResInstanceInfo; +import com.android.ims.internal.uce.presence.PresResInfo; +import com.android.ims.internal.uce.presence.PresRlmiInfo; + + +/** + * IPresenceListener + * {@hide} */ +interface IPresenceListener +{ + /** + * Gets the version of the presence listener implementation. + * @param version, version information. + */ + void getVersionCb(in String version ); + + /** + * Callback function to be invoked by the Presence service to notify the listener of service + * availability. + * @param statusCode, UCE_SUCCESS as service availability. + */ + void serviceAvailable(in StatusCode statusCode); + + /** + * Callback function to be invoked by the Presence service to notify the listener of service + * unavailability. + * @param statusCode, UCE_SUCCESS as service unAvailability. + */ + void serviceUnAvailable(in StatusCode statusCode); + + /** + * Callback function to be invoked by the Presence service to notify the listener to send a + * publish request. + * @param publishTrigger, Publish trigger for the network being supported. + */ + void publishTriggering(in PresPublishTriggerType publishTrigger); + + /** + * Callback function to be invoked to inform the client of the status of an asynchronous call. + * @param cmdStatus, command status of the request placed. + */ + void cmdStatus( in PresCmdStatus cmdStatus); + + /** + * Callback function to be invoked to inform the client when the response for a SIP message, + * such as PUBLISH or SUBSCRIBE, has been received. + * @param sipResponse, network response received for the request placed. + */ + void sipResponseReceived(in PresSipResponse sipResponse); + + /** + * Callback function to be invoked to inform the client when the NOTIFY message carrying a + * single contact's capabilities information is received. + * @param presentityURI, URI of the remote entity the request was placed. + * @param tupleInfo, array of capability information remote entity supports. + */ + void capInfoReceived(in String presentityURI, + in PresTupleInfo [] tupleInfo); + + /** + * Callback function to be invoked to inform the client when the NOTIFY message carrying + * contact's capabilities information is received. + * @param rlmiInfo, resource infomation received from network. + * @param resInfo, array of capabilities received from network for the list of remore URI. + */ + void listCapInfoReceived(in PresRlmiInfo rlmiInfo, + in PresResInfo [] resInfo); +}
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/presence/IPresenceService.aidl b/telephony/java/com/android/ims/internal/uce/presence/IPresenceService.aidl new file mode 100644 index 000000000000..fdea6d35c195 --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/presence/IPresenceService.aidl @@ -0,0 +1,128 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.presence; + +import com.android.ims.internal.uce.presence.IPresenceListener; +import com.android.ims.internal.uce.presence.PresCapInfo; +import com.android.ims.internal.uce.presence.PresServiceInfo; +import com.android.ims.internal.uce.common.UceLong; +import com.android.ims.internal.uce.common.StatusCode; + +/** IPresenceService +{@hide} */ +interface IPresenceService +{ + + /** + * Gets the version of the Presence service implementation. + * The verion information is received in getVersionCb callback. + * @param presenceServiceHdl returned in createPresenceService(). + * @return StatusCode, status of the request placed. + */ + StatusCode getVersion(int presenceServiceHdl); + + /** + * Adds a listener to the Presence service. + * @param presenceServiceHdl returned in createPresenceService(). + * @param presenceServiceListener IPresenceListener Object. + * @param presenceServiceListenerHdl wrapper for client's listener handle to be stored. + * + * The service will fill UceLong.mUceLong with presenceListenerHandle. + * + * @return StatusCode, status of the request placed + */ + StatusCode addListener(int presenceServiceHdl, IPresenceListener presenceServiceListener, + inout UceLong presenceServiceListenerHdl); + + /** + * Removes a listener from the Presence service. + * @param presenceServiceHdl returned in createPresenceService(). + * @param presenceServiceListenerHdl provided in createPresenceService() or Addlistener(). + * @return StatusCode, status of the request placed. + */ + StatusCode removeListener(int presenceServiceHdl, in UceLong presenceServiceListenerHdl); + + /** + * Re-enables the Presence service if it is in the Blocked state due to receiving a SIP + * response 489 Bad event. + * The application must call this API before calling any presence API after receiving a SIP + * response 489 Bad event. + * The status of this request is notified in cmdStatus callback. + * + * @param presenceServiceHdl returned in createPresenceService(). + * @param userData, userData provided by client to identify the request/API call, it + * is returned in the cmdStatus() callback for client to match response + * with original request. + * @return StatusCode, status of the request placed. + */ + StatusCode reenableService(int presenceServiceHdl, int userData); + + /** + * Sends a request to publish current device capabilities. + * The network response is notifed in sipResponseReceived() callback. + * @param presenceServiceHdl returned in createPresenceService(). + * @param myCapInfo PresCapInfo object. + * @param userData, userData provided by client to identify the request/API call, it + * is returned in the cmdStatus() callback for client to match response + * with original request. + * @return StatusCode, status of the request placed. + */ + StatusCode publishMyCap(int presenceServiceHdl, in PresCapInfo myCapInfo , int userData); + + /** + * Retrieves the capability information for a single contact. Clients receive the requested + * information via the listener callback function capInfoReceived() callback. + * + * @param presenceServiceHdl returned in createPresenceService(). + * @param remoteUri remote contact URI + * @param userData, userData provided by client to identify the request/API call, it + * is returned in the cmdStatus() callback for client to match response + * with original request. + * @return StatusCode, status of the request placed. + */ + StatusCode getContactCap(int presenceServiceHdl , String remoteUri, int userData); + + /** + * Retrieves the capability information for a list of contacts. Clients receive the requested + * information via the listener callback function listCapInfoReceived() callback. + * + * @param presenceServiceHdl returned in createPresenceService(). + * @param remoteUriList list of remote contact URI's. + * @param userData, userData provided by client to identify the request/API call, it + * is returned in the cmdStatus() callback for client to match response + * with original request. + * @return StatusCode, status of the request placed. + */ + StatusCode getContactListCap(int presenceServiceHdl, in String[] remoteUriList, int userData); + + /** + * Sets the mapping between a new feature tag and the corresponding service tuple information + * to be included in the published document. + * The staus of this call is received in cmdStatus callback. + * + * @param presenceServiceHdl returned in createPresenceService(). + * @param featureTag to be supported + * @param PresServiceInfo service information describing the featureTag. + * @param userData, userData provided by client to identify the request/API call, it + * is returned in the cmdStatus() callback for client to match response + * with original request. + * @return StatusCode, status of the request placed. + */ + StatusCode setNewFeatureTag(int presenceServiceHdl, String featureTag, + in PresServiceInfo serviceInfo, int userData); + +} diff --git a/telephony/java/com/android/ims/internal/uce/presence/PresCapInfo.aidl b/telephony/java/com/android/ims/internal/uce/presence/PresCapInfo.aidl new file mode 100644 index 000000000000..df9d75a4b7e9 --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/presence/PresCapInfo.aidl @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.presence; + +parcelable PresCapInfo; diff --git a/telephony/java/com/android/ims/internal/uce/presence/PresCapInfo.java b/telephony/java/com/android/ims/internal/uce/presence/PresCapInfo.java new file mode 100644 index 000000000000..60fc2260304f --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/presence/PresCapInfo.java @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.presence; + +import com.android.ims.internal.uce.common.CapInfo; + +import android.os.Parcel; +import android.os.Parcelable; + + +/** @hide */ +public class PresCapInfo implements Parcelable { + + private CapInfo mCapInfo; + private String mContactUri = ""; + + /** + * Gets the UCE capability information. + * @hide + */ + public CapInfo getCapInfo() { + return mCapInfo; + } + + /** Sets the UCE Capability information. + * @hide + */ + public void setCapInfo(CapInfo capInfo) { + this.mCapInfo = capInfo; + } + + + /** + * Gets the contact URI. + * @hide + */ + public String getContactUri() { + return mContactUri; + } + + /** + * Sets the contact URI. + * @hide + */ + public void setContactUri(String contactUri) { + this.mContactUri = contactUri; + } + + /** + * Constructor for the PresCapInfo class. + * @hide + */ + public PresCapInfo() { + mCapInfo = new CapInfo(); + }; + + /** @hide */ + public int describeContents() { + return 0; + } + + /** @hide */ + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(mContactUri); + dest.writeParcelable(mCapInfo, flags); + } + + /** @hide */ + public static final Parcelable.Creator<PresCapInfo> CREATOR = + new Parcelable.Creator<PresCapInfo>() { + + public PresCapInfo createFromParcel(Parcel source) { + return new PresCapInfo(source); + } + + public PresCapInfo[] newArray(int size) { + return new PresCapInfo[size]; + } + }; + + /** @hide */ + private PresCapInfo(Parcel source) { + readFromParcel(source); + } + + /** @hide */ + public void readFromParcel(Parcel source) { + mContactUri = source.readString(); + mCapInfo = source.readParcelable(CapInfo.class.getClassLoader()); + } +} diff --git a/telephony/java/com/android/ims/internal/uce/presence/PresCmdId.aidl b/telephony/java/com/android/ims/internal/uce/presence/PresCmdId.aidl new file mode 100644 index 000000000000..6ece045ffcf7 --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/presence/PresCmdId.aidl @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.presence; + +parcelable PresCmdID;
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/presence/PresCmdId.java b/telephony/java/com/android/ims/internal/uce/presence/PresCmdId.java new file mode 100644 index 000000000000..395f3e87fc29 --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/presence/PresCmdId.java @@ -0,0 +1,107 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.presence; + +import android.os.Parcel; +import android.os.Parcelable; + +/** @hide */ +public class PresCmdId implements Parcelable { + + /** Presence Command Status ID + * @hide */ + + + /** Command ID corresponding to function GetVersion(). */ + public static final int UCE_PRES_CMD_GET_VERSION = 0; + /** Command ID corresponding to function Publish(). */ + public static final int UCE_PRES_CMD_PUBLISHMYCAP = 1; + /** Command ID corresponding to function GetContactCap(). */ + public static final int UCE_PRES_CMD_GETCONTACTCAP = 2; + /** Command ID corresponding to function GetContactListCap(). */ + public static final int UCE_PRES_CMD_GETCONTACTLISTCAP = 3; + /** Command ID corresponding to function SetNewFeatureTag(). */ + public static final int UCE_PRES_CMD_SETNEWFEATURETAG = 4; + /** Command ID corresponding to API ReenableService(). */ + public static final int UCE_PRES_CMD_REENABLE_SERVICE = 5; + /** Command ID is unknown. */ + public static final int UCE_PRES_CMD_UNKNOWN = 6; + + + private int mCmdId = UCE_PRES_CMD_UNKNOWN; + + + /** + * Gets the command ID. + * @hide + */ + public int getCmdId() { + return mCmdId; + } + + /** + * Sets the command ID. + * @hide + */ + public void setCmdId(int nCmdId) { + this.mCmdId = nCmdId; + } + + + /** + * Constructor for the PresCmdId class. + * @hide + */ + public PresCmdId(){}; + + + /** @hide */ + public int describeContents() { + + return 0; + } + + /** @hide */ + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(mCmdId); + } + + /** @hide */ + public static final Parcelable.Creator<PresCmdId> CREATOR = + new Parcelable.Creator<PresCmdId>() { + + public PresCmdId createFromParcel(Parcel source) { + + return new PresCmdId(source); + } + + public PresCmdId[] newArray(int size) { + + return new PresCmdId[size]; + } + }; + + /** @hide */ + private PresCmdId(Parcel source) { + readFromParcel(source); + } + + /** @hide */ + public void readFromParcel(Parcel source) { + mCmdId = source.readInt(); + } +}
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/presence/PresCmdStatus.aidl b/telephony/java/com/android/ims/internal/uce/presence/PresCmdStatus.aidl new file mode 100644 index 000000000000..69bca2f9af0d --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/presence/PresCmdStatus.aidl @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.presence; + +parcelable PresCmdStatus;
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/presence/PresCmdStatus.java b/telephony/java/com/android/ims/internal/uce/presence/PresCmdStatus.java new file mode 100644 index 000000000000..a5b498bd9105 --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/presence/PresCmdStatus.java @@ -0,0 +1,146 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.presence; + +import com.android.ims.internal.uce.common.StatusCode; + +import android.os.Parcel; +import android.os.Parcelable; + + +/** @hide */ +public class PresCmdStatus implements Parcelable{ + + private PresCmdId mCmdId = new PresCmdId(); + private StatusCode mStatus = new StatusCode(); + private int mUserData; + private int mRequestId; + + /** + * Gets the Presence command ID. + * @hide + */ + public PresCmdId getCmdId() { + return mCmdId; + } + + /** + * Sets the command ID. + * @hide + */ + public void setCmdId(PresCmdId cmdId) { + this.mCmdId = cmdId; + } + + /** + * Gets the user data. + * @hide + */ + public int getUserData() { + return mUserData; + } + + /** + * Sets the user data. + * @hide + */ + public void setUserData(int userData) { + this.mUserData = userData; + } + + /** + * Gets the status code. + * @hide + */ + public StatusCode getStatus() { + return mStatus; + } + /** + * Sets the status code. + * @hide + */ + public void setStatus(StatusCode status) { + this.mStatus = status; + } + + /** + * Gets the request ID. + * @hide + */ + public int getRequestId() { + return mRequestId; + } + + /** + * Sets the request ID. + * @hide + */ + public void setRequestId(int requestId) { + this.mRequestId = requestId; + } + + /** + * Constructor for the PresCmdStatus class. + * @hide + */ + public PresCmdStatus() { + mStatus = new StatusCode(); + }; + + /** @hide */ + public int describeContents() { + + return 0; + } + + /** @hide */ + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(mUserData); + dest.writeInt(mRequestId); + dest.writeParcelable(mCmdId, flags); + dest.writeParcelable(mStatus, flags); + } + + /** @hide */ + public static final Parcelable.Creator<PresCmdStatus> CREATOR = + new Parcelable.Creator<PresCmdStatus>() { + + public PresCmdStatus createFromParcel(Parcel source) { + + return new PresCmdStatus(source); + } + + public PresCmdStatus[] newArray(int size) { + + return new PresCmdStatus[size]; + } + }; + + /** @hide */ + private PresCmdStatus(Parcel source) { + readFromParcel(source); + } + + /** @hide */ + public void readFromParcel(Parcel source) { + mUserData = source.readInt(); + mRequestId = source.readInt(); + mCmdId = source.readParcelable(PresCmdId.class.getClassLoader()); + mStatus = source.readParcelable(StatusCode.class.getClassLoader()); + } + +}
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/presence/PresPublishTriggerType.aidl b/telephony/java/com/android/ims/internal/uce/presence/PresPublishTriggerType.aidl new file mode 100644 index 000000000000..0fc0f1b5b375 --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/presence/PresPublishTriggerType.aidl @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.presence; + +parcelable PresPublishTriggerType;
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/presence/PresPublishTriggerType.java b/telephony/java/com/android/ims/internal/uce/presence/PresPublishTriggerType.java new file mode 100644 index 000000000000..3e8531a73421 --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/presence/PresPublishTriggerType.java @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.presence; + +import android.os.Parcel; +import android.os.Parcelable; + +/** @hide */ +public class PresPublishTriggerType implements Parcelable { + + /** Publish Trigger Indication Definitions + * @hide + */ + + /** ETag expired. */ + public static final int UCE_PRES_PUBLISH_TRIGGER_ETAG_EXPIRED = 0; + /** Move to LTE with VoPS disabled. */ + public static final int UCE_PRES_PUBLISH_TRIGGER_MOVE_TO_LTE_VOPS_DISABLED = 1; + /** Move to LTE with VoPS enabled. */ + public static final int UCE_PRES_PUBLISH_TRIGGER_MOVE_TO_LTE_VOPS_ENABLED = 2; + /** Move to eHRPD. */ + public static final int UCE_PRES_PUBLISH_TRIGGER_MOVE_TO_EHRPD = 3; + /** Move to HSPA+. */ + public static final int UCE_PRES_PUBLISH_TRIGGER_MOVE_TO_HSPAPLUS = 4; + /** Move to 3G. */ + public static final int UCE_PRES_PUBLISH_TRIGGER_MOVE_TO_3G = 5; + /** Move to 2G. */ + public static final int UCE_PRES_PUBLISH_TRIGGER_MOVE_TO_2G = 6; + /** Move to WLAN */ + public static final int UCE_PRES_PUBLISH_TRIGGER_MOVE_TO_WLAN = 7; + /** Move to IWLAN */ + public static final int UCE_PRES_PUBLISH_TRIGGER_MOVE_TO_IWLAN = 8; + /** Trigger is unknown. */ + public static final int UCE_PRES_PUBLISH_TRIGGER_UNKNOWN = 9; + + + + + private int mPublishTriggerType = UCE_PRES_PUBLISH_TRIGGER_UNKNOWN; + + + /** + * Gets the publish trigger types. + * @hide + */ + public int getPublishTrigeerType() { + return mPublishTriggerType; + } + + /** + * Sets the publish trigger type. + * @hide + */ + public void setPublishTrigeerType(int nPublishTriggerType) { + this.mPublishTriggerType = nPublishTriggerType; + } + + + /** + * Constructor for the PresPublishTriggerType class. + * @hide + */ + public PresPublishTriggerType(){}; + + /** @hide */ + public int describeContents() { + return 0; + } + + /** @hide */ + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(mPublishTriggerType); + } + + /** @hide */ + public static final Parcelable.Creator<PresPublishTriggerType> CREATOR = + new Parcelable.Creator<PresPublishTriggerType>() { + + public PresPublishTriggerType createFromParcel(Parcel source) { + + return new PresPublishTriggerType(source); + } + + public PresPublishTriggerType[] newArray(int size) { + + return new PresPublishTriggerType[size]; + } + }; + + /** @hide */ + private PresPublishTriggerType(Parcel source) { + readFromParcel(source); + } + + /** @hide */ + public void readFromParcel(Parcel source) { + mPublishTriggerType = source.readInt(); + } +}
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/presence/PresResInfo.aidl b/telephony/java/com/android/ims/internal/uce/presence/PresResInfo.aidl new file mode 100644 index 000000000000..2b7b3bbd8733 --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/presence/PresResInfo.aidl @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.presence; + +parcelable PresResInfo;
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/presence/PresResInfo.java b/telephony/java/com/android/ims/internal/uce/presence/PresResInfo.java new file mode 100644 index 000000000000..a073a234d1ec --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/presence/PresResInfo.java @@ -0,0 +1,121 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.presence; + +import android.os.Parcel; +import android.os.Parcelable; + +/** @hide */ +public class PresResInfo implements Parcelable { + + private String mResUri = ""; + private String mDisplayName = ""; + private PresResInstanceInfo mInstanceInfo; + + /** + * Gets the Presence service resource instance information. + * @hide + */ + public PresResInstanceInfo getInstanceInfo() { + return mInstanceInfo; + } + + /** + * Sets the Presence service resource instance information. + * @hide + */ + public void setInstanceInfo(PresResInstanceInfo instanceInfo) { + this.mInstanceInfo = instanceInfo; + } + + /** + * Gets the resource URI. + * @hide + */ + public String getResUri() { + return mResUri; + } + + /** + * Sets the resource URI. + * @hide + */ + public void setResUri(String resUri) { + this.mResUri = resUri; + } + + /** + * Gets the display name. + * @hide + */ + public String getDisplayName() { + return mDisplayName; + } + + /** + * Sets the display name. + * @hide + */ + public void setDisplayName(String displayName) { + this.mDisplayName = displayName; + } + + + /** + * Constructor for the PresResInstanceInfo class. + * @hide + */ + public PresResInfo() { + mInstanceInfo = new PresResInstanceInfo(); + }; + + /** @hide */ + public int describeContents() { + return 0; + } + + /** @hide */ + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(mResUri); + dest.writeString(mDisplayName); + dest.writeParcelable(mInstanceInfo, flags); + } + + /** @hide */ + public static final Parcelable.Creator<PresResInfo> CREATOR = + new Parcelable.Creator<PresResInfo>() { + public PresResInfo createFromParcel(Parcel source) { + return new PresResInfo(source); + } + + public PresResInfo[] newArray(int size) { + return new PresResInfo[size]; + } + }; + + /** @hide */ + private PresResInfo(Parcel source) { + readFromParcel(source); + } + + /** @hide */ + public void readFromParcel(Parcel source) { + mResUri = source.readString(); + mDisplayName = source.readString(); + mInstanceInfo = source.readParcelable(PresResInstanceInfo.class.getClassLoader()); + } +}
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/presence/PresResInstanceInfo.aidl b/telephony/java/com/android/ims/internal/uce/presence/PresResInstanceInfo.aidl new file mode 100644 index 000000000000..3a0cfc44aa98 --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/presence/PresResInstanceInfo.aidl @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.presence; + +parcelable PresResInstanceInfo;
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/presence/PresResInstanceInfo.java b/telephony/java/com/android/ims/internal/uce/presence/PresResInstanceInfo.java new file mode 100644 index 000000000000..430cff196d33 --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/presence/PresResInstanceInfo.java @@ -0,0 +1,192 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.presence; + +import android.os.Parcel; +import android.os.Parcelable; +import java.util.Arrays; + +/** @hide */ +public class PresResInstanceInfo implements Parcelable{ + + /** + * UCE resource instance state definitions. + * @hide + */ + + /** Active state. */ + public static final int UCE_PRES_RES_INSTANCE_STATE_ACTIVE = 0; + /** Pending state. */ + public static final int UCE_PRES_RES_INSTANCE_STATE_PENDING = 1; + /** Terminated state. */ + public static final int UCE_PRES_RES_INSTANCE_STATE_TERMINATED = 2; + /** Unknown state. */ + public static final int UCE_PRES_RES_INSTANCE_STATE_UNKNOWN = 3; + /** Unknown instance. */ + public static final int UCE_PRES_RES_INSTANCE_UNKNOWN = 4; + + + private int mResInstanceState; + private String mId = ""; + private String mReason = ""; + private String mPresentityUri = ""; + private PresTupleInfo mTupleInfoArray[]; + + + /** + * Gets the resource instance state. + * @hide + */ + public int getResInstanceState() { + return mResInstanceState; + } + + /** + * Sets the resource instance state. + * @hide + */ + public void setResInstanceState(int nResInstanceState) { + this.mResInstanceState = nResInstanceState; + } + + /** + * Gets the resource ID. + * @hide + */ + public String getResId() { + return mId; + } + + /** + * Sets the resource ID. + * @hide + */ + public void setResId(String resourceId) { + this.mId = resourceId; + } + + /** + * Gets the reason phrase associated with the SIP response + * code. + * @hide + */ + public String getReason() { + return mReason; + } + + /** + * Sets the reason phrase associated with the SIP response + * code. + * @hide + */ + public void setReason(String reason) { + this.mReason = reason; + } + + /** + * Gets the entity URI. + * @hide + */ + public String getPresentityUri() { + return mPresentityUri; + } + + /** + * Sets the entity URI. + * @hide + */ + public void setPresentityUri(String presentityUri) { + this.mPresentityUri = presentityUri; + } + + /** + * Gets the tuple information. + * @hide + */ + public PresTupleInfo[] getTupleInfo() { + return mTupleInfoArray; + } + + /** + * Sets the tuple information. + * @hide + */ + public void setTupleInfo(PresTupleInfo[] tupleInfo) { + this.mTupleInfoArray = new PresTupleInfo[tupleInfo.length]; + this.mTupleInfoArray = tupleInfo; + } + + + /** + * Constructor for the PresResInstanceInfo class. + * @hide + */ + public PresResInstanceInfo(){ + + }; + + /** @hide */ + public int describeContents() { + + return 0; + } + + /** @hide */ + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(mId); + dest.writeString(mReason); + dest.writeInt(mResInstanceState); + dest.writeString(mPresentityUri); + dest.writeParcelableArray(mTupleInfoArray, flags); + } + + /** @hide */ + public static final Parcelable.Creator<PresResInstanceInfo> CREATOR = + new Parcelable.Creator<PresResInstanceInfo>() { + + public PresResInstanceInfo createFromParcel(Parcel source) { + + return new PresResInstanceInfo(source); + } + + public PresResInstanceInfo[] newArray(int size) { + + return new PresResInstanceInfo[size]; + } + }; + + /** @hide */ + private PresResInstanceInfo(Parcel source) { + readFromParcel(source); + } + + /** @hide */ + public void readFromParcel(Parcel source) { + mId = source.readString(); + mReason = source.readString(); + mResInstanceState = source.readInt(); + mPresentityUri = source.readString(); + Parcelable[] tempParcelableArray = source.readParcelableArray( + PresTupleInfo.class.getClassLoader()); + mTupleInfoArray = new PresTupleInfo[] {}; + if(tempParcelableArray != null) { + mTupleInfoArray = Arrays.copyOf(tempParcelableArray, tempParcelableArray.length, + PresTupleInfo[].class); + } + + } +}
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/presence/PresRlmiInfo.aidl b/telephony/java/com/android/ims/internal/uce/presence/PresRlmiInfo.aidl new file mode 100644 index 000000000000..2689c2dce1ac --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/presence/PresRlmiInfo.aidl @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.presence; + +parcelable PresRlmiInfo;
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/presence/PresRlmiInfo.java b/telephony/java/com/android/ims/internal/uce/presence/PresRlmiInfo.java new file mode 100644 index 000000000000..987dd775f86a --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/presence/PresRlmiInfo.java @@ -0,0 +1,232 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.presence; + +import android.os.Parcel; +import android.os.Parcelable; + +/** @hide */ +public class PresRlmiInfo implements Parcelable { + + /** + * uri corresponding to the list. Typically, this is the URI to + * which the SUBSCRIBE request was sent. + */ + private String mUri = ""; + /** list version number from 0 to 2^32-1 */ + private int mVersion; + /** + * Indicate whether the NOTIFY message contains information for + * every resource in the list + */ + private boolean mFullState; + /** list name */ + private String mListName = ""; + /** + * unique request ID used to match NOTIFY with original list + * SUBSCRIBE + */ + private int mRequestId; + /** subscription state*/ + private PresSubscriptionState mPresSubscriptionState; + /** active subscription expires time in second */ + private int mSubscriptionExpireTime; + /** list subscrption terminated reason */ + private String mSubscriptionTerminatedReason; + + /** + * Gets the URI. + * @hide + */ + public String getUri() { + return mUri; + } + + /** + * Sets the URI. + * @hide + */ + public void setUri(String uri) { + this.mUri = uri; + } + + /** + * Gets the version. + * @hide + */ + public int getVersion() { + return mVersion; + } + + /** + * Sets the version. + * @hide + */ + public void setVersion(int version) { + this.mVersion = version; + } + + /** + * Gets the RLMI state. + * @hide + */ + public boolean isFullState() { + return mFullState; + } + + /** + * Sets the RLMI state. + * @hide + */ + public void setFullState(boolean fullState) { + this.mFullState = fullState; + } + + /** + * Gets the RLMI list name. + * @hide + */ + public String getListName() { + return mListName; + } + + /** + * Sets the RLMI list name. + * @hide + */ + public void setListName(String listName) { + this.mListName = listName; + } + + /** + * Gets the subscription request ID. + * @hide + */ + public int getRequestId() { + return mRequestId; + } + + /** + * Sets the subscription request ID. + * @hide + */ + public void setRequestId(int requestId) { + this.mRequestId = requestId; + } + + /** + * Gets the presence subscription state. + * @hide + */ + public PresSubscriptionState getPresSubscriptionState() { + return mPresSubscriptionState; + } + + /** + * Sets the presence subscription state. + * @hide + */ + public void setPresSubscriptionState(PresSubscriptionState presSubscriptionState) { + this.mPresSubscriptionState = presSubscriptionState; + } + + /** + * Gets the presence subscription expiration time. + * @hide + */ + public int getSubscriptionExpireTime() { + return mSubscriptionExpireTime; + } + + /** + * Sets the presence subscription expiration time. + * @hide + */ + public void setSubscriptionExpireTime(int subscriptionExpireTime) { + this.mSubscriptionExpireTime = subscriptionExpireTime; + } + + /** + * Gets the presence subscription terminated reason. + * @hide + */ + public String getSubscriptionTerminatedReason() { + return mSubscriptionTerminatedReason; + } + + /** + * Sets the presence subscription terminated reason. + * @hide + */ + public void setSubscriptionTerminatedReason(String subscriptionTerminatedReason) { + this.mSubscriptionTerminatedReason = subscriptionTerminatedReason; + } + + /** + * Constructor for the PresTupleInfo class. + * @hide + */ + public PresRlmiInfo(){}; + + /** @hide */ + public int describeContents() { + return 0; + } + + /** @hide */ + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(mUri); + dest.writeInt(mVersion); + dest.writeInt(mFullState ? 1 : 0); + dest.writeString(mListName); + dest.writeInt(mRequestId); + dest.writeParcelable(mPresSubscriptionState, flags); + dest.writeInt(mSubscriptionExpireTime); + dest.writeString(mSubscriptionTerminatedReason); + } + + /** @hide */ + public static final Parcelable.Creator<PresRlmiInfo> CREATOR = + new Parcelable.Creator<PresRlmiInfo>() { + + public PresRlmiInfo createFromParcel(Parcel source) { + return new PresRlmiInfo(source); + } + + public PresRlmiInfo[] newArray(int size) { + return new PresRlmiInfo[size]; + } + }; + + /** @hide */ + private PresRlmiInfo(Parcel source) { + readFromParcel(source); + } + + /** @hide */ + public void readFromParcel(Parcel source) { + mUri = source.readString(); + mVersion = source.readInt(); + mFullState = (source.readInt() == 0) ? false : true; + mListName = source.readString(); + mRequestId = source.readInt(); + mPresSubscriptionState = source.readParcelable( + PresSubscriptionState.class.getClassLoader()); + mSubscriptionExpireTime = source.readInt(); + mSubscriptionTerminatedReason = source.readString(); + } +}
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/presence/PresServiceInfo.aidl b/telephony/java/com/android/ims/internal/uce/presence/PresServiceInfo.aidl new file mode 100644 index 000000000000..91ddf866734d --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/presence/PresServiceInfo.aidl @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.presence; + +parcelable PresServiceInfo;
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/presence/PresServiceInfo.java b/telephony/java/com/android/ims/internal/uce/presence/PresServiceInfo.java new file mode 100644 index 000000000000..f7b7264fe528 --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/presence/PresServiceInfo.java @@ -0,0 +1,152 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.presence; + +import android.os.Parcel; +import android.os.Parcelable; + +/** @hide */ +public class PresServiceInfo implements Parcelable { + + /** Presence Service Information + * @hide + */ + + /** No media capability. */ + public static final int UCE_PRES_MEDIA_CAP_NONE = 0; + /** Full duplex audio only. */ + public static final int UCE_PRES_MEDIA_CAP_FULL_AUDIO_ONLY = 1; + /** Full duplex audio and video. */ + public static final int UCE_PRES_MEDIA_CAP_FULL_AUDIO_AND_VIDEO = 2; + /** Media cap is unknown. */ + public static final int UCE_PRES_MEDIA_CAP_UNKNOWN = 3; + + + private int mMediaCap = UCE_PRES_MEDIA_CAP_NONE; + private String mServiceID = ""; + private String mServiceDesc = ""; + private String mServiceVer = ""; + + /** + * Gets the media type. + * @hide + */ + public int getMediaType() { + return mMediaCap; + } + + /** + * Sets the media type. + * @hide + */ + public void setMediaType(int nMediaCap) { + this.mMediaCap = nMediaCap; + } + + /** + * Gets the service ID. + * @hide + */ + public String getServiceId() { + return mServiceID; + } + + /** + * Sets the service ID. + * @hide + */ + public void setServiceId(String serviceID) { + this.mServiceID = serviceID; + } + /** + * Gets the service description. + * @hide + */ + public String getServiceDesc() { + return mServiceDesc; + } + + /** + * Sets the service description. + * @hide + */ + public void setServiceDesc(String serviceDesc) { + this.mServiceDesc = serviceDesc; + } + + /** + * Gets the service version. + * @hide + */ + public String getServiceVer() { + return mServiceVer; + } + + /** + * Sets the service version. + * @hide + */ + public void setServiceVer(String serviceVer) { + this.mServiceVer = serviceVer; + } + + /** + * Constructor for the PresServiceInfo class. + * @hide + */ + public PresServiceInfo() {}; + + + /** @hide */ + public int describeContents() { + return 0; + } + + /** @hide */ + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(mServiceID); + dest.writeString(mServiceDesc); + dest.writeString(mServiceVer); + dest.writeInt(mMediaCap); + } + + /** @hide */ + public static final Parcelable.Creator<PresServiceInfo> CREATOR = + new Parcelable.Creator<PresServiceInfo>() { + + public PresServiceInfo createFromParcel(Parcel source) { + return new PresServiceInfo(source); + } + + public PresServiceInfo[] newArray(int size) { + return new PresServiceInfo[size]; + } + }; + + /** @hide */ + private PresServiceInfo(Parcel source) { + readFromParcel(source); + } + + /** @hide */ + public void readFromParcel(Parcel source) { + mServiceID = source.readString(); + mServiceDesc = source.readString(); + mServiceVer = source.readString(); + mMediaCap = source.readInt(); + } +}
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/presence/PresSipResponse.aidl b/telephony/java/com/android/ims/internal/uce/presence/PresSipResponse.aidl new file mode 100644 index 000000000000..7dfff3db9a1d --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/presence/PresSipResponse.aidl @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.presence; + +parcelable PresSipResponse;
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/presence/PresSipResponse.java b/telephony/java/com/android/ims/internal/uce/presence/PresSipResponse.java new file mode 100644 index 000000000000..456b443a392a --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/presence/PresSipResponse.java @@ -0,0 +1,159 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.presence; + +import android.os.Parcel; +import android.os.Parcelable; + +/** @hide */ +public class PresSipResponse implements Parcelable { + + private PresCmdId mCmdId = new PresCmdId(); + private int mRequestId = 0; + private int mSipResponseCode = 0; + private int mRetryAfter = 0; + private String mReasonPhrase = ""; + + /** + * Gets the Presence command ID. + * @hide + */ + public PresCmdId getCmdId() { + return mCmdId; + } + + /** + * Sets the Presence command ID. + * @hide + */ + public void setCmdId(PresCmdId cmdId) { + this.mCmdId = cmdId; + } + + /** + * Gets the request ID. + * @hide + */ + public int getRequestId() { + return mRequestId; + } + + /** + * Sets the request ID. + * @hide + */ + public void setRequestId(int requestId) { + this.mRequestId = requestId; + } + + /** + * Gets the SIP response code. + * @hide + */ + public int getSipResponseCode() { + return mSipResponseCode; + } + + /** + * Sets the SIP response code. + * @hide + */ + public void setSipResponseCode(int sipResponseCode) { + this.mSipResponseCode = sipResponseCode; + } + + + /** + * Gets the reason phrase associated with the SIP responce + * code. + * @hide + */ + public String getReasonPhrase() { + return mReasonPhrase; + } + + /** + * Sets the SIP response code reason phrase. + * @hide + */ + public void setReasonPhrase(String reasonPhrase) { + this.mReasonPhrase = reasonPhrase; + } + + /** + * Gets the SIP retryAfter sec value. + * @hide + */ + public int getRetryAfter() { + return mRetryAfter; + } + + /** + * Sets the SIP retryAfter sec value + * @hide + */ + public void setRetryAfter(int retryAfter) { + this.mRetryAfter = retryAfter; + } + + /** + * Constructor for the PresSipResponse class. + * @hide + */ + public PresSipResponse(){}; + + /** @hide */ + public int describeContents() { + return 0; + } + + /** @hide */ + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(mRequestId); + dest.writeInt(mSipResponseCode); + dest.writeString(mReasonPhrase); + dest.writeParcelable(mCmdId, flags); + dest.writeInt(mRetryAfter); + } + + /** @hide */ + public static final Parcelable.Creator<PresSipResponse> CREATOR = + new Parcelable.Creator<PresSipResponse>() { + + public PresSipResponse createFromParcel(Parcel source) { + return new PresSipResponse(source); + } + + public PresSipResponse[] newArray(int size) { + return new PresSipResponse[size]; + } + }; + + /** @hide */ + private PresSipResponse(Parcel source) { + readFromParcel(source); + } + + /** @hide */ + public void readFromParcel(Parcel source) { + mRequestId = source.readInt(); + mSipResponseCode = source.readInt(); + mReasonPhrase = source.readString(); + mCmdId = source.readParcelable(PresCmdId.class.getClassLoader()); + mRetryAfter = source.readInt(); + } +}
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/presence/PresSubscriptionState.aidl b/telephony/java/com/android/ims/internal/uce/presence/PresSubscriptionState.aidl new file mode 100644 index 000000000000..7bff24ab6974 --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/presence/PresSubscriptionState.aidl @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.presence; + +parcelable PresSubscriptionState;
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/presence/PresSubscriptionState.java b/telephony/java/com/android/ims/internal/uce/presence/PresSubscriptionState.java new file mode 100644 index 000000000000..872bc23ee9ab --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/presence/PresSubscriptionState.java @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.presence; + +import android.os.Parcel; +import android.os.Parcelable; + +/** @hide */ +public class PresSubscriptionState implements Parcelable { + + /** + * Subscription states. + * @hide + */ + + /** Active state. */ + public static final int UCE_PRES_SUBSCRIPTION_STATE_ACTIVE = 0; + /** Pending state. */ + public static final int UCE_PRES_SUBSCRIPTION_STATE_PENDING = 1; + /** Terminated state. */ + public static final int UCE_PRES_SUBSCRIPTION_STATE_TERMINATED = 2; + /** Unknown state. */ + public static final int UCE_PRES_SUBSCRIPTION_STATE_UNKNOWN = 3; + + + private int mPresSubscriptionState = UCE_PRES_SUBSCRIPTION_STATE_UNKNOWN; + + + /** @hide */ + public int describeContents() { + return 0; + } + + /** @hide */ + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(mPresSubscriptionState); + } + + /** @hide */ + public static final Parcelable.Creator<PresSubscriptionState> CREATOR = + new Parcelable.Creator<PresSubscriptionState>() { + + public PresSubscriptionState createFromParcel(Parcel source) { + return new PresSubscriptionState(source); + } + + public PresSubscriptionState[] newArray(int size) { + return new PresSubscriptionState[size]; + } + }; + + /** @hide */ + private PresSubscriptionState(Parcel source) { + readFromParcel(source); + } + + /** @hide */ + public void readFromParcel(Parcel source) { + mPresSubscriptionState = source.readInt(); + } + + /** + * Constructor for the PresSubscriptionState class. + * @hide + */ + public PresSubscriptionState() { }; + + /** + * Gets the Presence subscription state. + * @hide + */ + public int getPresSubscriptionStateValue() { + return mPresSubscriptionState; + } + + + /** + * Sets the Presence subscription state. + * @hide + */ + public void setPresSubscriptionState(int nPresSubscriptionState) { + this.mPresSubscriptionState = nPresSubscriptionState; + } +}
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/presence/PresTupleInfo.aidl b/telephony/java/com/android/ims/internal/uce/presence/PresTupleInfo.aidl new file mode 100644 index 000000000000..6571ebe8b74c --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/presence/PresTupleInfo.aidl @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.presence; + +parcelable PresTupleInfo;
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/presence/PresTupleInfo.java b/telephony/java/com/android/ims/internal/uce/presence/PresTupleInfo.java new file mode 100644 index 000000000000..e1867c55836b --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/presence/PresTupleInfo.java @@ -0,0 +1,119 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.presence; + +import android.os.Parcel; +import android.os.Parcelable; + +/** @hide */ +public class PresTupleInfo implements Parcelable { + + private String mFeatureTag = ""; + private String mContactUri = ""; + private String mTimestamp = ""; + + + /** + * Gets the feature tag. + * @hide + */ + public String getFeatureTag() { + return mFeatureTag; + } + + /** + * Sets the feature tag. + * @hide + */ + public void setFeatureTag(String featureTag) { + this.mFeatureTag = featureTag; + } + + /** + * Gets the contact URI. + * @hide + */ + public String getContactUri() { + return mContactUri; + } + /** + * Sets the contact URI. + * @hide + */ + public void setContactUri(String contactUri) { + this.mContactUri = contactUri; + } + + /** + * Gets the timestamp. + * @hide + */ + public String getTimestamp() { + return mTimestamp; + } + + /** + * Sets the timestamp. + * @hide + */ + public void setTimestamp(String timestamp) { + this.mTimestamp = timestamp; + } + + /** + * Constructor for the PresTupleInfo class. + * @hide + */ + public PresTupleInfo(){}; + + /** @hide */ + public int describeContents() { + return 0; + } + + /** @hide */ + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(mFeatureTag); + dest.writeString(mContactUri); + dest.writeString(mTimestamp); + } + + /** @hide */ + public static final Parcelable.Creator<PresTupleInfo> CREATOR = + new Parcelable.Creator<PresTupleInfo>() { + + public PresTupleInfo createFromParcel(Parcel source) { + return new PresTupleInfo(source); + } + + public PresTupleInfo[] newArray(int size) { + return new PresTupleInfo[size]; + } + }; + + /** @hide */ + private PresTupleInfo(Parcel source) { + readFromParcel(source); + } + + /** @hide */ + public void readFromParcel(Parcel source) { + mFeatureTag = source.readString(); + mContactUri = source.readString(); + mTimestamp = source.readString(); + } +}
\ No newline at end of file diff --git a/telephony/java/com/android/ims/internal/uce/uceservice/IUceListener.aidl b/telephony/java/com/android/ims/internal/uce/uceservice/IUceListener.aidl new file mode 100644 index 000000000000..13707a16a0c1 --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/uceservice/IUceListener.aidl @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.uceservice; + +/** IUceListener + * {@hide} */ +interface IUceListener +{ + /** + * Get UCE Status + * @param serviceStatusValue defined in ImsUceManager + * @hide + */ + void setStatus(int serviceStatusValue); +} diff --git a/telephony/java/com/android/ims/internal/uce/uceservice/IUceService.aidl b/telephony/java/com/android/ims/internal/uce/uceservice/IUceService.aidl new file mode 100644 index 000000000000..43f83cd94d57 --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/uceservice/IUceService.aidl @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.uceservice; + +import com.android.ims.internal.uce.uceservice.IUceListener; +import com.android.ims.internal.uce.presence.IPresenceService; +import com.android.ims.internal.uce.options.IOptionsListener; +import com.android.ims.internal.uce.presence.IPresenceListener; +import com.android.ims.internal.uce.options.IOptionsService; +import com.android.ims.internal.uce.common.UceLong; +import com.android.ims.internal.uce.common.StatusCode; + +/** IUceService + * UCE service interface class. + * {@hide} */ +interface IUceService +{ + + /** + * Starts the Uce service. + * @param uceListener IUceListener object + * @return boolean true if the service stop start is processed successfully, FALSE otherwise. + * + * Service status is returned in setStatus callback in IUceListener. + * @hide + */ + boolean startService(IUceListener uceListener); + + /** + * Stops the UCE service. + * @return boolean true if the service stop request is processed successfully, FALSE otherwise. + * @hide + */ + boolean stopService(); + + + + /** + * Requests the UCE service start status. + * @return boolean true if service started else false. + * @hide + */ + boolean isServiceStarted(); + + /** + * Creates a options service for Capability Discovery. + * @param optionsListener IOptionsListener object. + * @param optionsServiceListenerHdl wrapper for client's listener handle to be stored. + * + * The service will fill UceLong.mUceLong with presenceListenerHandle allocated and + * used to validate callbacks received in IPresenceListener are indeed from the + * service the client created. + * + * @return optionsServiceHandle + * @hide + */ + int createOptionsService(IOptionsListener optionsListener, + inout UceLong optionsServiceListenerHdl); + + /** + * Destroys a Options service. + * @param optionsServiceHandle this is received in serviceCreated() callback + * in IOptionsListener + * @hide + */ + void destroyOptionsService(int optionsServiceHandle); + + /** + * Creates a presence service. + * @param presenceServiceListener IPresenceListener object + * @param presenceServiceListenerHdl wrapper for client's listener handle to be stored. + * + * The service will fill UceLong.mUceLong with presenceListenerHandle allocated and + * used to validate callbacks received in IPresenceListener are indeed from the + * service the client created. + * + * @return presenceServiceHdl + * @hide + */ + int createPresenceService(IPresenceListener presenceServiceListener, + inout UceLong presenceServiceListenerHdl); + + /** + * Destroys a presence service. + * @param presenceServiceHdl handle returned during createPresenceService() + * @hide + */ + void destroyPresenceService(int presenceServiceHdl); + + + + /** + * Query the UCE Service for information to know whether the is registered. + * @return boolean, true if Registered to for network events else false. + * @hide + */ + boolean getServiceStatus(); + + /** + * Query the UCE Service for presence Service. + * @return IPresenceService object. + * @hide + */ + IPresenceService getPresenceService(); + + /** + * Query the UCE Service for options service object. + * @return IOptionsService object. + * @hide + */ + IOptionsService getOptionsService(); + +} diff --git a/telephony/java/com/android/ims/internal/uce/uceservice/ImsUceManager.java b/telephony/java/com/android/ims/internal/uce/uceservice/ImsUceManager.java new file mode 100644 index 000000000000..4b0b098d4e5b --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/uceservice/ImsUceManager.java @@ -0,0 +1,187 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce.uceservice; + +import android.content.Context; +import android.content.Intent; + +import android.os.Handler; +import android.os.HandlerThread; +import android.os.IBinder; +import android.os.Message; +import android.os.ServiceManager; +import android.os.RemoteException; + +import java.util.HashMap; +import android.util.Log; + +/** + * ImsUceManager Declaration + * @hide + */ +public class ImsUceManager { + + private static final String LOG_TAG = "ImsUceManager"; + /** + * Uce Service name Internal Uce only + * @hide + */ + private static final String UCE_SERVICE = "uce"; + + /** + * IUceService object + * @hide + */ + private IUceService mUceService = null; + private UceServiceDeathRecipient mDeathReceipient = new UceServiceDeathRecipient(); + private Context mContext; + private int mPhoneId; + /** + * Stores the UceManager instaces of Clients identified by + * phoneId + * @hide + */ + private static HashMap<Integer, ImsUceManager> sUceManagerInstances = + new HashMap<Integer, ImsUceManager>(); + + public static final String ACTION_UCE_SERVICE_UP = + "com.android.ims.internal.uce.UCE_SERVICE_UP"; + public static final String ACTION_UCE_SERVICE_DOWN = + "com.android.ims.internal.uce.UCE_SERVICE_DOWN"; + + /** Uce Service status received in IUceListener.setStatus() + * callback + * @hide + */ + public static final int UCE_SERVICE_STATUS_FAILURE = 0; + /** indicate UI to call Presence/Options API. */ + public static final int UCE_SERVICE_STATUS_ON = 1; + /** Indicate UI destroy Presence/Options */ + public static final int UCE_SERVICE_STATUS_CLOSED = 2; + /** Service up and trying to register for network events */ + public static final int UCE_SERVICE_STATUS_READY = 3; + + /** + * Part of the ACTION_UCE_SERVICE_UP or _DOWN intents. A long + * value; the phone ID corresponding to the IMS service coming up or down. + * Internal use only. + * @hide + */ + public static final String EXTRA_PHONE_ID = "android:phone_id"; + + + /** + * Gets the instance of UCE Manager + * @hide + */ + public static ImsUceManager getInstance(Context context, int phoneId) { + //if (DBG) Log.d (LOG_TAG, "GetInstance Called"); + synchronized (sUceManagerInstances) { + if (sUceManagerInstances.containsKey(phoneId)) { + return sUceManagerInstances.get(phoneId); + } else { + ImsUceManager uceMgr = new ImsUceManager(context, phoneId); + sUceManagerInstances.put(phoneId, uceMgr); + return uceMgr; + } + } + } + + /** + * Constructor + * @hide + */ + private ImsUceManager(Context context, int phoneId) { + //if (DBG) Log.d (LOG_TAG, "Constructor"); + mContext = context; + mPhoneId = phoneId; + createUceService(true); + } + + /** + * Gets the Uce service Instance + * + * client should call this API only after createUceService() + * this instance is deleted when ACTION_UCE_SERVICE_DOWN event + * is received. + * @hide + */ + public IUceService getUceServiceInstance() { + //if (DBG) Log.d (LOG_TAG, "GetUceServiceInstance Called"); + return mUceService; + } + + /** + * Gets the UCE service name + * @hide + */ + private String getUceServiceName(int phoneId) { + return UCE_SERVICE; + } + + /** + * Gets the IBinder to UCE service + * + * Client should call this after receving ACTION_UCE_SERVICE_UP + * event. + * @hide + */ + public void createUceService(boolean checkService) { + //if (DBG) Log.d (LOG_TAG, "CreateUceService Called"); + if (checkService) { + IBinder binder = ServiceManager.checkService(getUceServiceName(mPhoneId)); + + if (binder == null) { + //if (DBG)Log.d (LOG_TAG, "Unable to find IBinder"); + return; + } + } + IBinder b = ServiceManager.getService(getUceServiceName(mPhoneId)); + + if (b != null) { + try { + b.linkToDeath(mDeathReceipient, 0); + } catch (RemoteException e) { + } + } + + this.mUceService = IUceService.Stub.asInterface(b); + } + + + /** + * Death recipient class for monitoring IMS service. + * + * After receiving ACTION_UCE_SERVICE_DOWN event, the client + * should wait to receive ACTION_UCE_SERVICE_UP and call + * createUceService inorder to create mUceService instance. + * @hide + */ + private class UceServiceDeathRecipient implements IBinder.DeathRecipient { + @Override + public void binderDied() { + //if (DBG) Log.d (LOG_TAG, "found IBinder/IUceService Service Died"); + mUceService = null; + + if (mContext != null) { + Intent intent = new Intent(ACTION_UCE_SERVICE_DOWN); + intent.putExtra(EXTRA_PHONE_ID, mPhoneId); + mContext.sendBroadcast(new Intent(intent)); + } + } + } +} diff --git a/telephony/java/com/android/ims/internal/uce/uceservice/UceServiceBase.java b/telephony/java/com/android/ims/internal/uce/uceservice/UceServiceBase.java new file mode 100644 index 000000000000..3660e039582d --- /dev/null +++ b/telephony/java/com/android/ims/internal/uce/uceservice/UceServiceBase.java @@ -0,0 +1,153 @@ +/* + * Copyright (c) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ims.internal.uce; + +import com.android.ims.internal.uce.uceservice.IUceService; +import com.android.ims.internal.uce.uceservice.IUceListener; +import com.android.ims.internal.uce.common.StatusCode; +import com.android.ims.internal.uce.common.UceLong; +import com.android.ims.internal.uce.options.IOptionsListener; +import com.android.ims.internal.uce.options.IOptionsService; +import com.android.ims.internal.uce.presence.IPresenceService; +import com.android.ims.internal.uce.presence.IPresenceListener; + +/** + * Sub IUceService interface. To enable forward compatability + * during developlemt + * @hide + */ +public abstract class UceServiceBase { + /** + * IUceService Stub Implementation + */ + private final class UceServiceBinder extends IUceService.Stub { + @Override + public boolean startService(IUceListener uceListener) { + return onServiceStart(uceListener); + } + + @Override + public boolean stopService() { + return onStopService(); + } + + @Override + public boolean isServiceStarted() { + return onIsServiceStarted(); + } + + @Override + public int createOptionsService(IOptionsListener optionsListener, + UceLong optionsServiceListenerHdl) { + return onCreateOptionsService(optionsListener, optionsServiceListenerHdl); + } + + + @Override + public void destroyOptionsService(int optionsServiceHandle) { + onDestroyOptionsService(optionsServiceHandle); + } + + @Override + public int createPresenceService( + IPresenceListener presServiceListener, + UceLong presServiceListenerHdl) { + return onCreatePresService(presServiceListener, presServiceListenerHdl); + } + + @Override + public void destroyPresenceService(int presServiceHdl) { + onDestroyPresService(presServiceHdl); + } + + @Override + public boolean getServiceStatus() { + return onGetServiceStatus(); + } + + @Override + public IPresenceService getPresenceService() { + return onGetPresenceService(); + } + + @Override + public IOptionsService getOptionsService() { + return onGetOptionsService(); + } + } + + private UceServiceBinder mBinder; + + public UceServiceBinder getBinder() { + if (mBinder == null) { + mBinder = new UceServiceBinder(); + } + return mBinder; + } + + protected boolean onServiceStart(IUceListener uceListener) { + //no-op + return false; + } + + protected boolean onStopService() { + //no-op + return false; + } + + protected boolean onIsServiceStarted() { + //no-op + return false; + } + + protected int onCreateOptionsService(IOptionsListener optionsListener, + UceLong optionsServiceListenerHdl) { + //no-op + return 0; + } + + protected void onDestroyOptionsService(int cdServiceHandle) { + //no-op + return; + } + + protected int onCreatePresService(IPresenceListener presServiceListener, + UceLong presServiceListenerHdl) { + //no-op + return 0; + } + + protected void onDestroyPresService(int presServiceHdl) { + //no-op + return; + } + + protected boolean onGetServiceStatus() { + //no-op + return false; + } + + protected IPresenceService onGetPresenceService() { + //no-op + return null; + } + + protected IOptionsService onGetOptionsService () { + //no-op + return null; + } +} |