adaptationlayer/tsy/nokiatsy_dll/inc/cmmdtmfmesshandler.h
changeset 0 63b37f68c1ce
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/adaptationlayer/tsy/nokiatsy_dll/inc/cmmdtmfmesshandler.h	Fri Nov 06 17:28:23 2009 +0000
@@ -0,0 +1,228 @@
+/*
+* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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: 
+*
+*/
+
+
+
+#ifndef CMMDTMFMESSHANDLER_H
+#define CMMDTMFMESSHANDLER_H
+
+//  INCLUDES
+#include <e32base.h>  // Symbian base types
+
+#include <tisi.h>
+#include "mmmmesshandlerbase.h"
+#include "cmmphonetreceiver.h"
+
+// CONSTANTS
+const TUint16 KMaxDataBufferSize( 256 );
+
+// MACROS
+    //none
+
+// DATA TYPES
+    //none
+
+//  EXTERNAL DATA STRUCTURES
+    //none
+
+// FUNCTION PROTOTYPES
+    //none
+
+// FORWARD DECLARATIONS
+class CMmPhoNetSender;
+class CMmDataPackage;
+class TIsiReceiveC;
+class CMmMessageRouter;
+
+// CLASS DECLARATION
+
+/**
+* Used for creating and sending DTMF ISI messages to
+* PhoNet via PhoNetSender. It also receives DTMF
+* ISI messages from PhoNetReceiver.
+*  @lib nokiatsy.lib
+*  @since Series60_2.6
+*/
+class CMmDtmfMessHandler
+        : public CBase, public MMmMessHandlerBase,  public MMmMessageReceiver
+    {
+    public: // types
+
+        /**
+        * DTMF types used in Nokia OS
+        */
+        enum TNOSDtmfType
+            {
+            EDtmfTypeUnknown = 0, // unknown DTMF type
+            EDtmfTypeDigit, // the currently processed DTMF is one digit
+            EDtmfTypeString // the currently processed DTMF is a string
+            };
+
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        * @param aPhoNetSender pointer to the Phonet sender
+        * @param aPhoNetReceiver pointer to thephonet receiver
+        * @param aMessageRouter pointer to the message router
+        * @return created message handler object
+        */
+        static CMmDtmfMessHandler* NewL(
+            CMmPhoNetSender* aPhoNetSender,
+            CMmPhoNetReceiver* aPhoNetReceiver,
+            CMmMessageRouter* aMessageRouter );
+
+        /**
+        * Destructor.
+        */
+        ~CMmDtmfMessHandler();
+
+    public: // Functions from base classes
+
+        /**
+        * From MMmMessHandlerBase. This method is the single entry point for
+        * requests coming from the Symbian OS layer to this message handler
+        * @param aIpc IPC number of the request
+        * @return TInt KErrNone or error code
+        */
+        TInt ExtFuncL( TInt aIpc, const CMmDataPackage* aDataPackage );
+
+    public: // New functions
+
+        /**
+        * Handles a received message by calling the specific
+        * message handling method.
+        * @param TIsiReceiveC, reference to the received message.
+        * @return void
+        */
+        void ReceiveMessageL( const TIsiReceiveC &aIsiMessage );
+
+        /**
+        * Handles errors comes from PhoNetReceiver RunError
+        * @param const TIsiReceiveC &aIsiMessage: The received ISI message
+        * @param TInt aError: Error code
+        */
+        void HandleError( const TIsiReceiveC &aIsiMessage, TInt aError );
+
+        /**
+        * Creates CallDtmfSendReq ISI message and sends it to Phonet.
+        * @param TUint8 aTransactionId: unique TransactionId number
+        * @param const TDesC* aDtmfDigit: DTMF digit or string to be sent
+        * @param TNOSDtmfType aDtmfType: string/digit
+        * @return TInt, success/failure value
+        */
+        TInt CallDtmfSendReqL( TUint8 aTransactionId,
+            const TDesC* aDtmfDigit, TNOSDtmfType aDtmfType );
+
+        /**
+        * CMmDtmfMessHandler::SendPostAddressL
+        * @param const TDesC* aDtmfString: DTMF character(s) to be sent
+        */
+        void CMmDtmfMessHandler::SendPostAddressL(
+            const TDesC* aDtmfString //dtmf character(s) to be sent
+            );
+
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        CMmDtmfMessHandler();
+
+        /**
+        * 2nd phase constructor
+        */
+        void ConstructL();
+
+        /**
+        * Breaks received CallDtmfSendResp ISI message.
+        * @param TIsiReceiveC, reference to the received message.
+        * @return None
+        */
+        void CallDtmfSendResp( const TIsiReceiveC &aIsiMessage );
+
+        /**
+        * Creates CallDtmfStopReq ISI message and sends it to Phonet.
+        * @param TUint8 aTransactionId: unique TransactionId number
+        * @return TInt, success/failure value
+        */
+        TInt CallDtmfStopReq( TUint8 aTransactionId );
+
+        /**
+        * Breaks received CallDtmfStopResp ISI message.
+        * @param TIsiReceiveC, reference to the received message.
+        * @return None
+        */
+        void CallDtmfStopResp( const TIsiReceiveC &aIsiMessage );
+
+        /**
+        * Breaks received CallDtmfStatusInd ISI message.
+        * @param CIsiMsg, reference to the received message.
+        * @return None
+        */
+        void CallDtmfStatusInd( const TIsiReceiveC &aIsiMessage );
+
+        /**
+        * Creates dtmf send request sub block
+        * @param const TDesC* aDtmfString: DTMF string
+        * @param const TIsiSendC &aIsiMessage: IsiMsg to be build
+        * @param TInt aCurrentMsgOffset
+        * @param TUint8 aNumOfSbInMessage
+        * @return Indicates should the request be sent or not
+        */
+        TBool GetCallDtmfSendReqSubBlockL( const TDesC* aDtmfString,
+                                          TIsiSend &aIsiMessage,
+                                          TUint &aCurrentMsgOffset,
+                                          TUint8 &aNumOfSbInMessage );
+
+        /**
+        * Handles the dtmf status indication message
+        * CIsiMsg* aIsiMsg: The received ISI message
+        * @param CIsiMsg* aIsiMsg , the received message.
+        * @return None
+        */
+        void CallDtmfToneInd( const TIsiReceiveC &aIsiMessage );
+
+
+    private:    // Data
+
+        //Pointer to the PhonetSender
+        CMmPhoNetSender* iPhoNetSender;
+
+        //Pointer to the Message Router
+        CMmMessageRouter* iMessageRouter;
+
+        //To distinguish between string and digit
+        TNOSDtmfType iDtmfType;
+
+        //The Dtmf digit that is active at the moment
+        TUint16 iDtmfDigitSent;
+
+        //buffer for storing DTMF string after 'w' mark in the DTMF string
+        TBuf<KMaxDataBufferSize> iDTMFStringAfterW;
+
+        // Set if DTMF string includes character 'W'
+        TBool iCharWFound;
+
+        // True if DTMF send is already started
+        TBool iDtmfSendOngoing;
+
+    };
+
+#endif // CMMDTMFMESSHANDLER_H
+
+// End of File