adaptationlayer/tsy/nokiatsy_dll/inc/cmmphonebookstoreoperationbase.h
changeset 0 63b37f68c1ce
child 5 8ccc39f9d787
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/adaptationlayer/tsy/nokiatsy_dll/inc/cmmphonebookstoreoperationbase.h	Fri Nov 06 17:28:23 2009 +0000
@@ -0,0 +1,684 @@
+/*
+* Copyright (c) 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 CMMPHONEBOOKSOPERATIONBASE_H
+#define CMMPHONEBOOKSOPERATIONBASE_H
+
+//  INCLUDES
+#include <ctsy/pluginapi/cmmdatapackage.h>
+#include "cmmstaticutility.h"
+#include <ctsy/serviceapi/cmmgsmphonestorageutility.h>
+#include <badesca.h>    //for arrays
+#include <e32base.h>
+
+#ifdef INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
+#include <ctsy/rmmcustomapi.h>
+#endif // INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
+
+#include "cmmphonetsender.h"
+#include "cmmphonetreceiver.h"
+#include "cmmphonebookstoremesshandler.h"
+
+
+//UICC
+#include "muiccoperationbase.h"
+#include "cmmuiccmesshandler.h"
+#include <uiccisi.h>
+
+
+
+//  CONSTANTS
+const TInt KLocationFirst = -1;
+const TUint8 KMinLength = 1;
+const TUint8 KLengthWithSFI = 3;
+const TUint8 KLengthWithOutSFI = 2;
+
+_LIT(KInternalPhoneBookType,"Init");
+
+const TUint8 KPadding = 0;
+
+#ifdef INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
+const TUint8 SIM_AAS  = 0x10;
+const TUint8 SIM_GAS  = 0x11;
+#endif // INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
+
+// Mask that is used to separate phonebooktype from transaction Id
+const TUint8 KMaskPhonebookType = 0xF0;
+
+// Mask that is used to separate operation from transaction Id
+const TUint8 KMaskOperationType = 0x0F;
+
+// Added mask (4 most significant bits) to separate different phonebook's
+const TUint8 KMaskAdnType = 0x10;       //0001 0000 = ADN
+const TUint8 KMaskFdnType = 0x20;       //0010 0000 = FDN
+const TUint8 KMaskSdnType = 0x30;       //0011 0000 = SDN
+const TUint8 KMaskBdnType = 0x40;       //0100 0000 = BDN
+const TUint8 KMaskMbdnType = 0x50;      //0101 0000 = MBDN
+const TUint8 KMaskVoiceMailBox = 0x60;  //0110 0000 = VMBX
+
+#ifdef INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
+const TUint8 KMaskAasType = 0x70; //0111 0000 = Additional Alpha String
+const TUint8 KMaskGasType = 0x80;     //1000 0000 = Group Alpha String
+#endif // INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
+
+//const TUint8 KMaskFreeType = 0x09;  //1001 0000 = Free
+//const TUint8 KMaskFreeType = 0xA0;  //1010 0000 = Free
+//const TUint8 KMaskFreeType = 0xB0;  //1011 0000 = Free
+//const TUint8 KMaskFreeType = 0xC0;  //1100 0000 = Free
+//const TUint8 KMaskFreeType = 0xD0;  //1101 0000 = Free
+//const TUint8 KMaskFreeType = 0xE0;  //1110 0000 = Free
+const TUint8 KMaskUnspecifiedType = 0xF0;//1111 0000 = Unknown
+
+// Added mask (4 least significant bits) to separate different request IPC's
+const TUint8 KOperationInit = 0x01;        //0000 0001 = init
+const TUint8 KOperationCache = 0x02;       //0000 0010 = cache
+const TUint8 KOperationRead = 0x03;        //0000 0011 = Read
+const TUint8 KOperationWrite = 0x04;       //0000 0100 = Write
+const TUint8 KOperationDelete  = 0x05;     //0000 0101 = Delete
+const TUint8 KOperationDeleteAll = 0x6;    //0000 0110 = DeleteAll
+const TUint8 KOperationDeleteWrite = 0x07; //0000 0111 = writeDelete = AdnCase
+const TUint8 KOperationReWrite = 0x08;      //0000 1000 = rewrite = adn case
+const TUint8 KOperationGetMailBoxNumber = 0x09; //0000 1001 = GetMBDN number
+const TUint8 KOperationGetInfo = 0x0A;      //0000 1010
+//const TUint8 KOperationFree = 0x0C;
+//const TUint8 KOperationFree = 0x0D;
+//const TUint8 KOperationFree = 0x0E;
+const TUint8 KOperationUnknown = 0x0F;      //0000 1111 = Unknown
+const TUint8 KOperationMask = 0x0F;
+
+const TUint8 KMBDNPhonebook = 6;
+const TUint8 KSimMbdn = 0x00;
+
+//File ID
+const TUint16 KMasterFile            = 0x3F00;  // Master File
+const TUint16 KDedicatedFileGSM      = 0x7F20;  // Dedicated File (Gsm)
+const TUint16 KDedicatedFileMBI      = 0x6FC9;  // Dedicated File (MBI)
+
+
+const TUint8 KTagFCIFileDescriptor = 0x82;     // for file descriptor tag in FCI data received from UICC Server
+const TUint8 KTagFCIFileIdentifier = 0x83;       // for File identifier in FCI data
+const TUint8 KTagFCIFileSize       = 0x85;      // for File size data
+const TUint8 KTagConstructedTagA8  = 0xA8;     // Type 1 files tag in PBR file
+const TUint8 KTagConstructedTagA9  = 0xA9;     // Type 2 files tag in PBR file
+const TUint8 KTagConstructedTagAA  = 0xAA;     // Type 3 files tag in PBR file
+const TUint8 KTagUnusedbyte        = 0xFF;     // constant to find unused bytes
+
+const TUint8 KRecordLength   = 0;
+const TUint8 KNoOfRecords    = 1;
+const TUint8 KFileSize       = 2;
+const TUint8 KFileIdentifier = 3;
+const TUint8 KFileStatus     = 4;
+
+
+
+
+
+
+// UICC constants
+#define MF_FILE                             0x3F00 //Master file
+#define DF_CURRENT_APP                      0x7FFF //
+#define DF_PHONEBOOK                        0x5F3A  
+#define APPL_FILE_ID                        0x7F10  // Address for DFphonebook
+#define UICC_SESSION_ID_NOT_USED            0x00
+#define PB_UICC_SB_APPL_PATH_SB_LENGTH      0x0010
+#define PB_UICC_SB_APPL_PATH_SB_LENGTH_2    0x0012
+#define PB_ADN_FID                          0x6F3A
+#define PB_FDN_FID                          0x6F3B
+#define PB_SDN_FID                          0x6F49
+#define PB_BDN_FID                          0x6F4D
+#define PB_MBDN_FID                         0x6FC7
+#define PB_MSISDN_FID                       0x6F40
+#define PB_VMBX_FID                         0x6F17
+#define PB_EXT1_FID                         0x6F4A
+#define PB_EXT2_FID                         0x6F4B
+#define PB_EXT3_FID                         0x6F4C
+#define PB_EXT4_FID                         0x6F55
+#define PB_EXT5_FID                         0x6F4E
+#define PB_EXT6_FID                         0x6FC8
+#define PB_PBR_FID                          0x4F30
+#define DF_PB_FILE_PATH                     0x3F007FFF5F3A
+#define UICC_SFI_NOT_PRESENT                0x00
+#define DF_PATH_LENGTH                      0x06
+#define DF_PATH_TELECOM                     0x7F10
+#define DF_PATH_PHONEBOOK                   0x5F3A
+#define UICC_SB_LINEAR_FIXED_SB_LENGTH      0x0008
+#define UICC_APPL_CMD_RESP_OFFSET           0x07
+
+#define UICC_SB_FCI_FCP_EF_NO_REC_OFFSET    0x12
+#define UICC_SB_FCI_FCP_EF_REC_L_OFFSET     0x10
+
+#define UICC_SB_FILE_DATA_OFFSET            0x08
+#define UICC_EF_ANR_EXT_REC_OFFSET          0x15
+#define UICC_EF_FILE_EXT_FILE_NOT_EXIST     0xFF
+#define UICC_EF_FDN_NO_EXT_NUM_LEN          20
+#define UICC_EF_MAX_NUM_LEN_WITH_EXT        2814
+#define UICC_EF_MAX_NAME_LEN                241
+#define UICC_EF_ANR_EXT_OFFSET              14
+#define UICC_EF_MAX_REC_LEN                 255
+
+#define UICC_EF_FDN_MIN_REC_LEN             14
+
+#define UICC_APPL_CMD_RESP_TRANSID_OFFSET   0x00
+#define UICC_APPL_CMD_RESP_NUMSBLOCK_OFFSET 0x07
+#define UICC_APPL_CMD_RESP_STATUS_OFFSET    0x04
+#define UICC_APPL_CMD_RESP_DETAILS_OFFSET   0x05
+#define UICC_SERVER_STATUS_OFFSET           0x03
+
+#define UICC_PBR_CONSTRUCTED_TAG_A8         0xA8
+#define UICC_PBR_CONSTRUCTED_TAG_A9         0xA9
+#define UICC_PBR_CONSTRUCTED_TAG_AA         0xAA
+
+#define UICC_OFFSET_TO_FIRST_PRIM_TAG       0x25
+#define UICC_OFFSET_TO_FIRST_PRIM_TAG_FDI   0x26
+#define UICC_OFFSET_TO_FIRST_PRIM_TAG_SFI   0x27
+#define UICC_PBR_PRIMITIVE_TAG_SFI_IS_ZERO  0x00
+
+#define UICC_ADN_PRIM_TAG                   0xC0
+#define UICC_IAP_PRIM_TAG                   0xC1
+#define UICC_SNE_PRIM_TAG                   0xC3
+#define UICC_ANR_PRIM_TAG                   0xC4
+#define UICC_GRP_PRIM_TAG                   0xC6
+#define UICC_EMAIL_PRIM_TAG                 0xCA
+
+#define UICC_FCI_EF_NO_REC_OFFSET           0x12
+
+#define UICC_FCI_FILE_DESC_TAG              0x82
+#define UICC_FCI_EF_FDESC_OFFSET_NUM_ENTR   6
+#define UICC_FCI_EF_FDESC_OFFSET_ENT_LENG   4
+#define UICC_ADN_EF_REC_LEN_FIXED_PART      14
+
+#define UICC_EF_ADN_TAG                     0xC0
+#define UICC_EF_IAP_TAG                     0xC1
+#define UICC_EF_EXT1_TAG                    0xC2
+#define UICC_EF_SNE_TAG                     0xC3
+#define UICC_EF_ANR_TAG                     0xC4
+#define UICC_EF_PBC_TAG                     0xC5
+#define UICC_EF_GRP_TAG                     0xC6
+#define UICC_EF_AAS_TAG                     0xC7
+#define UICC_EF_GAS_TAG                     0xC8
+#define UICC_EF_UID_TAG                     0xC9
+#define UICC_EF_EMAIL_TAG                   0xCA
+#define UICC_EF_CCP1_TAG                    0xCB
+
+// UICC Server Service type 
+#define UICC_APPL_READ_TRANSPARENT          0x21
+#define UICC_APPL_UPDATE_TRANSPARENT        0x22
+#define UICC_APPL_READ_LINEAR_FIXED         0x23
+#define UICC_APPL_UPDATE_LINEAR_FIXED       0x24
+#define UICC_APPL_FILE_INFO                 0x25
+#define UICC_APPL_APDU_SEND                 0x26
+#define UICC_APPL_CLEAR_CACHE               0x27
+#define UICC_APPL_SESSION_START             0x28
+#define UICC_APPL_SESSION_END               0x29
+
+// SST table Service numebers
+
+#define ICC_ADN_SERVICE_NUM                2
+#define ICC_FDN_SERVICE_NUM                3
+#define ICC_SDN_SERVICE_NUM                18
+#define ICC_BDN_SERVICE_NUM                31
+#define ICC_MSISDN_SERVICE_NUM             9
+#define ICC_EXT1_SERVICE_NUM               10
+#define ICC_EXT2_SERVICE_NUM               11
+#define ICC_EXT3_SERVICE_NUM               19
+#define ICC_EXT4_SERVICE_NUM               32
+#define ICC_EXT5_SERVICE_NUM               44
+#define ICC_MBDN_SERVICE_NUM               53
+
+// UST Table Service numbers
+
+#define UICC_FDN_SERVICE_NUM                2
+#define UICC_SDN_SERVICE_NUM                4
+#define UICC_BDN_SERVICE_NUM                6
+#define UICC_MSISDN_SERVICE_NUM             21
+#define UICC_EXT2_SERVICE_NUM               3
+#define UICC_EXT3_SERVICE_NUM               5
+#define UICC_EXT4_SERVICE_NUM               7
+#define UICC_EXT5_SERVICE_NUM               44
+#define UICC_MBDN_SERVICE_NUM               47
+
+
+// CPHS Service table
+#define ICC_CSP_SERVICE_NUM                 1
+#define ICC_SST_SERVICE_NUM                 2
+#define ICC_MAILBOX_NUM                     3
+#define ICC_OP_NAME_SERVICE_NUM             4
+
+
+#define UICC_NO_EXT_MAX_NUM_LEN             0x14
+
+
+// File types
+
+#define UICC_TYPE1_FILE                     1
+#define UICC_TYPE2_FILE                     2
+#define UICC_TYPE3_FILE                     3
+
+
+// end UICC constants
+
+
+//  MACROS
+    //none
+
+//  DATA TYPES
+    //none
+
+//  EXTERNAL DATA STRUCTURES
+enum TPBIniPhases
+    {
+    EPBInitPhaseADN = 0,
+    EPBInitPhaseFDN,
+    EPBInitPhaseSDN,
+    EPBInitPhaseMBDN,
+    EPBInitPhaseMSISDN,
+    EPBInitPhaseVMBX,
+    EPBInitPhase_File_Info,
+    EPBInitPhase_FIle_Data,
+    EPBInitPhase_Complete,
+    EPBInitPhase_3GADN_PBR,
+    EPBInitPhase_3GADN_Type1,
+    EPBInitPhase_3GADN_Type2,
+    EPBInitPhase_3GADN_Type3,
+    EPBIniPhase_3GADNDone,
+    EPBIniPhase_PBInitialized,
+    EPBIniPhase_Unknown,
+    EPBIniPhase_Internal
+    };
+
+
+enum TPhonebookType
+    {
+    EPhonebookTypeAdn = 0,
+    EPhonebookTypeFdn,
+    EPhonebookTypeSdn,
+    EPhonebookTypeBdn,
+    EPhonebookTypeVMBX,
+    EPhonebookTypeMBDN
+    };
+
+enum TPBWritePhases
+    {
+    EPBWritePhase_delete = 0,
+    EPBWritePhase_rewrite,
+    EPBWritePhase_complete
+    };
+
+
+// Struct data
+
+struct TPrimitiveTag
+    {
+    TUint8 tagValue;     // 1 byte long
+    TInt   tagFID;    // 2 byte long
+    TUint8  tagSFI;
+    };
+
+//  FUNCTION PROTOTYPES
+    //none
+
+//  FORWARD DECLARATIONS
+class CMmPhoneBookStoreExtInterface;
+class CPhoneBookStoreEntry;
+class CStorageInfoData;
+class CMmUiccMessHandler;
+
+#ifdef INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
+    class CAlphaString;
+#endif // INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
+
+// CLASS DECLARATION
+/**
+* CMmPhoneBookStoreOperationBase is base class for all operations
+*/
+class CMmPhoneBookStoreOperationBase
+    : public CBase
+    {
+    public:
+
+        /**
+        * C++ constructor.
+        */
+        CMmPhoneBookStoreOperationBase();
+
+        /**
+        * Destructor.
+        */
+        ~CMmPhoneBookStoreOperationBase();
+
+        // Second phase constructor
+        static CMmPhoneBookStoreOperationBase* NewL(CMmUiccMessHandler* aUiccMessHandler);
+        /**
+        * Basic implementation to handling request if operation not found.
+        *
+        * @param aIpc not  used
+        * @param aDataPackage not used
+        * @return KErrNotSupported.
+        */
+        virtual TInt CreateReq(
+            TInt /*aIpc*/,
+            const CMmDataPackage* /*aDataPackage*/ )
+            {TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::CreateReq - Return KErrNotSupported");
+            return KErrNotSupported; };
+
+        /**
+        * Cancels the operation.
+        */
+        virtual void CancelReq();
+
+        /**
+        * Prepares the operation (makes it ready to be launched).
+        *
+        * @param aIpc IPC request
+        * @param aDataPackage parameters to prepare request with
+        * @return TInt KErrNotReady on attempt to prepare prepared operation
+        */
+        virtual TInt PrepareReq( TInt aIpc, const CMmDataPackage* aDataPackage );
+
+        /**
+        * Checks if operation is ready to be launched.
+        * Base implementation returns EFalse
+        *
+        * @return TBool ETrue - operation is ready to be launched
+        */
+        virtual TBool IsPrepared() const;
+
+        /**
+        * Launches activated operation.
+        *
+        * @return TInt KErrNotReady on attempt to launch not prepared operation;
+        * or system-wide error code
+        */
+        virtual TInt LaunchReq();
+
+        /**
+        * Completes the request.
+        *
+        * @param aErrorCode error code to be completed with
+        * @return TInt KErrNone or KErrNotSupported if operation is not prepared
+        */
+        virtual TInt CompleteReq( TInt aErrorCode );
+
+        /**
+        * Basic implementation to handling response if operation not found.
+        *
+        * @param aIsiMessage not used
+        * @param aComplete not used
+        * @return KErrNotSupported.
+        */
+        virtual TInt HandleSimPbRespL(
+        const TIsiReceiveC& /*aIsiMessage*/, TBool& /*aComplete*/ )
+            {TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::HandleSimPbResp - Return KErrNotSupported");
+            return KErrNotSupported; };
+
+
+        /**
+        * Basic implementation to handling request if operation not found in UICC.
+        *
+        * @param aComplete not used
+        * @param aStatus not used
+        * @param aFileData KErrNotSupported
+        * @return KErrNotSupported.
+        */
+        
+        virtual TInt HandleUICCPbRespL( TBool & /*complete*/, TInt /*aStatus*/, const TDesC8& /*aFileData*/, TInt /*aTransId*/)
+            {TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::HandleUICCPbRespL - Return KErrNotSupported");
+            return KErrNotSupported; 
+            };
+
+        /**
+        * Basic implementation to handling request if operation not found in UICC.
+        *
+        * @param aIpc not  used
+        * @param aDataPackage not used
+        * @return KErrNotSupported.
+        */
+        virtual TInt UICCCreateReq(
+            TInt /*aIpc*/,
+            const CMmDataPackage* /*aDataPackage*/)
+            {
+            TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::CreateReq - Return KErrNotSupported");
+            return KErrNotSupported; 
+            };
+
+            
+        /**
+        * Converts client phonebook to phonebook mask.
+        *
+        * @param aPBType
+        * @return TUint8
+        */
+        static TUint8 ConvertToPBtype( const TName& aPBType );
+
+        
+        /**
+        * Converts client phonebook to phonebook mask.
+        *
+        * @param aPBType
+        * @return TUint8
+        */
+        static TUint8 ConvertToPBtypeUICC( const TName& aPBType );
+        
+        
+        /**
+        * Converts client phonebooktype to client phonebook name.
+        *
+        * @param aPBType
+        * @return TUint8
+        */
+        void ConvertPBTypeToPbName(const TUint aPhonebookType, TName& aName );
+
+        /**
+        * Converts client phonebook to phonebook mask.
+        *
+        * @param aPBType
+        * @return TUint8
+        */
+        void ConvertToPBname( const TUint8 aTrans, TName& aName );
+
+        /**
+        * Separate Phonebook Entry from UICC -message
+        *
+        * @param aFileData Received UICC message
+        * @param aEntry Entry to be separated
+        * @return KErrNone or error value.
+        */
+        TInt SeparatePhoneBookEntryFromUiccMsgL(
+            const TDesC8& aFileData,
+            TDes8& aNameBuf,
+            TUint16 aSimPhonebookType);
+
+
+        /**
+        * Store Phonebook Entry from UICC -message
+        *
+        * @param aFileData Received UICC message
+        * @param aEntry Entry to be separated
+        * @return KErrNone or error value.
+        */
+        void StorePhonebookEntry(
+                TDes8& aName,
+                TDes8& aNumber,
+                CPhoneBookStoreEntry& aEntry);
+
+        /**
+        * Gets transactionId.
+        *
+        * @param None
+        * @return TransactionId.
+        */
+        TUint8 TransId();
+
+        /**
+        * Convert number of phonebook type to server's phonebook type
+        *
+        * @param aPbMask Phonebook mask
+        * @return Server phonebook type.
+        */
+        TUint16 ConvertToSimPhoneBookType(
+            const TUint8 aPbMask );
+
+
+        /**
+        * Gets the required parameter from FCI Data
+        *
+        * @param TDesC8 aFileData FCI Data
+        * @param TInt aValue actual value of parameter to be read
+        * @param TUint8 aParam parameter to be read
+        * @return Error
+        */
+        TInt HandleFcpData( 
+                const TDesC8 &aFileData,
+                TInt& aValue,
+                TUint8 aParam);
+
+
+        /**
+        * Handle FileData of Type1File Response
+        * @param const TDes8& aFileData: UICC Message
+        * @return TInt: KErrNone or error value.
+        */
+        void Get16bit(TInt& aTarget, const TDesC8& aSource, TInt aIndex);
+
+
+
+    protected:
+
+
+
+    private:
+
+        /**
+        * Converts operation mask to IPC
+        *
+        * @param aDestination Operation mask
+        * @param aSource Client IPC
+        * @return None
+        */
+        void ConvertOperationToClientIPCType(
+            TInt& aDestination,
+            const TUint8 aSource );
+
+
+        // ConstructL
+
+        void ConstructL();
+        /**
+        * Collects all needed data together.
+        *
+        * @param aSbStartOffSet Offset
+        * @param aNumOfSubBlocks Number of subblocks
+        * @param aIsiMessage ISI message
+        * @param aEntry Phonebook entry
+        * @param aEmailFound Flag indicate if email found or not
+        * @param aAnrFound Flag indicate if anr found or not
+        * @param aSneFound Flag indicate if sne found or not
+        * @param aGrpFound Flag indicate if grp found or not
+        * @return None
+        */
+        void CollectAvailableDataL(
+            TUint& aSbStartOffSet,
+            TInt& aNumOfSubBlocks,
+            const TIsiReceiveC& aIsiMessage,
+            CPhoneBookStoreEntry& aEntry,
+            TBool& aEmailFound,
+            TBool& aAnrFound,
+            TBool& aSneFound
+#ifdef INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
+            ,TBool& aGrpFound
+#endif // INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
+            );
+
+        /**
+        * Construct a SIM_READ_FIELD_REQ message and send it through phonet.
+        *
+        * @param aTransId Transaction Id
+        * @return KErrNone / Error value from phonet
+        */
+        TInt SimReadFieldReq( TUint8 aTransId );
+
+        /**
+        * Breaks received SIM_READ_FIELD_RESP ISI message
+        *
+        * @param aIsiMessage Received ISI message
+        * @param aComplete Indicates if request can remove from
+        *        operationlist or not.
+        * @return None
+        */
+        void SimReadFieldRespL(
+            const TIsiReceiveC& aIsiMessage,
+            TBool& aComplete );
+
+
+
+    public:     // Data
+        // None
+
+    protected:  // Data
+
+        // Pointer to CMmPhoneBookStoreMessHandler.
+        CMmPhoneBookStoreMessHandler* iMmPhoneBookStoreMessHandler;
+        
+        // Pointer to UICC message handler
+        CMmUiccMessHandler* iMmUiccMessHandler;
+
+        // TransactionId that consist with phonebook type and transactionId.
+        TUint8 iTransactionId;
+
+        // Pointer to array for Caching PB Store <ADN/FDN>.
+        // CTSY take care of deleting entries.
+        CArrayPtrSeg<CPhoneBookStoreEntry>* iPhoneBookStoreCacheArray;
+
+        // Number of FDN info responses.
+        TUint8 iNumberOfFdnInfoResps;
+
+        // FDN info responses.
+        TPBFdnInfo iPbFdnInfo;
+
+        //slot where SIM contact has been written.
+        TUint16 iWriteLocation;
+
+        // Attribute to hold the information what index to be read
+        TInt iIndexToRead;
+        // Attribute to store record length
+        TInt iRecordLength;
+
+        // Keeps track of error value if write completed only partially.
+        TInt iRet;
+
+        // Phonebooktype, ADN, FDN, SDN...
+        TName iPhonebookType;
+
+        // modifiable Store number if there is extension number also there 
+        TBuf8<UICC_EF_MAX_NUM_LEN_WITH_EXT> iNumberBuf;
+        
+        // Store entry name
+        TBuf8<UICC_EF_MAX_NAME_LEN> iNameBuf;
+
+
+#ifdef INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
+        // Holds information for AAS and GAS
+        RMmCustomAPI::TAlphaStringParams iAlphaStringParams;
+#endif // INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
+
+    private:    // Data
+        //none
+    };
+
+#endif // CMMPHONEBOOKSOPERATIONBASE_H
+
+// End of file