1f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville/*
2f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville * Copyright (c) 2013 The Android Open Source Project
3f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville *
4f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville * Licensed under the Apache License, Version 2.0 (the "License");
5f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville * you may not use this file except in compliance with the License.
6f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville * You may obtain a copy of the License at
7f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville *
8f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville *      http://www.apache.org/licenses/LICENSE-2.0
9f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville *
10f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville * Unless required by applicable law or agreed to in writing, software
11f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville * distributed under the License is distributed on an "AS IS" BASIS,
12f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville * See the License for the specific language governing permissions and
14f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville * limitations under the License.
15f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville */
16f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
17f8458ff9d97f8961d67c41ee107129ecba873f36Wink Savillepackage com.android.ims.internal;
18f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
19c47b18fb2523b65189f88c22a4291233f00bfb4aLibin.Tang@motorola.comimport android.os.Message;
20f8458ff9d97f8961d67c41ee107129ecba873f36Wink Savilleimport com.android.ims.ImsCallProfile;
21f8458ff9d97f8961d67c41ee107129ecba873f36Wink Savilleimport com.android.ims.ImsStreamMediaProfile;
22f8458ff9d97f8961d67c41ee107129ecba873f36Wink Savilleimport com.android.ims.internal.IImsCallSessionListener;
23752217bfc662402cdf13368e4b2a0338e8e0aed8Andrew Leeimport com.android.ims.internal.IImsVideoCallProvider;
24f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
25f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville/**
26f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville * An IMS session that is associated with a SIP dialog which is established from/to
27f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville * INVITE request or a mid-call transaction to control the session.
28f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville * {@hide}
29f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville */
30f8458ff9d97f8961d67c41ee107129ecba873f36Wink Savilleinterface IImsCallSession {
31f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
32f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Closes the object. This object is not usable after being closed.
33f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
34f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void close();
35f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
36f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
37f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Gets the call ID of the session.
38f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *
39f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @return the call ID
40f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
41f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    String getCallId();
42f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
43f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
44f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Gets the call profile that this session is associated with
45f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *
46f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @return the call profile that this session is associated with
47f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
48f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    ImsCallProfile getCallProfile();
49f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
50f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
51f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Gets the local call profile that this session is associated with
52f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *
53f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @return the local call profile that this session is associated with
54f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
55f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    ImsCallProfile getLocalCallProfile();
56f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
57f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
58482e6da9720ec8467c9deb5e11874f78caa3eae4Shriram Ganesh     * Gets the remote call profile that this session is associated with
59482e6da9720ec8467c9deb5e11874f78caa3eae4Shriram Ganesh     *
60482e6da9720ec8467c9deb5e11874f78caa3eae4Shriram Ganesh     * @return the remote call profile that this session is associated with
61482e6da9720ec8467c9deb5e11874f78caa3eae4Shriram Ganesh     */
62482e6da9720ec8467c9deb5e11874f78caa3eae4Shriram Ganesh    ImsCallProfile getRemoteCallProfile();
63482e6da9720ec8467c9deb5e11874f78caa3eae4Shriram Ganesh
64482e6da9720ec8467c9deb5e11874f78caa3eae4Shriram Ganesh    /**
65f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Gets the value associated with the specified property of this session.
66f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *
67f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @return the string value associated with the specified property
68f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
69f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    String getProperty(String name);
70f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
71f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
72f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Gets the session state. The value returned must be one of the states in
73f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * {@link ImsCallSession#State}.
74f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *
75f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @return the session state
76f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
77f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    int getState();
78f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
79f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
80f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Checks if the session is in a call.
81f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *
82f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @return true if the session is in a call
83f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
84f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    boolean isInCall();
85f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
86f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
87f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Sets the listener to listen to the session events. A {@link IImsCallSession}
88f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * can only hold one listener at a time. Subsequent calls to this method
89f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * override the previous listener.
90f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *
91f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @param listener to listen to the session events of this object
92f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
93f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void setListener(in IImsCallSessionListener listener);
94f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
95f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
96f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Mutes or unmutes the mic for the active call.
97f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *
98f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @param muted true if the call is muted, false otherwise
99f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
100f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void setMute(boolean muted);
101f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
102f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
103f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Initiates an IMS call with the specified target and call profile.
104f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * The session listener is called back upon defined session events.
105f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * The method is only valid to call when the session state is in
106f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * {@link ImsCallSession#State#IDLE}.
107f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *
108f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @param callee dialed string to make the call to
109f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @param profile call profile to make the call with the specified service type,
110f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *      call type and media information
111f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @see Listener#callSessionStarted, Listener#callSessionStartFailed
112f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
113f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void start(String callee, in ImsCallProfile profile);
114f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
115f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
116f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Initiates an IMS call with the specified participants and call profile.
117f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * The session listener is called back upon defined session events.
118f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * The method is only valid to call when the session state is in
119f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * {@link ImsCallSession#State#IDLE}.
120f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *
121f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @param participants participant list to initiate an IMS conference call
122f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @param profile call profile to make the call with the specified service type,
123f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *      call type and media information
124f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @see Listener#callSessionStarted, Listener#callSessionStartFailed
125f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
126f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void startConference(in String[] participants, in ImsCallProfile profile);
127f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
128f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
129f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Accepts an incoming call or session update.
130f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *
131f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @param callType call type specified in {@link ImsCallProfile} to be answered
132f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @param profile stream media profile {@link ImsStreamMediaProfile} to be answered
133f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @see Listener#callSessionStarted
134f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
135f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void accept(int callType, in ImsStreamMediaProfile profile);
136f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
137f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
138f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Rejects an incoming call or session update.
139f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *
140f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @param reason reason code to reject an incoming call
141f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @see Listener#callSessionStartFailed
142f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
143f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void reject(int reason);
144f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
145f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
146f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Terminates a call.
147f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *
148f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @see Listener#callSessionTerminated
149f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
150f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void terminate(int reason);
151f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
152f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
153f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Puts a call on hold. When it succeeds, {@link Listener#callSessionHeld} is called.
154f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *
155f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @param profile stream media profile {@link ImsStreamMediaProfile} to hold the call
156f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @see Listener#callSessionHeld, Listener#callSessionHoldFailed
157f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
158f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void hold(in ImsStreamMediaProfile profile);
159f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
160f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
161f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Continues a call that's on hold. When it succeeds, {@link Listener#callSessionResumed}
162f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * is called.
163f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *
164f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @param profile stream media profile {@link ImsStreamMediaProfile} to resume the call
165f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @see Listener#callSessionResumed, Listener#callSessionResumeFailed
166f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
167f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void resume(in ImsStreamMediaProfile profile);
168f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
169f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
170f764e8075775f84df0c5c51a529548ba64707517Tyler Gunn     * Merges the active & hold call. When the merge starts,
171f764e8075775f84df0c5c51a529548ba64707517Tyler Gunn     * {@link Listener#callSessionMergeStarted} is called.
172f764e8075775f84df0c5c51a529548ba64707517Tyler Gunn     * {@link Listener#callSessionMergeComplete} is called if the merge is successful, and
173f764e8075775f84df0c5c51a529548ba64707517Tyler Gunn     * {@link Listener#callSessionMergeFailed} is called if the merge fails.
174f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *
175f764e8075775f84df0c5c51a529548ba64707517Tyler Gunn     * @see Listener#callSessionMergeStarted, Listener#callSessionMergeComplete,
176f764e8075775f84df0c5c51a529548ba64707517Tyler Gunn     *      Listener#callSessionMergeFailed
177f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
178f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void merge();
179f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
180f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
181f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Updates the current call's properties (ex. call mode change: video upgrade / downgrade).
182f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *
183f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @param callType call type specified in {@link ImsCallProfile} to be updated
184f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @param profile stream media profile {@link ImsStreamMediaProfile} to be updated
185f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @see Listener#callSessionUpdated, Listener#callSessionUpdateFailed
186f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
187f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void update(int callType, in ImsStreamMediaProfile profile);
188f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
189f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
190f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Extends this call to the conference call with the specified recipients.
191f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *
1920a493e87224e4b337a89d9fbaaa604d7a8c5bd5fWink Saville     * @param participants participant list to be invited to the conference call after extending the call
193f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @see Listener#sessionConferenceExtened, Listener#sessionConferenceExtendFailed
194f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
195f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void extendToConference(in String[] participants);
196f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
197f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
198f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Requests the conference server to invite an additional participants to the conference.
199f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *
2000a493e87224e4b337a89d9fbaaa604d7a8c5bd5fWink Saville     * @param participants participant list to be invited to the conference call
201f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @see Listener#sessionInviteParticipantsRequestDelivered,
202f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *      Listener#sessionInviteParticipantsRequestFailed
203f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
204f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void inviteParticipants(in String[] participants);
205f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
206f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
207f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Requests the conference server to remove the specified participants from the conference.
208f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *
209f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @param participants participant list to be removed from the conference call
210f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @see Listener#sessionRemoveParticipantsRequestDelivered,
211f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *      Listener#sessionRemoveParticipantsRequestFailed
212f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
213f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void removeParticipants(in String[] participants);
214f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
215f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
216f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Sends a DTMF code. According to <a href="http://tools.ietf.org/html/rfc2833">RFC 2833</a>,
217f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * event 0 ~ 9 maps to decimal value 0 ~ 9, '*' to 10, '#' to 11, event 'A' ~ 'D' to 12 ~ 15,
218f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * and event flash to 16. Currently, event flash is not supported.
219f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *
220c47b18fb2523b65189f88c22a4291233f00bfb4aLibin.Tang@motorola.com     * @param c the DTMF to send. '0' ~ '9', 'A' ~ 'D', '*', '#' are valid inputs.
221c47b18fb2523b65189f88c22a4291233f00bfb4aLibin.Tang@motorola.com     * @param result.
222f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
223c47b18fb2523b65189f88c22a4291233f00bfb4aLibin.Tang@motorola.com    void sendDtmf(char c, in Message result);
224f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
225f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
226a8af6bb333201b325a58d92a50a8d3fd62e3ef85Uma Maheswari Ramalingam     * Start a DTMF code. According to <a href="http://tools.ietf.org/html/rfc2833">RFC 2833</a>,
227a8af6bb333201b325a58d92a50a8d3fd62e3ef85Uma Maheswari Ramalingam     * event 0 ~ 9 maps to decimal value 0 ~ 9, '*' to 10, '#' to 11, event 'A' ~ 'D' to 12 ~ 15,
228a8af6bb333201b325a58d92a50a8d3fd62e3ef85Uma Maheswari Ramalingam     * and event flash to 16. Currently, event flash is not supported.
229a8af6bb333201b325a58d92a50a8d3fd62e3ef85Uma Maheswari Ramalingam     *
230a8af6bb333201b325a58d92a50a8d3fd62e3ef85Uma Maheswari Ramalingam     * @param c the DTMF to send. '0' ~ '9', 'A' ~ 'D', '*', '#' are valid inputs.
231a8af6bb333201b325a58d92a50a8d3fd62e3ef85Uma Maheswari Ramalingam     */
232a8af6bb333201b325a58d92a50a8d3fd62e3ef85Uma Maheswari Ramalingam    void startDtmf(char c);
233a8af6bb333201b325a58d92a50a8d3fd62e3ef85Uma Maheswari Ramalingam
234a8af6bb333201b325a58d92a50a8d3fd62e3ef85Uma Maheswari Ramalingam    /**
235a8af6bb333201b325a58d92a50a8d3fd62e3ef85Uma Maheswari Ramalingam     * Stop a DTMF code.
236a8af6bb333201b325a58d92a50a8d3fd62e3ef85Uma Maheswari Ramalingam     */
237a8af6bb333201b325a58d92a50a8d3fd62e3ef85Uma Maheswari Ramalingam    void stopDtmf();
238a8af6bb333201b325a58d92a50a8d3fd62e3ef85Uma Maheswari Ramalingam
239a8af6bb333201b325a58d92a50a8d3fd62e3ef85Uma Maheswari Ramalingam    /**
240f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Sends an USSD message.
241f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *
242f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @param ussdMessage USSD message to send
243f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
244f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void sendUssd(String ussdMessage);
245752217bfc662402cdf13368e4b2a0338e8e0aed8Andrew Lee
246752217bfc662402cdf13368e4b2a0338e8e0aed8Andrew Lee    /**
247752217bfc662402cdf13368e4b2a0338e8e0aed8Andrew Lee     * Returns a binder for the video call provider implementation contained within the IMS service
248752217bfc662402cdf13368e4b2a0338e8e0aed8Andrew Lee     * process. This binder is used by the VideoCallProvider subclass in Telephony which
249752217bfc662402cdf13368e4b2a0338e8e0aed8Andrew Lee     * intermediates between the propriety implementation and Telecomm/InCall.
250752217bfc662402cdf13368e4b2a0338e8e0aed8Andrew Lee     */
251752217bfc662402cdf13368e4b2a0338e8e0aed8Andrew Lee    IImsVideoCallProvider getVideoCallProvider();
2526a7ed1eb408a94a9d74ea55a68771a94c3005455Tyler Gunn
2536a7ed1eb408a94a9d74ea55a68771a94c3005455Tyler Gunn    /**
2546a7ed1eb408a94a9d74ea55a68771a94c3005455Tyler Gunn     * Determines if the current session is multiparty.
2556a7ed1eb408a94a9d74ea55a68771a94c3005455Tyler Gunn     * @return {@code True} if the session is multiparty.
2566a7ed1eb408a94a9d74ea55a68771a94c3005455Tyler Gunn     */
2576a7ed1eb408a94a9d74ea55a68771a94c3005455Tyler Gunn    boolean isMultiparty();
258f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville}
259