1 /*
2  * Copyright (c) 2013 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.ims.internal;
18 
19 import com.android.ims.ImsStreamMediaProfile;
20 import com.android.ims.ImsCallProfile;
21 import com.android.ims.ImsReasonInfo;
22 import com.android.ims.ImsConferenceState;
23 import com.android.ims.internal.IImsCallSession;
24 
25 /**
26  * A listener type for receiving notification on IMS call session events.
27  * When an event is generated for an {@link IImsCallSession}, the application is notified
28  * by having one of the methods called on the {@link IImsCallSessionListener}.
29  * {@hide}
30  */
31 interface IImsCallSessionListener {
32     /**
33      * Notifies the result of the basic session operation (setup / terminate).
34      */
callSessionProgressing(in IImsCallSession session, in ImsStreamMediaProfile profile)35     void callSessionProgressing(in IImsCallSession session, in ImsStreamMediaProfile profile);
callSessionStarted(in IImsCallSession session, in ImsCallProfile profile)36     void callSessionStarted(in IImsCallSession session, in ImsCallProfile profile);
callSessionStartFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo)37     void callSessionStartFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo);
callSessionTerminated(in IImsCallSession session, in ImsReasonInfo reasonInfo)38     void callSessionTerminated(in IImsCallSession session, in ImsReasonInfo reasonInfo);
39 
40     /**
41      * Notifies the result of the call hold/resume operation.
42      */
callSessionHeld(in IImsCallSession session, in ImsCallProfile profile)43     void callSessionHeld(in IImsCallSession session, in ImsCallProfile profile);
callSessionHoldFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo)44     void callSessionHoldFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo);
callSessionHoldReceived(in IImsCallSession session, in ImsCallProfile profile)45     void callSessionHoldReceived(in IImsCallSession session, in ImsCallProfile profile);
callSessionResumed(in IImsCallSession session, in ImsCallProfile profile)46     void callSessionResumed(in IImsCallSession session, in ImsCallProfile profile);
callSessionResumeFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo)47     void callSessionResumeFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo);
callSessionResumeReceived(in IImsCallSession session, in ImsCallProfile profile)48     void callSessionResumeReceived(in IImsCallSession session, in ImsCallProfile profile);
49 
50     /**
51      * Notifies the result of call merge operation.
52      */
callSessionMergeStarted(in IImsCallSession session, in IImsCallSession newSession, in ImsCallProfile profile)53     void callSessionMergeStarted(in IImsCallSession session,
54             in IImsCallSession newSession, in ImsCallProfile profile);
callSessionMergeComplete(in IImsCallSession session)55     void callSessionMergeComplete(in IImsCallSession session);
callSessionMergeFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo)56     void callSessionMergeFailed(in IImsCallSession session,
57             in ImsReasonInfo reasonInfo);
58 
59     /**
60      * Notifies the result of call upgrade / downgrade or any other call updates.
61      */
callSessionUpdated(in IImsCallSession session, in ImsCallProfile profile)62     void callSessionUpdated(in IImsCallSession session,
63             in ImsCallProfile profile);
callSessionUpdateFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo)64     void callSessionUpdateFailed(in IImsCallSession session,
65             in ImsReasonInfo reasonInfo);
callSessionUpdateReceived(in IImsCallSession session, in ImsCallProfile profile)66     void callSessionUpdateReceived(in IImsCallSession session,
67             in ImsCallProfile profile);
68 
69     /**
70      * Notifies the result of conference extension.
71      */
callSessionConferenceExtended(in IImsCallSession session, in IImsCallSession newSession, in ImsCallProfile profile)72     void callSessionConferenceExtended(in IImsCallSession session,
73             in IImsCallSession newSession, in ImsCallProfile profile);
callSessionConferenceExtendFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo)74     void callSessionConferenceExtendFailed(in IImsCallSession session,
75             in ImsReasonInfo reasonInfo);
callSessionConferenceExtendReceived(in IImsCallSession session, in IImsCallSession newSession, in ImsCallProfile profile)76     void callSessionConferenceExtendReceived(in IImsCallSession session,
77             in IImsCallSession newSession, in ImsCallProfile profile);
78 
79     /**
80      * Notifies the result of the participant invitation / removal to/from the conference session.
81      */
callSessionInviteParticipantsRequestDelivered(in IImsCallSession session)82     void callSessionInviteParticipantsRequestDelivered(in IImsCallSession session);
callSessionInviteParticipantsRequestFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo)83     void callSessionInviteParticipantsRequestFailed(in IImsCallSession session,
84             in ImsReasonInfo reasonInfo);
callSessionRemoveParticipantsRequestDelivered(in IImsCallSession session)85     void callSessionRemoveParticipantsRequestDelivered(in IImsCallSession session);
callSessionRemoveParticipantsRequestFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo)86     void callSessionRemoveParticipantsRequestFailed(in IImsCallSession session,
87             in ImsReasonInfo reasonInfo);
88 
89     /**
90      * Notifies the changes of the conference info. in the conference session.
91      */
callSessionConferenceStateUpdated(in IImsCallSession session, in ImsConferenceState state)92     void callSessionConferenceStateUpdated(in IImsCallSession session,
93             in ImsConferenceState state);
94 
95     /**
96      * Notifies the incoming USSD message.
97      */
callSessionUssdMessageReceived(in IImsCallSession session, int mode, String ussdMessage)98     void callSessionUssdMessageReceived(in IImsCallSession session,
99             int mode, String ussdMessage);
100 
101     /**
102      * Notifies of handover information for this call
103      */
callSessionHandover(in IImsCallSession session, in int srcAccessTech, in int targetAccessTech, in ImsReasonInfo reasonInfo)104     void callSessionHandover(in IImsCallSession session,
105             in int srcAccessTech, in int targetAccessTech, in ImsReasonInfo reasonInfo);
callSessionHandoverFailed(in IImsCallSession session, in int srcAccessTech, in int targetAccessTech, in ImsReasonInfo reasonInfo)106     void callSessionHandoverFailed(in IImsCallSession session,
107             in int srcAccessTech, in int targetAccessTech, in ImsReasonInfo reasonInfo);
108 
109     /**
110      * Notifies the TTY mode change by remote party.
111      * @param mode one of the following:
112      * - {@link com.android.internal.telephony.Phone#TTY_MODE_OFF}
113      * - {@link com.android.internal.telephony.Phone#TTY_MODE_FULL}
114      * - {@link com.android.internal.telephony.Phone#TTY_MODE_HCO}
115      * - {@link com.android.internal.telephony.Phone#TTY_MODE_VCO}
116      */
callSessionTtyModeReceived(in IImsCallSession session, in int mode)117     void callSessionTtyModeReceived(in IImsCallSession session, in int mode);
118 
119     /**
120      * Notifies of a change to the multiparty state for this {@code ImsCallSession}.
121      *
122      * @param session The call session.
123      * @param isMultiParty {@code true} if the session became multiparty, {@code false} otherwise.
124      */
callSessionMultipartyStateChanged(in IImsCallSession session, in boolean isMultiParty)125     void callSessionMultipartyStateChanged(in IImsCallSession session, in boolean isMultiParty);
126 }
127