--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/adaptationlayer/tsy/nokiatsy_dll/src/cmmphonebookoperationinit.cpp Fri Nov 06 17:28:23 2009 +0000
@@ -0,0 +1,1335 @@
+/*
+* 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: ?Description
+*
+*/
+
+// INCLUDE FILES
+#include <etelmm.h>
+#include <tisi.h>
+#include <pn_const.h>
+#include <ctsy/serviceapi/mmtsy_ipcdefs.h>
+#include "cmmmessagerouter.h"
+#include "cmmphonebookoperationinit.h"
+#include "osttracedefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmmphonebookoperationinittraces.h"
+#include "cmmphonebookoperationinit3G_adn.h"
+#endif
+
+// EXTERNAL DATA STRUCTURES
+ // None
+
+// EXTERNAL FUNCTION PROTOTYPES
+ // None
+
+// CONSTANTS
+
+// MACROS
+ // None
+
+// LOCAL CONSTANTS AND MACROS
+ // None
+
+// MODULE DATA STRUCTURES
+ // None
+
+// LOCAL FUNCTION PROTOTYPES
+ // None
+
+// ==================== LOCAL FUNCTIONS =====================================
+ // None
+
+
+// ================= MEMBER FUNCTIONS =======================================
+
+// -----------------------------------------------------------------------------
+// CMmPhoneBookOperationInit::CMmPhoneBookOperationInit
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+
+CMmPhoneBookOperationInit::CMmPhoneBookOperationInit
+ (
+ // None
+ )
+ {
+ TFLOGSTRING("TSY: CmmPhonebookOperatorInit::CmmPhonebookOperatorInit");
+OstTrace0( TRACE_NORMAL, CMMPHONEBOOKOPERATIONINIT_CMMPHONEBOOKOPERATIONINIT, "CMmPhoneBookOperationInit::CMmPhoneBookOperationInit" );
+ }
+
+// -----------------------------------------------------------------------------
+// CMmPhoneBookOperationInit::~CMmPhoneBookOperationInit
+// C++ destructor.
+// -----------------------------------------------------------------------------
+//
+CMmPhoneBookOperationInit::~CMmPhoneBookOperationInit
+ (
+ // None
+ )
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::~CMmPhoneBookOperationInit");
+OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKOPERATIONINIT_CMMPHONEBOOKOPERATIONINIT, "CMmPhoneBookOperationInit::~CMmPhoneBookOperationInit" );
+ delete iPBStoreInfoData;
+ }
+
+// -----------------------------------------------------------------------------
+// CmmPhonebookOperatorInit::NewL
+// Two-phased constructor.
+// Creates a new CmmPhonebookOperatorInit object instance.
+// -----------------------------------------------------------------------------
+
+CMmPhoneBookOperationInit* CMmPhoneBookOperationInit::NewL
+ (
+ CMmPhoneBookStoreMessHandler* aMmPhoneBookStoreMessHandler,
+ CMmUiccMessHandler* aUiccMessHandler,
+ const CMmDataPackage* aDataPackage // Data
+ )
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::NewL");
+ OstTrace0( TRACE_NORMAL, CMMPHONEBOOKOPERATIONINIT_NEWL, "CMmPhoneBookOperationInit::NewL" );
+
+ TName phonebookTypeName;
+
+ CMmPhoneBookOperationInit* mmPhoneBookOperationInit =
+ new( ELeave ) CMmPhoneBookOperationInit();
+
+ CleanupStack::PushL( mmPhoneBookOperationInit );
+
+ const CPhoneBookDataPackage* phoneBookData =
+ static_cast<const CPhoneBookDataPackage*>( aDataPackage );
+
+ phoneBookData->GetPhoneBookName( phonebookTypeName );
+ //Store phonebook name
+ mmPhoneBookOperationInit->iPhonebookType = phonebookTypeName;
+
+ if( 0 == phonebookTypeName.CompareF( KInternalPhoneBookType ) )
+ {
+ mmPhoneBookOperationInit->iIniPhase = EPBIniPhase_Internal;
+ }
+ else // Full construction is not needed in case of internal initilization
+ {
+ mmPhoneBookOperationInit->iTransactionId = ETrIdPbInit;
+ mmPhoneBookOperationInit->ConstructL( );
+ }
+
+ mmPhoneBookOperationInit->iMmPhoneBookStoreMessHandler =
+ aMmPhoneBookStoreMessHandler;
+
+ mmPhoneBookOperationInit->iMmUiccMessHandler = aUiccMessHandler;
+
+ // set to false by default. Will be set as true once after
+ // initialization req has been generated.
+ mmPhoneBookOperationInit->iInternalInit = EFalse;
+
+ CleanupStack::Pop( mmPhoneBookOperationInit );
+
+ return mmPhoneBookOperationInit;
+ }
+
+// -----------------------------------------------------------------------------
+// CMmPhoneBookOperationInit::ConstructL
+// Initialises object attributes.
+// -----------------------------------------------------------------------------
+//
+void CMmPhoneBookOperationInit::ConstructL
+ (
+ )
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::ConstructL");
+OstTrace0( TRACE_NORMAL, CMMPHONEBOOKOPERATIONINIT_CONSTRUCTL, "CMmPhoneBookOperationInit::ConstructL" );
+
+ iPBStoreInfoData = new( ELeave ) CStorageInfoData();
+
+ iServiceType = 0;
+ iNumOfPBRRecords = 0;
+ iADNPbInitilized = EFalse;
+
+#ifdef INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
+ TFLOGSTRING("TSY: CMmPhoneBookStoreMessHandler. \
+ INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS is ON.");
+
+ iMmPhoneBookStoreMessHandler->SetMaxNumOfAasEntries( 0 );
+ iMmPhoneBookStoreMessHandler->SetMaxNumberOfGAS( 0 );
+#else
+ TFLOGSTRING("TSY: CMmPhoneBookStoreMessHandler. \
+ INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS is OFF.");
+OstTrace0( TRACE_NORMAL, DUP4_CMMPHONEBOOKOPERATIONINIT_CONSTRUCTL, "CMmPhoneBookOperationInit::ConstructL, CASW_RD_USIM_PHONEBOOK_GAS_AND_AAS is OFF" );
+#endif // INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
+ }
+
+
+
+
+// TRANSMIT
+
+
+
+// -----------------------------------------------------------------------------
+// CMmPhoneBookOperationInit::UICCCreateReq
+// Create Request for Phonebook initialization for SIM
+// -----------------------------------------------------------------------------
+//
+TInt CMmPhoneBookOperationInit::UICCCreateReq
+ (
+ TInt aIpc,
+ const CMmDataPackage* /*aDataPackage*/
+ )
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::UICCCreateReq");
+OstTrace0( TRACE_NORMAL, CMMPHONEBOOKOPERATIONINIT_UICCCREATEREQ, "CMmPhoneBookOperationInit::UICCCreateReq" );
+ TInt ret( KErrNotSupported );
+
+ switch( aIpc )
+ {
+ case EMmTsyPhoneBookStoreInitIPC:
+ {
+ if( !iInternalInit )
+ {
+ // no internal init ongoing
+ if ( EPBIniPhase_Internal == iIniPhase )
+ {
+ // Initialization is starting. Turn the flag on.
+ iInternalInit = ETrue;
+ }
+ iServiceType = UICC_APPL_FILE_INFO;
+ iExtensionPresent = EFalse; // Default EXT File is not present
+
+ // Start Initialization for 2G phonebooks
+ // Check for ADN Phonebook is available and activated
+ if(iMmUiccMessHandler->GetServiceStatus( ICC_ADN_SERVICE_NUM))
+ {
+ iIniPhase = EPBInitPhaseADN;
+ }
+ else
+ {
+ iIniPhase = GetNextAvailablePbIcc(ICC_ADN_SERVICE_NUM);
+ }
+ ret = UICCInitializeReq();
+ }
+ else // else for if internalInit goign on
+ {
+ // Simultaneous initializations are not allowed.
+ ret = KErrInUse;
+ }
+ break;
+ }
+ default:
+ {
+ // Nothing to do here
+ TFLOGSTRING2("TSY: CMmPhoneBookOperationInit::UICCCreateReq - \
+ Unknown IPC: %d", aIpc);
+OstTrace1( TRACE_NORMAL, DUP1_CMMPHONEBOOKOPERATIONINIT_UICCCREATEREQ, "CMmPhoneBookOperationInit::UICCCreateReq;Unknowns aIpc=%d", aIpc );
+ break;
+ }
+ } // switch-case ends
+ return ret;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CmmPhonebookOperationInit::UICCInitializeReq
+// Creates phonebook initialize request data for SIM
+// -----------------------------------------------------------------------------
+//
+TInt CMmPhoneBookOperationInit::UICCInitializeReq()
+ {
+TFLOGSTRING("TSY: CMmPhoneBookOperationInit::UICCInitializeReq");
+OstTrace0( TRACE_FATAL, CMMPHONEBOOKOPERATIONINIT_UICCINITIALIZEREQ, "CMmPhoneBookOperationInit::UICCInitializeReq" );
+
+ TInt ret( KErrNone );
+ TInt appFileID ( APPL_FILE_ID ); // Application File id for DFphonebook
+ TUiccReadLinearFixed cmdParams;
+
+ cmdParams.messHandlerPtr =
+ static_cast<MUiccOperationBase*>(iMmPhoneBookStoreMessHandler);
+ cmdParams.trId = ETrIdPbInit;
+
+ cmdParams.filePath.Append(static_cast<TUint8>( MF_FILE >> 8 ));
+ cmdParams.filePath.Append(static_cast<TUint8>( MF_FILE ));
+ cmdParams.filePath.Append(appFileID>>8);
+ cmdParams.filePath.Append(appFileID);
+ cmdParams.filePath.Append(static_cast<TUint8>( DF_PHONEBOOK >> 8 ));
+ cmdParams.filePath.Append(static_cast<TUint8>( DF_PHONEBOOK ));
+
+ switch( iIniPhase )
+ {
+ case EPBInitPhaseADN:
+ {
+ // Create Data for ADN EF read
+ if( !iExtensionPresent )
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::UICCInitializeReq - ADN Init for Fileinfo OR FileData");
+ OstTrace0( TRACE_FATAL, DUP1_CMMPHONEBOOKOPERATIONINIT_UICCINITIALIZEREQ, "CMmPhoneBookOperationInit::UICCInitializeReq - ADN Init for Fileinfo OR FileData" );
+ // Send Request to read File Info or data from EFadn (depends upon iServiceType)
+ cmdParams.fileId = PB_ADN_FID;
+ cmdParams.serviceType = iServiceType;
+ cmdParams.record = 0;
+ }
+ else
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::UICCInitializeReq - ADN Phonebook Init Extension request");
+ OstTrace0( TRACE_FATAL, DUP2_CMMPHONEBOOKOPERATIONINIT_UICCINITIALIZEREQ, "CMmPhoneBookOperationInit::UICCInitializeReq - ADN Phonebook Init Extension request" );
+
+ // Initialization for EXT1
+ cmdParams.fileId = PB_EXT1_FID;
+ cmdParams.serviceType = iServiceType;
+ cmdParams.record = 0;
+ }
+ break;
+ }
+ case EPBInitPhaseFDN:
+ {
+ // Create Data for FDN EF read
+ if( !iExtensionPresent )
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::UICCInitializeReq - FDN Init FileInfo OR FileData request");
+ OstTrace0( TRACE_FATAL, DUP3_CMMPHONEBOOKOPERATIONINIT_UICCINITIALIZEREQ, "CMmPhoneBookOperationInit::UICCInitializeReq - FDN Init FileInfo OR FileData request" );
+
+ cmdParams.fileId = PB_FDN_FID;
+ cmdParams.serviceType = iServiceType;
+ cmdParams.record = 0;
+ }
+ else
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::UICCInitializeReq - FDN Init Extension request");
+ OstTrace0( TRACE_FATAL, DUP4_CMMPHONEBOOKOPERATIONINIT_UICCINITIALIZEREQ, "CMmPhoneBookOperationInit::UICCInitializeReq - FDN Init Extension request" );
+
+ // Initialization for EXT2
+ cmdParams.fileId = PB_EXT2_FID;
+ cmdParams.serviceType = iServiceType;
+ cmdParams.record = 0;
+ }
+ break;
+ }
+ case EPBInitPhaseSDN:
+ {
+ if( !iExtensionPresent )
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::UICCInitializeReq - SDN Init FileInfo OR FileData request");
+ OstTrace0( TRACE_FATAL, DUP5_CMMPHONEBOOKOPERATIONINIT_UICCINITIALIZEREQ, "CMmPhoneBookOperationInit::UICCInitializeReq - SDN Init FileInfo OR FileData request" );
+
+ cmdParams.fileId = PB_SDN_FID;
+ cmdParams.serviceType = iServiceType;
+ cmdParams.record = 0;
+ }
+ else
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::UICCInitializeReq - SDN Init Extension request");
+ OstTrace0( TRACE_FATAL, DUP6_CMMPHONEBOOKOPERATIONINIT_UICCINITIALIZEREQ, "CMmPhoneBookOperationInit::UICCInitializeReq - SDN Init Extension request" );
+
+ // Initialization for EXT3
+ cmdParams.fileId = PB_EXT3_FID;
+ cmdParams.serviceType = iServiceType;
+ cmdParams.record = 0;
+ }
+ break;
+ }
+ case EPBInitPhaseMBDN:
+ {
+ if( !iExtensionPresent )
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::UICCInitializeReq - MBDN Init FileInfo OR FileData request");
+ OstTrace0( TRACE_FATAL, DUP7_CMMPHONEBOOKOPERATIONINIT_UICCINITIALIZEREQ, "CMmPhoneBookOperationInit::UICCInitializeReq - MBDN Init FileInfo OR FileData request" );
+
+ cmdParams.fileId = PB_MBDN_FID;
+ cmdParams.serviceType = iServiceType;
+ cmdParams.record = 0;
+ }
+ else
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::UICCInitializeReq - MBDN Init Extension request");
+ OstTrace0( TRACE_FATAL, DUP8_CMMPHONEBOOKOPERATIONINIT_UICCINITIALIZEREQ, "CMmPhoneBookOperationInit::UICCInitializeReq - MBDN Init Extension request" );
+
+ cmdParams.fileId = PB_EXT6_FID;
+ cmdParams.serviceType = iServiceType;
+ cmdParams.record = 0;
+ }
+ break;
+ }
+ case EPBInitPhaseMSISDN:
+ {
+ if( !iExtensionPresent )
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::UICCInitializeReq - MSISDN Init FileInfo OR FileData request");
+ OstTrace0( TRACE_FATAL, DUP9_CMMPHONEBOOKOPERATIONINIT_UICCINITIALIZEREQ, "CMmPhoneBookOperationInit::UICCInitializeReq - MSISDN Init FileInfo OR FileData request" );
+
+ cmdParams.fileId = PB_MSISDN_FID;
+ cmdParams.serviceType = iServiceType;
+ cmdParams.record = 0;
+ }
+ else
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::UICCInitializeReq - MSISDN Init Extension request");
+ OstTrace0( TRACE_NORMAL, DUP10_CMMPHONEBOOKOPERATIONINIT_UICCINITIALIZEREQ, "CMmPhoneBookOperationInit::UICCInitializeReq" );
+
+ cmdParams.fileId = PB_EXT5_FID;
+ cmdParams.serviceType = iServiceType;
+ cmdParams.record = 0;
+ }
+ break;
+ }
+ case EPBInitPhaseVMBX:
+ {
+ if( !iExtensionPresent )
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::UICCInitializeReq - VMBX Init FileInfo OR FileData request");
+ OstTrace0( TRACE_FATAL, DUP11_CMMPHONEBOOKOPERATIONINIT_UICCINITIALIZEREQ, "CMmPhoneBookOperationInit::UICCInitializeReq - VMBX Init FileInfo OR FileData request" );
+
+ cmdParams.fileId = PB_VMBX_FID;
+ cmdParams.serviceType = iServiceType;
+ cmdParams.record = 0;
+ }
+ else
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::UICCInitializeReq - VMBX Init Extension request");
+ OstTrace0( TRACE_NORMAL, DUP13_CMMPHONEBOOKOPERATIONINIT_UICCINITIALIZEREQ, "CMmPhoneBookOperationInit::UICCInitializeReq - VMBX Init Extension request" );
+
+ cmdParams.fileId = PB_EXT1_FID;
+ cmdParams.serviceType = iServiceType;
+ cmdParams.record = 0;
+ }
+ break;
+ }
+ default:
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::UICCInitializeReq - PhoneBook not supported ");
+ OstTrace0( TRACE_NORMAL, DUP12_CMMPHONEBOOKOPERATIONINIT_UICCINITIALIZEREQ, "CMmPhoneBookOperationInit::UICCInitializeReq - PhoneBook not supported" );
+ break;
+ }
+ }
+
+ // if intialization has not been completed till now then send the
+ // request for the correct phase
+
+ if( EPBIniPhase_PBInitialized != iIniPhase )
+ {
+ ret = iMmPhoneBookStoreMessHandler->UiccMessHandler()->CreateUiccApplCmdReq( cmdParams );
+ TFLOGSTRING2("TSY: CreateUiccApplCmdReq returns %d", ret);
+ }
+ return ret;
+ }
+
+
+
+
+
+/// RECEPTION
+
+
+
+// -----------------------------------------------------------------------------
+// CMmPhoneBookOperationInit::HandleUICCPbResp
+// Handle Response for SIM
+// -----------------------------------------------------------------------------
+//
+TInt CMmPhoneBookOperationInit::HandleUICCPbRespL
+ (
+ TBool &aComplete,
+ TInt aStatus,
+ const TDesC8 &aFileData,
+ TInt /*aTransId*/
+ )
+ {
+ TInt ret( KErrNone );
+ // break immediatelly in case of internal init
+ if ( iInternalInit )
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::HandleUICCPbRespL. Internal Init->Break");
+OstTrace0( TRACE_NORMAL, DUP2_CMMPHONEBOOKOPERATIONINIT_HANDLEUICCPBRESPL, "CMmPhoneBookOperationInit::HandleUICCPbRespL, Internal Init->Break" );
+
+ iIniPhase = EPBIniPhase_Unknown;
+
+ // set flag to indicate that we can remove this operation from array
+ aComplete = ETrue;
+ iInternalInit = EFalse;
+ return KErrNone;
+ }
+
+ // Handle recponse from UICC server
+ ret = HandlePBRespL(aFileData,aStatus);
+
+
+ // Complete, if phonebook initalization is complete or there is some error in UICC server
+ if (KErrNone != ret || EPBIniPhase_PBInitialized == iIniPhase )
+ {
+ CPhoneBookDataPackage phoneBookData;
+ phoneBookData.SetPhoneBookName( iPhonebookType );
+ phoneBookData.PackData( iPBStoreInfoData );
+
+ if ( KErrNone != ret )
+ {
+ ret = CMmStaticUtility::UICCCSCauseToEpocError( ret );
+ }
+
+ iMmPhoneBookStoreMessHandler->MessageRouter()->Complete(
+ EMmTsyPhoneBookStoreInitIPC,
+ &phoneBookData,
+ ret );
+ aComplete = ETrue;
+ }
+ return ret;
+ }
+
+
+
+
+// -----------------------------------------------------------------------------
+// CMmPhoneBookOperationInit::HandlePBRespL
+// Further Handle Response for SIM
+// -----------------------------------------------------------------------------
+//
+TInt CMmPhoneBookOperationInit::HandlePBRespL(const TDesC8& aFileData, TInt aStatus )
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::HandlePBRespL");
+ OstTrace0( TRACE_NORMAL, CMMPHONEBOOKOPERATIONINIT_HANDLEPBRESPL, "CMmPhoneBookOperationInit::HandlePBRespL" );
+
+ TInt ret(KErrNone);
+
+ if(!iExtensionPresent)
+ {
+ ret = HandleFileResp(aFileData, aStatus);
+ }
+ else
+ {
+ // For Extension File
+ ret = HandleEXTFileResp(aFileData, aStatus);
+ }
+
+ if(KErrNone == ret)
+ {
+ ret = UICCInitializeReq();
+ }
+
+ return ret;
+ }
+
+
+
+// -----------------------------------------------------------------------------
+// CMmPhoneBookOperationInit::HandleFileResp
+// Further Handle Response for phonebook EF Files
+// -----------------------------------------------------------------------------
+//
+TInt CMmPhoneBookOperationInit::HandleFileResp(const TDesC8 &aFileData, TInt aStatus)
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::HandleFileResp");
+ OstTrace0( TRACE_NORMAL, CMMPHONEBOOKOPERATIONINIT_HANDLEFILERESP, "CMmPhoneBookOperationInit::HandleFileResp" );
+
+
+ TInt ret(KErrNone);
+ TInt numOfEntries(0);
+ TInt textLength(0);
+ TInt numLength(0);
+ TInt recordLength(0);
+
+ if(UICC_STATUS_OK == aStatus)
+ {
+ if(UICC_APPL_FILE_INFO == iServiceType)
+ {
+ // get the ecord length
+ HandleFcpData(aFileData,recordLength,KRecordLength);
+
+ // Get the no of entries
+ HandleFcpData(aFileData,numOfEntries,KNoOfRecords);
+
+ // get Text length
+ textLength = (recordLength - 14);
+
+ // To get the total length of number, need to read Ext2 file
+ // IF EXT2 is not present then only 20 BCD digits can be stored
+ numLength = UICC_NO_EXT_MAX_NUM_LEN;
+ }
+ else if(UICC_APPL_READ_LINEAR_FIXED == iServiceType)
+ {
+ TUint8 infoEXT ( aFileData[(textLength + 14)] );
+ if( 0xFF != infoEXT)
+ {
+ // Send Request to read File info from EXT file
+ iExtensionPresent = ETrue;
+ }
+ }
+ }
+
+ switch(iIniPhase)
+ {
+ case EPBInitPhaseADN:
+ {
+ if( UICC_STATUS_OK == aStatus )
+ {
+ if(UICC_APPL_FILE_INFO == iServiceType)
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::HandleFileResp - Handle File Info for ADN Phonebook");
+ OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKOPERATIONINIT_HANDLEFILERESP, "CMmPhoneBookOperationInit::HandleFileResp - Handle File Info for ADN Phonebook" );
+ // Check for ADN phone book is incalidated by Fdn phonebook or not
+ TInt status(0);
+ HandleFcpData(aFileData,status,KFileStatus);
+
+ // check for ADN is invalidated or not
+ if(!(status & 0x01))
+ {
+ // Check for ADN is updatable or not when ADN is invalidated
+ if( 0x04 == (status & 0x04))
+ {
+ iPBStoreInfoData->iADNNumOfEntries = numOfEntries;
+ iPBStoreInfoData->iADNNumberLengthMax = numLength;
+ iPBStoreInfoData->iADNTextLengthMax = textLength;
+ // Change ServiceType to read File Data to get final number length
+ iServiceType = UICC_APPL_READ_LINEAR_FIXED;
+ }
+ else // when ADN is not updatable
+ {
+ iServiceType = UICC_APPL_FILE_INFO;
+ iIniPhase = EPBInitPhaseFDN;
+ }
+ }
+ else // When ADN Phoenbook is not invalidated
+ {
+ iPBStoreInfoData->iADNNumOfEntries = numOfEntries;
+ iPBStoreInfoData->iADNNumberLengthMax = numLength;
+ iPBStoreInfoData->iADNTextLengthMax = textLength;
+ // Change ServiceType to read File Data to get final number length
+ iServiceType = UICC_APPL_READ_LINEAR_FIXED;
+ }
+ }
+ else if(UICC_APPL_READ_LINEAR_FIXED == iServiceType)
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::HandleFileResp - Handle File Data for ADN Phonebook");
+ OstTrace0( TRACE_NORMAL, DUP2_CMMPHONEBOOKOPERATIONINIT_HANDLEFILERESP, "CMmPhoneBookOperationInit::HandleFileResp - Handle File Data for ADN Phonebook" );
+
+ iServiceType = UICC_APPL_FILE_INFO;
+
+ if( !iMmUiccMessHandler->GetServiceStatus( ICC_EXT1_SERVICE_NUM) || (!iExtensionPresent) )
+ {
+ iExtensionPresent = EFalse;
+ iIniPhase = GetNextAvailablePbIcc(ICC_ADN_SERVICE_NUM);
+ }
+ // ADN Phonebook is initilized
+ iADNPbInitilized = ETrue;
+ }
+ }
+ else
+ {
+ // reset all the data is init is incomplete
+ iPBStoreInfoData->iADNNumOfEntries = -1;
+ iPBStoreInfoData->iADNNumberLengthMax = -1;
+ iPBStoreInfoData->iADNTextLengthMax = -1;
+
+ // Set ADn intialized flag to False
+
+ iADNPbInitilized = EFalse;
+ }
+ }
+ break;
+ case EPBInitPhaseFDN:
+ {
+ if( UICC_STATUS_OK == aStatus )
+ {
+ if(UICC_APPL_FILE_INFO == iServiceType)
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::HandleFileResp - Handle File Info for FDN Phonebook");
+ OstTrace0( TRACE_NORMAL, DUP3_CMMPHONEBOOKOPERATIONINIT_HANDLEFILERESP, "CMmPhoneBookOperationInit::HandleFileResp - Handle File Info for FDN Phonebook" );
+
+ iPBStoreInfoData->iFDNNumOfEntries = numOfEntries;
+ iPBStoreInfoData->iFDNNumberLengthMax = numLength;
+ iPBStoreInfoData->iFDNTextLengthMax = textLength;
+ // Change ServiceType to read File Data to get final number length
+ iServiceType = UICC_APPL_READ_LINEAR_FIXED;
+ }
+ else if(UICC_APPL_READ_LINEAR_FIXED == iServiceType)
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::HandleFileResp - Handle File Data for FDN Phonebook");
+ OstTrace0( TRACE_NORMAL, DUP4_CMMPHONEBOOKOPERATIONINIT_HANDLEFILERESP, "CMmPhoneBookOperationInit::HandleFileResp - Handle File Data for ADN Phonebook" );
+
+ if(UICC_CARD_TYPE_ICC == iMmUiccMessHandler->GetCardType())
+ {
+ // Check for Exension
+ // Check for EXT1 Service is present or not
+ if( !iMmUiccMessHandler->GetServiceStatus( ICC_EXT2_SERVICE_NUM) || (!iExtensionPresent))
+ {
+ iExtensionPresent = EFalse;
+ iIniPhase = GetNextAvailablePbIcc(ICC_FDN_SERVICE_NUM);
+ }
+ }
+ else if(UICC_CARD_TYPE_UICC == iMmUiccMessHandler->GetCardType())
+ {
+ // Chekc for Extension
+ // Check for EXT1 Service is present or not
+ if( !iMmUiccMessHandler->GetServiceStatus( UICC_EXT2_SERVICE_NUM) || (!iExtensionPresent))
+ {
+ iExtensionPresent = EFalse;
+ iIniPhase = GetNextAvailablePbUicc(UICC_FDN_SERVICE_NUM);
+ }
+ }
+ iServiceType = UICC_APPL_FILE_INFO;
+ }
+ }
+ else
+ {
+ // Reset all the Data if initilized incomplete
+ iPBStoreInfoData->iFDNNumOfEntries = -1;
+ iPBStoreInfoData->iFDNNumberLengthMax = -1;
+ iPBStoreInfoData->iFDNTextLengthMax = -1;
+
+ // Check for ADN Phonebook is Initilized or not
+ if(EFalse == iADNPbInitilized)
+ {
+ ret = KErrGeneral;
+ }
+ }
+ }
+ break;
+ case EPBInitPhaseSDN:
+ {
+ if( UICC_STATUS_OK == aStatus )
+ {
+ if(UICC_APPL_FILE_INFO == iServiceType)
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::HandleFileResp - Handle File Info for SDN Phonebook");
+ OstTrace0( TRACE_NORMAL, DUP5_CMMPHONEBOOKOPERATIONINIT_HANDLEFILERESP, "CMmPhoneBookOperationInit::HandleFileResp - Handle File Info for SDN Phonebook" );
+
+ iPBStoreInfoData->iSDNNumOfEntries = numOfEntries;
+ iPBStoreInfoData->iSDNNumberLengthMax = numLength;
+ iPBStoreInfoData->iSDNTextLengthMax = textLength;
+ // Change ServiceType to read File Data to get final number length
+ iServiceType = UICC_APPL_READ_LINEAR_FIXED;
+ }
+ else if(UICC_APPL_READ_LINEAR_FIXED == iServiceType)
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::HandleFileResp - Handle File Data for SDN Phonebook");
+ OstTrace0( TRACE_NORMAL, DUP6_CMMPHONEBOOKOPERATIONINIT_HANDLEFILERESP, "CMmPhoneBookOperationInit::HandleFileResp - Handle File Data for ADN Phonebook" );
+
+ if(UICC_CARD_TYPE_ICC == iMmUiccMessHandler->GetCardType())
+ {
+ // Check for Exension
+ // Check for EXT1 Service is present or not
+ if( !iMmUiccMessHandler->GetServiceStatus( ICC_EXT3_SERVICE_NUM) || (!iExtensionPresent))
+ {
+ iExtensionPresent = EFalse;
+ iIniPhase = GetNextAvailablePbIcc(ICC_SDN_SERVICE_NUM);
+ }
+ }
+ else if(UICC_CARD_TYPE_UICC == iMmUiccMessHandler->GetCardType())
+ {
+ // Chekc for Extension
+ // Check for EXT1 Service is present or not
+ if( !iMmUiccMessHandler->GetServiceStatus( UICC_EXT3_SERVICE_NUM ) || (!iExtensionPresent))
+ {
+ iExtensionPresent = EFalse;
+ iIniPhase = GetNextAvailablePbUicc(UICC_SDN_SERVICE_NUM);
+ }
+ }
+ iServiceType = UICC_APPL_FILE_INFO;
+ }
+ }
+ else
+ {
+ // Reset all the parameters if init incomplete
+ iPBStoreInfoData->iSDNNumOfEntries = -1;
+ iPBStoreInfoData->iSDNNumberLengthMax = -1;
+ iPBStoreInfoData->iSDNTextLengthMax = -1;
+ }
+ }
+ break;
+ case EPBInitPhaseMBDN:
+ {
+ if( UICC_STATUS_OK == aStatus )
+ {
+ if(UICC_APPL_FILE_INFO == iServiceType)
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::HandleFileResp - Handle File Info for MBDN Phonebook");
+ OstTrace0( TRACE_NORMAL, DUP7_CMMPHONEBOOKOPERATIONINIT_HANDLEFILERESP, "CMmPhoneBookOperationInit::HandleFileResp - Handle File Info for MBDN Phonebook" );
+
+ iPBStoreInfoData->iMBDNNumOfEntries = numOfEntries;
+ iPBStoreInfoData->iMBDNNumberLengthMax = numLength;
+ iPBStoreInfoData->iMBDNTextLengthMax = textLength;
+ // Change ServiceType to read File Data to get final number length
+ iServiceType = UICC_APPL_READ_LINEAR_FIXED;
+ }
+ else if( UICC_APPL_READ_LINEAR_FIXED == iServiceType)
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::HandleFileResp - Handle File Data for MBDN Phonebook");
+ OstTrace0( TRACE_NORMAL, DUP8_CMMPHONEBOOKOPERATIONINIT_HANDLEFILERESP, "CMmPhoneBookOperationInit::HandleFileResp - Handle File Data for MBDN Phonebook" );
+
+ if(!iExtensionPresent)
+ {
+ if(UICC_CARD_TYPE_ICC == iMmUiccMessHandler->GetCardType())
+ iIniPhase = GetNextAvailablePbIcc(ICC_MBDN_SERVICE_NUM);
+ else if(UICC_CARD_TYPE_UICC == iMmUiccMessHandler->GetCardType())
+ iIniPhase = GetNextAvailablePbUicc(UICC_MBDN_SERVICE_NUM);
+ }
+ iServiceType = UICC_APPL_FILE_INFO;
+ }
+ }
+ else
+ {
+ // reset all the paramenters if init ic incomplete
+ iPBStoreInfoData->iMBDNNumOfEntries = -1;
+ iPBStoreInfoData->iMBDNNumberLengthMax = -1;
+ iPBStoreInfoData->iMBDNTextLengthMax = -1;
+ }
+ }
+ break;
+ case EPBInitPhaseMSISDN:
+ {
+ if( UICC_STATUS_OK == aStatus )
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::HandleFileResp - Handle File Info for MSISDN Phonebook");
+ OstTrace0( TRACE_NORMAL, DUP9_CMMPHONEBOOKOPERATIONINIT_HANDLEFILERESP, "CMmPhoneBookOperationInit::HandleFileResp - Handle File Info for MSISDN Phonebook" );
+
+ if(UICC_APPL_FILE_INFO == iServiceType)
+ {
+ iPBStoreInfoData->iMSISDNNumOfEntries = numOfEntries;
+ iPBStoreInfoData->iMSISDNNumberLengthMax = numLength;
+ iPBStoreInfoData->iMSISDNTextLengthMax = textLength;
+ // Change ServiceType to read File Data to get final number length
+ iServiceType = UICC_APPL_READ_LINEAR_FIXED;
+ }
+ else if(UICC_APPL_READ_LINEAR_FIXED == iServiceType)
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::HandleFileResp - Handle File Data for MSISDN Phonebook");
+ OstTrace0( TRACE_NORMAL, DUP10_CMMPHONEBOOKOPERATIONINIT_HANDLEFILERESP, "CMmPhoneBookOperationInit::HandleFileResp - Handle File Data for MSISDN Phonebook" );
+
+ if(UICC_CARD_TYPE_ICC == iMmUiccMessHandler->GetCardType())
+ {
+ // Check for Exension
+ // Check for EXT1 Service is present or not
+ if( !iMmUiccMessHandler->GetServiceStatus( ICC_EXT1_SERVICE_NUM ) || (!iExtensionPresent))
+ {
+ iExtensionPresent= EFalse;
+ iIniPhase = GetNextAvailablePbIcc(ICC_MSISDN_SERVICE_NUM);
+ }
+ }
+ else if(UICC_CARD_TYPE_UICC == iMmUiccMessHandler->GetCardType())
+ {
+ // Chekc for Extension
+ // Check for EXT1 Service is present or not
+ if( !iMmUiccMessHandler->GetServiceStatus( UICC_EXT5_SERVICE_NUM ) || (!iExtensionPresent))
+ {
+ iExtensionPresent = EFalse;
+ iIniPhase = GetNextAvailablePbUicc(UICC_MSISDN_SERVICE_NUM);
+ }
+ }
+ iServiceType = UICC_APPL_FILE_INFO;
+ }
+ }
+ else
+ {
+ // reste all the parameters if init is incomplete
+ iPBStoreInfoData->iMSISDNNumOfEntries = -1;
+ iPBStoreInfoData->iMSISDNNumberLengthMax = -1;
+ iPBStoreInfoData->iMSISDNTextLengthMax = -1;
+ }
+ }
+ break;
+ case EPBInitPhaseVMBX:
+ {
+ if( UICC_STATUS_OK == aStatus )
+ {
+ if(UICC_APPL_FILE_INFO == iServiceType)
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::HandleFileResp - Handle File Info for VMBX Phonebook");
+ OstTrace0( TRACE_NORMAL, DUP13_CMMPHONEBOOKOPERATIONINIT_HANDLEFILERESP, "CMmPhoneBookOperationInit::HandleFileResp - Handle File Info for VMBX Phonebook" );
+
+ iPBStoreInfoData->iVMBXNumOfEntries = numOfEntries;
+ iPBStoreInfoData->iVMBXNumberLengthMax = numLength;
+ iPBStoreInfoData->iVMBXTextLengthMax = textLength;
+ // Change ServiceType to read File Data to get final number length
+ iServiceType = UICC_APPL_READ_LINEAR_FIXED;
+ }
+ else if(UICC_APPL_READ_LINEAR_FIXED == iServiceType)
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::HandleFileResp - Handle File Data for VMBX Phonebook");
+ OstTrace0( TRACE_NORMAL, DUP11_CMMPHONEBOOKOPERATIONINIT_HANDLEFILERESP, "CMmPhoneBookOperationInit::HandleFileResp - Handle File Data for VMBX Phonebook" );
+
+ // Check for Exension
+ // Check for EXT1 Service is present or not
+ if( !iMmUiccMessHandler->GetServiceStatus( ICC_EXT1_SERVICE_NUM) || ( !iExtensionPresent ))
+ {
+ iExtensionPresent = EFalse;
+ iIniPhase = EPBIniPhase_PBInitialized;
+ }
+ iServiceType = UICC_APPL_FILE_INFO;
+ }
+ }
+ else
+ {
+ // Reset all the parameters if init incomplete
+ iPBStoreInfoData->iVMBXNumOfEntries = -1;
+ iPBStoreInfoData->iVMBXNumberLengthMax = -1;
+ iPBStoreInfoData->iVMBXTextLengthMax = -1;
+ }
+ }
+ break;
+ default:
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::HandleFileResp - PhoneBook not supported");
+ OstTrace0( TRACE_NORMAL, DUP12_CMMPHONEBOOKOPERATIONINIT_HANDLEFILERESP, "CMmPhoneBookOperationInit::HandleFileResp - PhoneBook not supported" );
+ }
+ break;
+ }
+
+ if( ( UICC_STATUS_OK != aStatus ) && ( KErrNone == ret ) )
+ {
+ iServiceType = UICC_APPL_FILE_INFO;
+ GetNextPhoneBookInitPhase(iIniPhase);
+ }
+ return ret;
+
+ }
+
+
+
+// -----------------------------------------------------------------------------
+// CmmPhonebookOperationInit::HandleEXTFileResp
+// Further handles response for Phonebook EXT Files
+// -----------------------------------------------------------------------------
+//
+
+
+TInt CMmPhoneBookOperationInit::HandleEXTFileResp( const TDesC8 &aFileData , TInt aStatus)
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::HandleEXTFileResp");
+ OstTrace0( TRACE_NORMAL, CMMPHONEBOOKOPERATIONINIT_HANDLEEXTFILERESP, "CMmPhoneBookOperationInit::HandleEXTFileResp" );
+
+
+ TInt ret(KErrNone);
+ if(UICC_STATUS_OK == aStatus)
+ {
+ // no of records in EXT2 EF
+ TInt noOfRecords(0);
+ // get the no of records
+ HandleFcpData(aFileData,noOfRecords,KNoOfRecords);
+
+ // To get the total length of number
+ // Where multiply by 11 is the no of bytes in extension data and multiply by 2 is for BCD coding while
+ //storing data in EXT2 file
+ TInt numLength = UICC_NO_EXT_MAX_NUM_LEN + (11*noOfRecords*2);
+
+ // Change Extension present to read PhoneBook EF file info
+ iExtensionPresent = EFalse;
+ iServiceType = UICC_APPL_FILE_INFO;
+
+ switch(iIniPhase)
+ {
+ case EPBInitPhaseADN:
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::HandleEXTFileResp - For ADN Phone book");
+ OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKOPERATIONINIT_HANDLEEXTFILERESP, "CMmPhoneBookOperationInit::HandleEXTFileResp - For ADN Phone book" );
+
+ iPBStoreInfoData->iADNNumberLengthMax = numLength;
+ // Change the Initialization Phase to next
+ // Get next available phonebook in UST table
+ iIniPhase = GetNextAvailablePbIcc(UICC_FDN_SERVICE_NUM);
+ }
+ break;
+ case EPBInitPhaseFDN:
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::HandleEXTFileResp - For FDN PhoneBook");
+ OstTrace0( TRACE_NORMAL, DUP2_CMMPHONEBOOKOPERATIONINIT_HANDLEEXTFILERESP, "CMmPhoneBookOperationInit::HandleEXTFileResp -For FDN PhoneBoo" );
+
+ iPBStoreInfoData->iFDNNumberLengthMax = numLength;
+
+ if(UICC_CARD_TYPE_ICC == iMmUiccMessHandler->GetCardType())
+ {
+ iIniPhase = GetNextAvailablePbIcc(ICC_FDN_SERVICE_NUM);
+ }
+ else if(UICC_CARD_TYPE_UICC == iMmUiccMessHandler->GetCardType())
+ {
+ iIniPhase = GetNextAvailablePbUicc(UICC_FDN_SERVICE_NUM);
+ }
+ }
+ break;
+ case EPBInitPhaseSDN:
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::HandleEXTFileResp - For SDN PhoneBook");
+ OstTrace0( TRACE_NORMAL, DUP3_CMMPHONEBOOKOPERATIONINIT_HANDLEEXTFILERESP, "CMmPhoneBookOperationInit::HandleEXTFileResp - For SDN PhoneBook" );
+
+ iPBStoreInfoData->iSDNNumberLengthMax = numLength;
+
+ if(UICC_CARD_TYPE_ICC == iMmUiccMessHandler->GetCardType())
+ {
+ iIniPhase = GetNextAvailablePbIcc(ICC_SDN_SERVICE_NUM);
+ }
+ else if(UICC_CARD_TYPE_UICC == iMmUiccMessHandler->GetCardType())
+ {
+ iIniPhase = GetNextAvailablePbUicc(UICC_SDN_SERVICE_NUM);
+ }
+
+ }
+ break;
+ case EPBInitPhaseMBDN:
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::HandleEXTFileResp - for MBDN PhoneBook");
+ OstTrace0( TRACE_NORMAL, DUP4_CMMPHONEBOOKOPERATIONINIT_HANDLEEXTFILERESP, "CMmPhoneBookOperationInit::HandleEXTFileResp - for MBDN PhoneBook" );
+
+ iPBStoreInfoData->iMBDNNumberLengthMax = numLength;
+
+ if(UICC_CARD_TYPE_ICC == iMmUiccMessHandler->GetCardType())
+ {
+ iIniPhase = GetNextAvailablePbIcc(ICC_MBDN_SERVICE_NUM);
+ }
+ else if(UICC_CARD_TYPE_UICC == iMmUiccMessHandler->GetCardType())
+ {
+ iIniPhase = GetNextAvailablePbUicc(UICC_MBDN_SERVICE_NUM);
+ }
+ }
+ break;
+ case EPBInitPhaseMSISDN:
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::HandleEXTFileResp - for MSISDN Phonebook");
+ OstTrace0( TRACE_NORMAL, DUP5_CMMPHONEBOOKOPERATIONINIT_HANDLEEXTFILERESP, "CMmPhoneBookOperationInit::HandleEXTFileResp - for MSISDN Phonebook" );
+
+ iPBStoreInfoData->iMSISDNNumberLengthMax = numLength;
+
+ if(UICC_CARD_TYPE_ICC == iMmUiccMessHandler->GetCardType())
+ {
+ iIniPhase = GetNextAvailablePbIcc(ICC_MSISDN_SERVICE_NUM);
+ }
+ else if(UICC_CARD_TYPE_UICC == iMmUiccMessHandler->GetCardType())
+ {
+ iIniPhase = GetNextAvailablePbUicc(UICC_MSISDN_SERVICE_NUM);
+ }
+ }
+ break;
+ case EPBInitPhaseVMBX:
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::HandleEXTFileResp - For VMBX PhoneBook");
+ OstTrace0( TRACE_NORMAL, DUP6_CMMPHONEBOOKOPERATIONINIT_HANDLEEXTFILERESP, "CMmPhoneBookOperationInit::HandleEXTFileResp - For VMBX PhoneBook" );
+
+ iPBStoreInfoData->iVMBXNumberLengthMax = numLength;
+ iIniPhase = EPBIniPhase_PBInitialized;
+ }
+ break;
+ default:
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::HandleEXTFileResp - PhoneBook not supported");
+ OstTrace0( TRACE_NORMAL, DUP7_CMMPHONEBOOKOPERATIONINIT_HANDLEEXTFILERESP, "CMmPhoneBookOperationInit::HandleEXTFileResp - PhoneBook not supported" );
+ }
+ break;
+ }
+
+ }
+ else
+ {
+ iServiceType = UICC_APPL_FILE_INFO;
+ GetNextPhoneBookInitPhase(iIniPhase);
+ }
+ return ret;
+ }
+
+
+
+
+
+// -----------------------------------------------------------------------------
+// CMmPhoneBookOperationInit::GetNextAvailablePbUicc
+// Gets next phonebook to be initialized in SST Servicetable
+// by index
+// -----------------------------------------------------------------------------
+//
+
+TUint8 CMmPhoneBookOperationInit::GetNextAvailablePbIcc(TUint8 aPBook)
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::GetNextAvailablePbIcc");
+ OstTrace0( TRACE_NORMAL, CMMPHONEBOOKOPERATIONINIT_GETNEXTAVAILABLEPBICC, "CMmPhoneBookOperationInit::GetNextAvailablePbIcc" );
+
+ switch(aPBook)
+ {
+ case ICC_ADN_SERVICE_NUM:
+ {
+ if(iMmUiccMessHandler->GetServiceStatus( ICC_FDN_SERVICE_NUM))
+ {
+ aPBook = EPBInitPhaseFDN;
+ }
+ else if(iMmUiccMessHandler->GetServiceStatus( ICC_SDN_SERVICE_NUM))
+ {
+ aPBook = EPBInitPhaseSDN;
+ }
+ else if(iMmUiccMessHandler->GetServiceStatus( ICC_MBDN_SERVICE_NUM))
+ {
+ aPBook = EPBInitPhaseMBDN;
+ }
+ else if(iMmUiccMessHandler->GetServiceStatus( ICC_MSISDN_SERVICE_NUM))
+ {
+ aPBook = EPBInitPhaseMSISDN;
+ }
+ else if( iMmUiccMessHandler->GetCphsInformationStatus(ICC_MAILBOX_NUM)) // Service no need to be changed
+ {
+ aPBook = EPBInitPhaseVMBX;
+ }
+ else
+ {
+ aPBook = EPBIniPhase_PBInitialized;
+ }
+ // aPBook = EPBInitPhaseVMBX;
+ }
+ break;
+ case ICC_FDN_SERVICE_NUM:
+ {
+ if(iMmUiccMessHandler->GetServiceStatus( ICC_SDN_SERVICE_NUM))
+ {
+ aPBook = EPBInitPhaseSDN;
+ }
+ else if(iMmUiccMessHandler->GetServiceStatus( ICC_MBDN_SERVICE_NUM))
+ {
+ aPBook = EPBInitPhaseMBDN;
+ }
+ else if(iMmUiccMessHandler->GetServiceStatus( ICC_MSISDN_SERVICE_NUM))
+ {
+ aPBook = EPBInitPhaseMSISDN;
+ }
+ else if(iMmUiccMessHandler->GetCphsInformationStatus( ICC_MAILBOX_NUM )) // Service no need to changed
+ {
+ aPBook = EPBInitPhaseVMBX;
+ }
+ else
+ {
+ aPBook = EPBIniPhase_PBInitialized;
+ // aPBook = EPBInitPhaseVMBX;
+ }
+ }
+ break;
+ case ICC_SDN_SERVICE_NUM:
+ {
+ if(iMmUiccMessHandler->GetServiceStatus(ICC_MBDN_SERVICE_NUM))
+ {
+ aPBook = EPBInitPhaseMBDN;
+ }
+ else if(iMmUiccMessHandler->GetServiceStatus(ICC_MSISDN_SERVICE_NUM))
+ {
+ aPBook = EPBInitPhaseMSISDN;
+ }
+ else if( iMmUiccMessHandler->GetCphsInformationStatus( ICC_MAILBOX_NUM ))
+ {
+ aPBook = EPBInitPhaseVMBX;
+ }
+ else
+ {
+ aPBook = EPBIniPhase_PBInitialized;
+ //aPBook = EPBInitPhaseVMBX;
+ }
+ }
+ break;
+ case ICC_MBDN_SERVICE_NUM:
+ {
+ if(iMmUiccMessHandler->GetServiceStatus( ICC_MSISDN_SERVICE_NUM))
+ {
+ aPBook = EPBInitPhaseMSISDN;
+ }
+ else if( iMmUiccMessHandler->GetCphsInformationStatus( ICC_MAILBOX_NUM ))
+ {
+ aPBook = EPBInitPhaseVMBX;
+ }
+ else
+ {
+ aPBook = EPBIniPhase_PBInitialized;
+ //aPBook = EPBInitPhaseVMBX;
+ }
+ }
+ break;
+ case ICC_MSISDN_SERVICE_NUM:
+ // Check for CPHS flas to get the VMBX Phonebook configuration other wise complete the phonebook
+ // init for 2G card
+ if( iMmUiccMessHandler->GetCphsInformationStatus( ICC_MAILBOX_NUM ))
+ {
+ aPBook = EPBInitPhaseVMBX;
+ }
+ else
+ {
+ aPBook = EPBIniPhase_PBInitialized;
+ }
+ break;
+ default:
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::GetNextAvailablePbIcc - Not Supported");
+ OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKOPERATIONINIT_GETNEXTAVAILABLEPBICC, "CMmPhoneBookOperationInit::GetNextAvailablePbIcc - Not Supported" );
+ }
+ break;
+ }
+ return aPBook;
+ }
+
+
+
+
+
+// -----------------------------------------------------------------------------
+// CMmPhoneBookOperationInit::GetNextAvailablePbUicc
+// Gets next phonebook to be initiilized from UST service table
+// -----------------------------------------------------------------------------
+//
+
+TUint8 CMmPhoneBookOperationInit::GetNextAvailablePbUicc(TUint8 aPBook)
+ {
+ TFLOGSTRING("TSY: CMmPhoneBookOperationInit::GetNextAvailablePbUicc");
+ OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKOPERATIONINIT_GETNEXTAVAILABLEPBUICC, "CMmPhoneBookOperationInit::GetNextAvailablePbUicc" );
+
+ switch(aPBook)
+ {
+ case UICC_FDN_SERVICE_NUM:
+ {
+ if(iMmUiccMessHandler->GetServiceStatus( UICC_SDN_SERVICE_NUM))
+ {
+ aPBook = EPBInitPhaseSDN;
+ }
+ else if(iMmUiccMessHandler->GetServiceStatus( UICC_MBDN_SERVICE_NUM))
+ {
+ aPBook = EPBInitPhaseMBDN;
+ }
+ else if(iMmUiccMessHandler->GetServiceStatus( UICC_MSISDN_SERVICE_NUM))
+ {
+ aPBook = EPBInitPhaseMSISDN;
+ }
+ else
+ {
+ aPBook = EPBIniPhase_PBInitialized;
+ }
+ }
+ break;
+ case UICC_SDN_SERVICE_NUM:
+ {
+ if(iMmUiccMessHandler->GetServiceStatus(UICC_MBDN_SERVICE_NUM))
+ {
+ aPBook = EPBInitPhaseMBDN;
+ }
+ else if(iMmUiccMessHandler->GetServiceStatus(UICC_MSISDN_SERVICE_NUM))
+ {
+ aPBook = EPBInitPhaseMSISDN;
+ }
+ else
+ {
+ aPBook = EPBIniPhase_PBInitialized;
+ }
+ }
+ break;
+ case UICC_MBDN_SERVICE_NUM:
+ {
+ if(iMmUiccMessHandler->GetServiceStatus( UICC_MSISDN_SERVICE_NUM))
+ {
+ aPBook = EPBInitPhaseMSISDN;
+ }
+ else
+ {
+ aPBook = EPBIniPhase_PBInitialized;
+ }
+ }
+ break;
+ case UICC_MSISDN_SERVICE_NUM:
+ aPBook = EPBIniPhase_PBInitialized;
+ break;
+ default:
+ break;
+ }
+ return aPBook;
+ }
+
+
+
+
+// -----------------------------------------------------------------------------
+// CMmPhoneBookOperationInit3G_adn::GetNextPhoneBookInitPhase
+// Get next Phonebook init phase if Init for one Phonebook fails
+// -----------------------------------------------------------------------------
+//
+
+void CMmPhoneBookOperationInit::GetNextPhoneBookInitPhase(TUint8& aInitPhase)
+ {
+ if(UICC_CARD_TYPE_ICC == iMmUiccMessHandler->GetCardType())
+ {
+ switch(aInitPhase)
+ {
+ case EPBInitPhaseADN:
+ {
+ aInitPhase = GetNextAvailablePbIcc(ICC_ADN_SERVICE_NUM);
+ }
+ break;
+ case EPBInitPhaseFDN:
+ {
+ aInitPhase = GetNextAvailablePbIcc(ICC_FDN_SERVICE_NUM);
+ }
+ break;
+ case EPBInitPhaseSDN:
+ {
+ aInitPhase = GetNextAvailablePbIcc(ICC_SDN_SERVICE_NUM);
+ }
+ break;
+ case EPBInitPhaseMBDN:
+ {
+ aInitPhase = GetNextAvailablePbIcc(ICC_MBDN_SERVICE_NUM);
+ }
+ break;
+ case EPBInitPhaseMSISDN:
+ {
+ aInitPhase = GetNextAvailablePbIcc(ICC_MSISDN_SERVICE_NUM);
+ }
+ break;
+ default:
+ {
+ aInitPhase = EPBIniPhase_PBInitialized;
+ }
+ break;
+ }
+ }
+ else
+ {
+ if(UICC_CARD_TYPE_UICC == iMmUiccMessHandler->GetCardType())
+ {
+ switch(aInitPhase)
+ {
+ case EPBInitPhase_3GADN_PBR:
+ {
+ iServiceType = UICC_APPL_FILE_INFO;
+ aInitPhase = EPBIniPhase_3GADNDone;
+ }
+ break;
+ case EPBInitPhase_3GADN_Type1:
+ case EPBInitPhase_3GADN_Type2:
+ case EPBInitPhase_3GADN_Type3:
+ {
+ iServiceType = UICC_APPL_FILE_INFO;
+ }
+ break;
+ case EPBInitPhaseFDN:
+ {
+ aInitPhase = GetNextAvailablePbUicc(UICC_FDN_SERVICE_NUM);
+ }
+ break;
+ case EPBInitPhaseSDN:
+ {
+ aInitPhase = GetNextAvailablePbUicc(UICC_SDN_SERVICE_NUM);
+ }
+ break;
+ case EPBInitPhaseMBDN:
+ {
+ aInitPhase = GetNextAvailablePbUicc(UICC_MBDN_SERVICE_NUM);
+ }
+ break;
+ case EPBInitPhaseMSISDN:
+ {
+ aInitPhase = GetNextAvailablePbUicc(UICC_MSISDN_SERVICE_NUM);
+ }
+ break;
+ default:
+ {
+ aInitPhase = EPBIniPhase_PBInitialized;
+ }
+ break;
+ }
+ }
+ }
+ }
+
+// End of file
+