Home | History | Annotate | Download | only in internal
      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 android.telephony.ims.ImsStreamMediaProfile;
     20 import android.telephony.ims.ImsCallProfile;
     21 import android.telephony.ims.ImsReasonInfo;
     22 import android.telephony.ims.ImsConferenceState;
     23 import com.android.ims.internal.IImsCallSession;
     24 import android.telephony.ims.ImsSuppServiceNotification;
     25 
     26 /**
     27  * A listener type for receiving notification on IMS call session events.
     28  * When an event is generated for an {@link IImsCallSession}, the application is notified
     29  * by having one of the methods called on the {@link IImsCallSessionListener}.
     30  * {@hide}
     31  */
     32 oneway interface IImsCallSessionListener {
     33     /**
     34      * Notifies the result of the basic session operation (setup / terminate).
     35      */
     36     void callSessionProgressing(in IImsCallSession session, in ImsStreamMediaProfile profile);
     37     void callSessionStarted(in IImsCallSession session, in ImsCallProfile profile);
     38     void callSessionStartFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo);
     39     void callSessionTerminated(in IImsCallSession session, in ImsReasonInfo reasonInfo);
     40 
     41     /**
     42      * Notifies the result of the call hold/resume operation.
     43      */
     44     void callSessionHeld(in IImsCallSession session, in ImsCallProfile profile);
     45     void callSessionHoldFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo);
     46     void callSessionHoldReceived(in IImsCallSession session, in ImsCallProfile profile);
     47     void callSessionResumed(in IImsCallSession session, in ImsCallProfile profile);
     48     void callSessionResumeFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo);
     49     void callSessionResumeReceived(in IImsCallSession session, in ImsCallProfile profile);
     50 
     51     /**
     52      * Notifies the result of call merge operation.
     53      */
     54     void callSessionMergeStarted(in IImsCallSession session,
     55             in IImsCallSession newSession, in ImsCallProfile profile);
     56     void callSessionMergeComplete(in IImsCallSession session);
     57     void callSessionMergeFailed(in IImsCallSession session,
     58             in ImsReasonInfo reasonInfo);
     59 
     60     /**
     61      * Notifies the result of call upgrade / downgrade or any other call updates.
     62      */
     63     void callSessionUpdated(in IImsCallSession session,
     64             in ImsCallProfile profile);
     65     void callSessionUpdateFailed(in IImsCallSession session,
     66             in ImsReasonInfo reasonInfo);
     67     void callSessionUpdateReceived(in IImsCallSession session,
     68             in ImsCallProfile profile);
     69 
     70     /**
     71      * Notifies the result of conference extension.
     72      */
     73     void callSessionConferenceExtended(in IImsCallSession session,
     74             in IImsCallSession newSession, in ImsCallProfile profile);
     75     void callSessionConferenceExtendFailed(in IImsCallSession session,
     76             in ImsReasonInfo reasonInfo);
     77     void callSessionConferenceExtendReceived(in IImsCallSession session,
     78             in IImsCallSession newSession, in ImsCallProfile profile);
     79 
     80     /**
     81      * Notifies the result of the participant invitation / removal to/from the conference session.
     82      */
     83     void callSessionInviteParticipantsRequestDelivered(in IImsCallSession session);
     84     void callSessionInviteParticipantsRequestFailed(in IImsCallSession session,
     85             in ImsReasonInfo reasonInfo);
     86     void callSessionRemoveParticipantsRequestDelivered(in IImsCallSession session);
     87     void callSessionRemoveParticipantsRequestFailed(in IImsCallSession session,
     88             in ImsReasonInfo reasonInfo);
     89 
     90     /**
     91      * Notifies the changes of the conference info. in the conference session.
     92      */
     93     void callSessionConferenceStateUpdated(in IImsCallSession session,
     94             in ImsConferenceState state);
     95 
     96     /**
     97      * Notifies the incoming USSD message.
     98      */
     99     void callSessionUssdMessageReceived(in IImsCallSession session,
    100             int mode, String ussdMessage);
    101 
    102     /**
    103      * Notifies of handover information for this call
    104      */
    105     void callSessionHandover(in IImsCallSession session,
    106             in int srcAccessTech, in int targetAccessTech, in ImsReasonInfo reasonInfo);
    107     void callSessionHandoverFailed(in IImsCallSession session,
    108             in int srcAccessTech, in int targetAccessTech, in ImsReasonInfo reasonInfo);
    109     void callSessionMayHandover(in IImsCallSession session,
    110             in int srcAccessTech, in int targetAccessTech);
    111 
    112     /**
    113      * Notifies the TTY mode change by remote party.
    114      * @param mode one of the following:
    115      * - {@link com.android.internal.telephony.Phone#TTY_MODE_OFF}
    116      * - {@link com.android.internal.telephony.Phone#TTY_MODE_FULL}
    117      * - {@link com.android.internal.telephony.Phone#TTY_MODE_HCO}
    118      * - {@link com.android.internal.telephony.Phone#TTY_MODE_VCO}
    119      */
    120     void callSessionTtyModeReceived(in IImsCallSession session, in int mode);
    121 
    122     /**
    123      * Notifies of a change to the multiparty state for this {@code ImsCallSession}.
    124      *
    125      * @param session The call session.
    126      * @param isMultiParty {@code true} if the session became multiparty, {@code false} otherwise.
    127      */
    128     void callSessionMultipartyStateChanged(in IImsCallSession session, in boolean isMultiParty);
    129 
    130     /**
    131      * Notifies the supplementary service information for the current session.
    132      */
    133     void callSessionSuppServiceReceived(in IImsCallSession session,
    134          in ImsSuppServiceNotification suppSrvNotification);
    135 
    136     /**
    137      * Device received RTT modify request from Remote UE
    138      * @param session ImsCallProfile with updated attribute
    139      */
    140     void callSessionRttModifyRequestReceived(in IImsCallSession session,
    141             in ImsCallProfile callProfile);
    142 
    143     /* Device issued RTT modify request and inturn received response
    144      * from Remote UE
    145      * @param status Will be one of the following values from:
    146      * - {@link Connection.RttModifyStatus}
    147      */
    148     void callSessionRttModifyResponseReceived(in int status);
    149 
    150     /*
    151      * While in call, device received RTT message from Remote UE
    152      * @param rttMessage Received RTT message
    153      */
    154     void callSessionRttMessageReceived(in String rttMessage);
    155 }
    156