adaptationlayer/tsy/nokiatsy_dll/inc/cmmcallmesshandler.h
changeset 0 63b37f68c1ce
child 5 8ccc39f9d787
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/adaptationlayer/tsy/nokiatsy_dll/inc/cmmcallmesshandler.h	Fri Nov 06 17:28:23 2009 +0000
@@ -0,0 +1,843 @@
+/*
+* Copyright (c) 2007-2009 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 CMMCALLMESSAGEHANDLER_H
+#define CMMCALLMESSAGEHANDLER_H
+
+// INCLUDES
+#include "mmmmesshandlerbase.h"
+#include "cmmphonetreceiver.h"
+#include "nokiatsy_internal_variation.h"
+#include <e32base.h>
+#include <etelmm.h>
+#include <tisi.h>
+#include <ctsy/rmmcustomapi.h>
+#include <ctsy/pluginapi/cmmdatapackage.h>
+
+// CONSTANTS
+// Maximum length of UUS sub block
+// (defined in call server specification)
+const TInt KUserToUserSbMaxLength = 248;
+
+// Maximum length of telephony number
+// (defined in call server specification)
+const TInt KTelephonyNumberMaxLength = 123;
+
+// Maximum length of ISA address sub block
+// (defined in call server specification)
+const TInt KAddressSubBlockMaxLength = 252;
+
+// Hard-coded transaction id for ISI messages
+const TUint8 KCallTransId = 1;
+
+// Constant for not allocated Symbian call ID
+const TInt KSymbianCallIdNone = -1;
+
+// Maximum length of destination post address
+const TInt KDestPostAddressMaxLength = 15;
+
+// Bit mask costants
+const TUint8 KMaskBits1to3 = 0x07;
+const TUint8 KMaskBits1to4 = 0x0F;
+const TUint8 KMaskBits5to7 = 0x70;
+const TUint8 KMaskBits6to7 = 0x60;
+const TUint8 KMaskBits1to7 = 0x7F;
+const TUint8 KMaskBit8 = 0x80;
+
+// MACROS
+//  None
+
+// DATA TYPES
+//  None
+
+// FUNCTION PROTOTYPES
+//  None
+
+// FORWARD DECLARATIONS
+class CMmPhoneTsy;
+class CMmPhoNetSender;
+class CMmDataPortHandler;
+class CMmDtmfMessHandler;
+class CMmMessageRouter;
+
+// CLASS DECLARATION
+
+/**
+* CEmergencyTimer: Used for delaying emergency call when PDP context deactivate
+* is ongoing
+*/
+class CEmergencyTimer : public CTimer
+{
+    class CMmCallMessHandler& iCallMsgHandler;
+
+public:
+
+    /**
+    * Constructor
+    */
+    CEmergencyTimer( CMmCallMessHandler& aCallMsgHandler );
+
+    /**
+    * Destructor.
+    */
+    ~CEmergencyTimer();
+
+    /**
+    * 2nd phase constructor.
+    */
+    void ConstructL();
+
+    /**
+    * From CActive.
+    * Called when timer elapses.
+    */
+    void RunL();
+
+    /**
+    * Start emergency delay timer
+    */
+    void StartEmergencyTimer();
+
+    /**
+    * Stop emergency delay timer
+    */
+    void StopEmergencyTimer();
+};
+
+// CLASS DECLARATION
+
+/**
+*  Call related ISI message handler
+*  Used for creating and sending call ISI messages to
+*  PhoNet via PhoNetSender. It also receives call
+*  ISI messages from PhoNetReceiver.
+*  @lib (unknown)
+*  @since Series S60 2.6
+*/
+class CMmCallMessHandler : public CBase,
+    public MMmMessHandlerBase, public MMmMessageReceiver
+    {
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        * @param aPhoNetSender Pointer to the phonet sender
+        * @param aPhoNetReceiver Pointer to the phonet receiver
+        * @param aDtmfMessHandler Pointer to the DTMF message handler
+        * @param aMessageRouter Pointer to the message router
+        * @return Pointer to the call message handler
+        */
+        static CMmCallMessHandler* NewL(
+            CMmPhoNetSender* aPhoNetSender,
+            CMmPhoNetReceiver* aPhoNetReceiver,
+            CMmDtmfMessHandler* aDtmfMessHandler,
+            CMmMessageRouter* aMessageRouter );
+
+        /**
+        * Destructor.
+        */
+        ~CMmCallMessHandler();
+
+    public: // New functions
+
+        /**
+        * Checks if the received message should be handled by the
+        * call message handler
+        * @param aIsiMessage Reference to the received ISI message.
+        * @return void
+        */
+        void ReceiveMessageL( const TIsiReceiveC &aIsiMessage );
+
+        /**
+        * Handles errors comes from PhoNetReceiver RunError
+        * @param TIsiReceiveC& The received ISI message
+        * @param aError Error code
+        * @return void
+        */
+        void HandleError( const TIsiReceiveC&, TInt aError );
+
+        /**
+        * Initialize Dataport
+        * @return void
+        */
+        void InitializeDataportL();
+
+    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
+        * @param aDataPackage datapackage from CommonTSY
+        * @return KErrNone or error code
+        */
+        TInt ExtFuncL( TInt aIpc, const CMmDataPackage* aDataPackage );
+
+
+    protected:  // New functions
+        // None
+
+    protected:  // Functions from base classes
+        // None
+
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        CMmCallMessHandler();
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL();
+
+        /**
+        * Creates CALL_CREATE_REQ ISI message and sends it to Phonet.
+        * @return KErrNone or error code
+        */
+        TInt CallCreateReq();
+
+        /**
+        * Breaks received CALL_CREATE_RESP ISI message.
+        * @param aIsiMessage Reference to the received message.
+        * @return void
+        */
+        void CallCreateResp( const TIsiReceiveC &aIsiMessage );
+
+        /**
+        * Creates CALL_CREATE_REQ ISI message for emergency calls.
+        * @param aCallReq Reference to the message to be sent.
+        * @return void
+        */
+        void EmergencyCallCreateReq( TIsiSend* aCallReq );
+
+        /**
+        * Breaks received CALL_ANSWER_RESP ISI message.
+        * @param aIsiMessage Reference to the received message.
+        * @return void
+        */
+        void CallAnswerResp( const TIsiReceiveC &aIsiMessage );
+
+        /**
+        * Creates CALL_RELEASE_REQ ISI message and sends it to PhonetSender.
+        * @param aCallReq Reference to the message to be sent
+        * @param aDataPackage Input data from the Symbian OS layer
+        * @return void
+        */
+        void CallReleaseReq(
+            TIsiSend* aCallReq,
+            const CCallDataPackage* aDataPackage );
+
+        /**
+        * Breaks received CALL_RELEASE_RESP ISI message.
+        * @param aIsiMessage Reference to the received message.
+        * @return void
+        */
+        void CallReleaseResp( const TIsiReceiveC &aIsiMessage );
+
+        /**
+        * Breaks received CALL_RELEASE_IND ISI message.
+        * @param aIsiMessage Reference to the received message.
+        * @return void
+        */
+        void CallReleaseInd( const TIsiReceiveC &aIsiMessage );
+
+        /**
+        * Breaks CALL_TERMINATED_IND ISI message.
+        * @param aIsiMessage Reference to the received message.
+        * @return void
+        */
+        void CallTerminatedInd( const TIsiReceiveC &aIsiMessage );
+
+        /**
+        * Breaks received CALL_COMING_IND ISI message.
+        * @param aIsiMessage Reference to the received message.
+        * @return void
+        */
+        void CallComingInd( const TIsiReceiveC &aIsiMessage );
+
+        /**
+        * Creates call control request (holding a call etc.) ISI
+        * message and sends it to PhonetSender.
+        * @param aCallReq Reference to the message to be sent
+        * @param aIpc IPC number of the request
+        * @return void
+        */
+        void CallControlReq( TIsiSend* aCallReq, TInt aIpc ) const;
+
+        /**
+        * Breaks received CALL_CONTROL_RESP ISI message.
+        * @param aIsiMessage Reference to the received message.
+        * @return void
+        */
+        void CallControlResp( const TIsiReceiveC &aIsiMessage ) const;
+
+        /**
+        * Breaks received CALL_CONTROL_IND ISI message.
+        * @param aIsiMessage Reference to the received message.
+        * @return void
+        */
+        void CallControlInd( const TIsiReceiveC &aIsiMessage ) const;
+
+        /**
+        * Creates and sends call property set request to PhonetSender
+        * @param aCallReq Reference to the message to be sent
+        * @param aDataPackage Input data from the Symbian OS layer
+        * @return void
+        */
+        void CallPropertySetReq(
+            TIsiSend* aCallReq,
+            const CCallDataPackage* aDataPackage );
+
+        /**
+        * Breaks received CALL_PROPERTY_SET_RESP ISI message.
+        * @param aIsiMessage Reference to the received message.
+        * @return void
+        */
+        void CallPropertySetResp( const TIsiReceiveC &aIsiMessage );
+
+        /**
+        * Breaks received call status indication ISI message.
+        * @param aIsiMessage Reference to the received message.
+        * @return void
+        */
+        void CallStatusIndL( const TIsiReceiveC &aIsiMessage );
+
+        /**
+        * Breaks received call GSM notification indication
+        * @param aIsiMessage Reference to the received message.
+        * @return void
+        */
+        void CallGsmNotificationInd( const TIsiReceiveC &aIsiMessage );
+
+        /**
+        * Resets all fields of incoming mobile call info.
+        * @param aIncomingCallInfo Reference to the mobile call info info
+        */
+        void ResetIncomingCallInfo(
+            RMobileCall::TMobileCallInfoV1& aIncomingCallInfo ) const;
+
+
+        /**
+        * Creates sub block for CALL_CREATE_REQ
+        * @param aMode Mode of the call to be dialed (voice, csd, etc.)
+        * @param aTelNumber Phone number to be called
+        * @param aIdRestrict Caller id restriction
+        * @param aCallIsiMsg Call IsiMsg
+        * @param numOfSbInMsg Number of subblocks
+        * @param aCurrentMsgOffset Current msg offset
+        * @return void
+        */
+        void GetCallCreateReqSubBlock(
+            TUint8 aMode,
+            const TDesC16& aTelNumber,
+            RMobileCall::TMobileCallIdRestriction aIdRestrict,
+            TIsiSend& aCallIsiMsg,
+            TUint8& numOfSbInMsg,
+            TInt &aCurrentMsgOffset );
+
+        /**
+        * Constructs SAT sub blocks for CALL_CREATE_REQ ISI message.
+        * @param aSubAddress Called party sub address
+        * @param aBearer Bearer capability sub address
+        * @param aCallIsiMsg Call IsiMsg
+        * @param aNumOfSbInMsg Number of subblocks
+        * @param aCurrentMsgOffset Current msg offset
+        * @return void
+        */
+#if ( NCP_COMMON_S60_VERSION_SUPPORT >= S60_VERSION_50 )
+        void GetSatOriginatedSubBlocks(
+            TIsiSend& aCallIsiMsg,
+            TUint8& aNumOfSbInMsg,
+            TInt& aCurrentMsgOffset ) const;
+#else
+        void GetSatOriginatedSubBlocks(
+            const TBuf<KSubAddressSize>& aSubAddress,
+            TBuf8<KBearerCapabilitySize>& aBearer,
+            TIsiSend& aCallIsiMsg,
+            TUint8& aNumOfSbInMsg,
+            TInt& aCurrentMsgOffset ) const;
+#endif
+
+        /**
+        * Maps ISI call status to Symbian OS call status
+        * @param aCallStatus ISI call status
+        * @return Symbian OS call status
+        */
+        RMobileCall::TMobileCallStatus MapCallStatus( TUint8 aCallStatus );
+
+        /**
+        * Maps ISI call mode to Symbian OS call mode
+        * @param aMobileCallInfo Call info
+        * @param aIsiCallMode ISI call mode
+        * @return void
+        */
+        void FillModeData(
+            RMobileCall::TMobileCallInfoV1& aMobileCallInfo,
+            TUint8 aIsiCallMode ) const;
+
+        /**
+        * Maps ISI values to Symbian OS numbering plan and number type
+        * @param aMobileCallInfo Call info
+        * @param aOrigAddressType ISI originated address type value
+        * @return void
+        */
+        void FillNumberPlanAndType(
+            RMobileCall::TMobileCallInfoV1& aMobileCallInfo,
+            TUint aOrigAddressType ) const;
+
+        /**
+        * Maps ISI values to Symbian OS remote party status and number
+        * @param aMobileCallInfo Call info
+        * @param aOrigPresentInd ISI presentation information value
+        * @param aOrigAddress ISI call origination address
+        * @param aMobileCallDirection ISI call direction value
+        * @return void
+        */
+        void FillRemoteStatusAndNumber(
+            RMobileCall::TMobileCallInfoV1& aMobileCallInfo,
+            TUint8 aOrigPresentInd,
+            const TDes16& aOrigAddress,
+            RMobileCall::TMobileCallDirection aMobileCallDirection) const;
+
+        /**
+        * Maps ISI values to calling name
+        * @param aMobileCallInfo Call info
+        * @param aOrigInfoPresentInd ISI presentation information value
+        * @param aOrigInfoName ISI call origination name
+        * @param aOrigInfoNumberSource ISI call origination information source
+        * @return void
+        */
+        void FillCallingName(
+            RMobileCall::TMobileCallInfoV1& aMobileCallInfo,
+            TUint8 aOrigInfoPresentInd,
+            const TDes16& aOrigInfoName ) const;
+
+        /**
+        * Breaks received CallServiceDeniedInd ISI message.
+        * @param aIsiMessage Reference to the received message.
+        * @return void
+        */
+        void CallServiceDeniedInd( const TIsiReceiveC &aIsiMessage );
+
+
+        /**
+        * Checks call ISA status
+        * @param aMobileCallInfo.
+        * @param aCallStatusISA
+        * @return void
+        */
+        void CheckCallIsaStatus(
+            RMobileCall::TMobileCallInfoV1& aMobileCallInfo,
+            TUint8 aCallStatusISA );
+
+        /**
+        * Read all address destination
+        * @param aMobileCallInfo Call info
+        * @param aTargetOrig Target origin
+        * @param aIsiMessage Received ISI message
+        * @param aSbStartOffSet Subblock start offset
+        * @return void
+        */
+        void ReadAllAddressDestination(
+            RMobileCall::TMobileCallInfoV1& aMobileCallInfo,
+            TBuf16<RMobilePhone::KMaxMobileTelNumberSize>& aTargetOrig,
+            const TIsiReceiveC &aIsiMessage,
+            TUint& aSbStartOffSet,
+            TUint8 origPresentInd);
+
+        /**
+        * Read origin call info
+        * @param aMobileCallInfo Call info
+        * @param aTargetOrigName Target origin name
+        * @param aIsiMessage Received ISI message
+        * @param aSbStartOffSet Subblock start offset
+        * @return void
+        */
+        void ReadCallInfo(
+            RMobileCall::TMobileCallInfoV1& aMobileCallInfo,
+            TBuf16<RMobileCall::KCallingNameSize>& aTargetOrigName,
+            const TIsiReceiveC &aIsiMessage,
+            TUint& aSbStartOffSet );
+
+        /**
+        * Complete incoming call notification
+        * @param aMobileCallInfo Call info
+        * @param aStatusETel ETel status
+        * @return void
+        */
+        void CompleteIncomingCallNotif(
+            RMobileCall::TMobileCallInfoV1& aMobileCallInfo,
+            RMobileCall::TMobileCallStatus& aStatusETel );
+
+        /**
+        * Complete Mobile Call and Info Change
+        * @param aMobileCallInfo Call info
+        * @param aStatusETel ETel status
+        * @param aResultEtel ETel result
+        * @return void
+        */
+        void CompleteMobileCallInfoAndStatusChange(
+            RMobileCall::TMobileCallInfoV1& aMobileCallInfo,
+            RMobileCall::TMobileCallStatus& aStatusETel,
+            TInt aResultETel );
+
+        /**
+        * Maps ISI values to Symbian OS cause of no cli
+        * @param aMobileCallInfo Call info
+        * @param aCauseOfNoCli Cause of no cli
+        * @return void
+        */
+        void FillCauseOfNoCli(
+            RMobileCall::TMobileCallInfoV1& aMobileCallInfo,
+            TUint8 aCauseOfNoCli );
+
+        /**
+        * Activates user to user signaling service.
+        * @param aDataPackage Packed UUS data
+        * @return KErrNone or error value.
+        */
+        TInt ActivateUUS(
+            const CMmDataPackage* aDataPackage );
+
+        /**
+        * Creates product profile request, in order to read
+        * if HSDPA is disabled in PP.
+        * @return void
+        */
+        void InfoPpDataReadReq();
+
+        /**
+        * Breaks received INFO_PP_DATA_READ_RESP ISI message.
+        * @param aIsiMessage Reference to the received message.
+        * @return void None
+        */
+        void InfoPpDataReadResp( const TIsiReceiveC &aIsiMessage );
+
+        /**
+        * Creates GPDS_CONTEXTS_CLEAR request, in order to end
+        * all data connections.
+        * @return void
+        */
+        void GpdsContextsClearReq();
+
+        /**
+        * Breaks received GPDS_CONTEXTS_CLEAR_RESP ISI message,
+        * and proceeds with emergency call dialling.
+        * @return void None
+        */
+        void GpdsContextsClearResp();
+
+        /**
+        * Breaks received CSD_VIDEO_CALL_STATUS_IND  ISI message.
+        * @param aIsiMessage Reference to the received message.
+        * @return void
+        */
+        void CsdVideoCallStatusInd( const TIsiReceiveC &aIsiMessage );
+
+        /**
+        * Breaks received CSD_MULTIMEDIA_DATA_RATE_IND ISI message.
+        * @param aIsiMessage Reference to the received message.
+        * @return void
+        */
+        void CsdMultimediaDataRateInd( const TIsiReceiveC &aIsiMessage );
+
+        /**
+        * Creates subblocks for CSD_CALL_CONTROL_REQ 
+        * @param aTelNumber Phone number to be called
+        * @param aIdRestrict Caller id restriction
+        * @param aCsdIsiMsg CSD IsiMsg
+        * @param numOfSbInMsg Number of subblocks
+        * @param aCurrentMsgOffset Current msg offset
+        * @return void
+        */
+        void GetCSDCallControlReqSubBlock(
+            const TDesC16& aTelNumber,
+            RMobileCall::TMobileCallIdRestriction aIdRestrict,
+            TIsiSend& aCsdIsiMsg,
+            TUint8& aNumOfSbInMsg,
+            TInt& aCurrentMsgOffset );
+
+        /**
+        * Creates CSD_CALL_CONTROL_REQ ISI message and sends it to PhonetSender.
+        * @param aCallOperId Call Operation ID
+        * @return TInt : KErrNone or error code
+        */
+        TInt CsdCallControlReq( TUint8 aCallOperId );
+
+        /**
+        * Breaks received CSD_CALL_CONTROL_RESP ISI message.
+        * @param aIsiMessage Reference to the received message.
+        * @return void
+        */
+        void CsdCallControlResp( const TIsiReceiveC &aIsiMessage );
+
+        /**
+        * Dial data call.
+        * @param CDataDataPackage* aCallDataPackage: call data package
+        * @param TInt aIPC: EEtelCallDial or EMobileCallDialNoFdnCheck
+        * @return TInt : KErrNone or error code
+        */
+        TInt DialDataCall( const CCallDataPackage* aCallDataPackage );
+
+        /**
+        * Answer incoming data call.
+        * @param CDataDataPackage* aCallDataPackage: call data package
+        * @return TInt KErrNone or error code
+        */
+        TInt AnswerIncomingDataCall( const CCallDataPackage* aCallDataPackage );
+
+        /**
+        * Hangs up the call
+        * @param TInt aCallId: call id
+        * @return TInt KErrNone or error code
+        */
+        TInt HangUp( const TInt aCallId );
+
+        /**
+        * Updates DialDataCall mobile call info.
+        * @param TMobileCallInfoV1& aMobileCallInfo: Mobile call info
+        * @param TBool aIsMultimedia: Is call mutimedia/video
+        */
+
+        void SetMobileCallInfo(
+            const RMobileCall::TMobileCallInfoV1& aMobileCallInfo,
+            const TBool aIsMultimedia = EFalse,
+            const TBool aIsWaitingCall = EFalse );
+
+        /**
+        * Creates PnsPipeCreateReq ISI message and sends it to Phonet.
+        * @param aPipeStateAfter: pipe state
+		* @return error value: Symbian error code
+        */
+        TInt PnsPipeCreateReq( const TUint8 aPipeStateAfter ) const;
+
+        /**
+        * Creates PnsPipeEnableReq ISI message and sends it to Phonet.
+		* @return error value: Symbian error code
+        */
+        TInt PnsPipeEnableReq() const;
+
+        /**
+        * Creates PnsPipeResetReq ISI message and sends it to Phonet.
+        * @param aStateAfterReset: pipe state after reset
+		* @return error value: Symbian error code
+        */
+        TInt PnsPipeResetReq( const TUint8 aStateAfterReset );
+
+        /**
+        * Creates PnsPipeRemoveReq ISI message and sends it to Phonet.
+		* @return error value: Symbian error code
+        */
+        TInt PnsPipeRemoveReq();
+
+        /**
+        * Creates PnsPipeRedirectReq ISI message and sends it to Phonet.
+		* @return error value: Symbian error code
+        */
+        TInt PnsPipeRedirectReq();
+
+        /**
+        * PnsPipeCreate response. 
+        * @param aIsiMessage, reference to the received message.
+        * @return void
+        */
+        void PnsPipeCreateResp( const TIsiReceiveC &aIsiMessage );
+
+        /**
+        * PnsPipeEnable response.
+        * @param aIsiMessage, reference to the received message.
+        * @return void
+        */
+        void PnsPipeEnableResp( const TIsiReceiveC& aIsiMessage );
+
+        /**
+        * PnsPipeReset response. 
+        * @param aIsiMessage, reference to the received message.
+        * @return void
+        */
+        void PnsPipeResetResp( const TIsiReceiveC& aIsiMessage );
+
+        /**
+        * PnsPipeRemove response. 
+        * @param aIsiMessage, reference to the received message.
+        * @return void
+        */
+        void PnsPipeRemoveResp( const TIsiReceiveC& aIsiMessage );
+
+        /**
+        * PnsPipeRedirect response. 
+        * @param aIsiMessage, reference to the received message.
+        * @return void
+        */
+        void PnsPipeRedirectResp( const TIsiReceiveC& aIsiMessage );
+
+    public:     // Data
+        // None
+
+    protected:  // Data
+        // None
+
+    private:    // Data
+
+        // Pointer to the phonet sender
+        CMmPhoNetSender* iPhoNetSender;
+
+        // Pointer to the message router
+        CMmMessageRouter* iMessageRouter;
+
+        // Pointer to the DTMF message handler
+        CMmDtmfMessHandler* iDtmfMessHandler;
+
+        // Call releasing value, which is sent in call release request
+        TUint8 iReleaseCauseValueSent;
+
+        // Call mode of the latest requested call
+        TUint8 iCallMode;
+
+        // Call diagnostic resolution value between CALL_RELEASE_IND and
+        // CALL_STATUS_IND handling
+        TUint8 iDiagnosticOctet;
+
+        // Call release cause value from CALL_TERMINATED_IND / KCallGsmMmCause
+        TInt iGsmMmCauseError;
+
+        // Flag for inband information
+        TBool iDisconnectingWithInband;
+
+        // Temporary call info required for incoming calls. The life cycle is
+        // - In CALL_COMING_IND, call id and remote address are saved
+        // - In CALL_GSM_NOTIFICATION_IND, iForwarded is saved (if applicable)
+        // - In CALL_STATUS_IND, the saved information is read
+        // - Reset in CALL_STATUS_IND (either if call is ringing, ISA status
+        //   MtAlerting, or released by remote party before answering, ISA
+        //   status MtRelease) or in CALL_RELEASE_REQ (MO release).
+        RMobileCall::TMobileCallInfoV1 iIncomingCallInfo;
+
+        // User to user data
+        RMobileCall::TMobileCallUUSRequestV1 iUusData;
+
+        // Buffer for received UUS data
+        RMobileCall::TMobileCallUUI iReceivedUusData;
+
+        // Variable to store call ID of waiting call for checking that
+        // it is not notified again when it gets ringing.
+        TInt iWaitingCall;
+
+        // Subaddress required by dial phase 2
+        TBuf<KSubAddressSize> iSubAddress;
+
+        // Bearer required by dial phase 2
+        TBuf8<KBearerCapabilitySize> iBearer;
+
+        // Telephone number required by dial phase 2
+        TBuf<RMobilePhone::KMaxMobileTelNumberSize> iTelNumber;
+
+        // Emergency number
+        TBuf<RMobilePhone::KMaxMobileTelNumberSize> iTelEmergNumber;
+
+        // Call restriction info required by dial phase 2
+        RMobileCall::TMobileCallIdRestriction iIdRestrict;
+
+        // Flag for FDN error handling
+        TBool iFDNErrorAlredyNotified;
+
+        // Pointer to the dataport handler
+        CMmDataPortHandler* iDataPortHandler;
+
+        // Flag which notifies if it is a 3rd party client
+        // (ETrue) or not (EFalse)
+        TBool iIs3rdPartyDial;
+
+        // Flag which notifies if it is a 3rd party client
+        // (ETrue) or not (EFalse)
+        TBool iIs3rdPartyAnswerIncomingCall;
+
+        // Destination post address, max lenght is 123
+        TBuf16<123> iDestPostAddress;
+
+        // Variable to store and identify call ID for DTMF post address sending
+        TUint8 iDtmfPostAddressCallId;
+
+        // True if CALL_CREATE_REQ includes CALL_DESTINATION_POST_ADDRESS
+        // subblock
+        TBool iDestPostAddressIncluded;
+
+        // ETrue when NoFdnCall request is active
+        TBool iNoFdnDial;
+
+        // To block FDN check in SIM originated calls. Doesn't block call
+        // control procedure
+        TBool iNoFdnCheck;
+
+        // ETrue if HSPDA is forced off in product profile.
+        // Modified in startup only.
+        TBool iHSDPADisabledInPp;
+
+        // ETrue while an emergency call setup is delayed,
+        // i.e. while GPDS contexts are being closed.
+        TBool iEmergCallDelayed;
+
+		// Video call connected or disconnected
+        TUint8 iVideoCallStatus;
+        
+		// bearer rate for multimedia call
+        TUint8 iDataRateCode;
+        
+        // Call direction
+        RMobileCall:: TMobileCallDirection iCallDirection;
+
+        // Mobile call info
+        RMobileCall::TMobileCallInfoV1 iMobileCallInfo;
+        
+        // Is call multimedia/video call
+        TBool iIsMultimedia;
+
+        // Is current call a waiting call
+        TBool iIsWaitingCall;
+
+        // Pipe handle for video/multimediacall
+        TUint8 iPipeHandle;
+
+        TUint8 iSecondPepDeviceId; 
+        TUint8 iSecondPepObjectId;
+        
+        // Call Operation ID
+        TUint8 iCallOperationID;
+
+        // Video call mt released
+        TBool iVideoCallMtReleased;
+
+    public:     // Friend classes
+        // None
+    protected:  // Friend classes
+        // Nnone
+    private:    // Friend classes
+
+        // Emergency call delay timer
+        friend class CEmergencyTimer;
+        CEmergencyTimer iEmergencyTimer;
+
+    };
+
+#endif      // CMMCALLMESSHANDLER_H
+
+// End of file