--- /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