--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/adaptationlayer/tsy/nokiatsy_dll/inc/cmmcustommesshandler.h Fri Nov 06 17:28:23 2009 +0000
@@ -0,0 +1,1469 @@
+/*
+* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+
+#ifndef _CMMCUSTOMMESSHANDLER_H
+#define _CMMCUSTOMMESSHANDLER_H
+
+// INCLUDES
+#include "mmmmesshandlerbase.h"
+#include "cmmphonetreceiver.h"
+#include "muiccoperationbase.h"
+#include "cmmuiccmesshandler.h"
+
+// for internal testing
+#include "nokiatsy_internal_variation.h"
+
+#include <ctsy/rmmcustomapi.h>
+
+// CONSTANTS
+
+// Length of Sim info isi msg buffer
+const TUint8 KSimInfoBufferSize = 20;
+
+// Time related constants
+const TUint16 KSecsInHour = 3600;
+const TUint8 KMinsInHour = 60;
+
+// Length if Gss Cs isi msg buffer
+const TUint8 KGssCsBufferSize = 6;
+
+// Call property buffer size
+const TUint8 KCallPropBuffSize = 4;
+
+// Value for information which value is not needed.
+const TUint8 KZero = 0x00;
+// Default length for product profile reading request
+const TUint8 KDefaultPPlength = 0x01;
+
+// Max length of network proveder name
+const TUint8 KNwProviderNameLength = 0x19;
+// Constants for remote address length
+const TUint8 KRemoteAddressBcdSize = 18;
+const TUint8 KRemoteAddressAsciiSize = 34;
+const TUint8 KRemoteAddressConversionSize = 36;
+
+// SS Request Complete Notifivation SS Status
+const TUint8 KCustomApiSsGsmActive = 0x01;
+const TUint8 KCustomApiSsGsmRegistered = 0x02;
+const TUint8 KCustomApiSsGsmProvisioned = 0x04;
+const TUint8 KCustomApiSsGsmQuiescent = 0x08;
+
+const TUint8 KinfoPpTwoDigitDial = 0x0F;
+
+//value for information which value is two
+const TUint8 KTwo = 0x02;
+
+//value for information which value is three
+const TUint8 KThree = 0x03;
+
+//value for information which value is four
+const TUint8 KFour = 0x04;
+
+//value for information which value is six
+const TUint8 KSix = 0x06;
+
+const TUint8 KCustomPadding = 0x00; //Padding byte
+
+// Call Life Timer Constants
+const TUint8 KCallLifeTimerDataAmount = 0x04;
+const TInt KCallLifeTimerNotSet = -1;
+const TUint8 KPmmGroupNokiaTsySize = 100;
+
+// Maximum number of re-trials when requesting data from PMM.
+const TUint8 KMaxPMMReadRequests = 0x03;
+
+// These constants are needed for Viag Home Zone
+const TUint8 KLengthOfSMSCNumber = 15;
+const TUint8 KLengthOfSCPNumber = 15;
+const TUint8 KLengthOfHzCzTag = 13;
+const TUint8 KHomeZoneActiveBit = 0x01;
+const TUint8 KCityZoneActiveBit = 0x02;
+
+const TUint8 KSimNumberOfCbMsgIds = 15;
+const TUint KUnusedCbMsgId = 0xffff;
+
+// MACROS
+ //None
+
+// DATA TYPES
+ //None
+
+// EXTERNAL DATA STRUCTURES
+ //None
+
+// FUNCTION PROTOTYPES
+ //None
+
+// FORWARD DECLARATIONS
+class CMmSecurityMessHandler;
+class CMmNetMessHandler;
+class CMmPhoNetSender;
+class TIsiReceiveC;
+class CMmMessageRouter;
+class CMmUiccMessHandler;
+
+// CLASS DECLARATION
+
+/**
+* CMmCustomMessHandler is used to create and send GSM specific
+* custom ISI messages to PhoNet via PhoNetSender.
+*/
+class CMmCustomMessHandler :
+ public CBase,
+ public MMmMessHandlerBase,
+ public MMmMessageReceiver,
+ public MUiccOperationBase
+ {
+
+ public:
+
+ // Used for saving the ciphering information.
+ struct TCiphListEntry
+ {
+ TBool iCiphStatus;
+ TUint8 iTraId;
+ };
+
+ // Used for saving the enhanced cell information.
+ class TECIDInfo
+ {
+ public: // data
+ RMmCustomAPI::TMmCellInfo iCellInfo; // Cell Information
+ TUint iMCC; // Mobile Country Code
+ TUint iMNC; // Mobile Network Code
+ TUint iCID; // Location area code
+ TUint iLAC; // Cell identity
+ };
+
+ // This enumeration is needed because different Product Profile
+ // requests can be made using the same INFO_PP_READ_REQ/RESP
+ // messages. Used as a transaction ID.
+ enum TProductProfileRequestType
+ {
+ EGetAlsPPSupport = 0,
+ ECheckTwoDigitDialSupport
+ };
+
+ // This enumeration is needed because a SIM_READ_CI_RESP can come
+ // as a response to a GetCipheringInfo-request, or triggered by
+ // a NET_CIPHERING_IND indication which makes the same request.
+ // Used as a transaction ID.
+ enum TCipheringInfoRequestType
+ {
+ EGetCipheringInfo = 0,
+ ENotifyCipheringInfo
+ };
+
+ // The SIM operations are grouped into the following types.
+ // Used as ISA transaction IDs.
+ enum TSIMOperationType
+ {
+ ESIMOperationTypeReadSimTopics = 0,
+ ESIMOperationTypeDeleteSimTopic
+ };
+
+ enum TUiccSapIfStatus
+ {
+ EUiccSapIfStatus1 = 1,
+ EUiccSapIfStatus2,
+ EUiccSapIfStatus3
+ };
+
+ public: // Constructors and destructor
+
+ /**
+ * Creates a new GSM specific MessageHandler object instance.
+ * @param aPhoNetSender: a pointer to a Phonet Sender object
+ * @param aPhoNetReceiver:
+ * @param aNetMessHandler: a pointer to the Net message handler
+ * @param aSecurityMessHandler: a pointer to the security mess handler
+ * @param aMessageRouter: a pointer to the message router
+ * @return void
+ */
+ static CMmCustomMessHandler* NewL(
+ CMmPhoNetSender* aPhoNetSender,
+ CMmPhoNetReceiver* aPhoNetReceiver,
+ CMmNetMessHandler* aNetMessHandler,
+ CMmSecurityMessHandler* aSecurityMessHandler,
+ CMmMessageRouter* aMessageRouter,
+ CMmUiccMessHandler* aUiccMessHandler);
+
+ /**
+ * Destructor.
+ * @return void
+ */
+ ~CMmCustomMessHandler();
+
+ public: // New Functions
+
+ /**
+ * Creates CallReleaseReq ISI message and sends it to Phonet.
+ * @param TUint8 aTransactionId: unique transaction id
+ * @param TUint8 aCallId: Call ID of this call (NOS Call ID)
+ * @param TUint8 aCause: cause of releasing
+ * @return TInt: success/failure value
+ */
+ TInt CallReleaseReq(
+ TUint8 aTransactionId,
+ TUint8 aCallId,
+ TUint8 aCause );
+
+ /**
+ * Breaks received CallReleaseResp ISI message.
+ * @param const TIsiReceiveC& aIsiMsg: The received ISI message
+ * @return void : None
+ */
+ void CallReleaseResp( const TIsiReceiveC& aIsiMsg );
+
+ /**
+ * MO alert indication, used for Remote Alerting Tone in Custom TSY
+ * @param const TIsiReceiveC& aIsiMsg: The received ISI message
+ * @return TInt: void : None
+ */
+ void CallMoAlertInd( const TIsiReceiveC& aIsiMsg );
+
+ /**
+ * Creates a NET_CS_WAKEUP_REQ ISI message and sends it to Phonet
+ * @param TUint8 aTransId: transaction Id
+ * @return TInt: success/failure value
+ */
+ TInt NetCsWakeupReq( TUint8 aTransId );
+
+ /**
+ * Breaks received NET_CS_WAKEUP_RESP ISI message
+ * @param None
+ * @return void : None
+ */
+ void NetCsWakeupResp();
+
+ /**
+ * Breaks received NET_CIPHERING_IND ISI message
+ * @param TIsiReceiveC& aIsiMsg: The received ISI message
+ * @return void : None
+ */
+ void NetCipheringInd( const TIsiReceiveC& aIsiMsg );
+
+ /**
+ * Breaks received NET_MODEM_REG_STATUS_IND ISI message
+ * @param TIsiReceiveC& aIsiMsg: The received ISI message
+ * @return void : None
+ */
+ void NetModemRegStatusInd( const TIsiReceiveC& aIsiMsg );
+
+
+ /**
+ * Read dynamic flags 2
+ * @return void
+ */
+ TInt UiccReadDynamic2FlagsReq();
+
+ /**
+ * Read dynamic flags 2 response
+ * @param aStatus Status
+ * @param aFileData File data
+ * @return void
+ */
+ void UiccReadDynamic2FlagsResp(
+ TInt aStatus,
+ const TDesC8& aFileData );
+
+ /**
+ * Write dynamic flags 2
+ * @param aInfo Flags 2 data
+ * @return void
+ */
+ TInt UiccWriteDynamic2FlagsReq( TUint8 aInfo );
+
+ /**
+ * Write dynamic flags 2 response
+ * @param aInfo Flags 2 data
+ * @return void
+ */
+ void UiccWriteDynamic2FlagsResp( TInt aStatus );
+
+ /**
+ * Breaks received CALL_TERMINATE_IND ISI messages
+ * @param const TIsiReceiveC& aIsiMsg: The received ISI message
+ * @return void : None
+ */
+ void CallTerminateInd( const TIsiReceiveC& aIsiMsg );
+
+ /**
+ * Breaks received CALL_RELEASE_IND ISI messages
+ * @param const TIsiReceiveC& aIsiMsg: The received ISI message
+ * @return void : None
+ */
+ void CallReleaseInd( const TIsiReceiveC& aIsiMsg );
+
+ /**
+ * Creates a INFO_PP_READ_REQ ISI messages and sends it to phone
+ * @param TProductProfileRequestType aReqType: request type (used
+ * as transaction id)
+ * @return void : KErrNone / Error value from phonet
+ */
+ TInt InfoPpReadReq( TProductProfileRequestType aReqType );
+
+ /**
+ * Breaks a INFO_PP_READ_RESP message
+ * @param CIsiMsg* aIsiMsg: The received ISI message
+ * @return void : None
+ */
+ void InfoPpReadResp( const TIsiReceiveC& aIsiMessage );
+
+ /**
+ * Creates a CALL_GSM_BLACKLIST_CLEAR_REQ ISI message and sends it to
+ * Phonet
+ * @param TUint8 aTransId: transaction Id
+ * @return TInt : KErrNone or error code
+ */
+ TInt CallGsmBlackListClearReq( TUint8 aTransId );
+
+ /**
+ * Breaks received CALL_GSM_BLACKLIST_CLEAR_RESP ISI message
+ * @return void : None
+ */
+ void CallGsmBlackListClearResp();
+
+ /**
+ * Breaks received SS_SERVICE_COMPLETED_IND ISI message
+ * @param const TIsiReceiveC& aIsiMessage: The received ISI message
+ * @return void : None
+ */
+ void SsServiceCompletedInd ( const TIsiReceiveC& aIsiMessage );
+
+ /**
+ * Creates a CALL_EMERGENCY_NBR_CHECK_REQ ISI messages and sends it to
+ * phonet
+ * @param TUint8 aTransId: Transaction Id
+ * @param TMobileTelNumber&: telnumber
+ * @param TCheckMode aCheckMode; check mode
+ * @return TInt : KErrNone / Error value from phonet
+ */
+ TInt CallEmergencyNbrCheckReq( TUint8 aTransId,
+ RMmCustomAPI::TMobileTelNumber& aNumber,
+ RMmCustomAPI::TCheckMode aCheckMode );
+
+ /**
+ * Breaks a CALL_EMERGENCY_NBR_CHECK_RESP message
+ * @param const TIsiReceiveC& aIsiMsg: The received ISI message
+ * @return void : None
+ */
+ void CallEmergencyNbrCheckResp( const TIsiReceiveC& aIsiMsg );
+
+ /**
+ * Creates a SS_GSM_USSD_SEND_REQ ISI messages and sends it to IsaApi
+ * @param TUint8 aTransId: Transaction Id
+ * @return TInt : KErrNone / Error value from IsaApi
+ */
+ TInt SsGsmUssdSendReq( TUint8 aTransId );
+
+ /**
+ * Forwards a execution of SS_CANCEL_USSD_SEND_RESP message
+ * @param const TIsiReceiveC& aIsiMessage: The received ISI message
+ * @return void : None
+ */
+ void SsGsmUssdSendResp( const TIsiReceiveC& aIsiMessage );
+
+ /**
+ * Construct a NET_MODEM_REG_STATUS_GET_REQ ISI message and send
+ * it through phonet.
+ * @param TUint8 aTransId: Transaction Id
+ * @return TInt: KErrNone / Error value from phonet
+ */
+ TInt NetModemRegStatusGetReq( TUint8 aTransId );
+
+ /**
+ * Construct a NET_SET_REQ message and send it through phonet.
+ * @param TUint8 aTransId: Transaction Id
+ * @return TInt: KErrNone / Error value from phonet
+ */
+ TInt NetSetReq( TUint8 aTransId );
+ /**
+ * Handles SsRequestComplete response ISI message
+ * @return void : None
+ */
+ void SsRequestComplete();
+
+ /**
+ * Read field from SIM/USIM
+ * @param aSimFileInfo File info
+ * @return Error code
+ */
+ TInt UiccReadFieldReq( RMmCustomAPI::TSimFileInfo& aSimFileInfo );
+
+ /**
+ * Response to read field request
+ * @param aStatus Status
+ * @param aFileData File data
+ * @return void
+ */
+ void UiccReadFieldResp( TInt aStatus, const TDesC8& aFileData );
+
+ /**
+ * Read ciphering indicator status from SIM/USIM
+ * @param aTrId Transaction ID
+ * @return Error code
+ */
+ TInt UiccReadCiReq( TInt aTrId );
+
+ /**
+ * Response to read CI request
+ * @param aStatus Status
+ * @param aTrId Transaction ID
+ * @param aFileData File data
+ * @return void
+ */
+ void UiccReadCiResp(
+ TInt aStatus,
+ TInt aTrId,
+ const TDesC8& aFileData );
+
+ /**
+ * Read operator name from SIM/USIM
+ * @return Error code
+ */
+ TInt UiccOperatorReq();
+
+ /**
+ * Response to read operator name request
+ * @param aStatus Status
+ * @param aFileData File data
+ * @return none
+ */
+ void UiccOperatorResp( TInt aStatus, const TDesC8& aFileData );
+
+ /**
+ * Disconnects UICC server from smartcard and
+ * activates UICC SAP APDU interface
+ * @return Error code
+ */
+ TInt UiccSimPowerOffReq();
+
+ /**
+ * Handles responses to SIM power off
+ * @param aStatus Status
+ * @return none
+ */
+ void UiccSimPowerOffResp( TInt aStatus );
+
+ /**
+ * Requests SIM warm reset
+ * @return Error code
+ */
+ TInt UiccSimWarmResetReq();
+
+ /**
+ * Response to SIM warm reset
+ * @param aStatus Status
+ * @return none
+ */
+ void UiccSimWarmResetResp( TInt aStatus );
+
+ /**
+ * Requests Get ATR
+ * @return Error code
+ */
+ TInt UiccSimGetAtrReq();
+
+ /**
+ * Handles responses to SIM Get ATR
+ * @param aStatus Status
+ * @param aFileData File data
+ * @return none
+ */
+ void UiccSimGetAtrResp( TInt aStatus, const TDesC8& aFileData );
+
+ /**
+ * Connects UICC server to smartcard and
+ * deactivates UICC SAP APDU interface
+ * @return Error code
+ */
+ TInt UiccSimPowerOnReq();
+
+ /**
+ * Handles responses to SIM power off
+ * @param aStatus Status
+ * @return none
+ */
+ void UiccSimPowerOnResp( TInt aStatus );
+
+ /**
+ * Sends APDU to UICC
+ * @param aApduParameters APDU parameters
+ * @param aTraId transaction id
+ * @return Error code
+ */
+ TInt UiccSendAPDUReq(
+ const RMmCustomAPI::TApduParameters& aApduParameters,
+ TInt aTraId );
+
+ /**
+ * Handles responses to UICC_APDU_RESP
+ * @param aStatus Status
+ * @param aFileData File data
+ * @param aTraId transaction id
+ * @return none
+ */
+ void UiccSendAPDUResp(
+ TInt aStatus,
+ const TDesC8& aFileData,
+ TInt aTraId );
+
+ /**
+ * Sends UICC_CARD_REQ
+ * @return Error code
+ */
+ TInt UiccCardReaderStatusReq();
+
+ /**
+ * Handles responses for Card Reader Status req
+ * @param aStatus Status
+ * @param aFileData File data
+ * @return none
+ */
+ void UiccCardReaderStatusResp( TInt aStatus, const TDesC8& aFileData );
+
+ /**
+ * Handles UICC_CARD_IND
+ * @param aIsiMessage Received ISI message
+ * @return void
+ */
+ void UiccCardInd( const TIsiReceiveC& aIsiMessage );
+
+ /**
+ * Read CB message IDs from UICC
+ * @param aTraId Transaction identification
+ * @return Error code
+ */
+ TInt UiccReadCbMsgIdsReq( TUiccTrId aTrId );
+
+ /**
+ * Response to read CB message IDs from UICC
+ * @param aStatus Status
+ * @param aTraId Transaction ID
+ * @param aFileData File data
+ * @return void
+ */
+ void UiccReadCbMsgIdsResp(
+ TInt aStatus,
+ TInt aTraId,
+ const TDesC8& aFileData );
+
+ /**
+ * Response to delete CB message ID request
+ * @param aStatus Status
+ * @return void
+ */
+ void UiccDeleteCbMsgIdResp( TInt aStatus );
+
+ /**
+ * Read home zone parameters from UICC
+ * @return Error code
+ */
+ TInt UiccReadViagHomeZoneParametersReq();
+
+ /**
+ * Response read home zone parameters request
+ * @param aStatus Status
+ * @param aFileData File data
+ * @return void
+ */
+ void UiccReadViagHomeZoneParametersResp(
+ TInt aStatus,
+ const TDesC8& aFileData );
+
+ /**
+ * Read home zone cache from UICC
+ * @params aRecordId Record identifier
+ * @return Error code
+ */
+ TInt UiccReadViagHomeZoneCacheReq(
+ const RMmCustomAPI::TViagCacheRecordId& aRecordId );
+
+ /**
+ * Response to read home zone cache request
+ * @param aStatus Status
+ * @param aFileData File data
+ * @return void
+ */
+ void UiccReadViagHomeZoneCacheResp(
+ TInt aStatus,
+ const TDesC8& aFileData );
+
+ /**
+ * Request to write home zone settings
+ * @param aUhziuiSettings UHZIUI settings
+ * @return void
+ */
+ TInt UiccWriteViagHomeZoneUhziueSettingsReq(
+ const RMmCustomAPI::TViagUHZIUESettings& aUhziuiSettings );
+
+ /**
+ * Response to write home zone settings
+ * @param aStatus Status
+ * @return void
+ */
+ void UiccWriteViagHomeZoneUhziueSettingsResp( TInt aStatus );
+
+ /**
+ * Write Viag Home Zone cache from UICC
+ * @params aRecordId Record identifier
+ * @params aViagRecordContent Record content
+ * @return error code
+ */
+ TInt UiccWriteViagHomeZoneCacheReq(
+ const RMmCustomAPI::TViagCacheRecordId& aRecordId,
+ const RMmCustomAPI::TViagCacheRecordContent& aViagRecordContent );
+
+ /**
+ * Response Write Viag Home Zone cache request
+ * @param aStatus Status
+ * @return void
+ */
+ void UiccWriteViagHomeZoneCacheResp( TInt aStatus );
+
+ public: // Functions from base classes
+
+ /**
+ * ISI message for CustomMessageHandler received
+ * @param const TIsiReceiveC& aIsiMessage: reference to received ISI message
+ */
+ void ReceiveMessageL( const TIsiReceiveC& aIsiMessage );
+
+ /**
+ * Handles errors comes from PhoNetReceiver RunError
+ * @param TIsiReceiveC& aIsiMessage: reference to received ISI message
+ * @param TInt aError: Error code
+ */
+ void HandleError( const TIsiReceiveC& aIsiMessage, TInt aError );
+
+ /**
+ * From MMmMessHandlerBase. This method is the single entry point for
+ * requests coming from the Symbian OS layer to this message handler
+ * @since ?Series60_version
+ * @param aIpc IPC number of the request
+ * @return TInt KErrNone or error code
+ */
+ TInt ExtFuncL( TInt aIpc, const CMmDataPackage* aDataPackage );
+
+ /**
+ * Handle UICC response messages
+ * @param aTraId Transaction ID
+ * @param aFileData Descriptor for file data
+ * @return KErrNone or error code
+ */
+ TInt ProcessUiccMsg(
+ TInt aTraId,
+ TInt aStatus,
+ const TDesC8& aFileData );
+
+ protected: // New functions
+ //None
+
+ protected: // Functions from base classes
+ //None
+
+ private:
+
+ /**
+ * C++ default constructor.
+ * @return void
+ */
+ CMmCustomMessHandler();
+
+ /**
+ * Initialises object attributes.
+ * By default Symbian 2nd phase constructor is private.
+ * @return void
+ */
+ void ConstructL();
+
+ /**
+ * Breaks a CALL_GSM_NOTIFICATION_IND ISI-message.
+ * @param const TIsiReceiveC& aIsiMsg: Received ISI message
+ * @return None
+ */
+ void CallGsmNotificationInd( const TIsiReceiveC& aIsiMsg );
+
+ /**
+ * Handles Forwarding data from a CALL_GSM_NOTIFICATION_IND
+ * @param TUint16 aSsCode,
+ * @param const TIsiReceiveC& aIsiMsg,
+ * @param RMmCustomAPI::TSsTypeAndMode& aSsTypeAndMode
+ * @return None
+ */
+ void HandleForwarding(
+ TUint16 aSsCode,
+ const TIsiReceiveC& aIsiMsg,
+ RMmCustomAPI::TSsTypeAndMode& aSsTypeAndMode ) const;
+
+ /**
+ * Handles Barring data from a CALL_GSM_NOTIFICATION_IND
+ * @param TUint16 aSsCode,
+ * @param const TIsiReceiveC& aIsiMsg,
+ * @param RMmCustomAPI::TSsTypeAndMode& aSsTypeAndMode
+ * @return None
+ */
+ void HandleBarring(
+ TUint16 aSsCode,
+ const TIsiReceiveC& aIsiMsg,
+ RMmCustomAPI::TSsTypeAndMode& aSsTypeAndMode ) const;
+
+ /**
+ * Match function for making finds in the Ciphering list
+ * @param TCiphListEntry& aArg1: first argument for match
+ * @param TCiphListEntry& aArg2: secnd argument for the match
+ * @return TBool: if both arguments match
+ */
+ static TBool Match(
+ const TCiphListEntry& aArg1,
+ const TCiphListEntry& aArg2 );
+
+ /**
+ * Breaks received NET_MODEM_REG_STATUS_GET_RESP ISI message
+ * @param TIsiReceiveC& aIsiMsg: The received ISI message
+ * @return void : None
+ */
+ void NetModemRegStatusGetResp( const TIsiReceiveC& aIsiMsg );
+
+ /**
+ * Breaks received NET_SET_RESP ISI message
+ * @param TIsiReceiveC& aIsiMsg: The received ISI message
+ * @return void : None
+ */
+ void NetSetResp( const TIsiReceiveC& aIsiMsg );
+
+ /**
+ * Breaks received SS_SERVICE_FAILED_RESP ISI message
+ * @param const TIsiReceiveC& aIsiMessage: The received ISI message
+ * @return void : None
+ */
+ void SsServiceFailedResp( const TIsiReceiveC& aIsiMessage );
+
+ /**
+ * Construct a NET_RAT_REQ message and send it through phonet.
+ * @param TUint8 aTransId: Transaction Id
+ * @param TBool aCurrentRats: Use Current RAT setting
+ * @return TInt: KErrNone / Error value from phonet
+ */
+ TInt NetRatReq( TUint8 aTransId, TBool aCurrentRats );
+
+ /**
+ * Breaks received NET_RAT_RESP ISI message
+ * @param TIsiReceiveC& aIsiMsg: The received ISI message
+ * @return void : None
+ */
+ void NetRatResp( const TIsiReceiveC& aIsiMsg );
+
+ /**
+ * Construct a GSS_CS_SERVICE_REQ message and send it through phonet.
+ * @param TUint8 aTransId: Transaction Id
+ * @param RMmCustomAPI::TNetworkModeCaps: System network mode to set.
+ * @return TInt: KErrNone / Error value from phonet
+ */
+ TInt GssCsServiceReq(
+ TUint8 aTransId,
+ RMmCustomAPI::TNetworkModeCaps aNetworkModeCaps );
+
+ /**
+ * Breaks received GSS_CS_SERVICE_RESP ISI message
+ * @param const TIsiReceiveC& aIsiMessage: The received ISI message
+ * @return void : None
+ */
+ void GssCsServiceResp( const TIsiReceiveC& aIsiMessage );
+
+ /**
+ * Breaks received GSS_CS_SERVICE_FAIL_RESP ISI message
+ * @param const TIsiReceiveC& aIsiMessage: The received ISI message
+ * @return void : None
+ */
+ void GssCsServiceFailResp( const TIsiReceiveC& aIsiMessage );
+
+ /**
+ * MtcRat Query
+ * @param TUInt8 aTransId: Transaction Id
+ * @return TInt : result
+ */
+#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING
+ // Removed for Bridge camp!
+ TInt MtcRatQueryReq( TUint8 aTransId );
+#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */
+
+ /**
+ * MtcRat Query Response
+ * @param TIsiReceiveC& aIsiMessage: ISI message
+ * @return void : None
+ */
+#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING
+ // Removed for Bridge camp!
+ void MtcRatQueryResp( const TIsiReceiveC& aIsiMessage );
+#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */
+
+ /**
+ * Handles the ReadViagHomeZoneParamsResp response message.
+ * @param const TIsiReceiveC& aIsiMessage: a pointer to incoming message
+ * @return void
+ */
+ void ReadViagHomeZoneParamsRespL( const TIsiReceiveC& aIsiMessage );
+
+ /**
+ * Handles the ReadViagHomeZoneCacheResp response message.
+ * @param const TIsiReceiveC& aIsiMessage: a pointer to incoming message
+ * @return void
+ */
+ void ReadViagHomeZoneCacheResp( const TIsiReceiveC& aIsiMessage );
+
+ /**
+ * Handles the WriteViagHomeZoneCacheResp response message.
+ * @param const TIsiReceiveC& aIsiMessage: a pointer to incoming message
+ * @return void
+ */
+ void WriteViagHomeZoneCacheResp( const TIsiReceiveC& aIsiMessage );
+
+ /**
+ * Construct and send to phonet GSS_HSXPA_USER_SETTING_WRITE_REQ
+ * ISI message.
+ * @param TUint8 aTraId: a transaction identification
+ * @param THSxPAStatus status:
+ * @return TInt: error code
+ */
+ TInt WriteHSxPAStatusReq(
+ TUint8 aTraId,
+ RMmCustomAPI::THSxPAStatus status );
+
+ /**
+ * Breaks GSS_HSXPA_USER_SETTING_WRITE_RESP ISI message
+ * @param const TIsiReceiveC& aIsiMessage: the incoming message
+ * @return void
+ */
+ void WriteHSxPAStatusResp( const TIsiReceiveC& aIsiMessage );
+
+ /**
+ * Construct and send to phonet GSS_HSXPA_USER_SETTING_READ_REQ
+ * ISI message.
+ * @param TUint8 aTraId: a transaction identification
+ * @return TInt: error code
+ */
+ TInt ReadHSxPAStatusReq( TUint8 aTraId );
+
+ /**
+ * Breaks GSS_HSXPA_USER_SETTING_READ_RESP ISI message
+ * @param const TIsiReceiveC& aIsiMessage: the incoming message
+ * @return void
+ */
+ void ReadHSxPAStatusResp( const TIsiReceiveC& aIsiMessage );
+
+ /**
+ * Breaks received GSS_HSXPA_SETTING_IND ISI messages
+ * @param const TIsiReceiveC& aIsiMsg: The received ISI message
+ * @return void : None
+ */
+ void HSxPASettingInd( const TIsiReceiveC& aIsiMsg );
+
+ /**
+ * Construct a NET_NEIGHBOUR_CELLS_REQ message and send it through phonet.
+ * @param TUint8 aTraId: a transaction identification
+ * @return TInt: error code
+ */
+ TInt NetNeighbourCellsReq( const TUint8 aTraId );
+
+ /**
+ * Breaks received NET_NEIGHBOUR_CELLS_RESP ISI messages.
+ * @param const TIsiReceiveC& aIsiMsg: The received ISI message
+ * @return void: None
+ */
+ void NetNeighbourCellsResp( const TIsiReceiveC& aIsiMessage );
+
+ /**
+ * Breaks received NET_REG_STATUS_IND or NET_REG_STATUS_IND
+ * message and checks if enhanced cell information is chaged
+ * ( => needs to be requested/updated).
+ * @param const TIsiReceiveC& aIsiMessage: The received ISI message
+ * @return void: None
+ */
+ void CheckECIDInfo( const TIsiReceiveC& aIsiMessage );
+
+// Not suppoted for S60 ver 3.2
+#if ( NCP_COMMON_S60_VERSION_SUPPORT != S60_VERSION_32 )
+
+ /**
+ * Construct a GSS_CS_SERVICE_REQ message including selected
+ * band mode and send it through phonet.
+ * @param TUint8 aTransId: Transaction Id
+ * @param RMmCustomAPI::TNetworkModeCaps: System network mode to set.
+ * @param RMmCustomAPI::TBandSelection: Selected band mode.
+ * @return TInt: KErrNone / Error value from phonet
+ */
+ TInt GssCsServiceSetBandReq(
+ TUint8 aTransId,
+ RMmCustomAPI::TNetworkModeCaps aNetworkModeCaps,
+ RMmCustomAPI::TBandSelection aBandSelection );
+
+ /**
+ * Construct a GSS_CS_SERVICE_REQ message to get selected
+ * band mode.
+ * @param TUint8 aTransId: Transaction Id
+ * @return TInt: KErrNone / Error value from phonet
+ */
+ TInt GssCsServiceGetBandReq( TUint8 aTransId );
+
+ /**
+ * Breaks received GSS_SELECTED_BANDS_READ operation.
+ * @param const TIsiReceiveC& aIsiMessage: The received ISI message
+ * @return void: None
+ */
+ void CompleteGetBandSelection( const TIsiReceiveC& aIsiMessage );
+
+#endif // NCP_COMMON_S60_VERSION_SUPPORT
+
+ /**
+ * Construcst PERM_PM_RECORD_READ_REQ message sends it through
+ * phonet.
+ * @param TUint8 aTransId: Transaction id.
+ * @return TInt: KErrNone / Error value from phonet.
+ */
+ TInt ReadLifeTimerFromPermanentMemory( const TUint8 aTransId );
+
+ /**
+ * Breaks a PERM_PM_RECORD_READ_RESP ISI-message.
+ * @param const TIsiReceiveC& aIsiMessage: Received isi message.
+ * @return void: none
+ */
+ void LifeTimerFromPermanentMemoryReadResponse(
+ const TIsiReceiveC& aIsiMessage );
+
+ /**
+ * Construcst PERM_PM_RECORD_WRITE_REQ message sends it through
+ * phonet.
+ * @param TUint8 aTransId: Transaction id.
+ * @return TInt: KErrNone / Error value from phonet / KErrNotReady if PMM
+ * has not been able to be read.
+ */
+ TInt WriteLifeTimerToPermanentMemory(
+ const TUint8 aTransId,
+ TTimeIntervalSeconds aTime );
+
+ /**
+ * Breaks a PERM_PM_RECORD_WRITE_RESP ISI-message.
+ * @param const TIsiReceiveC& aIsiMessage: Received isi message.
+ * @return void: none
+ */
+ void LifeTimerToPermanentMemoryWriteResponse(
+ const TIsiReceiveC& aIsiMessage );
+
+ /**
+ * Reads total call life timer value and returns it in complete.
+ * If
+ * @param none
+ * @return TInt: KErrNone / KErrNotReady if PMM has not been able to be
+ * read.
+ */
+ TInt GetTotalLifeTimerValue();
+
+ /**
+ * Constructs and sends AUTHENTICATE APDU to the UICC
+ * @param aDataPackage: data containing authentication parameters
+ * @return TInt: KErrNone / Error value from phonet
+ */
+ TInt CMmCustomMessHandler::UiccSendAuthenticateApdu(
+ const CMmDataPackage& aDataPackage );
+
+
+ /**
+ * Constructs RUN GSM ALGORITHM APDU. Used when authentication
+ * is done for ICC card
+ * @param aParams: parameter where the apdu is constructed
+ * @param aRand: RAND value inserted to the APDU
+ * @param aTraId: tr id used in UICC request
+ * @return void: none
+ */
+ void UiccCreateRunGsmAlgorithmApdu(
+ TUiccSendApdu& aParams,
+ const TDesC8& aRand,
+ TUiccTrId aTraId );
+
+ /**
+ * Handles response APDU for RUN GSM ALGORITHM APDU
+ * @param aTraId: transaction id of received message
+ * @param aStatus: status of the response
+ * @param aFileData: response apdu
+ * @return void: none
+ */
+ void UiccRunGsmAlgorithmApduResp(
+ TInt aTraId,
+ TInt aStatus,
+ const TDesC8& aFileData );
+
+ /**
+ * Constructs GSM context AUTHENTICATE APDU
+ * @param params: parameter where the apdu is constructed
+ * @param aDataPackage: data containing authentication parameters
+ * @return void: none
+ */
+ void UiccCreateGsmSecurityContextApdu(
+ TUiccSendApdu& params,
+ const CMmDataPackage& aDataPackage );
+
+ /**
+ * Handles response APDU for GSM security context AUTHENTICATE APDU
+ * @param aTraId: transaction id of received message
+ * @param aStatus: status of the response
+ * @param aFileData: response apdu
+ * @return void: none
+ */
+ void UiccGsmSecurityContextApduResp(
+ TInt aTraId,
+ TInt aStatus,
+ const TDesC8& aFileData );
+
+ /**
+ * Constructs 3G security context AUTHENTICATE APDU
+ * @param aParams: parameter where the apdu is constructed
+ * @param aRand: RAND value inserted to the APDU
+ * @param aAuth: AUTH value inserted to the APDU
+ * @param aTraId: tr id used in UICC request
+ * @return void: none
+ */
+ void UiccCreate3GSecurityContextApdu(
+ TUiccSendApdu& aParams,
+ const TDesC8& aRand,
+ const TDesC8& aAuth,
+ TUiccTrId aTraId );
+
+ /**
+ * Handles response APDU for 3G security context AUTHENTICATE APDU
+ * @param aTraId: transaction id of received message
+ * @param aStatus: status of the response
+ * @param aFileData: response apdu
+ * @return void: none
+ */
+ void Uicc3GSecurityContextApduResp(
+ TInt aTraId,
+ TInt aStatus,
+ const TDesC8& aFileData );
+
+ /**
+ * Constructs GBA security context AUTHENTICATE APDU (bootstrapping mode)
+ * @param aParams: parameter where the apdu is constructed
+ * @param aDataPackage: data containing authentication parameters
+ * @return void: none
+ */
+ void UiccCreateGBABootstrappingApdu(
+ TUiccSendApdu& aParams,
+ const CMmDataPackage& aDataPackage );
+
+ /**
+ * Handles response APDU for GBA security context AUTHENTICATE
+ * APDU (bootstrapping mode)
+ * @param aTraId: transaction id of received message
+ * @param aStatus: status of the response
+ * @param aFileData: response apdu
+ * @return void: none
+ */
+ void UiccGBABootstrappingApduResp(
+ TInt aTraId,
+ TInt aStatus,
+ const TDesC8& aFileData );
+
+ /**
+ * Starts GBA bootstrap operation by reading elementary file EFgba. After reading
+ * is done, B-Tid and keylifetime is updated to EFgba
+ * @param aDataPackage: data containing parameters going to be written
+ * to the EFgba
+ * @return void: none
+ */
+ void UiccGBABootstrapUpdate(
+ const CMmDataPackage& aDataPackage );
+
+ /**
+ * Handles response for EFgba read operation
+ * @param aStatus: status of the response
+ * @param aFileData: file data
+ * @return void: none
+ */
+ void UiccGBABootstrapReadResp(
+ TInt aStatus,
+ const TDesC8& aFileData );
+
+ /**
+ * Handles response for EFgba write operation
+ * @param aStatus: status of the response
+ * @return void: none
+ */
+ void UiccGBABootstrapUpdateResp( TInt aStatus );
+
+ /**
+ * Constructs GBA security context AUTHENTICATE APDU
+ * (NAF derivation mode)
+ * @param aParams: parameter where the apdu is constructed
+ * @param aDataPackage: data containing authentication parameters
+ * @return void: none
+ */
+ void UiccCreateGBABootstrapNafDerivationApdu(
+ TUiccSendApdu& aParams,
+ const CMmDataPackage& aDataPackage );
+
+ /**
+ * Handles response APDU for GBA security context AUTHENTICATE
+ * APDU (NAF derivation mode)
+ * @param aTraId: transaction id of received message
+ * @param aStatus: status of the response
+ * @param aFileData: response apdu
+ * @return void: none
+ */
+ void UiccGBANafDerivationApduResp(
+ TInt aTraId,
+ TInt aStatus,
+ const TDesC8& aFileData );
+
+ /**
+ * Constructs MBMS security context AUTHENTICATE APDU
+ * (MSK Update Mode)
+ * @param params: parameter where the apdu is constructed
+ * @param aDataPackage: data containing authentication parameters
+ * @return void: none
+ */
+ void UiccCreateMbmsMskUpdateApdu(
+ TUiccSendApdu& params,
+ const CMmDataPackage& aDataPackage );
+
+ /**
+ * Handles response APDU for MBMS security context AUTHENTICATE
+ * APDU (MSK Update Mode)
+ * @param aTraId: transaction id of received message
+ * @param aStatus: status of the response
+ * @param aFileData: response apdu
+ * @return void: none
+ */
+ void UiccMbmsMskUpdateApduResp(
+ TInt aStatus,
+ const TDesC8& aFileData );
+
+ /**
+ * Constructs MBMS security context AUTHENTICATE APDU
+ * (MTK Generation Mode)
+ * @param params: parameter where the apdu is constructed
+ * @param aDataPackage: data containing authentication parameters
+ * @return void: none
+ */
+ void UiccCreateMbmsMtkGenerationApdu(
+ TUiccSendApdu& params,
+ const CMmDataPackage& aDataPackage );
+
+ /**
+ * Handles response APDU for MBMS security context AUTHENTICATE
+ * APDU (MTK Generation Mode)
+ * @param aStatus: status of the response
+ * @param aFileData: response apdu
+ * @return void: none
+ */
+ void UiccMbmsMtkGenerationApduResp(
+ TInt aStatus,
+ const TDesC8& aFileData );
+
+ /**
+ * Constructs MBMS security context AUTHENTICATE APDU
+ * (MSK Deletion Mode)
+ * @param params: parameter where the apdu is constructed
+ * @param aDataPackage: data containing authentication parameters
+ * @return void: none
+ */
+ void UiccCreateMbmsMskDeletionApdu(
+ TUiccSendApdu& params,
+ const CMmDataPackage& aDataPackage );
+
+ /**
+ * Handles response APDU for MBMS security context AUTHENTICATE
+ * APDU (MSK Deletion Mode)
+ * @param aStatus: status of the response
+ * @param aFileData: response apdu
+ * @return void: none
+ */
+ void UiccMbmsMskDeletionApduResp(
+ TInt aStatus,
+ const TDesC8& aFileData );
+
+ /**
+ * Constructs APDU to get first block of authenticate response data
+ * in case of odd ins code
+ * @return void: none
+ */
+ void CMmCustomMessHandler::UiccCreateFirstBlockOfAuthRespApdu( TUiccTrId aTrId );
+
+ /**
+ * Maps sw1 and sw2 from response authenticate apdu to result
+ * @param sw1: status of the response
+ * @param sw2: response apdu
+ * @return TUint8: command result
+ */
+ TUint8 MapSw1Sw2ToAuthenticateResult( TUint8 sw1, TUint8 sw2 );
+
+ /**
+ * Validates received apdu
+ * @param aTraId: Identifies the apdu
+ * @param aApdu: APDU to be verified
+ * @return TUint8: KApduOk if verified successfully,
+ * otherwise KApduNok
+ */
+ TUint8 ValidateReceivedAuthenticateApdu(
+ TInt aTraId,
+ const TDesC8& aApdu );
+
+ /**
+ * Validates received gsm security context apdu for authenticate
+ * @param aApdu: APDU to be verified
+ * @return TUint8: KApduOk if verified successfully,
+ * otherwise KApduNok
+ */
+ TUint8 ValidateGsmSecurityContextApduResp( const TDesC8& aApdu );
+
+ /**
+ * Validates received 3G security context apdu for authenticate
+ * @param aApdu: APDU to be verified
+ * @return TUint8: KApduOk if verified successfully,
+ * otherwise KApduNok
+ */
+ TUint8 Validate3GSecurityContextApduResp( const TDesC8& aApdu );
+
+ /**
+ * Validates received GBA security context apdu (GBA bootstrapping mode)
+ * for authenticate
+ * @param aApdu: APDU to be verified
+ * @return TUint8: KApduOk if verified successfully,
+ * otherwise KApduNok
+ */
+ TUint8 ValidateGBABootstrappingApduResp( const TDesC8& aApdu );
+
+ /**
+ * Validates received GBA security context apdu (GBA NAF derivation mode)
+ * for authenticate
+ * @param aApdu: APDU to be verified
+ * @return TUint8: KApduOk if verified successfully,
+ * otherwise KApduNok
+ */
+ TUint8 ValidateGBANafDerivationApduResp( const TDesC8& aApdu );
+
+ /**
+ * Validates received RUN GSM ALGORITHM apdu for authenticate
+ * @param aApdu: APDU to be verified
+ * @return TUint8: KApduOk if verified successfully,
+ * otherwise KApduNok
+ */
+ TUint8 ValidateRunGsmAlgorithmApduResp( const TDesC8& aApdu );
+
+ /**
+ * Handles MBMS operation data from received MSK Update
+ * authenticate APDU
+ * @param aMskUpdate: parameters from MBMS operation data are
+ * inserted to aMskUpdate
+ * @param aMbmsData: MBMS data got from MSK Update authenticate
+ * APDU
+ * @return void: none
+ */
+ void UiccMskUpdateHandleMbmsOperationData(
+ RMmCustomAPI::TSimAuthenticationMgvMskUpdate& aMskUpdate,
+ TDesC8& aMbmsData );
+
+ /**
+ * Handles OMA BCAST operation data from received authenticate
+ * APDU
+ * @param aMskUpdate: parameters from MBMS operation data are
+ * inserted to aMskUpdate
+ * @param aMbmsData: APDU data
+ * @return void: none
+ */
+ void UiccMskUpdateHandleOMABcastOperationData(
+ RMmCustomAPI::TSimAuthenticationMgvMskUpdate& aMskUpdate,
+ TDesC8& aMbmsData );
+
+ /**
+ * Handles MBMS operation data from received MTK Generation
+ * authenticate APDU
+ * @param aMskUpdate: parameters from MBMS operation data are
+ * inserted to aMskUpdate
+ * @param aMbmsData: APDU data
+ * @return void: none
+ */
+ void UiccMtkGenHandleMbmsOperationData(
+ RMmCustomAPI::TSimAuthenticationMgvMtkGeneration& aMtkGen,
+ TDesC8& aMbmsData );
+
+ /**
+ * Handles OMA BCAST operation data from received MTK Generation
+ * authenticate APDU
+ * @param aMtkGen: parameters from MBMS operation data are
+ * inserted to aMtkGen
+ * @param aMbmsData: APDU data
+ * @return void: none
+ */
+ void UiccMtkGenHandleOMABcastOperationData(
+ RMmCustomAPI::TSimAuthenticationMgvMtkGeneration& aMtkGen,
+ TDesC8& aMbmsData );
+
+ /**
+ * Finds tlv objects from BER TLV object
+ * @param aTlvTag: tag of teh tlv object to be search
+ * @param aBerTlv: BER TLV object where to search
+ * @param aTlvObject: tlv object data is copied to this
+ * parameter, if it's found
+ * @return TBool: ETrue if tlv object found, otherwise EFalse
+ */
+ TBool FindTlvObject(
+ TUint8 aTlvTag,
+ const TDesC8& aBerTlv,
+ TDes8& aTlvObject );
+
+ /**
+ * calculates the UMTS Ciphering Key (CK) from the GSM
+ * Ciphering Key (Kc). This is done by using the c4 algorithm defined in
+ * 3GPP TS 33.102 v3.8.0 (Release 1999).
+ * @param aCk: Result is inserted to this parameter
+ * @param aKc: Kc which is used in calculation
+ * @return void: none
+ */
+ void DeriveCkFromKc(
+ TDes8& aCk,
+ const TDesC8& aKc );
+
+ /** derives the UMTS Integrity Key (IK) from the GSM
+ * Ciphering Key (Kc). This is done by using the c5 algorithm defined in
+ * 3GPP TS 33.102 v3.8.0 (release 1999).
+ * @param aEapAka: Result is inserted to this parameter
+ * @param aKc: Kc which is used in calculation
+ * @return void: none
+ */
+ void DeriveIkFromKc(
+ TDes8& aIk,
+ const TDesC8& aKc );
+
+ /** Handles the IMS authentication
+ * @param aDataPackage: data containing authentication parameters
+ * @return TInt: KErrNone / Error value from phonet
+ */
+ TInt UiccHandleImsAuthentication( const CMmDataPackage& aDataPackage );
+
+ /**
+ * Handles response for ISim application activation
+ * @param aStatus: status of the response
+ * @return void: none
+ */
+ void UiccHandleIsimActivationResp( TInt aStatus );
+
+ protected: // Data
+
+ // Pointer to the PhonetSender
+ CMmPhoNetSender* iPhoNetSender;
+
+ private: // Data
+
+ // Pointer to the Message router
+ CMmMessageRouter* iMessageRouter;
+
+ // Pointer to the Net message handler
+ CMmNetMessHandler* iNetMessHandler;
+
+ // Pointer to the Security message handler
+ CMmSecurityMessHandler* iSecurityMessHandler;
+
+ // Release cause value sent
+ TUint8 iReleaseCauseValueSent;
+
+ // List of Ciphering values, for buffering purpose
+ RArray<TCiphListEntry> *iListOfCiphValues;
+
+ // Is indication a refresh indication
+ TBool iIsRefresh;
+
+ // Emergency number checking mode
+ RMmCustomAPI::TCheckMode iUsedEmergencyNbrCheckMode;
+
+ // Lenght of the emergency number to be checked
+ TInt iEmergencyNumberLength;
+
+ // Buffer to hold RAND_PARAMS subblock data
+ TBuf8<20> iRandBuf;
+
+ // Buffer to hold AUTN_PARAMS subblock data
+ TBuf8<20> iAutnBuf;
+
+ // Buffer to hold B-Tid data
+ TBuf8<256> iBTidBuf;
+
+ // Buffer to hold keylifetime data
+ TBuf8<256> iKeyLifetimeBuf;
+
+ // Buffer to hold SIM_SB_AM_GBA_NAF_ID_ID subblock data
+ TBuf8<254> iNafIdBuf;
+
+ // Buffer to hold SIM_SB_IMS_PRIVATE_USER_ID subblock data
+ TBuf8<254> iImpiBuf;
+
+ // Buffer for Mikey data.
+ RMmCustomAPI::TMikey iMikey;
+
+ // Buffer for key domain id data
+ RMmCustomAPI::TKeyDomainId iKeyDomainId;
+
+ // Buffer for key group id data
+ RMmCustomAPI::TKeyGroupId iKeyGroupIdPart;
+
+ // Viag Home Zone Parameters
+ RMmCustomAPI::TViagParams iViagParams;
+
+ // Cb msg ids max count
+ TInt iCbMsgIdsMaxCount;
+
+ // Saves the SIM CB topic number for deletion
+ TUint iSimCBTopicToBeDeleted;
+
+ // Is the SIM topic is being deleted (ETrue ) or not (EFalse)
+ TBool iTopicInSimMemoryDelete;
+
+ // Enhanced Cell Information
+ TECIDInfo iECIDInfo;
+
+ // Is ECIDInfo requested
+ TBool iECIDInfoRequested;
+
+ // Call Life Timer;
+ TInt iCallLifeTimer;
+
+ // Conter for record retries from PMM during read.
+ TUint8 iPMMReadRetryCounter;
+
+ // Pointer to UICC message handler
+ CMmUiccMessHandler* iMmUiccMessHandler;
+
+ //keeps track...
+ TUint8 iSapApduIfState;
+
+ // is Isim application already activated
+ TBool iIsimApplActivated;
+
+ public: // Friend classes
+ //None
+ protected: // Friend classes
+ //None
+ private: // Friend classes
+ //None
+ };
+
+#endif // _CMMCUSTOMMESSHANDLER_H
+
+// End of File