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
19f8458ff9d97f8961d67c41ee107129ecba873f36Wink Savilleimport com.android.ims.ImsStreamMediaProfile;
20f8458ff9d97f8961d67c41ee107129ecba873f36Wink Savilleimport com.android.ims.ImsCallProfile;
21f8458ff9d97f8961d67c41ee107129ecba873f36Wink Savilleimport com.android.ims.ImsReasonInfo;
22f8458ff9d97f8961d67c41ee107129ecba873f36Wink Savilleimport com.android.ims.ImsConferenceState;
23f8458ff9d97f8961d67c41ee107129ecba873f36Wink Savilleimport com.android.ims.internal.IImsCallSession;
24ddf570e8226bd21448b44b3327d4bcb2608f4d00Shriram Ganeshimport com.android.ims.ImsSuppServiceNotification;
25f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
26f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville/**
27f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville * A listener type for receiving notification on IMS call session events.
28f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville * When an event is generated for an {@link IImsCallSession}, the application is notified
29f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville * by having one of the methods called on the {@link IImsCallSessionListener}.
30f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville * {@hide}
31f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville */
32f8458ff9d97f8961d67c41ee107129ecba873f36Wink Savilleinterface IImsCallSessionListener {
33f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
34f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Notifies the result of the basic session operation (setup / terminate).
35f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
36f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void callSessionProgressing(in IImsCallSession session, in ImsStreamMediaProfile profile);
37f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void callSessionStarted(in IImsCallSession session, in ImsCallProfile profile);
38f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void callSessionStartFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo);
39f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void callSessionTerminated(in IImsCallSession session, in ImsReasonInfo reasonInfo);
40f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
41f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
42f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Notifies the result of the call hold/resume operation.
43f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
44f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void callSessionHeld(in IImsCallSession session, in ImsCallProfile profile);
45f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void callSessionHoldFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo);
46f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void callSessionHoldReceived(in IImsCallSession session, in ImsCallProfile profile);
47f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void callSessionResumed(in IImsCallSession session, in ImsCallProfile profile);
48f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void callSessionResumeFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo);
49f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void callSessionResumeReceived(in IImsCallSession session, in ImsCallProfile profile);
50f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
51f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
52f764e8075775f84df0c5c51a529548ba64707517Tyler Gunn     * Notifies the result of call merge operation.
53f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
54f764e8075775f84df0c5c51a529548ba64707517Tyler Gunn    void callSessionMergeStarted(in IImsCallSession session,
55f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville            in IImsCallSession newSession, in ImsCallProfile profile);
56f764e8075775f84df0c5c51a529548ba64707517Tyler Gunn    void callSessionMergeComplete(in IImsCallSession session);
57f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void callSessionMergeFailed(in IImsCallSession session,
58f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville            in ImsReasonInfo reasonInfo);
59f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
60f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
61f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Notifies the result of call upgrade / downgrade or any other call updates.
62f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
63f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void callSessionUpdated(in IImsCallSession session,
64f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville            in ImsCallProfile profile);
65f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void callSessionUpdateFailed(in IImsCallSession session,
66f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville            in ImsReasonInfo reasonInfo);
67f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void callSessionUpdateReceived(in IImsCallSession session,
68f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville            in ImsCallProfile profile);
69f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
70f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
71f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Notifies the result of conference extension.
72f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
73f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void callSessionConferenceExtended(in IImsCallSession session,
74f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville            in IImsCallSession newSession, in ImsCallProfile profile);
75f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void callSessionConferenceExtendFailed(in IImsCallSession session,
76f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville            in ImsReasonInfo reasonInfo);
77f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void callSessionConferenceExtendReceived(in IImsCallSession session,
78f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville            in IImsCallSession newSession, in ImsCallProfile profile);
79f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
80f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
81f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Notifies the result of the participant invitation / removal to/from the conference session.
82f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
83f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void callSessionInviteParticipantsRequestDelivered(in IImsCallSession session);
84f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void callSessionInviteParticipantsRequestFailed(in IImsCallSession session,
85f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville            in ImsReasonInfo reasonInfo);
86f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void callSessionRemoveParticipantsRequestDelivered(in IImsCallSession session);
87f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void callSessionRemoveParticipantsRequestFailed(in IImsCallSession session,
88f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville            in ImsReasonInfo reasonInfo);
89f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
90f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
91f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Notifies the changes of the conference info. in the conference session.
92f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
93f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void callSessionConferenceStateUpdated(in IImsCallSession session,
94f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville            in ImsConferenceState state);
95f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
96f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
97f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Notifies the incoming USSD message.
98f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
99f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    void callSessionUssdMessageReceived(in IImsCallSession session,
100f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville            int mode, String ussdMessage);
101af9a696b20d6ede46215dbb479b66592afebab94Shriram Ganesh
102af9a696b20d6ede46215dbb479b66592afebab94Shriram Ganesh    /**
103af9a696b20d6ede46215dbb479b66592afebab94Shriram Ganesh     * Notifies of handover information for this call
104af9a696b20d6ede46215dbb479b66592afebab94Shriram Ganesh     */
105af9a696b20d6ede46215dbb479b66592afebab94Shriram Ganesh    void callSessionHandover(in IImsCallSession session,
106af9a696b20d6ede46215dbb479b66592afebab94Shriram Ganesh            in int srcAccessTech, in int targetAccessTech, in ImsReasonInfo reasonInfo);
107af9a696b20d6ede46215dbb479b66592afebab94Shriram Ganesh    void callSessionHandoverFailed(in IImsCallSession session,
108af9a696b20d6ede46215dbb479b66592afebab94Shriram Ganesh            in int srcAccessTech, in int targetAccessTech, in ImsReasonInfo reasonInfo);
10969f35c8e1bc5b7bd087907d7d88a5de4cf57ba42Shriram Ganesh
11069f35c8e1bc5b7bd087907d7d88a5de4cf57ba42Shriram Ganesh    /**
11169f35c8e1bc5b7bd087907d7d88a5de4cf57ba42Shriram Ganesh     * Notifies the TTY mode change by remote party.
11269f35c8e1bc5b7bd087907d7d88a5de4cf57ba42Shriram Ganesh     * @param mode one of the following:
11369f35c8e1bc5b7bd087907d7d88a5de4cf57ba42Shriram Ganesh     * - {@link com.android.internal.telephony.Phone#TTY_MODE_OFF}
11469f35c8e1bc5b7bd087907d7d88a5de4cf57ba42Shriram Ganesh     * - {@link com.android.internal.telephony.Phone#TTY_MODE_FULL}
11569f35c8e1bc5b7bd087907d7d88a5de4cf57ba42Shriram Ganesh     * - {@link com.android.internal.telephony.Phone#TTY_MODE_HCO}
11669f35c8e1bc5b7bd087907d7d88a5de4cf57ba42Shriram Ganesh     * - {@link com.android.internal.telephony.Phone#TTY_MODE_VCO}
11769f35c8e1bc5b7bd087907d7d88a5de4cf57ba42Shriram Ganesh     */
11869f35c8e1bc5b7bd087907d7d88a5de4cf57ba42Shriram Ganesh    void callSessionTtyModeReceived(in IImsCallSession session, in int mode);
1196b91ebf58c928987ead635bb1c49a16965d4c835Tyler Gunn
1206b91ebf58c928987ead635bb1c49a16965d4c835Tyler Gunn    /**
1216b91ebf58c928987ead635bb1c49a16965d4c835Tyler Gunn     * Notifies of a change to the multiparty state for this {@code ImsCallSession}.
1226b91ebf58c928987ead635bb1c49a16965d4c835Tyler Gunn     *
1236b91ebf58c928987ead635bb1c49a16965d4c835Tyler Gunn     * @param session The call session.
1246b91ebf58c928987ead635bb1c49a16965d4c835Tyler Gunn     * @param isMultiParty {@code true} if the session became multiparty, {@code false} otherwise.
1256b91ebf58c928987ead635bb1c49a16965d4c835Tyler Gunn     */
1266b91ebf58c928987ead635bb1c49a16965d4c835Tyler Gunn    void callSessionMultipartyStateChanged(in IImsCallSession session, in boolean isMultiParty);
127ddf570e8226bd21448b44b3327d4bcb2608f4d00Shriram Ganesh
128ddf570e8226bd21448b44b3327d4bcb2608f4d00Shriram Ganesh    /**
129ddf570e8226bd21448b44b3327d4bcb2608f4d00Shriram Ganesh     * Notifies the supplementary service information for the current session.
130ddf570e8226bd21448b44b3327d4bcb2608f4d00Shriram Ganesh     */
131ddf570e8226bd21448b44b3327d4bcb2608f4d00Shriram Ganesh    void callSessionSuppServiceReceived(in IImsCallSession session,
132ddf570e8226bd21448b44b3327d4bcb2608f4d00Shriram Ganesh         in ImsSuppServiceNotification suppSrvNotification);
133f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville}
134