--- 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 <mcemanager.h>
-#include <mcesessionobserver.h>
-#include <mcedtmfobserver.h>
-#include <mceinsessionobserver.h>
-#include <mceinreferobserver.h>
-#include <mceeventobserver.h>
-#include <mcestreamobserver.h>
-#include <mcereferobserver.h>
-#include <mcetransactiondatacontainer.h>
-
-#include <cconvergedcallprovider.h>
-#include <mccpobserver.h>
-#include <mccpssobserver.h>
-#include <mccpdtmfprovider.h>
-
-#include <wlanmgmtclient.h>
-
-#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<TUint32> iEmergencyProfileIds;
-
- /**
- * Untried IAP IDs for emergency call
- */
- RArray<TUint> 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