--- a/callcontinuity/vcc/inc/cvccdirector.h Tue Feb 02 00:05:57 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,560 +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: Voice Call Continuity proxy
-*
-*/
-
-#ifndef CVCCDIRECTOR_H
-#define CVCCDIRECTOR_H
-
-
-
-#include <cconvergedcallprovider.h>
-#include <mccpobserver.h>
-#include <mccpcsobserver.h> // MCCPCSObserver
-#include <mspnotifychangeobserver.h>
-#include <mccpcall.h>
-#include <cccpcallparameters.h>
-
-#include "mvccengpspropertylistenerobserver.h"
-#include "ccpdefs.h"
-
-//state machine, in order to maintain only one instance
-#include "tvccstateinit.h"
-#include "tvccstatecalling.h"
-#include "tvccstatereleasing.h"
-#include "tvccstatefailing.h"
-
-class CVccPerformer;
-class CVccHoTrigger;
-class CVccEngPsPropertyListener;
-class CVccEngPsProperty;
-class CSPNotifyChange;
-class CVccConferenceCall;
-class CVccDtmfProvider;
-
-/** Service Provider Name */
-_LIT( KCSPName,"VCC" );
-
-/** VCC implementation UID */
-const TInt KVCCImplementationUidInt = 0x2000CFAA;
-
-/**
-* Implementation uid of VCC Plugin.
-*/
-const TUid KVCCImplementationUid = { KVCCImplementationUidInt };
-
-/**
- *
- *
- * Proxies all calls to the relevant call providers
- * and keeps the house hold.
- *
- * @lib svp.dll
- * @since S60 3.2
- */
-class CVccDirector : public CConvergedCallProvider,
- public MCCPCSObserver,
- public MVccEngPsPropertyListenerObserver,
- public MSPNotifyChangeObserver
-
- {
-
-
-public:
-
- /**
- * Two-phased constructor.
- */
- static CVccDirector* NewL();
-
- /**
- * Destructor.
- */
- ~CVccDirector();
-
- /**
- * Gets the instance of the MCCPMonitor
- * @return Reference to MCCPMonitor
- */
- const MCCPCSObserver* CPPObserver() const;
-
-// from base class CConvergedCallProvider
-
- /**
- * From CConvergedCallProvider
- * 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 S60 v3.2
- * @param aMonitor CCP observer
- * @param aSsObserver SS observer
- */
- void InitializeL( const MCCPObserver& aMonitor,
- const MCCPSsObserver& aSsObserver );
-
- /**
- * From CConvergedCallProvider
- * Creates a new session and checks secure status from profile.
- *
- * @since S60 v3.2
- * @param aParameters Call parameters, SVP uses Service ID parameter
- * @param aRecipient Recipients address/number
- * @param aObserver Observer
- * @return Reference to created MCCPCall object.
- */
- MCCPCall* NewCallL( const CCCPCallParameters& aParameters,
- const TDesC& aRecipient,
- const MCCPCallObserver& aObserver );
-
- /**
- * From CConvergedCallProvider
- * Returns Uid of plug-in which is on use.
- *
- * @since S60 v3.2
- * @return Uid of plug-in
- */
- const TUid& Uid() const;
-
- /**
- * From CConvergedCallProvider
- * Creates a new Emergency call and add user-agent header.
- *
- * @since S60 v3.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 );
-
- /**
- * From CConvergedCallProvider
- * Creates a new conference session.
- *
- * @since S60 v3.2
- * @param aObserver Observer
- * @return MCCPConferenceCall
- */
- MCCPConferenceCall* NewConferenceL( const TUint32 aServiceId,
- const MCCPConferenceCallObserver& aObserver );
-
- /**
- * From CConvergedCallProvider
- * Releases call
- *
- * @since S60 v3.2
- * @param aCall Call to be removed
- * @return Symbian error code
- */
- TInt ReleaseCall( MCCPCall& aCall );
-
- /**
- * From CConvergedCallProvider
- * Releases emergency call
- *
- * @since S60 v3.2
- * @param aCall Call to be removed
- * @return Symbian error code
- */
- TInt ReleaseEmergencyCall( MCCPEmergencyCall& aCall );
-
- /**
- * From CConvergedCallProvider
- * Releases conference call
- *
- * @since S60 v3.2
- * @param aCall Call to be removed
- * @return Symbian error code
- */
- TInt ReleaseConferenceCall( MCCPConferenceCall& aCall );
-
- /**
- * From CConvergedCallProvider
- * Get Plug-In capabilities
- *
- * @since Series 60 v3.2
- * @return TUint32 On return contains the capability flags of plug-In
- */
- TUint32 Caps() const;
-
- /**
- * From CConvergedCallProvider
- * Get DTMF provider
- *
- * @since Series 60 v3.2
- * @param aObserver CCP Dtmf observer for informing events
- * @return Pointer to MCCPDTMFProvider if succesfull,
- * NULL if not available
- */
- MCCPDTMFProvider* DTMFProviderL( const MCCPDTMFObserver& aObserver );
-
- /**
- * From CConvergedCallProvider
- * Get extension provider
- *
- * @since Series 60 v3.2
- * @param aObserver observer for extension(custom) events
- * @return Pointer to MCCPExtensionProvider if succesfull,
- * NULL if not available
- */
- MCCPExtensionProvider* ExtensionProviderL(
- const MCCPExtensionObserver& aObserver );
-
- /**
- * From CConvergedCallProvider
- * 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
- * @return none
- * @leave system error if observer adding fails
- */
- void AddObserverL( const MCCPDTMFObserver& aObserver );
-
- /**
- * From CConvergedCallProvider
- * Remove an observer.
- *
- * @since S60 v3.2
- * @param none
- * @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 );
-
- /**
- * @see CConvergedCallProvider::GetLifeTime
- */
- TBool GetLifeTime( TDes8& aLifeTimeInfo );
-
- /**
- * @see CConvergedCallProvider::GetCSInfo
- */
- TBool GetCSInfo( CSInfo& aCSInfo );
-
-// from base class MCCPCSObserver
-
-
-
-
-
-// from base class MCCPObserver (inhereded by MCCPCSObserver)
-
- /**
- * From MCCPObserver (inhereded by MCCPCSObserver)
- *
- * @see MCCPObserver::ErrorOccurred
- */
-
- void ErrorOccurred( TCCPError aError );
-
- /** From MCCPObserver (inhereded by MCCPCSObserver)
- *
- * @see MCCPObserver::IncomingCall
- */
-
- void IncomingCall( MCCPCall* aCall, MCCPCall& aTempCall );
-
- /**
- * From MCCPObserver (inhereded by MCCPCSObserver)
- *
- *
- * @see MCCPObserver::IncomingCall
- */
-
- void IncomingCall( MCCPCall* aCall );
-
- /**
- * The actual implementation for IncomingCall.
- */
-
- void IncomingCallL( MCCPCall* aCall );
-
- /**
- * From MCCPObserver (inhereded by MCCPCSObserver)
- *
- * @see MCCPObserver::CallCreated
- */
-
- void CallCreated( MCCPCall* aCall,
- MCCPCall* aOriginator,
- TBool aAttented );
-
- /**
- * From MCCPCSObserver
- * see MCCPCSObserver::PluginInitiatedCSMoCallCreated
- */
- //void PluginInitiatedCSMoCallCreated( MCCPCall* aCall ) const;
- void MoCallCreated( MCCPCall& aCall );
-
- /**
- * Notify of conference call that is not requested.
- * @since S60 3.2
- * @param aConferenceCall Created conference
- * @return none
- */
- void ConferenceCallCreated( MCCPConferenceCall& aConferenceCall );
-
- /**
- * From MCCPObserver (inhereded by MCCPCSObserver)
- *
- * @see MCCPObserver::DataPortName
- */
- void DataPortName( TName& aPortName );
-
-// from base class MVccEngPsPropertyListenerObserver
-
- /**
- * From MVccEngPsPropertyListenerObserver
- * Observer interface. Called when a P&S property value
- * has been updated.
- *
- * @since S60 v3.2
- * @param aCategoryId The category uid of the property
- * @param akeyId The key uid of the property
- * @param aValue Current value of the property.
- */
- void PropertyChangedL(
- const TUid aCategoryId,
- const TUint aKeyId,
- const TInt aValue );
-
-//from base class MSPNotifyChangeObserver
-
- /**
- * From MSPNotifyChangeObserver.
- * Handle notify change event from the service provider table observer.
- *
- * @param aServiceId the service ID of added/changed/deleted service
- * ( only notification about the changes to VCC service are revceived)
- */
- void HandleNotifyChange( TServiceId aServiceId );
-
- /**
- * From MSPNotifyChangeObserver.
- * Handle error notification received from the service provider table
- * observer.
- *
- * @param aError error code
- * @since S60 3.2
- */
- void HandleError( TInt aError );
-
- /**
- * Gets the call type of the currently active call from the performer array.
- *
- * @return Call type of the currently active call, KErrNotFound if no active call
- * @since S60 3.2
- */
- TInt CurrentCallTypeForDTMF();
-
- /**
- * Gets the call type of the currently active call and returns it's provider.
- *
- * @return CConvergedCallProvider of the active call
- * @since S60 5.0
- */
- CConvergedCallProvider* GetProvider();
-
-private:
-
- /**
- * C++ default constructor.
- */
- CVccDirector();
-
- /**
- * Symbian second-phase constructor
- */
- void ConstructL();
-
- /**
- * for destroying an array
- */
- static void PointerArrayCleanup( TAny* aArray );
-
- /**
- * Creates call provider array
- */
- void FillCallProviderArrayL();
-
- /**
- * Checks if given plugin is used by VCC
- *
- * @aparam aPluginId call provider plugin id
- * @return ETrue if plugin is used by VCC
- */
- TBool IsVccOwnedPlugin( TInt aPluginId );
-
- /**
- * Tries to initialize all call provider plugins VCC uses.
- *
- * @param aMonitor CCP observer
- * @param aSsObserver SS observer
- * @return ETrue if all plugins were initialized
- */
- TBool Initialize( const MCCPObserver& aMonitor,
- const MCCPSsObserver& aSsObserver );
-
- /**
- * Tries to initialize the given call provider plugin.
- * Leaves if initialization fails.
- *
- * @param aMonitor CCP observer
- * @param aSsObserver SS observer
- * @param aPlugin call provider plugin
- */
- void InitializeL( const MCCPObserver& aMonitor,
- const MCCPSsObserver& aSsObserver,
- CConvergedCallProvider& aPlugin );
-
- /**
- * for checking state of calls and making handover
- */
- void SwitchL( const TInt aValue );
-
- /**
- * Checks are converged call provider plugins initialized
- */
- TBool IsPluginInitialized();
-
- /*
- * Starts notifications from service provider table observer.
- * Is notified about VCC service settings changes.
- */
- void StartSpNotifierL();
-
- /*
- * Stops notifications from service provider table observer.
- */
- void StopSpNotifierL();
-
- /*
- * Triesto initialize call provider plugins used by VCC that
- * were not initialized .
- *
- * */
- void RetryInitialization();
-
- /*
- * The leaving-part implementation on ConferenceCallCreated.
- * @since S60 3.2
- * @param aConferenceCall Created conference
- */
- void CreateConferenceL( MCCPConferenceCall& aConferenceCall );
-
- /*
- * Check if Voip was enabled/disabled and load/destroy it
- * @since S60 3.2
- * @param aConferenceCall Created conference
- */
- void CheckVoipEnabledL( TServiceId aServiceId );
-
-
-private: // data
-
- /**
- * Implementation UID
- */
- TUid iImplementationUid;
-
- /**
- * Array of Call providers
- * Own.
- */
- RPointerArray <CConvergedCallProvider> iProviders;
-
- /*
- * VCC needs to handle both cs and ps calls.
- * MCCPCSObserver can do both
- * Not own.
- */
- MCCPCSObserver* iCCPObserver;
-
- /*
- * Supplementary service observer.
- * Not own.
- */
- MCCPSsObserver* iCCPSsObserver;
-
- /*
- * Handle to handover trigger.
- * Own.
- */
- CVccHoTrigger* iHoTrigger;
-
- /**
- * Array of Performers
- * Own.
- */
- RPointerArray<CVccPerformer> iPerfArray;
-
- /*
- * Handle to Conference call object.
- * Own.
- */
- CVccConferenceCall* iConference;
-
- /*
- * Listener for the hand-over commands
- * Own.
- */
- CVccEngPsPropertyListener* iPropListener;
-
- //VCC state machine implementation
- TVccStateInit iStateInit;
- TVccStateCalling iStateCalling;
- TVccStateReleasing iStateReleasing;
- TVccStateFailing iStateFailing;
-
- /**
- * Used for checking in ReleaseCall, that was this ReleaseCall due to
- * multicall handover situation
- */
- TInt iHoKeyValue;
-
- /**
- * Notifies service provider setting change
- * Own
- */
- CSPNotifyChange* iSpNotifier;
-
- /*
- * Array of initialized plugins
- * Own.
- */
- RArray<TInt> iInitialisedPlugins;
-
- /**
- * Proxy object for DTMF providers
- * Own.
- */
- CVccDtmfProvider* iDtmfProvider;
-
- TBool iSvpLoaded;
-
- friend class T_CVccDirector;
- friend class T_CVccDTMFProvider;
- };
-
-#endif // CVCCDIRECTOR_H