diff -r 000000000000 -r ff3b6d0fd310 convergedcallengine/cce/inc/ccceplugin.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/convergedcallengine/cce/inc/ccceplugin.h Tue Feb 02 01:11:09 2010 +0200 @@ -0,0 +1,267 @@ +/* +* Copyright (c) 2006-2007 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 plugins +* +*/ + + +#ifndef CCCEPLUGIN_H +#define CCCEPLUGIN_H + +#include + +#include "mccpcsobserver.h" // MCCPCSObserver +#include "mccpssobserver.h" + +class CConvergedCallProvider; +class MCCPDTMFProvider; +class MCCPDTMFObserver; +class MCCPPluginDeathObserver; +class CCCPHandle; +class CCCECallContainer; +class MCCPEmergencyCall; +class MCCEObserver; +class MCCPCallObserver; +class CCCETransferController; +class MCCPConferenceCall; + +/** + * CCE Plugin + * + * + * + * @lib cce.dll + * @since S60 v3.2 + */ +NONSHARABLE_CLASS(CCCEPlugin): public CBase, + public MCCPCSObserver, + public MCCPSsObserver + { +public: + + /** + * Two-phased constructor. + * @param aPluginUID Plugin uid for this plugin + * @param aObserver Reference to observer + * @param aCallContainer Reference to call container + * @param aDeathObserver Reference to death observer + * @param iTransferController Reference to transfer controller + */ + static CCCEPlugin* NewL( + const TUid& aPluginUID, + MCCEObserver& aObserver, + CCCECallContainer& aCallContainer, + MCCPPluginDeathObserver& aDeathObserver, + CCCETransferController& iTransferController ); + + /** + * Destructor. + */ + virtual ~CCCEPlugin(); + +public: + + /** + * Returns interface for this plugin. + * + * @since S60 v3.2 + * @return Pointer to this plugin. + */ + CConvergedCallProvider* GetPluginL() const; + + /** + * Initializes emergency call for this plugin. + * + * @since S60 v3.2 + * @param aEmergencyCallObserver Reference to used observer. + */ + void InitialiseEmergencyCallL( MCCPCallObserver& aEmergencyCallObserver ); + + /** + * Gets interface for emergency call. + * + * @since S60 v3.2 + * @return Pointer to emergencycall interface. + */ + MCCPEmergencyCall* GetEmergencyCall() const; + + /** + * Gets interface for dtmf handling + * + * @since S60 v3.2 + * @param aObserver Reference to used observer. + * @return Reference to providers dtmf interface + */ + MCCPDTMFProvider& GetDtmfProviderL( + const MCCPDTMFObserver& aObserver ); + + /** + * Returns plugin type + * + * @since S60 v3.2 + * @return Uid for this plugin. + */ + TUid Type() const; + + /** + * Returns ETrue if plugin can be relesed if idle + * + * @since S60 v3.2 + * @return TBool EFalse If plugin is permanently in memory + */ + TBool ReleaseWhenIdle(); + + /** + * Returns ETrue if plugin can be relesed if idle + * + * @since S60 v3.2 + * @param aReleaseWhenIdle Set EFalse if plugin is permanently in memory + */ + void SetReleaseWhenIdle(TBool aReleaseWhenIdle); + +private: + /** + * Checks if call is allowed + * + * @since S60 v3.2 + * @return Count of non conference calls + * @return Error if call is not allowed + */ + TInt IsCallAllowed() const; + + /** + * Checks if data call can be allowed + * + * @since S60 v3.2 + * @return ETrue if data call can be allowed. + */ + TBool IsDataCallAllowed() const; + +// from base class MCCPCSObserver + + /** @see MCCPCSObserver::PluginInitiatedCSMoCallCreated */ + void MoCallCreated( MCCPCall& aCall ); + + /** @see MCCPCSObserver::DataPortName */ + void DataPortName( TName& aPortName ); + + /** @see MCCPCSObserver::ConferenceCallCreated */ + void ConferenceCallCreated( MCCPConferenceCall& aConferenceCall ); + +// from base class MCCPObserver + + /** @see MCCPObserver::ErrorOccurred */ + void ErrorOccurred( TCCPError aError ); + + /** @see MCCPObserver::IncomingCall */ + void IncomingCall( MCCPCall* aCall, MCCPCall& aTempCall ); + + /** @see MCCPObserver::IncomingCall */ + void IncomingCall( MCCPCall* aCall ); + + /** @see MCCPObserver::CallCreated */ + void CallCreated( MCCPCall* aCall, MCCPCall* aOriginator, TBool aAttented ); + +// from base class MCCPObserver + + /** @see MCCPSsObserver::BarringEventOccurred */ + void BarringEventOccurred( const MCCPSsObserver::TCCPSsBarringEvent aBarringEvent ); + + /** @see MCCPSsObserver::CLIEventOccurred */ + void CLIEventOccurred( const MCCPSsObserver::TCCPSsCLIEvent aCallLineEvent ); + + /** @see MCCPSsObserver::CallForwardEventOccurred */ + void CallForwardEventOccurred( const MCCPSsObserver::TCCPSsCallForwardEvent aCallForwardEvent, + const TDesC& aRemoteAddress ); + + /** @see MCCPSsObserver::CallCugEventOccurred */ + void CallCugEventOccurred( const MCCPSsObserver::TCCPSsCugEvent aCugEvent ); + + /** @see MCCPSsObserver::NotifyCurrentActiveALSLine */ + void NotifyCurrentActiveALSLine( TInt aLine ); +private: + + /** Constructor */ + CCCEPlugin( + const TUid& aPluginUID, + MCCEObserver& aObserver, + CCCECallContainer& aCallContainer, + MCCPPluginDeathObserver& aDeathObserver, + CCCETransferController& iTransferController ); + + /** Leaving stuff in constructor */ + void ConstructL(); + + /** + * Tells if cs plugin is used in current call + * + * @since S60 v3.2 + * @param aCall Call to be checked + * @return ETrue if cs plugin used + */ + TBool IsCsPlugin( MCCPCall& aCall ); + +private: // data + + /** + * Reference to observer + */ + MCCEObserver& iObserver; + + /** + * Reference to call container + */ + CCCECallContainer& iCallContainer; + + /** + * Reference to trasfer controller + */ + CCCETransferController& iTransferController; + + /** + * Reference to dead observer + * This will be informed when plugin crashes + */ + MCCPPluginDeathObserver& iDeathObserver; + + /** + * Use handle to ecom plugin. + * Own + */ + CConvergedCallProvider* iPlugin; + + /** + * Dtmf interface for this plugin + * Own + */ + MCCPDTMFProvider* iDtmfProvider; + + /** + * Emergency call interface for this plugin + * Own + */ + MCCPEmergencyCall* iEmergencyCall; + + /** + * Plugin uid for this plugin + */ + const TUid iPluginId; + + /** + * This plugin shoild not be Relased even no active calls exists + */ + TBool iReleaseWhenIdle; + }; + +#endif // CCCEPLUGIN_H \ No newline at end of file