Merge "ims:rcs: Add UCE interface files for RCS." into nyc-dev

This commit is contained in:
Pavel Zhamaitsiak
2016-03-19 00:18:23 +00:00
committed by Android (Google) Code Review
46 changed files with 4010 additions and 0 deletions

View File

@@ -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 \

View File

@@ -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 -->
<!-- ====================================================================== -->
@@ -830,6 +833,26 @@
android:description="@string/permdesc_recordAudio"
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 -->
<!-- ====================================================================== -->

View File

@@ -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;

View File

@@ -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();
}
}

View File

@@ -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;

View File

@@ -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();
}
}

View File

@@ -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;

View File

@@ -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();
}
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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;

View File

@@ -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());
}
}

View File

@@ -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;

View File

@@ -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();
}
}

View File

@@ -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;

View File

@@ -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());
}
}

View File

@@ -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;

View File

@@ -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();
}
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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;

View File

@@ -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());
}
}

View File

@@ -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;

View File

@@ -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();
}
}

View File

@@ -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;

View File

@@ -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());
}
}

View File

@@ -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;

View File

@@ -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();
}
}

View File

@@ -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;

View File

@@ -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());
}
}

View File

@@ -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;

View File

@@ -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);
}
}
}

View File

@@ -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;

View File

@@ -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();
}
}

View File

@@ -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;

View File

@@ -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();
}
}

View File

@@ -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;

View File

@@ -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();
}
}

View File

@@ -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;

View File

@@ -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;
}
}

View File

@@ -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;

View File

@@ -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();
}
}

View File

@@ -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);
}

View File

@@ -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();
}

View File

@@ -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));
}
}
}
}

View File

@@ -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;
}
}