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