convergedcallengine/cce/inc/ccceplugin.h
changeset 0 ff3b6d0fd310
child 19 7d48bed6ce0c
--- /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 <e32base.h>
+
+#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