vtengines/videoteleng/Inc/Media/CVtEngDtmfHandler.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 23 Nov 2009 14:47:47 +0200
changeset 0 ed9695c8bcbe
permissions -rw-r--r--
Revision: 200948

/*
* Copyright (c) 2006 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:  DTMF handler
*
*/



#ifndef CVTENGDTMFHANDLER_H
#define CVTENGDTMFHANDLER_H

//  INCLUDES
#include <e32std.h>
#include <mvtprotocolhandler.h>
#include "CVtEngDtmfState.h"
#include "CVtEngOperation.h"
#include "MVtEngDtmfHandler.h"

// FORWARD DECLARATIONS
class MVTUserInput;

// CLASS DECLARATION

/**
*  Base class for data types
*
*  @lib videoteleng
*  @since 2.6
*/
NONSHARABLE_CLASS( CVtEngDtmfHandler ) : public CBase, public MVtEngDtmfHandler
    {
    public: // Data structures
        enum TUIISupport
            {
            EBasicString    = 2,
            EIA5String      = 4,
            EGeneralString  = 8,
            EDTMFString     = 16
            };

    public: // constructor and destructor

        /**
        * Two-phased constructor.
        * @param aH324Config H324 configure interface
        * @return dtmf handler
        */
        static CVtEngDtmfHandler* NewL( 
            MVtH324ConfigCommand& aH324Config );

        /**
        * Destructor
        */
        ~CVtEngDtmfHandler();

    public: // from MVtEngDtmfHandler

        /**
        * @see MVtEngDtmfHandler
        */
        virtual void HandleL( CVtEngOperation& aOp );

        /**
        * @see MVtEngDtmfHandler
        */
        virtual CVtEngDtmfState& ActivateState( 
            MVtEngDtmfHandler::TVtEngDtmfState aNewState );

        /**
        * @see MVtEngDtmfHandler
        */
        virtual void SendComplete( TInt aError );

        /**
        * @see MVtEngDtmfHandler
        */
        virtual MVTUserInput& ReserveProtoDtmfL(
            const TVtEngDtmfTone& aTone  );

        /**
        * @see MVtEngDtmfHandler
        */
        virtual void ReleaseProtoDtmf();

		/**
        * @see MVtEngDtmfHandler
        */
		virtual TBool CheckCommandId( TInt aCheckCommandId ) const;

		/**
        * @see MVtEngDtmfHandler       
        */
		virtual void StoreCommandId( TInt aStoreCommandId );


    public: // Protocol DTMF Support

        /**
        * Specifies the UII support
        * @param aValue the support to be used
        */
        void SetUIISupport( TUIISupport aValue );

        /**
        * Gets the current UII support
        * @return UII support
        */
        TUIISupport GetUIISupport() const;

    private: // constructors

        /**
        * C++ constructor
        */
        CVtEngDtmfHandler( MVtH324ConfigCommand& aH324Config );

        /**
        * 2nd phase constructor
        */
        void ConstructL();

    private: // new functions

        /**
        * Handles completion of DTMF sending, leavable method.
        */
        void HandleSendCompleteL( TInt aError );

        /**
        * Creates a state instance
        * @param EVtDtmfStateIdle, EVtDtmfStateSending or EVtDtmfStateBuffered
        */
        void CreateStateL( TInt aState );

    private: // member data

        // DTMF states
        CArrayPtrFlat<CVtEngDtmfState>* iDtmfStates;

        // current state index
        TVtEngDtmfState                 iCurrentState;

        // protocol tone
		MVTUserInput*        iProtoDtmf;

        // H324 interface
        MVtH324ConfigCommand&        iH324Config;

        // Indicates supported UII type: 
        // 16 DTMF
        // 8 General String
        // 4 IA5 String
        // 2 Basic string
        TUIISupport iUIISupport;

		// DTMF command ID returned by H324 interface for last tone		
		TInt iIssuedDtmfCommandId;
    };


#endif      CVTENGDTMFHANDLER_H

// End of File