adaptationlayer/tsy/simatktsy_dll/inc/satmesshandler.h
changeset 0 63b37f68c1ce
child 5 8ccc39f9d787
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/adaptationlayer/tsy/simatktsy_dll/inc/satmesshandler.h	Fri Nov 06 17:28:23 2009 +0000
@@ -0,0 +1,1300 @@
+/*
+* 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 SATMESSHANDLER_H
+#define SATMESSHANDLER_H
+
+
+// INCLUDES
+#include "cmmphonetreceiver.h"              // mmmmessagereceiver interface
+#include <etelsat.h>                        // etel sat api
+#include <product_profile_definitions.h>    // product profile definitions
+
+
+// CONSTANTS
+// UICC file path max length
+const TUint8 KUiccFilePathLength( 8 );
+// UICC file path length when reading service table
+const TUint8 KUiccFilePathLengthServiceTable( 6 );
+
+// Call Server's maximum address length. Use only with Call Server messages.
+const TUint8 KCallServerMaxAddressLenght( 123 );
+const TInt KAtkPdpCcRespMaxSize( 690 );
+
+// Bitmask for status bit of call control in USIM
+const TUint8 KCallControlBitMaskUsim( 0x20 );
+// Bitmask for status bit of call control in SIM
+const TUint8 KCallControlBitMaskSim( 0x08 );
+// Bitmask for status bit of SMS PP DD in USIM
+const TUint8 KSmsPpDdBitMaskUsim( 0x08 );
+// Bitmask for status bit of SMS PP DD in SIM
+const TUint8 KSmsPpDdBitMaskSim( 0x02 );
+// Bitmask for status bit of MO SMS control in USIM
+const TUint8 KMoSmsControlBitMaskUsim( 0x40 );
+// Bitmask for status bit of MO SMS control in SIM
+const TUint8 KMoSmsControlBitMaskSim( 0x10 );
+// Bitmask for status bit of USSD CC  in SIM
+const TUint8 KMoUssdCallControlBitMaskSim( 0x01 );
+// Unique transaction IDs for UICC messages
+const TUint8 KUiccTrIdCommon( 0xFA );
+const TUint8 KUiccTrIdReadSatIcon( 0xFB );
+const TUint8 KUiccTrIdReadIconClut( 0xF8 );
+const TUint8 KUiccTrIdReadIconInstancePhase1( 0xF7 );
+const TUint8 KUiccTrIdReadIconInstancePhase2( 0xF6 );
+const TUint8 KUiccTrIdServiceTableByte4( 0xFC );
+const TUint8 KUiccTrIdServiceTableByte5( 0xF9 );
+const TUint8 KUiccTrIdServiceTableByte7( 0xFD );
+const TUint8 KUiccTrIdServiceTableByte6( 0xFF );
+
+// PollInterval, PollingOff
+const TUint8 KDefaultPollInterval( 0x00 );
+const TUint8 KMinPollInterval( 0x05 );
+const TUint8 KMaxPollInterval( 0xFF );
+
+const TUint8 KBlackAndWhite( 0x11 ); // Image Coding Scheme
+
+
+
+// FORWARD DECLARATIONS
+class CMmPhoNetSender;
+class CTsySatMessaging;
+class CBerTlv;
+
+// CLASS DECLARATION
+
+/**
+*  SAT message handler class.
+*  Handles message sending and receiving to and from phonet.
+*
+*  @lib simatktsy.lib
+*  @since Series60_ver 2.6
+*/
+class CSatMessHandler : public CBase, public MMmMessageReceiver
+    {
+    public: // Data types
+
+        //Type of SIM card
+        enum TIccType
+            {
+            EIccTypeSim2GGsm,
+            EIccTypeSim3G,
+            EIccTypeSimUnknown
+            };
+
+        //Ss and Ussd status
+        enum TSsStatus
+            {
+            ENotBusy,
+            ESsBusy,
+            EUssdBusy
+            };
+
+        // Location information
+        struct TLocationInfo
+            {
+            TInt            iRegStatus; // Registration status
+            TBuf8<2>        iLac;       // Location Area Code
+            TBuf8<4>        iCellId;
+            TBuf8<3>        iOperatorCode;
+            };
+
+
+    public:     // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        * @param aTsySatMessaging pointer to TsySatMessaging class
+        * @param aPnSend Phonetsender for passing messages to phonet
+        */
+        static CSatMessHandler* NewL( CTsySatMessaging* aTsySatMessaging,
+            CMmPhoNetSender* aPnSend );
+
+        /**
+        * Destructor.
+        */
+        virtual ~CSatMessHandler();
+
+
+    private:    // Constructors
+
+        /**
+        * C++ default constructor.
+        * @param aTsySatMessaging pointer to TsySatMessaging class
+        * @param aPnSend Phonetsender for passing messages to phonet
+        */
+        CSatMessHandler( CTsySatMessaging* aTsySatMessaging,
+            CMmPhoNetSender* aPnSend );
+
+
+    public:     // New methods
+
+        /**
+        * Display text response method.
+        * @since Series60_ver 2.6
+        * @param aTransId Unique transaction ID
+        * @param aCommandDetails command details tlv
+        * @param aGeneralResult result of the proactive command display text
+        * @param aAdditionalInfo Additional info response might give
+        * @return phonet sender status
+        */
+        TInt DisplayTextTerminalResp( TUint8 aTransId, TDes8& aCommandDetails,
+            TUint8 aGeneralResult, TUint8 aAdditionalInfo );
+
+        /**
+        * Get Inkey response method.
+        * @since NCP 3.1
+        * @param aTransId Unique transaction ID
+        * @param aCommandDetails command details tlv
+        * @param aRsp Response packet from Etel
+        * @return phonet sender status
+        */
+        TInt GetInkeyTerminalResp( const TUint8 aTransId,
+            const TDes8& aCommandDetails, const RSat::TGetInkeyRspV2& aRsp );
+
+        /**
+        * Get Input response method.
+        * @since Series60_ver 2.6
+        * @param aTransId Unique transaction ID
+        * @param aCommandDetails Command details tlv
+        * @param aGeneralResult result of the proactive command Get Input
+        * @param aAdditionalInfo Additional info response might give
+        * @param aTextString text string provided by the user
+        * @param aDataCodingScheme data coding scheme for text string
+        * @return phonet sender status
+        */
+        TInt GetInputTerminalResp( TUint8 aTransId, TDes8& aCommandDetails,
+            TUint8 aGeneralResult, TUint8 aAdditionalInfo,
+            TDesC16& aTextString, TUint8 aDataCodingScheme );
+
+        /**
+        * Play Tone response method.
+        * @since Series60_ver 2.6
+        * @param Unique transaction ID
+        * @param aCommandDetails
+        * @param aGeneralResult result of the proactive command
+        * @param aAdditionalInfo Additional info given in some cases
+        * @return phonet sender status
+        */
+        TInt PlayToneTerminalResp( TUint8 aTransId, TDes8& aCommandDetails,
+            TUint8 aGeneralResult, TUint8 aAdditionalInfo );
+
+        /**
+        * Setup Menu response method.
+        * @since Series60_ver 2.6
+        * @param aTransId Unique transaction ID
+        * @param aCommandDetails command details tlv
+        * @param aGeneralResult result of the proactice command Setup Menu
+        * @param aAdditionalInfo Additional info response might give
+        * @return phonet sender status
+        */
+        TInt SetUpMenuTerminalResp( TUint8 aTransId, TDes8& aCommandDetails,
+            TUint8 aGeneralResult, TUint8 aAdditionalInfo );
+
+        /**
+        * Select Item response method.
+        * @since Series60_ver 2.6
+        * @param aTransId Unique transaction ID
+        * @param aCommandDetails command details tlv
+        * @param aGeneralResult result of the proactice command Select Item
+        * @param aAdditionalInfo Additional info response might give
+        * @return phonet sender status
+        */
+        TInt SelectItemTerminalResp( TUint8 aTransId, TDes8& aCommandDetails,
+            TUint8 aGeneralResult, TUint8 aAdditionalInfo );
+
+        /**
+        * Send SM response method.
+        * @since Series60_ver 2.6
+        * @param aPCmdNumber Unique transaction ID
+        * @param aCommandDetails command details tlv
+        * @param aGeneralResult result of the proactice command Send SM
+        * @param aAdditionalInfo Additional info response might give
+        * @return phonet sender status
+        */
+        TInt SendSmTerminalResp( TUint8 aTransId, TDes8& aCommandDetails,
+            TUint8 aGeneralResult, TUint8 aAdditionalInfo );
+
+        /**
+        * Send SS response method.
+        * @since Series60_ver 2.6
+        * @param aTransId Unique transaction ID
+        * @param aCommandDetails Command details TLV
+        * @param aGeneralResult result of the proactive command Send SS
+        * @param aAdditionalInfo Additional info response might give
+        * @return phonet sender status
+        */
+        TInt SendSsTerminalResp( TUint8 aTransId, TDes8& aCommandDetails,
+            TUint8 aGeneralResult, TDesC8& aAdditionalInfo );
+
+        /**
+        * Send DTMF response method.
+        * @since Series60_ver 2.6
+        * @param aTransId Unique transaction ID
+        * @param aPCmdNumber Command number
+        * @param aGeneralResult result of the proactice command Send SS
+        * @param aAdditionalInfo Additional info response might give
+        * @return phonet sender status
+        */
+        TInt SendDtmfTerminalResp( TUint8 aTransId,  TDes8& aCommandDetails,
+            TUint8 aGeneralResult, TUint8 aAdditionalInfo );
+
+        /**
+        * Send USSD response method.
+        * @since Series60_ver 2.6
+        * @param aTransId Unique transaction ID
+        * @param aCommandDetails command details of the PCmd
+        * @param aGeneralResult result of the proactive command Send USSD
+        * @param aAdditionalInfo Additional info the response might give
+        * @param aUssdData Ussd text string, without the DCS byte
+        * @param aUssdCbsDataCodingScheme, DCS byte of the USSD data
+        * @return phonet sender status
+        */
+        TInt SendUssdTerminalResp( TUint8 aTransId,  TDes8& aCommandDetails,
+            TUint8  aGeneralResult, TUint8 aAdditionalInfo,
+            TDes& aUssdData, TUint8 aUssdCbsDataCodingScheme );
+
+        /**
+        * Polling Interval response method
+        * @since Series60_ver 2.8
+        * @param aPCmdNumber Unique transaction ID
+        * @param aCommandDetails command details tlv
+        * @param aGeneralResult result of the proactive command
+        * @param aAdditionalInfo Additional info response might give
+        * @param aNumOfUnits time interval
+        * @return phonet sender status
+        */
+        TInt PollIntervalTerminalResp( TUint8 aTransId, TDes8& aCommandDetails,
+            TUint8 aGeneralResult, TUint8 aAdditionalInfo,
+            TUint8 aNumOfUnits );
+
+        /**
+        * Setup Call response method.
+        * @since Series60_ver 2.6
+        * @param aTransId Unique transaction ID
+        * @param aCommandDetails Command details TLV
+        * @param aGeneralResult result of the proactive command Setup Call
+        * @param aAdditionalInfo Additional info response might give
+        * @return phonet sender status
+        */
+        TInt SetUpCallTerminalResp( TUint8 aTransId, TDes8& aCommandDetails,
+            TUint8 aGeneralResult, TUint8 aAdditionalInfo );
+
+        /**
+        * Refresh response method.
+        * @since Series60_ver 2.6
+        * @param aPCmdNumber Unique transaction ID
+        * @param aGeneralResult result of the proactice command Refresh
+        * @param aAdditionalInfo Additional info response might give
+        * @return phonet sender status
+        */
+        TInt RefreshTerminalResp( TUint8 aTransId, TDes8& aCommandDetails,
+            TUint8 aGeneralResult, TUint8 aAdditionalInfo );
+
+        /**
+        * Menu Selection method.
+        * @since Series60_ver 2.6
+        * @param aTransId Unique transaction ID
+        * @param aItemIdentifier identifier of the selected menu item
+        * @param aHelp help requested by the user indicator
+        * @return phonet sender status
+        */
+        void MenuSelectionInd( TUint8 aTransId, TUint8 aItemIdentifier,
+            TUint8 aHelp );
+
+        /**
+        * Launch Browser terminal response method
+        * @since Series60_ver 2.6
+        * @param aTransId transaction id
+        * @param aPCmdNumber command number
+        * @param aGeneralResult
+        * @param aAdditionalInfo
+        * @param aCmdQualifier
+        * @return phonet sender status
+        */
+        TInt LaunchBrowserTerminalResp( TUint8 aTransId,
+            TDes8& aCommandDetails, TUint8 aGeneralResult,
+            TUint8 aAdditionalInfo );
+
+        /**
+        * Test if a command was performed successfully
+        * @since Series60_ver 2.6
+        * @param aGeneralResult
+        * @return ETrue if command performed successfully, else EFalse
+        */
+        TBool CommandPerformedSuccessfully( TUint8 aGeneralResult );
+
+        /**
+        * SetupIdleModeText Terminal Response
+        * @since Series60_ver 2.6
+        * @param aTransId Unique transaction ID
+        * @param aCommandDetails command details tlv
+        * @param aGeneralResult result of the proactive command display text
+        * @param aAdditionalInfo Additional info response might give
+        * @return phonet sender status
+        */
+        TInt SetUpIdleModeTextTerminalResp( TUint8 aTransId,
+            TDes8& aCommandDetails, TUint8 aGeneralResult,
+            TUint8 aAdditionalInfo );
+
+        /**
+        * SetUpEventList response method.
+        * @since Series60_ver 2.6
+        * @param aTransId Unique transaction ID
+        * @param aCommandDetails command details tlv
+        * @param aGeneralResult result of the proactive command display text
+        * @param aAdditionalInfo Additional info response might give
+        * @return phonet sender status
+        */
+
+        TInt SetUpEventListTerminalResp( TUint8 aTransId,
+            TDes8& aCommandDetails, TUint8 aGeneralResult,
+            TUint8 aAdditionalInfo );
+
+        /**
+        * PollingOff response method.
+        * @since Series60_ver 2.6
+        * @param aPCmdNumber Unique transaction ID
+        * @param aCommandDetails command details tlv
+        * @param aAdditionalInfo Additional info response might give
+        * @return phonet sender status
+        */
+        TInt PollingOffTerminalResp( TUint8 aTransId, TDes8& aCommandDetails,
+            TUint8 aGeneralResult, TUint8 aAdditionalInfo );
+
+        /**
+        * LocalInfo response method.
+        * @since Series60_ver 2.6
+        * @param aTransId Unique transaction ID
+        * @param aCommandDetails Command details TLV
+        * @param aGeneralResult result of the proactice command
+        * @param aAdditionalInfo Additional info response might give
+        * @return phonet sender status
+        */
+        TInt LocalInfoTerminalResp( TUint8 aTransId, TDes8& aCommandDetails,
+            TUint8 aGeneralResult, TDes& aAdditionalInfo );
+
+       /**
+        * Timer management response method.
+        * @since Series60_ver 2.6
+        * @param aTransId Unique transaction ID
+        * @param aCommandDetails Command details TLV
+        * @param aGeneralResult result of the proactive command
+        * @param aTimerValue[3]: timer value in hours, minutes and seconds
+        * @param aTimerId: timer identifier
+        * @param aAdditionalInfo Additional info response might give
+        * @return phonet sender status
+        */
+        TInt TimerMgmtTerminalResp( TUint8 aTransId, TDes8& aCommandDetails,
+            TUint8 aGeneralResult, TUint8 aTimerValue[3], TUint8 aTimerId,
+            TUint8 aAdditionalInfo );
+
+        /**
+        * Timer expiration indication
+        * @since Series60_ver 2.6
+        * @param TUint8 aTransId: Unique transaction ID
+        * @param TUint8 aTimerId: timer identification
+        * @param TUint8 aTimerValue: timer value
+        * @return TInt:
+        */
+        TInt TimerExpirationInd ( TUint8 aTransId, TUint8 aTimerId,
+            TUint8 aTimerValue[3] );
+
+        /**
+        * More time response
+        * @since Series60_ver 2.6
+        * @param aTransId Unique transaction ID
+        * @param aCommandDetails Command details TLV
+        * @param aGeneralResult result of the proactive command
+        * @return phonet sender status
+        */
+        TInt MoreTimeTerminalResp( TUint8 aTransId, TDes8& aCommandDetails,
+            TUint8 aGeneralResult );
+
+        /**
+        * Open Channel response method
+        * @since Series60_ver 3.0
+        * @param aTransId Unique transaction ID
+        * @param aCommandDetails Command details TLV
+        * @param aGeneralResult result of the proactive command
+        * @param aAdditionalInfo Additional info response might give
+        * @param aBearerType
+        * @param aBearer
+        * @param aBufferSize
+        * @return phonet sender status
+        */
+        TInt OpenChannelTerminalResp( TUint8 aTransId, TDes8& aCommandDetails,
+            TUint8 aGeneralResult, TDes8& aAdditionalInfo, TUint8 aBearerType,
+            TDesC8& aBearer, TUint16 aBufferSize );
+
+        /**
+        * Get Channel Status response method.
+        * @since Series60_ver 3.0
+        * @param aTransId Unique transaction ID
+        * @param aCommandDetails Command details TLV
+        * @param aGeneralResult result of the proactice command
+        * @param aAdditionalInfo Additional info response might give
+        * @return phonet sender status
+        */
+        TInt GetChannelStatusTerminalResp( TUint8 aTransId,
+            TDes8& aCommandDetails, TUint8 aGeneralResult,
+            const TDes8& aAdditionalInfo );
+
+        /**
+        * Close Channel response method.
+        * @since Series60_ver 3.0
+        * @param aTransId Unique transaction ID
+        * @param aCommandDetails Command details TLV
+        * @param aGeneralResult result of the proactice command
+        * @param aAdditionalInfo Additional info response might give
+        * @return phonet sender status
+        */
+        TInt CloseChannelTerminalResp( TUint8 aTransId, TDes8& aCommandDetails,
+            TUint8 aGeneralResult, const TDes8& aAdditionalInfo );
+
+        /**
+        * Receive Data response method.
+        * @since Series60_ver 3.0
+        * @param aTransId Unique transaction ID
+        * @param aCommandDetails Command details TLV
+        * @param aGeneralResult result of the proactice command
+        * @param aAdditionalInfo Additional info response might give
+        * @param aChannelDataLength
+        * @return phonet sender status
+        */
+        TInt ReceiveDataTerminalResp( TUint8 aTransId, TDes8& aCommandDetails,
+            TUint8 aGeneralResult, const TDes8& aAdditionalInfo,
+            TUint8 aChannelDataLength );
+
+        /**
+        * Send Data response method.
+        * @since Series60_ver 3.0
+        * @param aTransId Unique transaction ID
+        * @param aCommandDetails Command details TLV
+        * @param aGeneralResult result of the proactice command
+        * @param aAdditionalInfo Additional info response might give
+        * @param aChannelDataLength
+        * @return phonet sender status
+        */
+        TInt SendDataTerminalResp( TUint8 aTransId, TDes8& aCommandDetails,
+            TUint8 aGeneralResult, const TDes8& aAdditionalInfo,
+            TUint8 aChannelDataLength );
+
+        /**
+        * SendTerminalResponse
+        * @since Series60_ver 2.6
+        * @param aCommandDetails Command details TLV
+        * @param aBerTlvSpecificData data to be sent
+        * @return phonet sender status
+        */
+        TInt SendTerminalResponse( const TDes8& aCommandDetails,
+            const TDesC8& aBerTlvSpecificData,
+            const TUint8 aTransId = 0 );
+
+        /**
+        * Sends an empty terminal response to the SIMSON
+        * @param aTransId transaction id / should be same as in REQ
+        * @return phonet sender status
+        */
+        TInt SendEmptyTerminalRsp( const TInt aTransId  );
+
+        /**
+        * send UICC_CAT_REQ
+        * @since Series60_ver 3.0
+        * @param aTransId Transaction id of envelope
+        * @param aBerTlv TLV data of the envelope command
+        * @param aStore Decides wether the provided envelope
+        *  is stored for resending or not.
+        * @return phonet sender status
+        */
+        TInt UiccCatReqEnvelope( TUint8 aTransId, const TDesC8& aBerTlv,
+            TBool aStore = ETrue );
+
+        /**
+        * Send a Sms-Pp report to SMS server, with subblocks
+        * @since Series60_ver 2.6
+        * @param aTransId Unique transaction Id
+        * @param aData data to be appended to the request
+        * @return None
+        */
+        void SendSmsReportReq( TUint8 aTransId, TDesC8& aData );
+
+        /**
+        * Send a request to SMS server
+        * @since Series60_ver 2.6
+        * @param aTransId Unique transaction Id
+        * @param aMsgId Message identifier of the request
+        * @param aData data to be appended to the request
+        * @return None
+        */
+        void SmsResoureConfReq( TUint8 aTransId, TUint8 aMsgId, TDesC8& aData );
+
+        /**
+        * Breaks a INFO_SERIAL_NUMBER_READ_RESP ISI-message
+        * @since Series60_ver 3.0
+        * @param TIsiReceiveC& aIsiMessage response to envelope
+        * @return none
+        */
+        void InfoSerialNumberReadResp( const TIsiReceiveC& aIsiMessage );
+
+        /**
+        * Send NET_NEIGHBOUR_CELLS_REQ message to Phonet.
+        * @since Series60_ver 2.6
+        * @param aTransId a unique transaction id
+        * @param aCellInfoType NET_NEIGHBOUR_CELL_INFO_TYPE
+        * @return TInt: Phonet sender status
+        */
+        TInt NetNeighbourCellsReq( TUint8 aTransId, TUint8 aCellInfoType );
+
+        /**
+        * Breaks a NET_NEIGHBOUR_CELLS_RESP ISI-message
+        * @since Series60_ver 3.0
+        * @param aIsiMessage response to envelope
+        * @return none
+        */
+        void NetNeighbourCellResp( const TIsiReceiveC& aIsiMessage );
+
+        /**
+        * Sends a CALL_MODEM_RESOURCE_REQ ISI-message to modem Call server.
+        * @param sTransId Unique transaction id
+        * @param aMsg ISI message data to be sent
+        * @return TInt: Phonet sender status
+        */
+        TInt CallModemResourceReq( TUint8 aTransId, const TDesC8& aMsg );
+
+        /**
+        * Sends a CALL_MODEM_RESOURCE_CONF_REQ ISI-message to modem Call server
+        * @param aResourceId resource to be controlled
+        * @param aResourceIdMask mask for resource to be controlled
+        * @return TInt: Phonet sender status
+        */
+        TInt CallModemResourceConfReq( TUint16 aResourceId, TUint16 aResourceIdMask );
+
+        /**
+        * Sends a SS_RESOURCE_CONF_REQ ISI-message to modem SS server.
+        * @return TInt: Phonet sender status
+        */
+        TInt SsResourceConfReq();
+
+        /**
+        * Sends a SS_RESOURCE_CONTROL_REQ ISI-message to modem SS server.
+        * @param aTransId Unique transaction id
+        * @param aMsg ISI message data to be sent
+        * @return TInt: Phonet sender status
+        */
+        TInt SsResourceControlReq(
+            TUint8 aTransId,
+            const TDesC8& aMsg
+            );
+
+        /**
+        * Sends a GPDS_RESOURCE_CONF_REQ ISI-message to modem SS server.
+        * @return TInt: Phonet sender status
+        */
+        TInt GpdsResourceConfReq();
+
+        /**
+        * Sends a GPDS_RESOURCE_CONTROL_REQ ISI-message to modem SS server.
+        * @param aTransId Unique transaction id
+        * @param aMsg ISI message data to be sent
+        * @return TInt: Phonet sender status
+        */
+        TInt GpdsResourceControlReq(
+            TUint8 aTransId,
+            const TDesC8& aMsg
+            );
+
+        /**
+        * Set Polling Interval, sending a request to sim server
+        * @since Series60_ver 2.6
+        * @param aTraId Transaction Id
+        * @param aValue in seconds
+        * @return none
+        */
+        void SetPollingInterval( TUint8 aTraId, TUint8 aValue );
+
+        /**
+        * Method to check SIM server response to a refresh request
+        * @since Series60_ver 2.6
+        * @param aStatus SIM server status
+        * @return none
+        */
+        void RefreshResult( TUint8 aStatus );
+
+        /**
+        * Method to check SIM server response to a set polling request
+        * Called by SimAtkRespL
+        * @since Series60_ver 2.6
+        * @param aStatus SIM server status
+        * @param aTransId Transaction Id
+        * @param aInterval obtained from the ISI message of the response
+        * @param None
+        */
+        void SetPollingResult( TUint8 aStatus, TUint8 aTransId,
+            TUint8 aInterval );
+
+        /**
+        * Method to check that proactive command is in correct format.
+        * @since NCP 5.0
+        * @param aIsiMessage
+        * @return KErrNone or KErrCorrupt
+        */
+        TInt CheckProactiveCommand( const TIsiReceiveC& aIsiMessage );
+
+        /**
+        * Send a SMS_CB_ROUTING_REQ ISI-message
+        * @since Series60_ver 2.6
+        * @param aTransId
+        * @param aRoutingCommand
+        * Return value: phonet sender return value
+        */
+        TInt SmsCbRoutingReq( TUint8 aTransId, TUint8 aRoutingCommand );
+
+        /**
+        * Breaks a SMS_CB_ROUTING_RESP ISI-message
+        * @since NCP 3.1
+        * @param aIsiMessage Message from SMS server
+        * Return value: none
+        */
+        void SmsCbRoutingResp( const TIsiReceiveC& aIsiMessage );
+
+        /**
+        * Breaks a SMS_RESOURCE_CONF_IND ISI-message
+        * @since NCP 3.1
+        * @param aIsiMessage Message from SMS server
+        * Return value: none
+        */
+        void SmsResourceConfInd( const TIsiReceiveC& aIsiMessage );
+
+        /**
+        * Creates InfoSerialNumberReadReq ISI message and sends it to Phonet
+        * @since Series60_ver 3.0
+        * @param aTransId: unique transaction id
+        * @param aTarget: requested data
+        * return value TInt : success/failure value
+        */
+        TInt InfoSerialNumberReadReq( TUint8 aTransId, TUint8 aTarget );
+
+        /**
+        * Creates NET_CELL_INFO_GET_REQ ISI message and sends it to Phonet
+        * @param aTransId: unique transaction id
+        * return value TInt: success/failure value
+        */
+        TInt NetCellInfoGetReq( TUint8 aTransId );
+
+        /**
+        * Breaks a NET_CELL_INFO_GET_RESP ISI-message
+        * @param aIsiMessage Net cell info get resp ISI message
+        * Return value: none
+        */
+        void NetCellInfoGetResp( const TIsiReceiveC& aIsiMessage );
+
+        /**
+        * Sends a GSS_CS_SERVICE_REQ isi-message to phonet
+        * @since Series60_ver 2.6
+        * @param aTransId Transaction ID
+        * @param TUint8 aOperation: Gss operation
+        * @retrun TInt: Phonet sender status
+        */
+        TInt GssCsServiceReq( TUint8 aTransId, TUint8 aOperation );
+
+        /**
+        * Breaks a GSS_CS_SERVICE_RESP ISI-message
+        * @since Series60_ver 3.0
+        * @param aIsiMessage ISI message from GSS server
+        * Return value: none
+        */
+        void GssCsServiceResp( const TIsiReceiveC& aIsiMessage );
+
+        /**
+        * Breaks a GSS_CS_SERVICE_FAIL_RESP ISI-message
+        * @since Series60_ver 3.0
+        * @param aIsiMessage ISI message from GSS server
+        * Return value: none
+        */
+        void GssCsServiceFailResp( const TIsiReceiveC& aIsiMessage );
+
+        /**
+        * Language Notification response
+        * @since Series60_ver 2.6
+        * @param aTransId Unique transaction ID
+        * @param aCommandDetails Command details TLV
+        * @param aGeneralResult result of the proactive command
+        * @param aLanguage
+        * @return phonet sender status
+        */
+        TInt LanguageNotificationTerminalResp( TUint8 aTransId,
+            TDes8& aCommandDetails, TUint8 aGeneralResult,
+            TUint8 aAdditionalInfo );
+
+        /**
+        * Breaks a NET_TIME_IND isi-message
+        * @since Series60_ver 3.0
+        * @param aIsiMessage received indication
+        * @return none
+        */
+        void NetTimeInd( const TIsiReceiveC& aIsiMessage );
+
+
+        /**
+        * Sends a NET_RAT_REQ isi-message to phonet
+        * @since Series60_ver 2.6
+        * @param aTransId Transaction ID
+        * @retrun TInt: Phonet sender status
+        */
+        TInt NetRatReq( TUint8 aTransId );
+
+        /*
+        * Breaks a NET_RAT_RESP ISI-message
+        * @since Series60_ver 3.0
+        * @param aIsiMessage Net rat resp ISI message
+        * Return value: none
+        */
+        void NetRatResp( const TIsiReceiveC& aIsiMessage );
+
+        /**
+        * Send a response to SMS server after a SMS resource Indication received from
+        * SMS sever.
+        * This response tells whether the SMS can be sent or not.
+        * @since Series60_ver 2.6
+        * @param aTransId Transaction id, same as in the request
+        * @param aData Data to be sent
+        * @return none
+        */
+        TInt SendSmsResourceReq( TUint8 aTransId, TDesC8& aData,
+            TUint8 aReceiverObject );
+
+        /**
+        * Breaks a SS_STATUS_IND isi-message
+        * @since Series60_ver 3.0
+        * @param TIsiReceiveC& aIsiMessage received indication
+        * @return none
+        */
+        void SsStatusInd( const TIsiReceiveC& aIsiMessage );
+
+        /**
+        * Helper method to find out does the given result require an additional
+        * info byte(s) in terminal response
+        * @param aGeneralResult
+        * @return ETrue if result needs an additional info byte(s), else EFalse
+        */
+        TBool AdditionalInfoNeeded( const TUint8 aGeneralResult );
+
+        /**
+        * Breaks a NET_RAT_IND isi-message
+        * @since Series60_ver 3.0
+        * @param aIsiMessage received indication
+        * @return none
+        */
+        void NetRatInd( const TIsiReceiveC& aIsiMessage );
+
+        /**
+        * Stores Network service status to an internal structure
+        * @param aIsiMessage NetCellInfoInd or NetCellInfoGetResp
+        * @return none
+        */
+        void StoreNetServiceStatus( const TIsiReceiveC& aIsiMessage );
+
+        /**
+        * Getter for location information
+        * @since NCP 5.0
+        * @return Location Information structure
+        */
+        const TLocationInfo& LocationInfo();
+
+        /**
+        * Sends a INFO_PP_READ_REQ isi-message to phonet
+        * @since NCP 5.0
+        * @param aReqType Product profile feature being requested
+        * @retrun TInt: Phonet sender status
+        */
+        TInt InfoPpReadReq( const TUint8 aReqType );
+
+        /**
+        * Breaks a INFO_PP_READ_RESP isi-message
+        * @since Series60_ver 5.0
+        * @param aIsiMessage received indication
+        * @return none
+        */
+        void InfoPpReadResp( const TIsiReceiveC& aIsiMessage );
+
+        /**
+        * Validates lengths of simple tlv objects inside BER TLV
+        * object
+        * @param berTlv BER TLV object
+        * @retrun TInt: Validation status
+        */
+        TInt CheckTlvObjects( CBerTlv& berTlv );
+
+        /**
+        * Activate or DeActivate MO SMS Control on SMS Server according to SIM
+        * Server Response
+        * @param MO SM control status in SIM card
+        * @return none
+        */
+        void SimMoSmsControlAvail( TUint8 aStatus );
+
+        /**
+        * Send UICC_CAT_REQ(UICC_SB_TERMINAL_PROFILE) ISI message
+        * @return none
+        */
+        void UiccTerminalProfileReq();
+
+        /**
+        * Send UICC_APPL_CMD_REQ ISI message for reading data
+        * from service table of UICC
+        * @param aTrId Transaction ID
+        * @param aFileOffset Offset of service table to be read
+        * @return Error code
+        */
+        TInt UiccReadServiceTableReq( TUint8 aTrId, TUint16 aFileOffset );
+
+        /**
+        * Send UICC_APPL_CMD_REQ ISI message for reading data
+        * from EF img
+        * @param aRecordNumber Record number
+        * @param aFileOffset File Offset
+        * @param aDataAmount Data amount
+        * @param aTrId Transaction ID
+        * @return Error code
+        */
+        TInt UiccReadSatIconReq(
+            TUint8 aRecordNumber,
+            TUint8 aFileOffset,
+            TUint8 aDataAmount,
+            TUint8 aTrId );
+
+        /**
+        * Send UICC_APPL_CMD_REQ ISI message for reading image instance
+        * @param aFileId File ID
+        * @return Error code
+        */
+        TInt UiccReadSatIconInstanceReq( TUint16 aFileId );
+
+        /**
+        * Send UICC_CAT_REQ ISI message
+        * @param aCommand Command
+        * @return Error code
+        */
+        TInt UiccCatReq( TUint8 aCommand );
+
+        /**
+        * Send UICC_CAT_REQ ISI message for refresh command
+        * @param aTransId Transaction ID
+        * @param aServiceType Service type
+        * @param aFileList File list
+        * @param aAid Application ID
+        * @return Error code
+        */
+        TInt UiccCatReqRefresh(
+            const TUint8 aTransId,
+            const TUint8 aServiceType,
+            TDes8& aFileList,
+            const TDesC8& aAid );
+
+        /**
+        * Send UICC_CAT_REQ ISI message for terminal response
+        * @param aCommandDetails Command details
+        * @param aBerTlvSpecificData BER-TLV data
+        * @param aTransId Transaction ID
+        * @return Error code
+        */
+        TInt UiccCatReqTerminalResponse(
+            const TDes8& aCommandDetails,
+            const TDesC8& aBerTlvSpecificData,
+            const TUint8 aTransId = 0 );
+
+        /**
+        * Handle UICC_CAT_RESP ISI message for envelope response
+        * @param aIsiMessage Received ISI message
+        * @return Information about handling of the message
+        */
+        TBool UiccCatRespEnvelope( const TIsiReceiveC& aIsiMessage );
+
+        /**
+        * Handle UICC_CAT_RESP ISI message for terminal response
+        * @param aIsiMessage Received ISI message
+        * @return Information about handling of the message
+        */
+        TBool UiccCatRespTerminalResponse( const TIsiReceiveC& aIsiMessage );
+
+        /**
+        * Get application file ID
+        * @return Application file ID
+        */
+        const TDesC8& GetApplicationFileId();
+
+        /**
+        * Set status of iSatReady flag
+        * @param aSatReadyStatus SAT status
+        * @return None
+        */
+        void SetSatReadyStatus( TBool aSatReadyStatus );
+
+        /**
+        * Get status of iSatReady flag
+        * @return SAT status
+        */
+        TBool GetSatReadyStatus();
+
+        /**
+        * Get status of iTerminalProfileSent flag
+        * @return Terminal profile status
+        */
+        TBool GetTerminalProfileStatus();
+
+        /**
+        * Get clut data
+        * @return Clut data
+        */
+        const TDesC8& GetClut();
+
+    public: // Inline functions
+
+        /**
+        * Returns time zone information received from network.
+        * @since NCP 5.0
+        * @param none
+        * @return TUint8 Time zone
+        */
+        inline TUint8 TimeZone() const;
+
+        /**
+        * Method to check if IMEI is successfully received
+        * @since NCP 5.0
+        * @return ETrue if IMEI is known, otherwise EFalse
+        * @param None
+        */
+        inline TBool ImeiAvailable() const;
+
+        /**
+        * Method to check Location information status
+        * @since NCP 5.0
+        * @return ETrue or EFalse
+        * @param None
+        */
+        inline TBool ServiceAvailable() const;
+
+        /**
+        * Get Polling off status
+        * @since NCP 5.0
+        * @return Return ETrue if Polling is set off,
+        * and false after a polling interval pcmd
+        */
+        inline TBool PollingOff() const;
+
+        /**
+        * Set Polling off status
+        * @since NCP 5.0
+        * @param aPollingOff true after a Polling Off,
+        * and false after a polling interval pcmd
+        * @return none
+        */
+        inline void SetPollingOff( const TBool aPollingOff );
+
+        /**
+        * Get Ss status
+        * @since NCP 5.0
+        * @return status indicating if Ss or Ussd transaction ongoing
+        */
+        inline TSsStatus SsStatus() const;
+
+        /**
+        * Get current access technology
+        * @since NCP 5.1
+        * @return current access technology
+        */
+        inline TUint8 CurrentAccessTechnology() const;
+
+#ifdef INFO_PP_ENHANCED_NETWORK_SELECTION
+        /**
+        * Get current status of INFO_PP_ENHANCED_NETWORK_SELECTION PP flag
+        * @return current status of INFO_PP_ENHANCED_NETWORK_SELECTION PP flag
+        */
+        inline TBool EnsSupported() const;
+#endif
+
+        /**
+        * Get Old Polling interval status
+        * @return Return ETrue if Old Polling is set on,
+        * and EFalse otherwise
+        */
+        inline TBool OldPollInterval() const;
+
+    public: // Functions from MMmMessageReceiver-interface
+
+        /**
+        * Called by phonet receiver when an ISI message has
+        * been received
+        * @since Series60_ver 3.0
+        * @param aIsiMessage The received ISI message
+        * @return none
+        */
+        virtual void ReceiveMessageL( const TIsiReceiveC& aIsiMessage );
+
+        /**
+        * Handles errors which comes come from PhoNetReceiver RunError
+        * @param aIsiMessage The received ISI message
+        * @param aError Error code
+        * @return none
+        */
+        virtual void HandleError( const TIsiReceiveC& /*aIsiMessage*/,
+            TInt /*aErrorCode*/ );
+
+
+    private:    // Constructors
+
+        /**
+        * Copy constructor, usage not allowed
+        * @param Satmesshandler reference
+        */
+        CSatMessHandler( const CSatMessHandler& aRhs );
+
+        /**
+        * Assignment operator, usage not allowed
+        * @param Satmesshandler reference
+        * @return aRhs SatMessHandler reference
+        */
+        CSatMessHandler& operator = ( const CSatMessHandler& aRhs );
+
+        /**
+        * Constructor method for sat message handler.
+        */
+        void ConstructL();
+
+
+    private:    // New methods
+
+        /**
+        * Handles the Net server related messages
+        * @since Series60_ver 3.0
+        * @param aIsiMessage Isi message from net server
+        * @return none
+        */
+        void NetServerMessageReceived( const TIsiReceiveC& aIsiMessage );
+
+        /**
+        * Handles the Phone Info server related messages
+        * @since Series60_ver 3.0
+        * @param aIsiMsg proactive command
+        * @return none
+        */
+        void PhoneInfoMessageReceived( const TIsiReceiveC& aIsiMessage );
+
+        /**
+        * Handles the UICC server related messages
+        * @param aIsiMessage received ISI message
+        * @return Information about handling of response
+        */
+        TBool UiccServerMessageReceived( const TIsiReceiveC& aIsiMessage );
+
+        /**
+        * Handles the Sms server related messages
+        * @since NCP 3.1
+        * @param aIsiMessage Message from SMS server
+        * @return none
+        */
+        void SmsServerMessageReceived( const TIsiReceiveC& aIsiMessage );
+
+        /**
+        * Handles the Ss server related messages
+        * @since Series60_ver 3.0
+        * @param aIsiMsg proactive command
+        * @return none
+        */
+        void SsServerMessageReceived( const TIsiReceiveC& aIsiMessage );
+
+        /**
+        * Handles the GSM Stack server related messages
+        * @since Series60_ver 3.0
+        * @param aIsiMessage ISI message from GSS server
+        * @return none
+        */
+        void GsmStackServerMessageReceived( const TIsiReceiveC& aIsiMessage );
+
+        /**
+        * Handles proactive procedures, i.e Call Control, Data Download,
+        * Event Download and MO-SMS Control related messages
+        * @since NCP 3.1
+        * @param aIsiMessage received ISI message
+        * @return none
+        */
+        void ProactiveProcedureMessageReceivedL(
+            const TIsiReceiveC& aIsiMessage );
+
+        /**
+        * Sends a PN_ATK message with the data given as parameter
+        * @since NCP 5.1
+        * @param aReceiverObject: Receiver object ID
+        * @param aTransactionId: Message Transaction ID
+        * @param aMessageId: Message identifier
+        * @param aData: Message data to be sent
+        * @return Error/Success value from sending the message
+        */
+        TInt CSatMessHandler::SendPnAtkMessage( const TUint8 aReceiverObject,
+            const TUint8 aTransactionId, const TInt aMessageId,
+            const TDesC8& aData );
+
+        /**
+        * Breaks UICC_APPL_CMD_RESP ISI message
+        * @param aReceiverObject: Receiver object ID
+        * @return None
+        */
+        void UiccApplCmdResp( const TIsiReceiveC& aIsiMessage );
+
+        /**
+        * Breaks a UICC_CAT_IND ISI-message
+        * @param aIsiMessage Received ISI message
+        * @return None
+        */
+        void UiccCatInd( const TIsiReceiveC& aIsiMessage );
+
+    private: // Data
+
+        // Pointer to SAT messaging object
+        CTsySatMessaging*   iTsySatMessaging;
+
+        // Pointer to Phonet Sender
+        CMmPhoNetSender*    iPnSend;
+
+        // Storage for terminal resp transaction id.
+        TInt                iTerminalRespTraId;
+
+        // Save the SimReadField transaction id used by GetIcon.
+        TInt                iGetIconSimReadFieldTraId;
+
+        // Save the SimReadField transaction id used by DataDownload.
+        TInt                iDataDownloadSimReadFieldTraId;
+
+        // Variable for storing card id
+        TUint8              iCardId;
+
+        // For storing IMEI code.
+        TBuf8<16>           iIMEI;
+
+        // For storing NMR
+        TBuf8<16>           iNMR;
+
+        // For storing BCCH channel list
+        TBuf<32>            iBCCHChannelList;
+
+        // For checking if IMEI code has been received
+        TBool               iSerialNumberReadReceived;
+
+        // Stores the state of SMS CB routing request
+        TBool               iSmsCbRoutingComplete;
+
+        // Refresh proactive command is currently active flag.
+        TBool               iRefreshRequestIsOn;
+
+        // Variable for storing Timing Advance
+        TUint8              iTimingAdvance;
+
+        // Variable for storing Timing advance Status
+        TUint8              iTaStatus;
+
+        // Time zone information from Network. 0xFF if not received.
+        TUint8              iTimeZone;
+
+        // SIM Server's object Id
+        TUint8              iSimServerObjectId;
+
+        // Variable for storing Current Access Technology
+        TUint8              iCurrentAccTech;
+
+        // Flag is true after a Polling Off, and false after a polling
+        // interval pcmd
+        TBool               iPollingOff;
+
+        // status indicating if Ss or Ussd transaction ongoing
+        TSsStatus           iSsStatus;
+
+        // Flag is set true if requested Poll Interval
+        // is longer than KMaxLegacyPollInterval
+        TBool               iLongPollIntervalReq;
+
+        // Location Information
+        TLocationInfo       iLocInfo;
+
+        // UTRAN Measurement results
+        TPtrC8              iUtranNMR;
+
+#ifdef INFO_PP_ATK_MO_SM_CONTROL
+        // Boolean to check if MO SMS control is supported in product profile
+        TBool               iMoSmsSupportedInPp;
+#endif // INFO_PP_ATK_MO_SM_CONTROL
+
+        // For storing transaction id in product profile queries. Used only
+        // with INFO_PP_ATK_MO_SM_CONTROL, but there can be several
+        // simultaneous PP queries ongoing
+        TUint8              iInfoPpMoSmsTraId;
+
+#ifdef INFO_PP_ENHANCED_NETWORK_SELECTION
+        // Boolean to hold status of INFO_PP_ENHANCED_NETWORK_SELECTION in
+        // product profile
+        TBool               iEnsSupportedInPp;
+
+        // Boolean to check if TR for SET UP EVENT LIST has been sent
+        TBool               iSetUpEventListTrSent;
+#endif // INFO_PP_ENHANCED_NETWORK_SELECTION
+
+        // Previous registration status
+        TUint8              iPreviousRegistrationStatus;
+
+        // Boolean to check if  OLD_POLL_INTERVAL control is supported in product profile
+        TBool               iOldPollIntervalSupportedInPp;
+
+        // To store Subscription no
+        TUint8              iSmsCbSubscriptionNo;
+
+        // To store SAT server status
+        TBool               iSatReady;
+
+        // To store status of terminal profile
+        TBool               iTerminalProfileSent;
+
+        // To store card type
+        TUint8              iCardType;
+
+        // To store application ID
+        TUint8              iApplicationId;
+
+        // Application file ID
+        TBuf8<2>            iApplFileId;
+
+        // To store UICC client ID
+        TUint8              iUiccClientId;
+
+        // Polling interval
+        TUint8              iPollingInterval;
+
+        // Image coding scheme
+        TUint8              iImageCodingScheme;
+
+        // Number of clut in image instance data
+        TInt                iNumberOfClut;
+
+        // Clut data
+        TPtrC8              iClutData;
+
+    };
+#include "satmesshandler.inl"
+
+#endif    // SATMESSHANDLER_H
+
+// End of File