callcontinuity/vcc/inc/cvccdtmfprovider.h
changeset 0 a4daefaec16c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/callcontinuity/vcc/inc/cvccdtmfprovider.h	Mon Jan 18 20:12:36 2010 +0200
@@ -0,0 +1,176 @@
+/*
+* Copyright (c) 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:   Sends and receives DTMF tones
+*
+*/
+
+
+
+#ifndef CVCCDTMFPROVIDER_H
+#define CVCCDTMFPROVIDER_H
+
+
+#include <mccpdtmfprovider.h>
+#include <mccpdtmfobserver.h>
+
+class CConvergedCallProvider;
+class CVccDirector;
+
+/**
+ *  DTMF provider.
+ *  Contains DTMF providers from call providers and forward all requests between
+ *  them and CCE
+ *
+ *  @lib vccperformer.lib
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( CVccDtmfProvider ) : public MCCPDTMFProvider,
+						                public MCCPDTMFObserver
+    {
+
+public:
+
+    /**
+	 * Two-phased constructor.
+     * @param aProviders Service providers
+     * @param aObserver
+     * @param aDirector Reference to Director object 
+	 */
+	static CVccDtmfProvider* NewL(
+	        RPointerArray<CConvergedCallProvider>& aProviders, 
+	        const MCCPDTMFObserver& aObserver,
+	        CVccDirector& aDirector );
+    
+    /**
+    * Destructor.
+    */
+    virtual ~CVccDtmfProvider(); 
+
+  // From MCCPDTMFObserver
+
+ 	/**
+	* HandleDTMFEvents.
+	* @since S60 3.2
+	* @param aEvent Event type
+	* @param aError Error code
+	* @param aTone Character
+	*/
+	void HandleDTMFEvent( const MCCPDTMFObserver::TCCPDtmfEvent aEvent,
+	                               const TInt aError,
+	                               const TChar aTone ) const;
+	                               
+	// From MCCPDTMFProvider
+
+	/**
+ 	* Cancels asynchronous DTMF string sending.
+ 	* @return KErrNone request was started successfully
+ 	* @return KErrNotFound nothing found to cancel.
+ 	* @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 request was started successfully
+ 	* @return KErrArgument if the specified tone contains illegal dtmf character
+ 	* @return in case of an error system wide error code
+ 	*/
+ 	TInt StartDtmfTone( const TChar aTone );
+
+ 	/**
+ 	* Stops playing current DTMF tone.
+ 	* @since S60 3.2
+ 	* @return KErrNone request was started successfully
+    * @return KErrNotReady not ready to perform the requested action.
+ 	*/
+ 	TInt StopDtmfTone();
+
+ 	/**
+ 	* Plays DTMF string.
+ 	* @since S60 3.2
+ 	* @param aString String to be played.
+ 	* @return KErrNone request was started successfully
+ 	* @return 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 request was started successfully
+ 	* @return KErrNotFound no send existed which to continue
+ 	*/
+ 	TInt ContinueDtmfStringSending( const TBool aContinue );
+ 	
+	/**
+	* Add an observer for DTMF related events.
+	* Currently CCE will set only one observer.
+	* @since S60 v3.2
+	* @param aObserver Observer to add.
+	* @leave system error if observer adding fails
+	*/
+	void AddObserverL( const MCCPDTMFObserver& aObserver );
+	
+	/**
+	* Remove an observer.
+	* @since S60 v3.2
+	* @param aObserver Observer to remove.
+	* @return KErrNone if removed succesfully. 
+	* @return KErrNotFound if observer was not found.
+	*/
+	TInt RemoveObserver( const MCCPDTMFObserver& aObserver );
+	
+private:
+
+    /** 
+     * C++ constructor
+     * @param aObserver Reference to DTMF observer
+     * @param aDirector Reference to Director
+     */
+    CVccDtmfProvider( const MCCPDTMFObserver& aObserver, CVccDirector& aDirector );
+
+    /** 
+     * Symbian second-phase constructor
+     */
+    void ConstructL();
+
+private: // data
+
+	/**
+	* DTMF event observers.
+	* Own.
+	*/
+	RPointerArray<MCCPDTMFObserver> iObservers;
+	
+	/**
+	* DTMF providers.
+	* Own
+	*/
+	RPointerArray<MCCPDTMFProvider> iProviders;
+	
+	/**
+	 * VCC director
+	 * Not own.
+	 */
+	CVccDirector* iDirector;
+	
+    friend class T_CVccDTMFProvider;
+    };
+
+#endif // CVCCDTMFPROVIDER_H