diff -r 000000000000 -r 3553901f7fa8 telephonyserverplugins/common_tsy/commontsy/inc/mmgsmwcdma/cmmconferencecallgsmwcdmaext.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/telephonyserverplugins/common_tsy/commontsy/inc/mmgsmwcdma/cmmconferencecallgsmwcdmaext.h Tue Feb 02 01:41:59 2010 +0200 @@ -0,0 +1,386 @@ +/* +* Copyright (c) 2006-2009 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: +* +*/ + + + +#ifndef CMMCONFERENCECALLGSMWCDMAEXT_H +#define CMMCONFERENCECALLGSMWCDMAEXT_H + +// INCLUDES +#include "cmmconferencecallextinterface.h" + +// CONSTANTS +const TInt KMaxCallsInConference = 5; + +// FORWARD DECLARATIONS +class CMmConferenceCallTsy; + +// CLASS DECLARATION + +/** +* Provides a Gsm/Wcdma system specific extension of +* Conference Call Tsy. +* +*/ +NONSHARABLE_CLASS( CMmConferenceCallGsmWcdmaExt ) + : public CMmConferenceCallExtInterface + { + public: // Constructors and destructor + + /** + * Default destructor + * + * + */ + ~CMmConferenceCallGsmWcdmaExt(); + + /** + * Creates new GSM specific conference call object + * + * + * @param pointer to the conference call object + * @return reated object + */ + static CMmConferenceCallGsmWcdmaExt* NewL( + CMmConferenceCallTsy* aMmConferenceCallTsy ); + + /** + * This method allows clients to create the initial conference call + * + * + * @param CC status + * @param call list + * @return result of the request + */ + TInt CreateConferenceL( + RMobileConferenceCall::TMobileConferenceStatus aStatus ); + + /** + * Allows a client to switch a conference call between "Active" and + * "Hold" states + * + * + * @param CC status + * @param call list + * @return TInt: result of the request + */ + TInt SwapL( + RMobileConferenceCall::TMobileConferenceStatus aStatus, + CMmCallList* aCallList ); + + /** + * This method adds the single voice call specified by the aCallName + * parameter to an existing conference call + * + * + * @param name of the call to be added to CC + * @param CC status + * @param call list + * @return result of the request + */ + TInt AddCallL( + const TName* aCallName, + RMobileConferenceCall::TMobileConferenceStatus aStatus, + CMmCallList* aCallList ); + + /** + * Directed to extension to inform extension that a status of a single + * call has changed + * + * + * @param new status of + * a single call + * @param TaCallId: call ID of that call + */ + TBool CallStatusChanged( + RMobileCall::TMobileCallStatus aNewStatus, + TInt aCallId ); + + /** + * Checks if is possible to create a conference call + * + * + * @param CC status + * @param call list + */ + void CheckConferenceCapability( + RMobileConferenceCall::TMobileConferenceStatus aStatus, + CMmCallList* aCallList ); + + /** + * This method terminates the whole conference call + * + * + * @param CC status + * @param call list + * @return result of the request + */ + TInt HangUpL( + RMobileConferenceCall::TMobileConferenceStatus aStatus ); + + /** + * This method returns a current snapshot of the call information + * associated with the call specified by the aIndex parameter + * + * + * @param index of the call + * @param pointer where to copy the call information + * @param call list + * @param CC status + * @return result of the request + */ + TInt GetMobileCallInfo( + TInt* aIndex, + TDes8* aCallInfo, + CMmCallList* aCallList, + RMobileConferenceCall::TMobileConferenceStatus aConferenceStatus ); + + /** + * Checks if given call can be splitted from the conference call + * + * + * @param call ID of the call to be splitted from CC + * @param CC status + * @param call list + * @return TInt: result of the request + */ + TInt IsGoOneToOneSupported( + TInt aCallId, + RMobileConferenceCall::TMobileConferenceStatus aStatus, + CMmCallList* aCallList ); + + /** + * Returns new status for Conference call + * + * + * @param new CC status will be returned using this pointer. + * @return result of the request + */ + TInt GetNewStatus( + RMobileConferenceCall::TMobileConferenceStatus* aNewStatus ); + + /** + * Is used for resetting internal attributes + * + * + */ + void ResetAttributes(); + + /** + * Informs the Gsm extension if there is conference call + * operation initiated bypassing the ETel (ghost operetion). + * + * + * @param aDataPackage: information about performed operation + */ + void CompleteNotifyConferenceEvent( CMmDataPackage* aDataPackage ); + + /** + * Informs the Gsm extension if Go-One-To-One handling + * has started for any call. + * + * + * @param aVal True if handling has started + * @param aCallId Id of the call for which handling has started + */ + void SetGoOneToOneHandlingStarted(TBool aVal, TInt aCallId); + + private: // Constructors and destructor + + /** + * Default Constructor + * + * + */ + CMmConferenceCallGsmWcdmaExt(); + + /** + * Class attributes are created in ConstructL + */ + void ConstructL(); + + /** + * Checks if Swap is going on and when Swap is ready + * + * + * @param CC status + * @param call list + * @param new status of a single call + * @param call ID of that call + * @return ETrue if conference call status has changed + */ + TBool HandleSwap( + RMobileConferenceCall::TMobileConferenceStatus aStatus, + CMmCallList& aCallList ); + + /** + * Checks if AddCall is going on and when AddCall is ready + * + * + * @param CC status + * @param call list + * @param new status of a single call + * @return ETrue if conference call status has changed + */ + TBool HandleAddCall( + RMobileConferenceCall::TMobileConferenceStatus aStatus, + CMmCallList& aCallList, + RMobileCall::TMobileCallStatus aNewStatus ); + + /** + * Checks if CreateConference is going on and when CreateConference is + * ready + * + * + * @param CC status + * @param call list + * @param new status of a single call + * @param call ID of that call + * @return ETrue if conference call status has changed + */ + TBool HandleCreateConference( + CMmCallList& aCallList, + TInt aCallId ); + + /** + * Checks if Conference call is still active or should it go to idle + * state + * + * + * @param CC status + * @param call list + * @param new status of a single call + * @param call ID of that call + * @return ETrue if conference call status has changed + */ + TBool HandleCallRelease( + RMobileConferenceCall::TMobileConferenceStatus aStatus, + CMmCallList& aCallList, + RMobileCall::TMobileCallStatus aNewStatus, + TInt aCallId ); + + /** + * Handles situation where client has asked Hold/Resume from Call + * object + * + * + * @param CC status + * @param new status of a single call + * @return ETrue if conference call status has changed + */ + TBool HandleSingleCallControl( + RMobileConferenceCall::TMobileConferenceStatus aStatus, + RMobileCall::TMobileCallStatus aNewStatus ); + + /** + * Handles GoOneToOne + * + * + * @param CC status + * @param call list + * @param new status of a single call + * @param call ID of that call + * @return ETrue if conference call status has changed + */ + TBool HandleGoOneToOne( + CMmCallList& aCallList, + TInt aCallId ); + + /** + * Updates call capabilities of all calls after a Join operation has + * been executed (CreateConference or AddCall). + * + * + * @param call list + */ + void UpdateCapsAfterJoin( CMmCallList& aCallList ) const; + + /** + * Updates call capabilities of all calls after a call participating the + * conference call has gone to idle state. + * + * + * @param call list + */ + void UpdateCapsAfterCallRelease( CMmCallList& aCallList ) const; + + /** + * Updates call capabilities of all calls after a Swap operation + * has been executed. + * + * + * @param conf. status + * @param call list + */ + void UpdateCapsAfterSwap( + RMobileConferenceCall::TMobileConferenceStatus aStatus, + CMmCallList& aCallList ) const; + + private: + + /** + * Pointer to the mode independent Conference call object + * Not own. + */ + CMmConferenceCallTsy* iMmConferenceCallTsy; + + /** + * Count, how many calls are to be swapped + */ + TInt iNumberOfCallsToBeSwapped; + + /** + * Counter telling when Create conference is ready to be completed + */ + TInt iCreateConferenceCounter; + + /** + * New conference call status + */ + RMobileConferenceCall::TMobileConferenceStatus iNewStatus; + + /** + * Flag telling if this is not the first hold/active status indication + * caused by client asking hold/resume for a single call. + */ + TBool iCallControlStarted; + + /** + * Counter telling how many calls should still change their state before + * Conference call changes its' state. + */ + TInt iCallsToBeControlled; + + /** + * Flag telling if GoOneToOne handling is going on. + */ + TBool iGoOneToOneHandlingStarted; + + /** + * Go-one-to-one call id + */ + TInt iGoOneToOneCallId; + + /** + * Operation initiated bypassing the ETel (ghost operetion). + */ + TInt iCurrentGhostOperation; + + }; + +#endif // CMMCONFERENCECALLGSMWCDMAEXT_H +