phonesrv_plat/converged_call_engine_api/inc/mccetransferinterface.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:45:17 +0300
branchRCL_3
changeset 19 7d48bed6ce0c
parent 0 ff3b6d0fd310
child 20 987c9837762f
permissions -rw-r--r--
Revision: 201033 Kit: 201035

/*
* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:  CCE call transfer interface
*
*/


#ifndef MCCETRANSFERINTERFACE_H
#define MCCETRANSFERINTERFACE_H

//  INCLUDES
#include <e32cmn.h> // TDesC

/**
* Call transfer methods.
* MCCECallObserver is used for errors, statuses, notifications etc
*
*  @since S60 3.2
*/
class MCCETransferInterface
    {
protected:

    /** 
    * Protected destructor. Object cannot be deleted from client.
    * @since S60 3.2
    */
    virtual ~MCCETransferInterface() {};
    
public:

    /**
    * Attended transfer to given address. 
    * Actual result like status, events and errors come via MCCECallObserver class.
    * Afterwards both calls will be disconnected from CCE side.
    * @param aTransferTarget Transfer target address. Always takes active call, address is not used
    * at the moment!
    * @return KErrArgument transfer address was illegal.
    * @return KErrNotFound existing active call was not found with given address. 
    * @return KErrNotReady if this call is not on-hold state and the other in connected state
    * @return KErrNotSupported Current plug-in does not support transfer functionality.
    * @pre Two calls exist. This call is in state MCCECallObserver::ECCEStateHold and the other in 
    * MCCECallObserver::ECCEStateConnected
    * @since S60 3.2
    */
    virtual TInt AttendedTransfer( const TDesC& aTransferTarget ) = 0;

    /**
    * Unattended transfer to given address. Call is requested to be transferred to given address.
    * Afterwards call will be disconnected from CCE side. If transfer fails a new incoming call 
    * will be received to reconnect to recipient. Reconnected call is initiated from recipient end.
    * Actual result like status, events and errors come via MCCECallObserver class.
    * This is not used for CS.
    * @since S60 3.2
    * @param aTransferTarget Address of the target
    * @return KErrNone if request was started succesfully. 
    * @return KErrNotSupported Current plug-in does not support transfer functionality.
    * @return KErrNotReady if call is not in connected or on-hold state.
    * @return KErrArgument transfer address was illegal.
    * @pre Call state is MCCECallObserver::ECCPStateConnected or MCCECallObserver::ECCEStateHold
    */
    virtual TInt UnattendedTransfer( const TDesC& aTransferTarget ) = 0;

    /**
    * Accept incoming unattended transfer request from the call remote party.
    * @since Series 60 3.2
    * @param aAccept Boolean value is transfer accepted or not.
    * @return KErrNotSupported Current plug-in does not support transfer functionality.
    * @return KErrNone if request was started succesfully. 
    * @return KErrNotReady if call is not in transferring state.
    * @pre Call state is MCCECallObserver::ECCEStateTransferring
    */
    virtual TInt AcceptTransfer( const TBool aAccept ) = 0;
      
    /**
    * NOTE: Will be removed! MCCECallObserver::HandleTransfer contains remote party already.
    * CCE will map the recipient in openNewCallL to pre-existing one
    * CCECallCall::EventOccurred(ECCERemoteTransferring).
    * The new recipient of the call can be fetched via this method.
    * @since Series 60 3.2
    * @param none
    * @return New recipient for the call after transfer
    */
    virtual const TDesC& TransferTarget() const = 0;
      
    };

#endif // MCCETRANSFERINTERFACE_H