diff -r 65a3ef1d5bd0 -r f742655b05bf sipvoipprovider/inc/svpcontroller.h --- a/sipvoipprovider/inc/svpcontroller.h Thu Aug 19 09:45:22 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1016 +0,0 @@ -/* -* Copyright (c) 2006-2008 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: Handles all common logic for SVP and handles sessions. -* -*/ - -#ifndef SVPCONTROLLER_H -#define SVPCONTROLLER_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include - -#include "svpsessionobserver.h" -#include "svpemergencysession.h" -#include "svpconsts.h" -#include "svputdefs.h" - -#include "svpsupplementaryservices.h" -#include "cipappphoneutils.h" // KSVPMaxTerminalTypeLength - -// FORWARD DECLARATIONS -class CSVPRtpObserver; -class CWlanMgmtClient; - -/** - * SVP controller - * - * Handles all common logic for SVP and handles sessions. - * - * @lib svp.dll - * @since S60 3.2 - */ -class CSVPController : public CConvergedCallProvider, - public MSVPSessionObserver, - public MMceSessionObserver, - public MMceEventObserver, - public MMceReferObserver, - public MMceInSessionObserver, - public MMceInReferObserver, - public MMceStreamObserver, - public MMceDtmfObserver, - public MCCPDTMFProvider, - public MSIPObserver, - public MSIPProfileRegistryObserver - { - -public: // new functions - - /** - * Two-phased constructor. - */ - static CSVPController* NewL(); - - /** - * Destructor. - */ - virtual ~CSVPController(); - -public: // functions from base classes - - /** - * From SVPSessionObserver. Removes session from session array - * @since S60 3.2 - * @param aSession Session to be removed from session array - */ - void RemoveFromArray( CSVPSessionBase &aSession ); - - /** - * From SVPSessionObserver. Handles session cleanup - * when Mt session creation fails in early stages - * @since S60 3.2 - * @param aSession Session to be removed - */ - void TerminateSession( CMceInSession &aSession ); - - /** - * From MMceSessionObserver. The state of the session has changed. - * @since Series 60 3.2 - * @param aSession, the session that has changed. - * @param aContainer, if present, holds details of - * transaction causing state change. - */ - void SessionStateChanged( - CMceSession& aSession, - TMceTransactionDataContainer* aContainer ); - - /** - * From MMceSessionObserver.The state of the connection used by the session has changed. - * @since Series 60 3.2 - * @param aSession, the session that has changed. - * @param aActive, ETrue if connection active, EFalse if connection inactive. - */ - void SessionConnectionStateChanged( - CMceSession& aSession, - TBool aActive ); - - /** - * From MMceSessionObserver.An error has occurred concerning a specific session. - * Note, that each error causes the session state to be ETerminated. - * @since Series 60 3.2 - * @param aSession, The session raising the error. - * @param aError, Error code - */ - void Failed( CMceSession& aSession, TInt aError ); - - /** - * From MMceSessionObserver.An session update has been failed concerning a specific session. - * Note, that each error causes the session state to be ETerminated. - * @since Series 60 3.2 - * @param aSession, The session raising the error. - * @param aContainer, if present, holds details of - * transaction causing update. - */ - void UpdateFailed( - CMceSession& aSession, - TMceTransactionDataContainer* aContainer ); - - /** - * From MMceEventObserver. The state of the event has changed. - * @since Series 60 3.2 - * @param aEvent, the event that has changed. - * @param aContainer, if present, holds details of - * transaction causing state change. - */ - void EventStateChanged( - CMceEvent& aEvent, - TMceTransactionDataContainer* aContainer ); - - /** - * From MMceEventObserver. The state of the event has changed. - * @since Series 60 3.2 - * @param aEvent, event received notification. - * @param aContainer, if present, holds details of - * transaction causing state change. - */ - void NotifyReceived( - CMceEvent& aEvent, - TMceTransactionDataContainer* aContainer ); - - - /** - * From MMceEventObserver. The state of the event used by the refer has changed. - * @since Series 60 3.2 - * @param aEvent, the event that has changed. - * @param aActive, ETrue if connection active, EFalse if connection inactive. - */ - void EventConnectionStateChanged( - CMceEvent& aEvent, - TBool aActive ); - - /** - * From MMceEventObserver. An error has occurred concerning a specific SIP event. - * Note, that each error causes the event state to be ETerminated. - * @param aEvent, The event raising the error. - * @param aError, Error code - */ - void Failed(CMceEvent& aEvent, TInt aError ); - - /** - * From MMceInSessionObserver. Incoming session invitation. - * The CMceInSession is given to the - * application as a callback. - * @since Series 60 3.2 - * @param aSession, pointer to the incoming session. Ownership is - * transferred. - * @param aContainer, if present, holds details of - * transaction causing state change. - */ - void IncomingSession( - CMceInSession* aSession, - TMceTransactionDataContainer* aContainer ); - - - /** - * From MMceInSessionObserver.Incoming session update. - * The new updated CMceInSession is given to the - * application as a callback. - * @since Series 60 3.2 - * @param aOrigSession, the original session to be updated. - * This instance cannot be used anymore, - * all actions done using aUpdatedSession instance. - * @param aUpdatedSession, pointer to the new updated session. Ownership is - * transferred. - * @param aContainer, if present, holds details of - * update transaction. - */ - void IncomingUpdate( - CMceSession& aOrigSession, - CMceInSession* aUpdatedSession, - TMceTransactionDataContainer* aContainer ); - - /** - * From MMceInReferObserver. New incoming refer received. - * @since Series 60 3.2 - * @param aRefer, the new inbound refer. Ownership is - * transferred. - * @param aReferTo SIP specific Refer-to header - * @param aContainer, if present, holds details of - * transaction causing state change. - */ - void IncomingRefer( - CMceInRefer* aRefer, - const TDesC8& aReferTo, - TMceTransactionDataContainer* aContainer ); - - /** - * From MMceStreamObserver. The state of the stream has changed. - * @since Series 60 3.2 - * @param aStream, the stream that has changed. - */ - void StreamStateChanged( - CMceMediaStream& aStream); - - /** - * From MMceStreamObserver. The state of the sink has changed. - * @since Series 60 3.2 - * @param aStream, the stream that uses the sink. - * @param aSink, the sink that has changed. - */ - void StreamStateChanged( - CMceMediaStream& aStream, - CMceMediaSink& aSink ); - - /** - * From MMceStreamObserver. The state of the source has changed. - * @since Series 60 3.2 - * @param aStream, the stream that uses the source. - * @param aSource, the source that has changed. - */ - void StreamStateChanged( - CMceMediaStream& aStream, - CMceMediaSource& aSource ); - - - /** - * From MMceReferObserver. state of the refer has changed. - * @param aRefer, the refer that has changed. - * @param aContainer, if present, holds details of - * transaction causing state change. - */ - void ReferStateChanged( - CMceRefer& aRefer, - TMceTransactionDataContainer* aContainer ); - - /** - * From MMceReferObserver. The state of the connection used by the refer has changed. - * @param aRefer, the refer that has changed. - * @param aActive, ETrue if connection active, EFalse if connection inactive. - */ - void ReferConnectionStateChanged( - CMceRefer& aRefer, - TBool aActive ); - - /** - * From MMceReferObserver. An error has occurred concerning a specific SIP refer. - * Note, that each error causes the event state to be ETerminated. - * @param aRefer, The refer raising the error. - * @param aError, Error code - */ - void Failed( CMceRefer& aRefer, TInt aError ); - - -// from MConvergedCallProvider - /** - * Initializes plug-in. All required parameters must be passed - * with this function in order to use services. - * Simplifies pluging construct removing need to pass parameters to ECom interface - * @since Series60 3.2 - * @param aMonitor CCP observer - * @param aSsObserver SS observer - */ - void InitializeL( const TUint32 aServiceId, - const MCCPObserver& aObserver, - const MCCPSsObserver& aSsObserver ); - - /** - * Initializes plug-in. All required parameters must be passed - * with this function in order to use services. - * Simplifies pluging construct removing need to pass parameters to ECom interface - * @since Series60 3.2 - * @param aMonitor CCP observer - * @param aSsObserver SS observer - */ - void InitializeL( const MCCPObserver& aMonitor, - const MCCPSsObserver& aSsObserver ); - - /** - * Creates a new session and checks secure status from profile. Leaves with - * ECCPErrorNetworkBusy if not enough WLAN bandwith. - * @since Series60 3.2 - * @param aParameters Call parameters, SVP uses Service ID parameter - * @param aRecipient Recipients address/number - * @param aObserver Observer - * @return MCCPCall - */ - MCCPCall* NewCallL( const CCCPCallParameters& aParameters, - const TDesC& aRecipient, - const MCCPCallObserver& aObserver ); - - /** - * Returns Uid of plug-in which is on use. - * @since Series60 3.2 - * @return Uid of plug-in - */ - const TUid& Uid() const; - - /** - * Creates a new Emergency call and add user-agent header. - * @since Series60 3.2 - * @param aServiceId Service ID, obsolete! - * @param aAddress Emergency number - * @param aObserver Observer - * @return MCCPEmergencyCall - */ - MCCPEmergencyCall* NewEmergencyCallL( const TUint32 aServiceId, - const TDesC& aAddress, - const MCCPCallObserver& aObserver ); - - /** - * Creates a new conference session. - * @since Series60 3.2 - * @param aObserver Observer - * @return MCCPConferenceCall - */ - MCCPConferenceCall* NewConferenceL( const TUint32 aServiceId, - const MCCPConferenceCallObserver& aObserver ); - - /** - * Releases call - * @since Series60 3.2 - * @param aCall Call to be removed - * @return Symbian error code - */ - TInt ReleaseCall( MCCPCall& aCall ); - - /** - * Releases emergency call - * @since Series60 3.2 - * @param aCall Call to be removed - * @return Symbian error code - */ - TInt ReleaseEmergencyCall( MCCPEmergencyCall& aCall ); - - /** - * Releases conference call - * @since Series60 3.2 - * @param aCall Call to be removed - * @return Symbian error code - */ - TInt ReleaseConferenceCall( MCCPConferenceCall& aCall ); - - /** - * Notifies Plug-In about transfer status. - * @since Series 60 3.2 - * @param aAccept Boolean value is transfer accepted or not. - * @return None - */ - void AcceptTransfer( TBool aAccept ); - - - /** - * Notification from UI to Multiple choices query - * multiple choices response - * @since Series 60 3.2 - * @param aIndex index of address where the call is to be forwarded - * @return KErrNone if succesfull - */ - TInt ForwardCallToAddressL( const TInt aIndex ); - - /** - * Get Plug-In capabilities - * @since Series 60 3.2 - * @return TUint32 On return contains the capability flags of plug-In - */ - TUint32 Caps() const; - - /** - * Get DTMF provider - * @since Series 60 3.2 - * @param aObserver CCP Dtmf observer for informing events - * @return Pointer to MCCPDTMFProvider if succesfull, NULL if not available - */ - MCCPDTMFProvider* DTMFProviderL( const MCCPDTMFObserver& aObserver ); - - /** - * Get extension provider - * @since Series 60 3.2 - * @param aObserver observer for extension(custom) events - * @return Pointer to MCCPExtensionProvider if succesfull, NULL if not available - */ - MCCPExtensionProvider* ExtensionProviderL( const MCCPExtensionObserver& aObserver ); - - /** - * Add an observer for DTMF related events. - * Plug-in dependent feature if duplicates or more than one observers - * are allowed or not. Currently CCE will set only one observer. - * @since S60 v3.2 - * @param aObserver Observer - * @leave system error if observer adding fails - */ - void AddObserverL( const MCCPDTMFObserver& aObserver ); - - /** - * Remove an observer. - * @since S60 v3.2 - * @param aObserver Observer - * @return KErrNone if removed succesfully. KErrNotFound if observer was not found. - * Any other system error depending on the error. - */ - TInt RemoveObserver( const MCCPDTMFObserver& aObserver ); - - -// from MCCPDTMFProvider - - /** - * Cancels asynchronous DTMF string sending. - * @return KErrNone if successful, otherwise system wide error code - * @since Series 60 3.2 - */ - TInt CancelDtmfStringSending(); - - /** - * Starts the transmission of a single DTMF tone across a - * connected and active call. - * @since S60 3.2 - * @param aTone Tone to be played. - * @return KErrNone if successful, otherwise another system wide error code - */ - TInt StartDtmfTone( const TChar aTone ); - - /** - * Stops playing current DTMF tone. - * @since S60 3.2 - * @param none - * @return KErrNone if successfull, otherwise another system wide error code - */ - TInt StopDtmfTone(); - - /** - * Plays DTMF string. - * @since S60 3.2 - * @param aString String to be played. - * @return KErrNone if successful, otherwise another system wide error code - * KErrArgument if the specified string contains illegal DTMF characters - */ - TInt SendDtmfToneString( const TDesC& aString ); - - /** - * Continue or cancel sending DTMF string which was stopped with 'w'-character - * in string. - * @since S60 3.2 - * @param aContinue ETrue if sending of the DTMF string should continue, - * EFalse if the rest of the DTMF string is to be discarded. - * @return KErrNone if succesfull, otherwise another system wide error code - */ - TInt ContinueDtmfStringSending( const TBool aContinue ); - - -// from Mce DTMF observer -public: - - /** - * Incoming DTMF tone received. - * @param aSession Session that tone was received. - * @param aStream Stream that tone was received. - * @param aTone Received tone. - */ - void DtmfToneReceived( CMceSession& aSession, - CMceAudioStream& aStream, - const TChar& aTone ); - - /** - * DTMF event received. - * @param aSession Session that event was received. - * @param aStream Stream that event was received. - * @param aSource Source that event was received. - * @param aEvent Received event. - */ - void DtmfEventReceived( CMceSession& aSession, - CMceAudioStream& aStream, - CMceMediaSource& aSource, - TMceDtmfEvent aEvent ); - - /** - * DTMF error occured. If error occurs, DTMFs becomes - * unavailable for that source. - * @param aSession Session that event was received. - * @param aStream Stream that event was received. - * @param aStream Stream that event was received. - * @param aError Error code. - */ - void DtmfErrorOccured( CMceSession& aSession, - CMceAudioStream& aStream, - CMceMediaSource& aSource, - TInt aError ); - - -public: // methods from MSIPObserver - - /** - * From MSIPObserver A SIP request has been received from the network. - * @since Series 60 3.0 - * @param aIapId The IapId from which the SIP request was received. - * @param aTransaction Contains local address, remote address of a sip - * message, as well as optional SIP message method, headers and - * body. The ownership is transferred. - */ - void IncomingRequest( TUint32 aIapId, - CSIPServerTransaction* aTransaction ); - - /** - * From MSIPObserver The received SIP request time-outed and it has been - * destroyed. - * @since Series 60 3.0 - * @param aSIPServerTransaction The time-outed transaction. Ownership is - * not transferred. - */ - void TimedOut( CSIPServerTransaction& aSIPServerTransaction ); - - -public: // methods from MSIPProfileRegistryObserver - - /** - * From MSIPProfileRegistryObserver An asynchronous error has occurred - * related to SIP profile Event is send to those observers, who have the - * corresponding profile instantiated. - * @since Series 60 3.0 - * @param aSIPProfileId SIP Profile ID. - * @param aError Error code. - */ - void ProfileRegistryErrorOccurred( TUint32 aSIPProfileId, - TInt aError ); - - /** - * From MSIPProfileRegistryObserver An event related to SIP Profile has - * occurred. - * @since Series 60 3.0 - * @param aProfileId SIP Profile ID. - * @param aEvent An occurred event. - */ - void ProfileRegistryEventOccurred( TUint32 aProfileId, - TEvent aEvent ); - - -private: // new methods - - /** - * Checks min session expires offered - * Responds with 422 if smaller than provisioned - * @Since Series 60 3.2 - * @param aSession Incoming session - * @param aHeaders Incoming session SIP headers - * @param aMinSE Minimum session expires provisioned to phone - */ - void CheckMinSessionExpiresL( CMceInSession& aSession, - CDesC8Array& aHeaders, - TInt aMinSE ); - - /** - * Handles cases where re-INVITE is received without SDP - * @Since Series 60 3.2 - * @param aSessionIndex Session that is under update - * @param aUpdatedSession Updated session received from Mce - */ - void IncomingUpdateNoSdpHandlerL( TInt aSessionIndex, - CMceInSession* aUpdatedSession ); - - - /** - * Handles cases where re-INVITE is received with SDP - * @Since Series 60 3.2 - * @param aSessionIndex Session that is under update - * @param aOrigSession Session to be updated - * @param aUpdatedSession Updated session received from Mce - */ - void IncomingNormalUpdate( TInt aSessionIndex, - CMceSession& aOrigSession, - CMceInSession* aUpdatedSession ); - - /** - * Fetches expires time from incoming INVITE - * @Since Series 60 3.2 - * @param aExpiresTime time in expires header - */ - void FetchExpiresTime( TUint32& aExpiresTime, CDesC8Array& aHeaders ) const; - - /** - * Checks if state change call back reported error in session creation - * Used only for secure session - * @since S60 3.2 - * @param aStatusCode Status code contains the response or system wide error code - * @return TBool ETrue if faield, EFalse otherwise - */ - TBool CheckIfSecureFailed( TInt aStatusCode ) const; - - /** - * Method is called when normal Mo session needs to created - * after secure session creation has failed - * @since S60 3.2 - * @param aSessionIndex Session which is to be created again non-securely - */ - void CreateNonSecureSessionL( TInt aSessionIndex ); - - /** - * Creates new SVP out session - * @since Series 60 3.2 - * @param aRecipient, Recipient address - * @param aVoIPProfile, VoIP profile entry - * @param aParameters, Call parameters - * @param aObserver, Observer - * @return MCCPCall - */ - MCCPCall* CreateNewSessionL( - TDesC8& aRecipient, - CRCSEProfileEntry& aVoipProfile, - const CCCPCallParameters& aParameters, - const MCCPCallObserver& aObserver ); - - /** - * Method for matching sessions. - * @since Series 60 3.2 - * @param aSession Session object - * @return Index of session. Function calls panic if session is not found. - */ - TInt FindSVPSession( const CMceSession& aSession ) const; - - /** - * Handles incoming sessions - * @since Series 60 3.2 - * @param aSession Session object - * @param aContainer In this case contains data concerning incoming session - * @return - */ - void IncomingSessionHandlerL( CMceInSession* aSession, - TMceTransactionDataContainer* aContainer); - - /** - * Handles incoming session updates in case when it is not hold case, - * e.g. in codec renegotiation case - * @param aOrigSession, the original session to be updated. - * This instance cannot be used anymore, - * all actions done using aUpdatedSession instance. - * @param aUpdatedSession, the new updated session. - * @return - */ - void UpdateSessionL( CMceSession& aOrigSession, - CMceInSession& aUpdatedSession ); - - /** - * Audio codecs are set in existing stream. - * If there isn't existing stream, new stream will be created. - * @since Series 60 3.2 - * @param aVoIPProfile VoIP profile entry - * @param aMtSession MtSession object. - * @return - */ - void CheckStreamsL( CRCSEProfileEntry& aVoipProfile, - CMceSession& aMtSession, - TInt aKeepAliveValue, - TBool aSessionUpdateOngoing = EFalse ); - - /** - * Extract call id from user headers. - * @since S60 3.2 - * @param aUserHeaders User headers. - * @param aCallId On completion, contains call id. - * @return ETrue if text Replaces: found, else EFalse - * @leave KErrArgument if header doesn't include colonmarks. - */ - TBool GetCallIdFromUserHeadersL( const CDesC8Array& aUserHeaders, - TDes8& aCallId ); - - /** - * Check is incoming session transfer target case or normal incoming call. - * @since S60 3.2 - * @param aHeaders Headers of incoming session. - */ - void IsTransferTargetCaseL( CDesC8Array* aHeaders ); - - /** - * Check Supported and Require headers if Provisional Response - * ACKnowledgement (PRACK) method is supported for Preconditions. - * @since S60 3.2 - * @param aHeaders Headers of incoming session - * @return ETrue if Precondition is required and PRACK is supported, else EFalse - */ - TBool IsPreconditionRequired( CDesC8Array& aHeaders ); - - /** - * Check and store data (FromHeader, ToHeader, CallId) from the headers - * to the SessionBase, if CallId not already existing. - * @since Series 60 3.2 - * @param aSVPSession - * @param aContainer Contains data concerning changed session - */ - void CheckHeadersData( CSVPSessionBase* aSVPSession, - TMceTransactionDataContainer* aContainer ); - - /** - * Check and store contact data from the headers to the MoSession - * @since Series 60 3.2 - * @param aSVPSession - * @param aContainer Contains data concerning changed session - */ - TInt CheckContactData( CSVPSessionBase* aSVPSession, - TMceTransactionDataContainer* aContainer ); - - /** - * Handles incoming refers - * @since Series 60 3.2 - * @param aRefer coming refer - * @param aReferTo Refer-to header. - * @param aContainer In this case contains data concerning incoming session - * @return void - */ - void IncomingReferHandlerL( CMceInRefer* aRefer, - const TDesC8& aReferTo, - TMceTransactionDataContainer* aContainer); - - /** - * Creates new SVP out session in transfer case - * @since Series 60 3.2 - * @param aSessionIndex, SVP session index, receiver of refer. - * @param aAttended, ETrue if attended EFalse if unattended - */ - void CreateNewTransferSessionL( - TInt aSessionIndex, - TBool aAttended ); - - /** - * Handles 3xx call forward events - * @since Series 60 3.2 - * @param aStatusCode Call forward response code - * @param aSessionIndex SVP session index - * @param aContainer Contains data concerning changed session - */ - void HandleCallForward( TInt aStatusCode, - TInt aSessionIndex, - TMceTransactionDataContainer* aContainer ); - - /** - * Finalizes the session creation. Adds DTMF observer to created session - * and adds the session into the session array. - * @since S60 v3.2 - * @param aSession Session whose construction to finalize. - * @return void - */ - void FinalizeSessionCreationL( CSVPSessionBase* aSession ); - - /** - * Executes 'ErrorOccurred' callback(Cb) to CCP Monitor if not NULL. - * @since S60 v3.2 - * @param aError the error code - * @return System wide error code. - */ - TInt ExecCbErrorOccurred( MCCPObserver::TCCPError aError ); - - /** - * Executes 'IncomingCall' callback(Cb) to CCP Monitor if not NULL. - * @since S60 v3.2 - * @param aCall Pointer to the newly created incoming call. - * @return System wide error code. - */ - TInt ExecCbIncomingCall( MCCPCall* aCall ); - - /** - * Executes 'IncomingCall' callback(Cb) to CCP Monitor if not NULL. - * @since S60 v3.2 - * @param aCall Pointer to the newly created incoming call. - * @param aTempCall Reference to the held call. - * @return System wide error code. - */ - TInt ExecCbIncomingCall( MCCPCall* aCall, MCCPCall& aTempCall ); - - /** - * Executes 'CallCreated' callback(Cb) to CCP Monitor if not NULL. - * @since S60 v3.2 - * @param aNewTransferCall The call that has been created with the new transfer target. - * @param aOriginator Pointer to originator of the transfer request. - * @param aAttended Transfer requested was attented (ETrue) or un-attented(EFalse) - * @return System wide error code. - */ - TInt ExecCbCallCreated( MCCPCall* aNewTransferCall, MCCPCall* aOriginator, TBool aAttended ); - - /** - * Evaluates and removes the Dual-tone multi-frequency (DTMF) part from recipient's number. - * Leaves with KErrArgument if invalid argument given. - * @since S60 3.2 - * @param aRecipient The address/number to be evaluated, a non-modifiable descriptor. - * @return Pointer to the modified recipient address/number heap descriptor. - */ - HBufC* ParseRecipientDtmfSuffixL( const TDesC& aRecipient ) const; - - /** - * Checks that the given recipient address/number contains only valid DTMF characters. - * Called from ParseRecipientDtmfSuffixL method. - * Leaves with KErrArgument if invalid argument given. - * @since S60 3.2 - * @param aRecipient The address/number to be checked, a non-modifiable descriptor. - * @return ETrue when aRecipient contains only valid dtmf chars, EFalse if not. - */ - TBool IsValidDtmfRecipientL( const TDesC& aRecipient ) const; - - /** - * Checks what call event will be sent after attended transfer cases. - * @since S60 3.2 - * @param aNewSVPSession The new established session. - * @param aOldSVPSession The old transfered session. - */ - void CSVPController::CheckCallEventToBeSent( CSVPSessionBase* aNewSVPSession, - CSVPSessionBase* aOldSVPSession ) const; - -private: - - /** - * C++ default constructor. - */ - CSVPController(); - - /** - * second-phase constructor - */ - void ConstructL(); - -private: // data - - /** - * pointer to Mce manager - */ - CMceManager* iMceManager; - - /* - * instance of SVP utility class. - * own. - */ - CSVPUtility* iSVPUtility; - - /** - * transaction container, holds detailed data about transaction - * TMceTransactionDataContainer* iTransactionDataContainer; - */ - TMceTransactionDataContainer iContainer; - - /** - * array of created SVP sessions - */ - RPointerArray< CSVPSessionBase > iSessionArray; - - /** - * pointer to created SVP emergency session - */ - CSVPEmergencySession* iEmergencySession; - - /** - * CCP observer - */ - MCCPObserver* iCCPMonitor; - - /** - * CCP Supplementary Services observer - */ - MCCPSsObserver* iCCPSsObserver; - - /** - * CCP session observer - */ - MCCPCallObserver* iCCPSessionObserver; - - /** - * CCP DTMF observer - */ - const MCCPDTMFObserver* iCCPDtmfObserver; - - /** - * Terminal type - */ - TBuf< KSVPMaxTerminalTypeLength > iTerminalType; - - /** - * WLAN MAC address - */ - TBuf< KSVPWlanMacAddressLength > iWlanMacAddress; - - /** - * Hold call index in attended transfer target case. - */ - TInt32 iHoldCallIndex; - - /** - * Original call index in transfer case. - */ - TInt32 iIncomingReferCallIndex; - - /** - * Untried profile IDs for emergency call - */ - RArray iEmergencyProfileIds; - - /** - * Untried IAP IDs for emergency call - */ - RArray iEmergencyIapIds; - - /** - * Flag to indicate that Dtmf string sending is started - * This is needed, because Mce provides only two Dtmf events - */ - TBool iDtmfStringSending; - - /** - * Flag to indicate first character of the Dtmf string is send - * This is needed, because Mce provides only two Dtmf events - */ - TBool iFirstDtmfSent; - - /** - * Supplementary services. - * Own. - */ - CSVPSupplementaryServices* iSuppServices; - - /** - * Flag for prevent wrong handling after SessionStateChanged -callback - * in MT Re-Invite case that is not hold/resume. ETrue when e.g. codec - * renegotiation ongoing, EFalse otherways - */ - TBool iSessionUpdateOngoing; - - /** - * Flag that indicates that handling of hold re-INVITE - * without is SDP is ongoing - */ - TBool iEmptyReInvite; - - /** - * This flag is set after Failed() callback is received to - * prevent handling of subsequent state change callbacks - * because session termination started when Failed() was received - */ - TBool iFailed; - - /** - * RTP observer - * Own - */ - CSVPRtpObserver* iRtpObserver; - - /** - * Contains single DTMF tone sent. Used with outband - */ - TChar iDtmfTone; - - /** - * Contains DTMF string sent. Used with outband DTMF - */ - HBufC* iDtmfString; - - /** - * Keeps count of the current tone sent. Used with outband DTMF - */ - TLex iDtmfStringLex; - - /** - * This flag is set ETrue if preconditions are required in SIP headers - */ - TBool iPreconditions; - - /** - * WLAN management client used for creating virtual WLAN traffic streams. - * Own. - */ - CWlanMgmtClient* iWlanMgmt; - - /** - * ID of the created WLAN virtual traffic stream during an MO call. - */ - TUint iTrafficStreamId; - - /** - * This flag is used for stream creation/deletion logic during an MO call. - */ - TBool iTrafficStreamCreated; - -private: - - // For testing - SVP_UT_DEFS - - }; - -#endif // CSVPTRANSFERCONTROLLER_H