adaptationlayer/tsy/nokiatsy_dll/src/cmmphonebookoperationcache.cpp
changeset 8 6295dc2169f3
parent 7 fa67e03b87df
child 9 8486d82aef45
equal deleted inserted replaced
7:fa67e03b87df 8:6295dc2169f3
     1 /*
     1 /*
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
     2 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
     3 * All rights reserved.
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     4 * This component and the accompanying materials are made available
     5 * under the terms of the License "Eclipse Public License v1.0"
     5 * under the terms of the License "Eclipse Public License v1.0"
     6 * which accompanies this distribution, and is available
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     8 *
     8 *
     9 * Initial Contributors:
     9 * Initial Contributors:
    10 * Nokia Corporation - initial contribution.
    10 * Nokia Corporation - initial contribution.
    11 * 
    11 *
    12 * Contributors:
    12 * Contributors:
    13 * 
    13 *
    14 * Description:
    14 * Description:
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 
    18 
    20 #include <etelmm.h>
    20 #include <etelmm.h>
    21 #include <tisi.h>
    21 #include <tisi.h>
    22 #include <pn_const.h>
    22 #include <pn_const.h>
    23 #include <ctsy/serviceapi/mmtsy_ipcdefs.h>
    23 #include <ctsy/serviceapi/mmtsy_ipcdefs.h>
    24 #include "cmmmessagerouter.h"
    24 #include "cmmmessagerouter.h"
       
    25 #include "cmmphonebookstoreoperationbase.h"
    25 #include "cmmphonebookoperationcache.h"
    26 #include "cmmphonebookoperationcache.h"
    26 #include "osttracedefinitions.h"
    27 #include "OstTraceDefinitions.h"
    27 #ifdef OST_TRACE_COMPILER_IN_USE
    28 #ifdef OST_TRACE_COMPILER_IN_USE
    28 #include "cmmphonebookoperationcachetraces.h"
    29 #include "cmmphonebookoperationcachetraces.h"
    29 #endif
    30 #endif
    30 
    31 
    31 // EXTERNAL DATA STRUCTURES
    32 // EXTERNAL DATA STRUCTURES
    33 
    34 
    34 // EXTERNAL FUNCTION PROTOTYPES
    35 // EXTERNAL FUNCTION PROTOTYPES
    35     // None
    36     // None
    36 
    37 
    37 // CONSTANTS
    38 // CONSTANTS
       
    39 const TUint8 KEFBasicLength   = 14;
       
    40 
       
    41 // Extension length is 22 (11 bytes having 2 digits/byte)
       
    42 const TUint8 KEFExtensionLength   = 22;
    38 
    43 
    39 // MACROS
    44 // MACROS
    40     // None
    45     // None
    41 
    46 
    42 // LOCAL CONSTANTS AND MACROS
    47 // LOCAL CONSTANTS AND MACROS
   114 
   119 
   115     mmPhoneBookOperationCache->iMmPhoneBookStoreMessHandler =
   120     mmPhoneBookOperationCache->iMmPhoneBookStoreMessHandler =
   116         aMmPhoneBookStoreMessHandler;
   121         aMmPhoneBookStoreMessHandler;
   117 
   122 
   118     mmPhoneBookOperationCache->iMmUiccMessHandler = aUiccMessHandler;
   123     mmPhoneBookOperationCache->iMmUiccMessHandler = aUiccMessHandler;
   119     
   124 
   120     return mmPhoneBookOperationCache;
   125     return mmPhoneBookOperationCache;
   121     }
   126     }
   122 
   127 
   123 // -----------------------------------------------------------------------------
   128 // -----------------------------------------------------------------------------
   124 // CMmPhoneBookOperationCache::UiccCreateReq
   129 // CMmPhoneBookOperationCache::UiccCreateReq
   135 TFLOGSTRING("TSY: CMmPhoneBookOperationCache::CreateReq");
   140 TFLOGSTRING("TSY: CMmPhoneBookOperationCache::CreateReq");
   136 OstTrace0( TRACE_NORMAL, CMMPHONEBOOKOPERATIONCACHE_CREATEREQ, "CMmPhoneBookOperationCache::CreateReq" );
   141 OstTrace0( TRACE_NORMAL, CMMPHONEBOOKOPERATIONCACHE_CREATEREQ, "CMmPhoneBookOperationCache::CreateReq" );
   137 
   142 
   138     TInt ret( KErrNotSupported );
   143     TInt ret( KErrNotSupported );
   139 
   144 
       
   145     // Transaction ID is saved to separate EMmTsyONStoreGetInfoIPC handling
       
   146     // from other PB handling. Also it can be used for any separation purpose.
       
   147     iSavedIPC = aIpc;
       
   148 
   140     switch( aIpc )
   149     switch( aIpc )
   141         {
   150         {
   142         case EMmTsyPhoneBookStoreGetInfoIPC:
   151         case EMmTsyPhoneBookStoreGetInfoIPC:
   143             {
   152             {
   144             iNumOfUsedSDNEntries = 0;
   153             iNumOfUsedSDNEntries = 0;
   145             iNumOfUsedVMBXEntries = 0;
   154             iNumOfUsedVMBXEntries = 0;
   146             break;
   155             break;
   147             }
   156             }
       
   157         case EMmTsyONStoreGetInfoIPC:
       
   158             {
       
   159             iFileId = PB_MSISDN_FID;
       
   160             iExtFileId = PB_EXT1_FID;
       
   161             iArrayIndex = EPhonebookTypeMSISDN;
       
   162 
       
   163             TInt recordId( 0 );
       
   164             iEXTNumberLen = 0;
       
   165             iTypeOfReading = EFileInfoRead;
       
   166             aDataPackage->UnPackData( recordId );
       
   167             ret = UiccReadApplFileInfo( PB_MSISDN_FID,
       
   168                                         recordId,
       
   169                                         aTransId );
       
   170             break;
       
   171             }
   148         case EMmTsyPhoneBookStoreCacheIPC:
   172         case EMmTsyPhoneBookStoreCacheIPC:
   149             {
   173             {
       
   174             // Convert Phone Book name to file id
       
   175             iExtFileId = UICC_ILLEGAL_FILE_ID;
       
   176             iFileId = ConvertToPBfileId( iPhoneBookTypeName, 
       
   177                                          iExtFileId,  
       
   178                                          iMmUiccMessHandler->GetCardType());
       
   179             iArrayIndex = ConvertToConfArrayIndex( iFileId );
       
   180 
   150             const CPhoneBookDataPackage* phoneBookData(
   181             const CPhoneBookDataPackage* phoneBookData(
   151                 static_cast<const CPhoneBookDataPackage*>( aDataPackage ) );
   182                 static_cast<const CPhoneBookDataPackage*>( aDataPackage ) );
   152 
   183 
   153             CArrayPtrSeg<CPhoneBookStoreEntry>* prtToCacheArray;
   184             CArrayPtrSeg<CPhoneBookStoreEntry>* prtToCacheArray;
   154             phoneBookData->UnPackData( prtToCacheArray );
   185             phoneBookData->UnPackData( prtToCacheArray );
   170             }
   201             }
   171         default:
   202         default:
   172             {
   203             {
   173             // Nothing to do here
   204             // Nothing to do here
   174 TFLOGSTRING2("TSY: CMmPhoneBookOperationCache::CreateReq - Unknown IPC: %d", aIpc);
   205 TFLOGSTRING2("TSY: CMmPhoneBookOperationCache::CreateReq - Unknown IPC: %d", aIpc);
   175 OstTraceExt1( TRACE_NORMAL, CMMPHONEBOOKOPERATIONCACHE_UICCCREATEREQ, "CMmPhoneBookOperationCache::UiccCreateReq; Unknown IPC =%hd", aIpc );
   206 OstTrace1( TRACE_NORMAL, DUP1_CMMPHONEBOOKOPERATIONCACHE_UICCCREATEREQ, "CMmPhoneBookOperationCache::UICCCreateReq;Unknown aIpc=%d", aIpc );
   176             break;
   207             break;
   177             }
   208             }
   178         }//switch-case
   209         }//switch-case
   179     return ret;
   210     return ret;
   180     }
   211     }
   207 
   238 
   208         ret = CMmStaticUtility::UICCCSCauseToEpocError( aStatus );
   239         ret = CMmStaticUtility::UICCCSCauseToEpocError( aStatus );
   209         }
   240         }
   210 
   241 
   211 
   242 
   212     if( !iCancelOperation )
   243     if ( ( !iCancelOperation ) &&
   213         {
   244          ( EMmTsyONStoreGetInfoIPC != iSavedIPC ) )
   214         // Convert Phone Book name to file id
   245         {
   215         TUint16 fileIdExt ( UICC_ILLEGAL_FILE_ID );
   246         switch(iFileId)
   216         TUint16 pbFileId = ConvertToPBfileId( iPhoneBookTypeName, fileIdExt,  iMmUiccMessHandler->GetCardType());
       
   217         TUint8 pbArrayIndex = ConvertToConfArrayIndex( pbFileId );
       
   218         
       
   219         switch(pbFileId)
       
   220             {
   247             {
   221             case PB_ADN_FID:
   248             case PB_ADN_FID:
   222             case PB_FDN_FID:
   249             case PB_FDN_FID:
   223             case PB_SDN_FID:
   250             case PB_SDN_FID:
   224                 {
   251                 {
   225                 // Start Caching for ADN Phone Book
   252                 // Start Caching for ADN Phone Book
   226                 if(!iExtensionToRead)
   253                 if(!iExtensionToRead)
   227                     {
   254                     {
   228                     // Check for UICC_SERVER_OK 
   255                     // Check for UICC_SERVER_OK
   229                     if( UICC_STATUS_OK == aStatus)
   256                     if( UICC_STATUS_OK == aStatus)
   230                         {
   257                         {
   231                         iStoreEntry = new ( ELeave ) TPBEntry();
   258                         iStoreEntry = new ( ELeave ) TPBEntry();
   232                         // update Entry Data
   259                         // update Entry Data
   233                         iStoreEntry->iEntryIndex = iIndexToRead;
   260                         iStoreEntry->iEntryIndex = iIndexToRead;
   234 
   261 
   235                         // check if Entry is valid Entry or Empty Entry
   262                         // check if Entry is valid Entry or Empty Entry
   236                         TInt retval = EmptyEntryCheck(aFileData);
   263                         TInt retval = EmptyEntryCheck(aFileData);
   237                         
   264 
   238                         // if Entry is not empty
   265                         // if Entry is not empty
   239                         if( KErrNone == retval)
   266                         if( KErrNone == retval)
   240                             {
   267                             {
   241                             // Update Entry Status 
   268                             // Update Entry Status
   242                             iStoreEntry->iEntryPresent = ETrue;
   269                             iStoreEntry->iEntryPresent = ETrue;
   243                             // Seperate Entry data form UICC Server response message
   270                             // Seperate Entry data form UICC Server response message
   244                             // Case: <Data available to be filled into array>
   271                             // Case: <Data available to be filled into array>
   245                             iMmPhoneBookStoreMessHandler->
   272                             iMmPhoneBookStoreMessHandler->
   246                             iPBStoreConf[pbArrayIndex].
   273                             iPBStoreConf[iArrayIndex].
   247                             GetPBEntryFromUICCData( 
   274                             GetPBEntryFromUICCData(
   248                                 aFileData,
   275                                 aFileData,
   249                                 iNumberBuf,
   276                                 iNumberBuf,
   250                                 iNameBuf);
   277                                 iNameBuf);
   251                                 
   278 
   252                             // Check for Is there any extension data
   279                             // Check for Is there any extension data
   253                             // And the Extension data record number is valid
   280                             // And the Extension data record number is valid
   254                             // Index to read Extension file Data is Alpha string
   281                             // Index to read Extension file Data is Alpha string
   255                             // Length + 14 , minus 1 is for Array index Calculation 
   282                             // Length + 14 , minus 1 is for Array index Calculation
   256                             //(it starts from 0)
   283                             //(it starts from 0)
   257                             if ( 0xFF == aFileData[iMmPhoneBookStoreMessHandler->
   284                             if ( 0xFF == aFileData[iMmPhoneBookStoreMessHandler->
   258                                          iPBStoreConf[pbArrayIndex].
   285                                          iPBStoreConf[iArrayIndex].
   259                                          iAlphaStringlength + 13]  )
   286                                          iAlphaStringlength + 13]  )
   260                                 {
   287                                 {
   261                                 // Append Entry to list
   288                                 // Append Entry to list
   262                                 iMmPhoneBookStoreMessHandler->StoreEntryToPhoneBookList(
   289                                 iMmPhoneBookStoreMessHandler->StoreEntryToPhoneBookList(
   263                                               iStoreEntry,
   290                                               iStoreEntry,
   264                                               pbArrayIndex );
   291                                               iArrayIndex );
   265 
   292 
   266                                 // the there is no extension data
   293                                 // the there is no extension data
   267                                 CPhoneBookStoreEntry* phoneBookStoreMsg =
   294                                 CPhoneBookStoreEntry* phoneBookStoreMsg =
   268                                 new( ELeave ) CPhoneBookStoreEntry;
   295                                 new( ELeave ) CPhoneBookStoreEntry;
   269                                 CleanupStack::PushL( phoneBookStoreMsg );
   296                                 CleanupStack::PushL( phoneBookStoreMsg );
   270                                 phoneBookStoreMsg->ConstructL();
   297                                 phoneBookStoreMsg->ConstructL();
   271                                 
   298 
   272                                 iMmPhoneBookStoreMessHandler->StorePhonebookEntryL(
   299                                 iMmPhoneBookStoreMessHandler->StorePhonebookEntryL(
   273                                     iNameBuf,
   300                                     iNameBuf,
   274                                     iNumberBuf,
   301                                     iNumberBuf,
   275                                     *phoneBookStoreMsg,
   302                                     *phoneBookStoreMsg,
   276                                     pbFileId,
   303                                     iFileId,
   277                                     iIndexToRead,
   304                                     iIndexToRead );
   278                                     EFalse );
       
   279                                 TF_ASSERT( NULL != iPhoneBookStoreCacheArray );
   305                                 TF_ASSERT( NULL != iPhoneBookStoreCacheArray );
   280                                 iPhoneBookStoreCacheArray->AppendL( phoneBookStoreMsg );
   306                                 iPhoneBookStoreCacheArray->AppendL( phoneBookStoreMsg );
   281                                 CleanupStack::Pop( phoneBookStoreMsg );
   307                                 CleanupStack::Pop( phoneBookStoreMsg );
   282                                 iNumOfEntriesFilled++;
   308                                 iNumOfEntriesFilled++;
   283 TFLOGSTRING2("TSY: CMmPhoneBookOperationCache::HandleUICCPbRespL - Append entries into array %d",iNumOfEntriesFilled);
   309 TFLOGSTRING2("TSY: CMmPhoneBookOperationCache::HandleUICCPbRespL - Append entries into array %d",iNumOfEntriesFilled);
   284 OstTraceExt1( TRACE_NORMAL, DUP6_CMMPHONEBOOKOPERATIONCACHE_HANDLEUICCPBRESPL, "CMmPhoneBookOperationCache::HandleUICCPbRespL;iNumOfEntriesFilled=%hd", iNumOfEntriesFilled );
   310 OstTraceExt1( TRACE_NORMAL, DUP3_CMMPHONEBOOKOPERATIONCACHE_HANDLEUICCPBRESPL, "CMmPhoneBookOperationCache::HandleUICCPbRespL; - Append entries into array iNumOfEntriesFilled=%hhu", iNumOfEntriesFilled );
   285                                 
   311 
   286                                 } // End of if Ext Data is not Present
   312                                 } // End of if Ext Data is not Present
   287                             else
   313                             else
   288                                 {
   314                                 {
   289                                 iExtensionToRead = ETrue;
   315                                 iExtensionToRead = ETrue;
   290                                 // Record no to be read from EXT File
   316                                 // Record no to be read from EXT File
   291                                 TInt recordNo = aFileData[iMmPhoneBookStoreMessHandler->
   317                                 TInt recordNo = aFileData[iMmPhoneBookStoreMessHandler->
   292                                                iPBStoreConf[pbArrayIndex].
   318                                                iPBStoreConf[iArrayIndex].
   293                                                iAlphaStringlength + 13];
   319                                                iAlphaStringlength + 13];
   294                                 
   320 
   295                                 // Append EXT record no.
   321                                 // Append EXT record no.
   296                                 iStoreEntry->PBEntryExtRecord.Append( recordNo );
   322                                 iStoreEntry->PBEntryExtRecord.Append( recordNo );
   297 
   323 
   298                                 retExt = USimPbReqRead( recordNo, aTransId );
   324                                 retExt = USimPbReqRead( recordNo, aTransId );
   299                                 // if while reading EXT error comes 
   325                                 // if while reading EXT error comes
   300                                 //(for invalid Entry)than read next entry
   326                                 //(for invalid Entry)than read next entry
   301                                 if(( KErrNone != retExt ))
   327                                 if(( KErrNone != retExt ))
   302                                     {
   328                                     {
   303                                     iExtensionToRead = EFalse;
   329                                     iExtensionToRead = EFalse;
   304                                     }
   330                                     }
   306                             } // end for case when entry is not empty
   332                             } // end for case when entry is not empty
   307                         else
   333                         else
   308                             {
   334                             {
   309                             //Update Entry Status
   335                             //Update Entry Status
   310                             iStoreEntry->iEntryPresent = EFalse;
   336                             iStoreEntry->iEntryPresent = EFalse;
   311                             // Reset Entry andd Append to the List 
   337                             // Reset Entry andd Append to the List
   312                             iMmPhoneBookStoreMessHandler->StoreEntryToPhoneBookList(
   338                             iMmPhoneBookStoreMessHandler->StoreEntryToPhoneBookList(
   313                                  iStoreEntry,
   339                                  iStoreEntry,
   314                                  pbArrayIndex );
   340                                  iArrayIndex );
   315                             }
   341                             }
   316 
   342 
   317                         // to read next record
   343                         // to read next record
   318                         iIndexToRead++;
   344                         iIndexToRead++;
   319 
   345 
   322                 else  // Handling for Extension Numbers
   348                 else  // Handling for Extension Numbers
   323                     {
   349                     {
   324                     if( UICC_STATUS_OK == aStatus )
   350                     if( UICC_STATUS_OK == aStatus )
   325                         {
   351                         {
   326                         // Check for next extension data record
   352                         // Check for next extension data record
   327                         if(0xFF != aFileData[UICC_EXT_REC_NO_OFFSET])    
   353                         if(0xFF != aFileData[UICC_EXT_REC_NO_OFFSET])
   328                             {
   354                             {
   329                             // Again Append the EXT no to Array
   355                             // Again Append the EXT no to Array
   330                             iStoreEntry->PBEntryExtRecord.Append(
   356                             iStoreEntry->PBEntryExtRecord.Append(
   331                                   aFileData[UICC_EXT_REC_NO_OFFSET] );
   357                                   aFileData[UICC_EXT_REC_NO_OFFSET] );
   332 
   358 
   333                             // Store Number upto last byte
   359                             // Store Number upto last byte
   334                             iNumberBuf.Append(aFileData.Mid(1,UICC_EF_EXT_REC_NUM_LEN ));
   360                             iNumberBuf.Append(aFileData.Mid(1,UICC_EF_EXT_REC_NUM_LEN ));
   335                             // Again Send request to read next record number 
   361                             // Again Send request to read next record number
   336                             //and append it in number 
   362                             //and append it in number
   337                             retExt = USimPbReqRead( 
   363                             retExt = USimPbReqRead(
   338                                 aFileData[UICC_EXT_REC_NO_OFFSET], aTransId );
   364                                 aFileData[UICC_EXT_REC_NO_OFFSET], aTransId );
   339                             if( KErrNone != retExt)
   365                             if( KErrNone != retExt)
   340                                 {
   366                                 {
   341                                 iExtensionToRead = EFalse;
   367                                 iExtensionToRead = EFalse;
   342                                 }
   368                                 }
   344                         else
   370                         else
   345                             {
   371                             {
   346                             // Append Entry to list and reset all the EXT data
   372                             // Append Entry to list and reset all the EXT data
   347                             iMmPhoneBookStoreMessHandler->StoreEntryToPhoneBookList(
   373                             iMmPhoneBookStoreMessHandler->StoreEntryToPhoneBookList(
   348                                                           iStoreEntry,
   374                                                           iStoreEntry,
   349                                                           pbArrayIndex );
   375                                                           iArrayIndex );
   350                             // Reset Extension File record
   376                             // Reset Extension File record
   351                             iExtensionToRead = EFalse;
   377                             iExtensionToRead = EFalse;
   352                             
   378 
   353                             // Check for Extended Data is Addition number 
   379                             // Check for Extended Data is Addition number
   354                             if( 0x02 == aFileData[0])
   380                             if( 0x02 == aFileData[0])
   355                                 {
   381                                 {
   356                                 // Check for length upto which no is stored
   382                                 // Check for length upto which no is stored
   357                                 TInt offset = aFileData.Find(&KTagUnusedbyte,1);
   383                                 TInt offset = aFileData.Find(&KTagUnusedbyte,1);
   358                                 // store Data
   384                                 // store Data
   359                                 iNumberBuf.Append(aFileData.Mid(1,( offset - 1 )));
   385                                 iNumberBuf.Append(aFileData.Mid(1,( offset - 1 )));
   360                                 
   386 
   361                                 // the there is extension data
   387                                 // the there is extension data
   362                                 CPhoneBookStoreEntry* phoneBookStoreMsg =
   388                                 CPhoneBookStoreEntry* phoneBookStoreMsg =
   363                                 new( ELeave ) CPhoneBookStoreEntry;
   389                                 new( ELeave ) CPhoneBookStoreEntry;
   364                                 CleanupStack::PushL( phoneBookStoreMsg );
   390                                 CleanupStack::PushL( phoneBookStoreMsg );
   365                                 phoneBookStoreMsg->ConstructL();
   391                                 phoneBookStoreMsg->ConstructL();
   366                                 
   392 
   367                                 iMmPhoneBookStoreMessHandler->StorePhonebookEntryL(
   393                                 iMmPhoneBookStoreMessHandler->StorePhonebookEntryL(
   368                                                               iNameBuf,
   394                                                               iNameBuf,
   369                                                               iNumberBuf,
   395                                                               iNumberBuf,
   370                                                               *phoneBookStoreMsg,
   396                                                               *phoneBookStoreMsg,
   371                                                               pbFileId,
   397                                                               iFileId,
   372                                                               iIndexToRead,
   398                                                               iIndexToRead );
   373                                                               EFalse );
       
   374                                 TF_ASSERT( NULL != iPhoneBookStoreCacheArray );
   399                                 TF_ASSERT( NULL != iPhoneBookStoreCacheArray );
   375                                 iPhoneBookStoreCacheArray->AppendL( 
   400                                 iPhoneBookStoreCacheArray->AppendL(
   376                                                            phoneBookStoreMsg );
   401                                                            phoneBookStoreMsg );
   377                                 CleanupStack::Pop( phoneBookStoreMsg );
   402                                 CleanupStack::Pop( phoneBookStoreMsg );
   378                                 iNumOfEntriesFilled++;
   403                                 iNumOfEntriesFilled++;
   379 TFLOGSTRING2("TSY: CMmPhoneBookOperationCache::HandleUSimPbRespL - Append entries into array %d",iNumOfEntriesFilled);
   404 TFLOGSTRING2("TSY: CMmPhoneBookOperationCache::HandleUSimPbRespL - Append entries into array %d",iNumOfEntriesFilled);
   380 OstTraceExt1( TRACE_NORMAL, DUP3_CMMPHONEBOOKOPERATIONCACHE_HANDLEUICCPBRESPL, "CMmPhoneBookOperationCache::HandleUICCPbRespL;iNumOfEntriesFilled=%hd", iNumOfEntriesFilled );
   405 OstTraceExt1( TRACE_NORMAL, DUP5_CMMPHONEBOOKOPERATIONCACHE_HANDLEUICCPBRESPL, "CMmPhoneBookOperationCache::HandleUICCPbRespL; - Append entries into array iNumOfEntriesFilled=%hhu", iNumOfEntriesFilled );
   381                                 } // end for checking Data type in EXT
   406                                 } // end for checking Data type in EXT
   382                             } // end for Entry store
   407                             } // end for Entry store
   383                         }
   408                         }
   384                     else
   409                     else
   385                         {
   410                         {
   394 TFLOGSTRING("TSY: CMmPhoneBookOperationCache::HandleUICCPbRespL. PhoneBook operation not supported ");
   419 TFLOGSTRING("TSY: CMmPhoneBookOperationCache::HandleUICCPbRespL. PhoneBook operation not supported ");
   395 OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKOPERATIONCACHE_HANDLEUICCPBRESPL, "CMmPhoneBookOperationCache::HandleUICCPbRespL. PhoneBook Operation not supported" );
   420 OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKOPERATIONCACHE_HANDLEUICCPBRESPL, "CMmPhoneBookOperationCache::HandleUICCPbRespL. PhoneBook Operation not supported" );
   396                 break;
   421                 break;
   397                 }
   422                 }
   398             } // End of switch case
   423             } // End of switch case
   399         
   424 
   400         // Check for next location be read when its not for EXT Data
   425         // Check for next location be read when its not for EXT Data
   401         
   426 
   402         if( ( !iExtensionToRead ) &&( iIndexToRead <= 
   427         if( ( !iExtensionToRead ) &&( iIndexToRead <=
   403               iMmPhoneBookStoreMessHandler->iPBStoreConf[pbArrayIndex].iNoOfRecords ) )
   428               iMmPhoneBookStoreMessHandler->iPBStoreConf[iArrayIndex].iNoOfRecords ) )
   404             {
   429             {
   405             // Send request to read next Entry
   430             // Send request to read next Entry
   406             USimPbReqRead( iIndexToRead, aTransId );
   431             USimPbReqRead( iIndexToRead, aTransId );
   407             }
   432             }
   408 
   433 
   409         // Complete IPC if error is there OR all Entries are read
   434         // Complete IPC if error is there OR all Entries are read
   410         if( ((KErrNone != ret) || 
   435         if( ((KErrNone != ret) ||
   411              ( iIndexToRead > iMmPhoneBookStoreMessHandler->
   436              ( iIndexToRead > iMmPhoneBookStoreMessHandler->
   412                               iPBStoreConf[pbArrayIndex].iNoOfRecords )) 
   437                               iPBStoreConf[iArrayIndex].iNoOfRecords ))
   413              && ( !iExtensionToRead ))
   438              && ( !iExtensionToRead ))
   414             {
   439             {
   415             // Check if any entries are filled in commonTSY Array
   440             // Check if any entries are filled in commonTSY Array
   416             if( 0 == iNumOfEntriesFilled )
   441             if( 0 == iNumOfEntriesFilled )
   417                 {
   442                 {
   429                 ret );
   454                 ret );
   430             // Set flag to indicate that we can remove this operation from array
   455             // Set flag to indicate that we can remove this operation from array
   431             complete = ETrue;
   456             complete = ETrue;
   432             }
   457             }
   433         }
   458         }
       
   459     else if ( EMmTsyONStoreGetInfoIPC == iSavedIPC )
       
   460         {
       
   461 TFLOGSTRING("TSY: CMmPhoneBookOperationCache::HandleUICCPbRespL: Handle EMmTsyONStoreGetInfoIPC");
       
   462 OstTrace0( TRACE_NORMAL, DUP6_CMMPHONEBOOKOPERATIONCACHE_HANDLEUICCPBRESPL, "CMmPhoneBookOperationCache::HandleUICCPbRespL: Handle EMmTsyONStoreGetInfoIPC" );
       
   463         complete = HandleUiccReadApplFileInfoResp( aTransId,
       
   464                                                    aStatus,
       
   465                                                    aFileData );
       
   466         }
   434     else
   467     else
   435         { // Operation has been canceled
   468         { // Operation has been canceled
   436         complete = ETrue;
   469         complete = ETrue;
   437 TFLOGSTRING("TSY: CMmPhoneBookOperationCache::HandleUICCPbRespL; operation was canceled");
   470 TFLOGSTRING("TSY: CMmPhoneBookOperationCache::HandleUICCPbRespL; operation was canceled");
   438 OstTrace0( TRACE_NORMAL, DUP2_CMMPHONEBOOKOPERATIONCACHE_HANDLEUICCPBRESPL, "CMmPhoneBookOperationCache::HandleUICCPbRespL; operation was canceled" );
   471 OstTrace0( TRACE_NORMAL, DUP2_CMMPHONEBOOKOPERATIONCACHE_HANDLEUICCPBRESPL, "CMmPhoneBookOperationCache::HandleUICCPbRespL; operation was canceled" );
   459 
   492 
   460     TInt ret( KErrNone );
   493     TInt ret( KErrNone );
   461     TInt appFileID ( APPL_FILE_ID );   // Application File id for DFphonebook
   494     TInt appFileID ( APPL_FILE_ID );   // Application File id for DFphonebook
   462 
   495 
   463     TUiccReadLinearFixed cmdParams;
   496     TUiccReadLinearFixed cmdParams;
   464     cmdParams.messHandlerPtr  = static_cast<MUiccOperationBase*> 
   497     cmdParams.messHandlerPtr  = static_cast<MUiccOperationBase*>
   465                                ( iMmPhoneBookStoreMessHandler );
   498                                ( iMmPhoneBookStoreMessHandler );
   466 
   499 
   467     cmdParams.filePath.Append( static_cast<TUint8>( MF_FILE >> 8 ));
   500     cmdParams.filePath.Append( static_cast<TUint8>( MF_FILE >> 8 ));
   468     cmdParams.filePath.Append( static_cast<TUint8>( MF_FILE ));
   501     cmdParams.filePath.Append( static_cast<TUint8>( MF_FILE ));
   469     cmdParams.filePath.Append( appFileID>>8);
   502     cmdParams.filePath.Append( appFileID>>8);
   470     cmdParams.filePath.Append( appFileID);
   503     cmdParams.filePath.Append( appFileID);
   471     
   504 
   472     if( UICC_CARD_TYPE_UICC == iMmUiccMessHandler->GetCardType())
   505     if( UICC_CARD_TYPE_UICC == iMmUiccMessHandler->GetCardType())
   473         {
   506         {
   474         cmdParams.filePath.Append( static_cast<TUint8>( DF_PHONEBOOK >> 8 ));
   507         cmdParams.filePath.Append( static_cast<TUint8>( DF_PHONEBOOK >> 8 ));
   475         cmdParams.filePath.Append( static_cast<TUint8>( DF_PHONEBOOK ));
   508         cmdParams.filePath.Append( static_cast<TUint8>( DF_PHONEBOOK ));
   476         }
   509         }
   477     
   510 
   478     // Convert Phone Book name to file id
   511     switch( iFileId )
   479     TUint16 fileIdExt ( 0x0000 );
       
   480     TUint16 pbFileId = ConvertToPBfileId( iPhoneBookTypeName, fileIdExt, iMmUiccMessHandler->GetCardType() );
       
   481     TUint8 pbArrayIndex = ConvertToConfArrayIndex( pbFileId );
       
   482 
       
   483     switch( pbFileId )
       
   484         {
   512         {
   485         case PB_ADN_FID:
   513         case PB_ADN_FID:
   486         case PB_FDN_FID:
   514         case PB_FDN_FID:
   487         case PB_SDN_FID:
   515         case PB_SDN_FID:
   488             {
   516             {
   489             // For 2G ADN Phonebook EXT1 will be the extension number store
   517             // For 2G ADN Phonebook EXT1 will be the extension number store
   490             cmdParams.trId = static_cast<TUiccTrId> ( aTransId );
   518             cmdParams.trId = static_cast<TUiccTrId> ( aTransId );
   491             cmdParams.serviceType = UICC_APPL_READ_LINEAR_FIXED;
   519             cmdParams.serviceType = UICC_APPL_READ_LINEAR_FIXED;
   492             cmdParams.record = aRecordNo;
   520             cmdParams.record = aRecordNo;
   493                 
   521 
   494             // Check for Extension Data is Present or not
   522             // Check for Extension Data is Present or not
   495             if(!iExtensionToRead)
   523             if(!iExtensionToRead)
   496                 {
   524                 {
   497                 // Check for the record Number to be 
   525                 // Check for the record Number to be
   498                 //read is valid record number
   526                 //read is valid record number
   499                 if( iIndexToRead <= iMmPhoneBookStoreMessHandler->
   527                 if( iIndexToRead <= iMmPhoneBookStoreMessHandler->
   500                         iPBStoreConf[pbArrayIndex].iNoOfRecords)
   528                         iPBStoreConf[iArrayIndex].iNoOfRecords)
   501                     {
   529                     {
   502                     // Start from first location and Search for First Valid 
   530                     // Start from first location and Search for First Valid
   503                     //Entry in the Stored List And if some Entry is invalid
   531                     //Entry in the Stored List And if some Entry is invalid
   504                     // then Read From Sim and Check the Staus its Free 
   532                     // then Read From Sim and Check the Staus its Free
   505                     // or not till end of the records
   533                     // or not till end of the records
   506                     
   534 
   507                     cmdParams.fileId = pbFileId;
   535                     cmdParams.fileId = iFileId;
   508                     cmdParams.serviceType = UICC_APPL_READ_LINEAR_FIXED;
   536                     cmdParams.serviceType = UICC_APPL_READ_LINEAR_FIXED;
   509                     cmdParams.record = aRecordNo;
   537                     cmdParams.record = aRecordNo;
   510                     // till End of Record
   538                     // till End of Record
   511                     cmdParams.dataAmount = 0;
   539                     cmdParams.dataAmount = 0;
   512                     // Start from begining of record
   540                     // Start from begining of record
   520             else
   548             else
   521                 {
   549                 {
   522                 // Send Request to Read Extension Data
   550                 // Send Request to Read Extension Data
   523                 // Check for UST Table supports for EXT File
   551                 // Check for UST Table supports for EXT File
   524                 if( iMmPhoneBookStoreMessHandler->
   552                 if( iMmPhoneBookStoreMessHandler->
   525                         iPBStoreConf[pbArrayIndex].iExtension )
   553                         iPBStoreConf[iArrayIndex].iExtension )
   526                     {
   554                     {
   527                     // Check for Extension data record in valid
   555                     // Check for Extension data record in valid
   528                     if(iMmPhoneBookStoreMessHandler->
   556                     if(iMmPhoneBookStoreMessHandler->
   529                             iPBStoreConf[pbArrayIndex].iExtNoOfRec >= aRecordNo)
   557                             iPBStoreConf[iArrayIndex].iExtNoOfRec >= aRecordNo)
   530                         {
   558                         {
   531                         // Read Request to read that index
   559                         // Read Request to read that index
   532                         cmdParams.fileId = fileIdExt;
   560                         cmdParams.fileId = iExtFileId;
   533                         cmdParams.serviceType = UICC_APPL_READ_LINEAR_FIXED;
   561                         cmdParams.serviceType = UICC_APPL_READ_LINEAR_FIXED;
   534                         cmdParams.record = aRecordNo;
   562                         cmdParams.record = aRecordNo;
   535                         // till End of Record
   563                         // till End of Record
   536                         cmdParams.dataAmount = 0;
   564                         cmdParams.dataAmount = 0;
   537                         // Start from begining of record
   565                         // Start from begining of record
   549                 }
   577                 }
   550                 break;
   578                 break;
   551             }
   579             }
   552         default:
   580         default:
   553             {
   581             {
   554 TFLOGSTRING("TSY: CMmPhoneBookOperationRead::USimPbReqRead - PhoenBook Not supported");
   582 TFLOGSTRING("TSY: CMmPhoneBookOperationRead::USimPbReqRead - PhoneBook Not supported");
   555 OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKOPERATIONCACHE_USIMPBREQREAD, "CMmPhoneBookOperationCache::USimPbReqRead - PhoneBook not supported" );
   583 OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKOPERATIONCACHE_USIMPBREQREAD, "CMmPhoneBookOperationCache::USimPbReqRead - PhoneBook not supported" );
   556                 break;
   584                 break;
   557             }
   585             }
   558         }
   586         }
   559         
   587 
   560 
   588 
   561     if( KErrNone == ret )
   589     if( KErrNone == ret )
   562         {
   590         {
   563         ret = iMmPhoneBookStoreMessHandler->UiccMessHandler()->
   591         ret = iMmPhoneBookStoreMessHandler->UiccMessHandler()->
   564         CreateUiccApplCmdReq( cmdParams );
   592         CreateUiccApplCmdReq( cmdParams );
   565 TFLOGSTRING2("TSY: CreateUiccApplCmdReq returns %d", ret);
   593 TFLOGSTRING2("TSY: CreateUiccApplCmdReq returns %d", ret);
   566 OstTraceExt1( TRACE_NORMAL, DUP2_CMMPHONEBOOKOPERATIONCACHE_USIMPBREQREAD, "CMmPhoneBookOperationCache::USimPbReqRead;ret=%hd", ret );
   594 OstTrace1( TRACE_NORMAL, DUP2_CMMPHONEBOOKOPERATIONCACHE_USIMPBREQREAD, "CMmPhoneBookOperationCache::USimPbReqRead;returns ret=%d", ret );
   567         }
   595         }
   568     return ret;
   596     return ret;
   569     }
   597     }
   570 
   598 
   571 
   599 
   584         iPhoneBookStoreCacheArray = NULL;
   612         iPhoneBookStoreCacheArray = NULL;
   585         iCancelOperation = ETrue;
   613         iCancelOperation = ETrue;
   586         }
   614         }
   587     }
   615     }
   588 
   616 
       
   617 // -----------------------------------------------------------------------------
       
   618 // CMmPhoneBookOperationCache::UiccReadApplFileInfo
       
   619 // Read application file info
       
   620 // -----------------------------------------------------------------------------
       
   621 //
       
   622 TInt CMmPhoneBookOperationCache::UiccReadApplFileInfo(
       
   623     const TInt aFileId,
       
   624     const TInt aRecordId,
       
   625     const TUint8 aTrId )
       
   626     {
       
   627 TFLOGSTRING3("TSY: CMmPhoneBookOperationCache::UiccReadApplFileInfo, aTraId: %d, aRecordId: %d", aTrId, aRecordId );
       
   628 OstTraceExt2( TRACE_NORMAL, CMMPHONEBOOKOPERATIONCACHE_UICCREADAPPLFILEINFO, "CMmPhoneBookOperationCache::UiccReadApplFileInfo;aFileId=%d;aRecordId=%d", aFileId, aRecordId );
       
   629 
       
   630     TInt ret( KErrNone );
       
   631 
       
   632     iRecordId = aRecordId;
       
   633 
       
   634     // Check wheter MSIDN is supported at all
       
   635     ret = CheckMSISDNSupport();
       
   636 
       
   637     if ( KErrNone == ret )
       
   638         {
       
   639         // Set parameters for UICC_APPL_CMD_REQ message
       
   640         TUiccReadLinearFixed params;
       
   641         params.messHandlerPtr  = static_cast<MUiccOperationBase*>
       
   642                                    ( iMmPhoneBookStoreMessHandler );
       
   643         params.trId = static_cast<TUiccTrId> ( aTrId );
       
   644         params.dataOffset = 0;
       
   645         params.dataAmount = 0;
       
   646         params.record = iRecordId;
       
   647 
       
   648         params.fileId = aFileId;
       
   649         params.fileIdSfi = UICC_SFI_NOT_PRESENT;
       
   650         params.serviceType = UICC_APPL_FILE_INFO;
       
   651 
       
   652         // File id path
       
   653         params.filePath.Append( KMasterFileId >> 8 );
       
   654         params.filePath.Append( KMasterFileId );
       
   655         params.filePath.Append( APPL_FILE_ID>>8);
       
   656         params.filePath.Append( APPL_FILE_ID);
       
   657 
       
   658         ret = iMmPhoneBookStoreMessHandler->UiccMessHandler()->
       
   659             CreateUiccApplCmdReq( params );
       
   660         }
       
   661     else
       
   662         {
       
   663 TFLOGSTRING("TSY: CMmPhoneBookOperationCache::UiccReadApplFileInfo MSISDN is not activated on SIM" );
       
   664 OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKOPERATIONCACHE_UICCREADAPPLFILEINFO, "CMmPhoneBookOperationCache::UiccReadApplFileInfo MSISDN is not activated on SIM" );
       
   665         }
       
   666     return ret;
       
   667     }
       
   668 
       
   669 // -----------------------------------------------------------------------------
       
   670 // CMmPhoneBookOperationCache::HandleUiccReadApplFileInfoResp
       
   671 // Read application file info
       
   672 // -----------------------------------------------------------------------------
       
   673 //
       
   674 TBool CMmPhoneBookOperationCache::HandleUiccReadApplFileInfoResp(
       
   675       TInt aTransId,
       
   676       TInt aStatus,
       
   677       const TDesC8 &aFileData )
       
   678     {
       
   679 TFLOGSTRING2("TSY: CMmPhoneBookOperationCache::HandleUiccReadApplFileInfoResp, aStatus: %d", aStatus );
       
   680 OstTrace1( TRACE_NORMAL, CMMPHONEBOOKOPERATIONCACHE_HANDLEUICCREADAPPLFILEINFORESP, "CMmPhoneBookOperationCache::HandleUiccReadApplFileInfoResp;aStatus=%d", aStatus );
       
   681 
       
   682     TInt ret( KErrNone );
       
   683     TBool completed( EFalse );
       
   684 
       
   685     CMmDataPackage numberData;
       
   686 
       
   687     if ( ( UICC_STATUS_OK != aStatus ) || ( 0 == aFileData.Length() ) )
       
   688         {
       
   689         // Complete response with the array of ON entries with ret
       
   690         // Pack the data for sending to the manager
       
   691         ret = CMmStaticUtility::UICCCSCauseToEpocError( aStatus );
       
   692         TInt numofEntry( -1 );
       
   693         numberData.PackData( &numofEntry );
       
   694         CompleteThisIPC( EMmTsyONStoreGetInfoIPC, &numberData, ret );
       
   695         completed = ETrue;
       
   696         }
       
   697     else
       
   698         {
       
   699         switch ( iTypeOfReading )
       
   700             {
       
   701             case EFileInfoRead:
       
   702                 {
       
   703                 TFci fci( aFileData );
       
   704                 // Number of entries and name length can be fetched here.
       
   705                 // Number length and number of used entries will be updated
       
   706                 // during next sequences.
       
   707                 iServiceType.iNumOfEntries = fci.GetNumberOfRecords();
       
   708                 iServiceType.iNameLen = fci.GetRecordLength() - KEFBasicLength;
       
   709 
       
   710                 iTypeOfReading = EBasicEfRead;
       
   711 
       
   712                 // Start from the 1st record
       
   713                 iRecordId = KStartRecord;
       
   714 
       
   715                 UiccReadApplFileData(
       
   716                     PB_MSISDN_FID,
       
   717                     iRecordId,
       
   718                     aTransId );
       
   719                 break;
       
   720                 }
       
   721 
       
   722             case EBasicEfRead:
       
   723                 {
       
   724                 // Check for Is there any extension data
       
   725                 // And the Extension data record number is valid
       
   726                 // Index to read Extension file Data is Alpha string Length +
       
   727                 // basic EF length minus 1 is for Array index Calculation
       
   728                 // (it starts from 0)
       
   729 
       
   730                 iServiceType.iNumLen = UICC_NO_EXT_MAX_NUM_LEN;
       
   731                 TInt fileId( iExtFileId );
       
   732                 iRecordId = 
       
   733                     aFileData[iServiceType.iNameLen + KEFBasicLength - 1];
       
   734                 if ( 0xFF == iRecordId )
       
   735                     {
       
   736                     iServiceType.iNumLen =
       
   737                         UICC_NO_EXT_MAX_NUM_LEN;
       
   738 
       
   739                     // No extension. Continue with file count reading.
       
   740                     iTypeOfReading = EBasicEfReadToGetUsedFileCount;
       
   741 
       
   742                     // EFSMS file id is used for file count reading.
       
   743                     fileId = iFileId;
       
   744 
       
   745                     // Start from the 1st record
       
   746                     iRecordId = KStartRecord;
       
   747                     }
       
   748                 else
       
   749                     {
       
   750                     iTypeOfReading = EExtensionRead;
       
   751                     }
       
   752 
       
   753                 UiccReadApplFileData(
       
   754                     fileId,
       
   755                     iRecordId,
       
   756                     aTransId );
       
   757                 break;
       
   758                 }
       
   759 
       
   760             case EExtensionRead:
       
   761                 {
       
   762                 // If current record number is the same as the next record
       
   763                 // number in the extension file complete the whole session
       
   764                 // with cause KErrArgument.
       
   765                 if ( iRecordId ==
       
   766                          aFileData[UICC_EXT_REC_NO_OFFSET] )
       
   767                     {
       
   768                     TInt numofEntry( -1 );
       
   769                     numberData.PackData( &numofEntry );
       
   770                     CompleteThisIPC( EMmTsyONStoreGetInfoIPC,
       
   771                                      &numberData,
       
   772                                      KErrCorrupt );
       
   773                     completed = ETrue;
       
   774                     }
       
   775                 else
       
   776                     {
       
   777                     iServiceType.iNumLen += KEFExtensionLength;
       
   778                     iRecordId = aFileData[UICC_EXT_REC_NO_OFFSET];
       
   779 
       
   780                     // In case of ICC EXT1 is used, but in UICC case it is EXT5
       
   781                     TInt fileId( iExtFileId );
       
   782                     if ( 0xFF == iRecordId )
       
   783                         {
       
   784                         // The last record found. Check count of used entires
       
   785                         iTypeOfReading = EBasicEfReadToGetUsedFileCount;
       
   786                         // EFMSISDN file id is used for file count reading.
       
   787                         fileId = PB_MSISDN_FID;
       
   788                         // Start from the 1st record
       
   789                         iRecordId = 1;
       
   790                         }
       
   791                     else
       
   792                         {
       
   793                         iTypeOfReading = EExtensionRead;
       
   794                         }
       
   795 
       
   796                     UiccReadApplFileData(
       
   797                         fileId,
       
   798                         iRecordId,
       
   799                         aTransId );
       
   800                     }
       
   801                 break;
       
   802                 }
       
   803 
       
   804             case EBasicEfReadToGetUsedFileCount:
       
   805                 {
       
   806                 TInt retval( EmptyEntryCheck( aFileData ) );
       
   807                 if ( KErrNone == retval )
       
   808                     {
       
   809                     iServiceType.iUsedEntries++;
       
   810                     }
       
   811                 // No else, because used entries counter is increased only when
       
   812                 // there is data in the record.
       
   813                 iRecordId++;
       
   814                 if ( iRecordId > iServiceType.iNumOfEntries )
       
   815                     {
       
   816                     numberData.PackData( &iServiceType );
       
   817                     CompleteThisIPC( EMmTsyONStoreGetInfoIPC,
       
   818                                      &numberData,
       
   819                                      ret );
       
   820                     completed = ETrue;
       
   821                     }
       
   822                 else
       
   823                     {
       
   824                     UiccReadApplFileData(
       
   825                         PB_MSISDN_FID,
       
   826                         iRecordId,
       
   827                         aTransId );
       
   828                     }
       
   829                 break;
       
   830                 }
       
   831 
       
   832             default:
       
   833                 {
       
   834 TFLOGSTRING2("TSY: CMmPhoneBookOperationCache::HandleUiccReadApplFileInfoResp - Unknown iTypeOfReading: %d", iTypeOfReading);
       
   835 OstTraceExt1( TRACE_NORMAL, DUP1_CMMPHONEBOOKOPERATIONCACHE_HANDLEUICCREADAPPLFILEINFORESP, "CMmPhoneBookOperationCache::HandleUiccReadApplFileInfoResp;Unknown iTypeOfReading=%hhu", iTypeOfReading );
       
   836                 completed = ETrue;
       
   837                 break;
       
   838                 }
       
   839             }
       
   840         }
       
   841     return completed;
       
   842     }
       
   843 
       
   844 // -----------------------------------------------------------------------------
       
   845 // CMmPhoneBookOperationCache::HandleUiccReadApplFileInfoResp
       
   846 // Read application file info
       
   847 // -----------------------------------------------------------------------------
       
   848 //
       
   849 TInt CMmPhoneBookOperationCache::CheckMSISDNSupport
       
   850     (
       
   851     // None
       
   852     )
       
   853     {
       
   854 TFLOGSTRING("TSY: CMmPhoneBookOperationCache::CheckMSISDNSupport" );
       
   855 OstTrace0( TRACE_NORMAL, CMMPHONEBOOKOPERATIONCACHE_CHECKMSISDNSUPPORT, "CMmPhoneBookOperationCache::CheckMSISDNSupport" );
       
   856 
       
   857     TInt ret( KErrNotSupported );
       
   858 
       
   859     if ( iMmUiccMessHandler->GetServiceStatus( UICC_MSISDN_SERVICE_NUM ) )
       
   860        {
       
   861        ret = KErrNone;
       
   862        }
       
   863     // No else
       
   864 
       
   865     return ret;
       
   866     }
       
   867 
       
   868 // -----------------------------------------------------------------------------
       
   869 // CMmPhoneBookOperationCache::CompleteThisIPC
       
   870 // Read application file info
       
   871 // -----------------------------------------------------------------------------
       
   872 //
       
   873 void CMmPhoneBookOperationCache::CompleteThisIPC
       
   874     (
       
   875     TInt aIPCToBeCompleted,
       
   876     CMmDataPackage* aDataPackage,
       
   877     TInt ret
       
   878     )
       
   879     {
       
   880 TFLOGSTRING("TSY: CMmPhoneBookOperationCache::CompleteThisIPC" );
       
   881 OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKOPERATIONCACHE_CHECKMSISDNSUPPORT, "CMmPhoneBookOperationCache::CheckMSISDNSupport" );
       
   882 
       
   883     iMmPhoneBookStoreMessHandler->MessageRouter()->Complete(
       
   884         aIPCToBeCompleted,
       
   885         aDataPackage,
       
   886         ret );
       
   887     }
       
   888 
       
   889 // -----------------------------------------------------------------------------
       
   890 // CMmPhoneBookOperationCache::UiccReadApplFileData
       
   891 // Read application file info
       
   892 // -----------------------------------------------------------------------------
       
   893 //
       
   894 TInt CMmPhoneBookOperationCache::UiccReadApplFileData(
       
   895     const TInt aFileId,
       
   896     const TInt aRecordId,
       
   897     const TUint8 aTrId )
       
   898     {
       
   899 TFLOGSTRING3("TSY: CMmPhoneBookOperationCache::UiccReadApplFileData, aTraId: %d, aRecordId: %d", aTrId, aRecordId );
       
   900 OstTraceExt2( TRACE_NORMAL, CMMPHONEBOOKOPERATIONCACHE_UICCREADAPPLFILEDATA, "CMmPhoneBookOperationCache::UiccReadApplFileData;aTrId=%d;aRecordId=%d", aTrId, aRecordId );
       
   901 
       
   902     TInt ret( KErrNone );
       
   903 
       
   904     TUiccReadLinearFixed cmdParams;
       
   905     cmdParams.messHandlerPtr  = static_cast<MUiccOperationBase*>
       
   906                                ( iMmPhoneBookStoreMessHandler );
       
   907     cmdParams.filePath.Append( static_cast<TUint8>( MF_FILE >> 8 ));
       
   908     cmdParams.filePath.Append( static_cast<TUint8>( MF_FILE ));
       
   909     cmdParams.filePath.Append( APPL_FILE_ID>>8);
       
   910     cmdParams.filePath.Append( APPL_FILE_ID);
       
   911 
       
   912     if( UICC_CARD_TYPE_UICC == iMmUiccMessHandler->GetCardType() )
       
   913         {
       
   914         cmdParams.filePath.Append( static_cast<TUint8>( DF_PHONEBOOK >> 8 ));
       
   915         cmdParams.filePath.Append( static_cast<TUint8>( DF_PHONEBOOK ));
       
   916         }
       
   917 
       
   918     cmdParams.trId = static_cast<TUiccTrId>( aTrId );
       
   919     cmdParams.serviceType = UICC_APPL_READ_LINEAR_FIXED;
       
   920     cmdParams.record = aRecordId;
       
   921     cmdParams.fileId = aFileId;
       
   922     cmdParams.dataAmount = 0;
       
   923     cmdParams.dataOffset = 0;
       
   924 
       
   925     ret = iMmPhoneBookStoreMessHandler->UiccMessHandler()->
       
   926         CreateUiccApplCmdReq( cmdParams );
       
   927 
       
   928     return ret;
       
   929     }
       
   930 
   589 // End of file
   931 // End of file