adaptationlayer/tsy/nokiatsy_dll/src/cmmphonebookstoreoperationbase.cpp
changeset 0 63b37f68c1ce
child 5 8ccc39f9d787
equal deleted inserted replaced
-1:000000000000 0:63b37f68c1ce
       
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of the License "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:   ?Description
       
    15 *
       
    16 */
       
    17 
       
    18 //  INCLUDE FILES
       
    19 #include <etelmm.h>
       
    20 #include <tisi.h>
       
    21 #include "tsylogger.h"
       
    22 #include <ctsy/serviceapi/mmtsy_ipcdefs.h>
       
    23 #include "cmmmessagerouter.h"
       
    24 #include "cmmphonebookstoreoperationbase.h"
       
    25 #include "cmmphonemesshandler.h"
       
    26 #include "cmmuiccmesshandler.h"
       
    27 
       
    28 #ifdef INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
       
    29 #include "cmmphonebookalphastring.h"
       
    30 #endif // INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
       
    31 
       
    32 #include "osttracedefinitions.h"
       
    33 #ifdef OST_TRACE_COMPILER_IN_USE
       
    34 #include "cmmphonebookstoreoperationbasetraces.h"
       
    35 #endif
       
    36 // EXTERNAL DATA STRUCTURES
       
    37     // None
       
    38 
       
    39 // EXTERNAL FUNCTION PROTOTYPES
       
    40     // None
       
    41 
       
    42 // CONSTANTS
       
    43 //const TUint8 KMinLength = 1;
       
    44 
       
    45 
       
    46 // MACROS
       
    47     // None
       
    48 
       
    49 // LOCAL CONSTANTS AND MACROS
       
    50     // None
       
    51 
       
    52 // MODULE DATA STRUCTURES
       
    53     // None
       
    54 
       
    55 // LOCAL FUNCTION PROTOTYPES
       
    56     // None
       
    57 
       
    58 // ==================== LOCAL FUNCTIONS ======================================
       
    59     // None
       
    60 
       
    61 
       
    62 // ================= MEMBER FUNCTIONS ========================================
       
    63 
       
    64 // ---------------------------------------------------------------------------
       
    65 // CMmPhoneBookStoreOperationBase::CMmPhoneBookStoreOperationBase
       
    66 // C++ default constructor can NOT contain any code, that
       
    67 // might leave.
       
    68 // ---------------------------------------------------------------------------
       
    69 //
       
    70 CMmPhoneBookStoreOperationBase::CMmPhoneBookStoreOperationBase()
       
    71     {
       
    72     TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::\
       
    73         CMmPhoneBookStoreOperationBase");
       
    74 OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONBASE_CMMPHONEBOOKSTOREOPERATIONBASE, "CMmPhoneBookStoreOperationBase::CMmPhoneBookStoreOperationBase" );
       
    75 
       
    76     iRet = KErrNone;
       
    77     iWriteLocation = 0;
       
    78     iNumberOfFdnInfoResps = 0;
       
    79     iWriteLocation = 0;
       
    80     iRet = 0;
       
    81     }
       
    82 
       
    83 // ---------------------------------------------------------------------------
       
    84 // CMmPhoneBookStoreOperationBase::~CMmPhoneBookStoreOperationBase
       
    85 // C++ destructor.
       
    86 // ---------------------------------------------------------------------------
       
    87 //
       
    88 CMmPhoneBookStoreOperationBase::~CMmPhoneBookStoreOperationBase()
       
    89     {
       
    90     TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::\
       
    91         ~CMmPhoneBookStoreOperationBase");
       
    92 OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKSTOREOPERATIONBASE_CMMPHONEBOOKSTOREOPERATIONBASE, "CMmPhoneBookStoreOperationBase::~CMmPhoneBookStoreOperationBase" );
       
    93     }
       
    94 
       
    95 // ---------------------------------------------------------------------------
       
    96 // CMmPhoneBookStoreOperationBase::CancelReq
       
    97 // Cancels the operation. Canceling of canceled operation is allowed.
       
    98 // ---------------------------------------------------------------------------
       
    99 //
       
   100 void CMmPhoneBookStoreOperationBase::CancelReq()
       
   101     {
       
   102     TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::CancelReq - does nothing");
       
   103     OstTrace0( TRACE_NORMAL, DUP2_CMMPHONEBOOKSTOREOPERATIONBASE_CANCELREQ, "CMmPhoneBookStoreOperationBase::CancelReq - does nothing" );
       
   104     }
       
   105 
       
   106 // ---------------------------------------------------------------------------
       
   107 // CMmPhoneBookStoreOperationBase::PrepareReq
       
   108 // Prepares the operation (makes it ready to be launched).
       
   109 // ---------------------------------------------------------------------------
       
   110 //
       
   111 TInt CMmPhoneBookStoreOperationBase::PrepareReq(
       
   112         TInt /*aIpc*/,
       
   113         const CMmDataPackage* /*aDataPackage*/
       
   114         )
       
   115     {
       
   116     TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::PrepareReq - not supported");
       
   117     OstTrace0( TRACE_NORMAL, DUP3_CMMPHONEBOOKSTOREOPERATIONBASE_PREPAREREQ, "CMmPhoneBookStoreOperationBase::PrepareReq - not supported" );
       
   118     return KErrNotSupported;
       
   119     }
       
   120 
       
   121 // ---------------------------------------------------------------------------
       
   122 // CMmPhoneBookStoreOperationBase::IsPrepared
       
   123 // Checks if operation is ready to be launched.
       
   124 // ---------------------------------------------------------------------------
       
   125 //
       
   126 TBool CMmPhoneBookStoreOperationBase::IsPrepared() const
       
   127     {
       
   128     TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::IsPrepared");
       
   129     OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONBASE_ISPREPARED, "CMmPhoneBookStoreOperationBase::IsPrepared" );
       
   130     return EFalse;
       
   131     }
       
   132 
       
   133 // ---------------------------------------------------------------------------
       
   134 // CMmPhoneBookStoreOperationBase::LaunchReq
       
   135 // Launches activated operation.
       
   136 // ---------------------------------------------------------------------------
       
   137 //
       
   138 TInt CMmPhoneBookStoreOperationBase::LaunchReq()
       
   139     {
       
   140     TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::LaunchReq - not supported");
       
   141     OstTrace0( TRACE_NORMAL, DUP3_CMMPHONEBOOKSTOREOPERATIONBASE_LAUNCHREQ, "CMmPhoneBookStoreOperationBase::LaunchReq - not supported" );
       
   142     return KErrNotSupported;
       
   143     }
       
   144 
       
   145 // ---------------------------------------------------------------------------
       
   146 // CMmPhoneBookStoreOperationBase::CompleteReq
       
   147 // Completes the request.
       
   148 // ---------------------------------------------------------------------------
       
   149 //
       
   150 TInt CMmPhoneBookStoreOperationBase::CompleteReq( TInt /*aErrorCode*/ )
       
   151     {
       
   152     TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::CompleteReq - not supported");
       
   153     OstTrace0( TRACE_NORMAL, DUP2_CMMPHONEBOOKSTOREOPERATIONBASE_COMPLETEREQ, "CMmPhoneBookStoreOperationBase::CompleteReq - not supported" );
       
   154     return KErrNotSupported;
       
   155     }
       
   156 
       
   157 // ---------------------------------------------------------------------------
       
   158 // TUint8 CMmPhoneBookStoreOperationBase::TransId
       
   159 // Gets transactionId
       
   160 // ---------------------------------------------------------------------------
       
   161 //
       
   162 TUint8 CMmPhoneBookStoreOperationBase::TransId()
       
   163     {
       
   164     TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::TransId");
       
   165 OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONBASE_TRANSID, "CMmPhoneBookStoreOperationBase::TransId" );
       
   166 
       
   167     return iTransactionId;
       
   168     }
       
   169 
       
   170 
       
   171 
       
   172 // ---------------------------------------------------------------------------
       
   173 // CMmPhoneBookStoreOperationBase::ConvertToSimPhoneBookType
       
   174 // Converts internal phonebook number to server phonebook number
       
   175 // ---------------------------------------------------------------------------
       
   176 //
       
   177 TUint16 CMmPhoneBookStoreOperationBase::ConvertToSimPhoneBookType(
       
   178     const TUint8 aPbMask )
       
   179     {
       
   180     TFLOGSTRING2("TSY: CMmPhoneBookStoreOperationBase::\
       
   181         ConvertToSimPhoneBookType SourcePBType: 0x%x", aPbMask);
       
   182 OstTraceExt1( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTTOSIMPHONEBOOKTYPE, "CMmPhoneBookStoreOperationBase::ConvertToSimPhoneBookType;aPbMask=%hhx", aPbMask );
       
   183 
       
   184     TUint16 phoneBookType( KMaskUnspecifiedType );
       
   185 
       
   186     switch( aPbMask )
       
   187         {
       
   188         case KMaskMbdnType:
       
   189             {
       
   190             phoneBookType = PB_MBDN_FID;
       
   191             break;
       
   192             }
       
   193         case KMaskAdnType:
       
   194             {
       
   195             phoneBookType = PB_ADN_FID;
       
   196             break;
       
   197             }
       
   198         case KMaskFdnType:
       
   199             {
       
   200             phoneBookType = PB_FDN_FID;
       
   201             break;
       
   202             }
       
   203         case KMaskSdnType:
       
   204             {
       
   205             phoneBookType = PB_SDN_FID;
       
   206             break;
       
   207             }
       
   208         case KMaskVoiceMailBox:
       
   209             {// When Mask is SDN we set service type to SIM_PB_VMBX
       
   210             phoneBookType = PB_VMBX_FID;
       
   211             break;
       
   212             }
       
   213        case KMaskBdnType:
       
   214             {
       
   215             phoneBookType = PB_BDN_FID;
       
   216             break;
       
   217             }
       
   218         default:
       
   219             {
       
   220 OstTrace1( TRACE_NORMAL, DUP2_CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTTOSIMPHONEBOOKTYPE, "CMmPhoneBookStoreOperationBase::ConvertToSimPhoneBookType;ASSERT phoneBookType (%d) != KMaskUnspecifiedType", phoneBookType );
       
   221             TF_ASSERT( phoneBookType != KMaskUnspecifiedType );
       
   222             break;
       
   223             }
       
   224         }
       
   225 
       
   226     TFLOGSTRING2("TSY: CMmPhoneBookStoreOperationBase::\
       
   227         ConvertToSimPhoneBookType phoneBookType: 0x%x" ,phoneBookType );
       
   228 OstTrace1( TRACE_NORMAL, DUP1_CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTTOSIMPHONEBOOKTYPE, "CMmPhoneBookStoreOperationBase::ConvertToSimPhoneBookType;phoneBookType=%x", phoneBookType );
       
   229 
       
   230     return phoneBookType;
       
   231     }
       
   232 
       
   233 
       
   234 
       
   235 void CMmPhoneBookStoreOperationBase::ConvertPBTypeToPbName(const TUint aPhoneBook , TName& apbName)
       
   236     {
       
   237     switch(aPhoneBook)
       
   238         {
       
   239         case EPhonebookTypeAdn:
       
   240             apbName.Copy(KETelIccAdnPhoneBook);
       
   241             break;
       
   242         case EPhonebookTypeFdn:
       
   243             apbName.Copy(KETelIccFdnPhoneBook);
       
   244             break;
       
   245         case EPhonebookTypeBdn:
       
   246             apbName.Copy(KETelIccBdnPhoneBook);
       
   247             break;
       
   248         case EPhonebookTypeSdn:
       
   249             apbName.Copy(KETelIccSdnPhoneBook);
       
   250             break;
       
   251         case EPhonebookTypeMBDN:
       
   252             apbName.Copy(KETelIccMbdnPhoneBook);
       
   253             break;
       
   254         case EPhonebookTypeVMBX:
       
   255             apbName.Copy(KETelIccVoiceMailBox);
       
   256             break;
       
   257             
       
   258         default:
       
   259             break;
       
   260         }
       
   261     }
       
   262 
       
   263 
       
   264 // ---------------------------------------------------------------------------
       
   265 // CMmPhoneBookStoreOperationBase::ConvertToPBtype
       
   266 // Converts client phonebook type to internal phonebook mask
       
   267 // ---------------------------------------------------------------------------
       
   268 //
       
   269 TUint8 CMmPhoneBookStoreOperationBase::ConvertToPBtype(
       
   270     const TName& aPBType )
       
   271     {
       
   272     TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::ConvertToPBtype");
       
   273 OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTTOPBTYPE, "CMmPhoneBookStoreOperationBase::ConvertToPBtype" );
       
   274 
       
   275     TUint8 pbMask( 0 );
       
   276 
       
   277     if ( 0 == aPBType.CompareF( KETelIccAdnPhoneBook ) )
       
   278         {
       
   279         pbMask = KMaskAdnType;
       
   280         }
       
   281     else if ( 0 == aPBType.CompareF( KETelIccBdnPhoneBook ) )
       
   282         {
       
   283         pbMask = KMaskBdnType;
       
   284         }
       
   285     else if ( 0 == aPBType.CompareF( KETelIccSdnPhoneBook ) )
       
   286         {
       
   287         pbMask = KMaskSdnType;
       
   288         }
       
   289     else if ( 0 == aPBType.CompareF( KETelIccFdnPhoneBook ) )
       
   290         {
       
   291         pbMask = KMaskFdnType;
       
   292         }
       
   293     else if ( 0 == aPBType.CompareF( KETelIccVoiceMailBox ) )
       
   294         {
       
   295         pbMask = KMaskVoiceMailBox;
       
   296         }
       
   297     else if ( 0 == aPBType.CompareF( KETelIccMbdnPhoneBook ) )
       
   298         {
       
   299         pbMask = KMaskMbdnType;
       
   300         }
       
   301     else
       
   302         {
       
   303         pbMask = KMaskUnspecifiedType;
       
   304         }
       
   305 
       
   306     TFLOGSTRING2("TSY: CMmPhoneBookStoreOperationBase::ConvertToPBtype \
       
   307         phonebooktype: %d", pbMask);
       
   308 OstTraceExt1( TRACE_NORMAL, DUP2_CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTTOPBTYPE, "CMmPhoneBookStoreOperationBase::ConvertToPBtype;pbMask=%hhx", pbMask );
       
   309 
       
   310     return pbMask;
       
   311     }
       
   312 
       
   313 // ---------------------------------------------------------------------------
       
   314 // CMmPhoneBookStoreOperationBase::ConvertToPBname
       
   315 // Converts internal phonebook mask to client phonebook type
       
   316 // ---------------------------------------------------------------------------
       
   317 //
       
   318 void CMmPhoneBookStoreOperationBase::ConvertToPBname(
       
   319     const TUint8 aTrans,
       
   320     TName& aName )
       
   321     {
       
   322     TFLOGSTRING2("TSY: CMmPhoneBookStoreOperationBase::ConvertToPBname \
       
   323         source: %d" ,aTrans );
       
   324 OstTraceExt1( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTTOPBNAME, "CMmPhoneBookStoreOperationBase::ConvertToPBname;source=%hhu", aTrans );
       
   325 
       
   326     // get number of phonebook type from transaction Id
       
   327     TUint8 numOfPbType( aTrans & KMaskPhonebookType );
       
   328 
       
   329     if ( KMaskAdnType == numOfPbType )
       
   330         {
       
   331         TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::ConvertToPBname \
       
   332             - ADN");
       
   333 OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTTOPBNAME, "CMmPhoneBookStoreOperationBase::ConvertToPBname - ADN" );
       
   334         aName = KETelIccAdnPhoneBook;
       
   335         }
       
   336     else if ( KMaskFdnType == numOfPbType )
       
   337         {
       
   338         TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::ConvertToPBname \
       
   339             - FDN");
       
   340 OstTrace0( TRACE_NORMAL, DUP2_CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTTOPBNAME, "CMmPhoneBookStoreOperationBase::ConvertToPBname - FDN" );
       
   341         aName = KETelIccFdnPhoneBook;
       
   342         }
       
   343     else if ( KMaskSdnType == numOfPbType )
       
   344         {
       
   345         TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::ConvertToPBname \
       
   346             - SDN");
       
   347 OstTrace0( TRACE_NORMAL, DUP3_CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTTOPBNAME, "CMmPhoneBookStoreOperationBase::ConvertToPBname - SDN" );
       
   348         aName = KETelIccSdnPhoneBook;
       
   349         }
       
   350     else if ( KMaskBdnType == numOfPbType )
       
   351         {
       
   352         TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::ConvertToPBname \
       
   353             - BDN");
       
   354 OstTrace0( TRACE_NORMAL, DUP4_CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTTOPBNAME, "CMmPhoneBookStoreOperationBase::ConvertToPBname - BDN" );
       
   355         aName = KETelIccBdnPhoneBook;
       
   356         }
       
   357     else if ( KMaskVoiceMailBox == numOfPbType )
       
   358         {
       
   359         TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::ConvertToPBname \
       
   360             - VMBX");
       
   361 OstTrace0( TRACE_NORMAL, DUP5_CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTTOPBNAME, "CMmPhoneBookStoreOperationBase::ConvertToPBname - VMBX" );
       
   362         aName = KETelIccVoiceMailBox;
       
   363         }
       
   364     else if ( KMaskMbdnType == numOfPbType )
       
   365         {
       
   366         TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::ConvertToPBname \
       
   367             - MBDN");
       
   368 OstTrace0( TRACE_NORMAL, DUP6_CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTTOPBNAME, "CMmPhoneBookStoreOperationBase::ConvertToPBname - MBDN" );
       
   369         aName = KETelIccMbdnPhoneBook;
       
   370         }
       
   371     else
       
   372         {
       
   373         TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::ConvertToPBname \
       
   374             - unknown -> Error situation!" );
       
   375 OstTrace0( TRACE_NORMAL, DUP7_CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTTOPBNAME, "CMmPhoneBookStoreOperationBase::ConvertToPBname - unknown -> Error situation!" );
       
   376         //Nothing can do.
       
   377         }
       
   378     }
       
   379 
       
   380 
       
   381 
       
   382 
       
   383 // ---------------------------------------------------------------------------
       
   384 // CMmPhoneBookStoreOperationBase::SeparatePhoneBookEntryFromIsiMsgL
       
   385 // Separate phonebook entry from ISI message
       
   386 // ---------------------------------------------------------------------------
       
   387 //
       
   388 TInt CMmPhoneBookStoreOperationBase::SeparatePhoneBookEntryFromUiccMsgL(
       
   389     const TDesC8& aFileData,      // ISI message
       
   390     TDes8& aNameBuf,
       
   391     TUint16 aSimPhonebookType)        // Entry to be filled
       
   392     {
       
   393     TInt ret( KErrNone );
       
   394     TBool nameNumberFound (ETrue);
       
   395     TUint8 nameLength (0);
       
   396     TUint8 numLength(0);
       
   397     
       
   398     // Maximum record length will be RecordLength -14 
       
   399     // Actual string length can be find the first FF , which indicates that after
       
   400     // that its empty
       
   401     nameLength = aFileData.Find(&KTagUnusedbyte,1);
       
   402     // minus 1 is for TON/NPI digit , which is 1 byte long
       
   403     numLength = aFileData[iRecordLength -14 + 1] - 1;
       
   404     
       
   405     if(nameLength == 1 && numLength == 1)
       
   406         nameNumberFound = EFalse;
       
   407     
       
   408     switch(aSimPhonebookType)
       
   409         {
       
   410         case PB_FDN_FID:
       
   411         case PB_BDN_FID:
       
   412         case PB_MBDN_FID:
       
   413         case PB_MSISDN_FID:
       
   414         case PB_VMBX_FID:
       
   415             {
       
   416             // Save name
       
   417             if ( KMinLength < nameLength )
       
   418                 {
       
   419                 TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::\
       
   420                     SeparatePhoneBookEntryFromIsiMsgL. Saving name.");
       
   421         OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKSTOREOPERATIONBASE_SEPARATEPHONEBOOKENTRYFROMISIMSGL, "CMmPhoneBookStoreOperationBase::SeparatePhoneBookEntryFromIsiMsgL, Saving name" );
       
   422 
       
   423                 aNameBuf.Copy(aFileData.Mid(0,nameLength));
       
   424                 }
       
   425             //no else
       
   426 
       
   427             // Save number
       
   428             if ( KMinLength < numLength )
       
   429                 {
       
   430                 // Store number in buffer
       
   431                 iNumberBuf.Append(aFileData.Mid(10,numLength));
       
   432                 }
       
   433             //no else
       
   434 
       
   435             }
       
   436             break;
       
   437         default:
       
   438             // None
       
   439             break;
       
   440         }
       
   441     
       
   442     if(!nameNumberFound)
       
   443         ret = KErrNotFound;
       
   444 
       
   445     return ret;
       
   446             
       
   447         }
       
   448 
       
   449 
       
   450 void CMmPhoneBookStoreOperationBase::StorePhonebookEntry(
       
   451         TDes8& /*aName*/,
       
   452         TDes8& /*aNumber*/,
       
   453         CPhoneBookStoreEntry& /*aEntry*/)
       
   454     {
       
   455     
       
   456     }
       
   457 
       
   458 // ---------------------------------------------------------------------------
       
   459 // CMmPhoneBookStoreOperationBase::ConvertOperationToClientIPCType
       
   460 // Converts internal request mask to client ipc request.
       
   461 // ---------------------------------------------------------------------------
       
   462 //
       
   463 void CMmPhoneBookStoreOperationBase::ConvertOperationToClientIPCType(
       
   464     TInt& aDestination,
       
   465     const TUint8 aSource )
       
   466     {
       
   467     TFLOGSTRING2("TSY: CMmPhoneBookStoreOperationBase::\
       
   468         ConvertOperationToClientIPCType - source: %d", aSource );
       
   469 OstTraceExt1( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTOPERATIONTOCLIENTIPCTYPE, "CMmPhoneBookStoreOperationBase::ConvertOperationToClientIPCType;aSource=%hhu", aSource );
       
   470 
       
   471     switch( aSource )
       
   472         {
       
   473         case KOperationInit:
       
   474             {
       
   475             aDestination = EMmTsyPhoneBookStoreInitIPC;
       
   476             break;
       
   477             }
       
   478         case KOperationCache:
       
   479             {
       
   480             aDestination = EMmTsyPhoneBookStoreCacheIPC;
       
   481             break;
       
   482             }
       
   483         case KOperationRead:
       
   484             {
       
   485             aDestination = EMmTsyPhoneBookStoreReadIPC;
       
   486             break;
       
   487             }
       
   488         case KOperationWrite:
       
   489         case KOperationReWrite:
       
   490             {
       
   491             aDestination = EMmTsyPhoneBookStoreWriteIPC;
       
   492             break;
       
   493             }
       
   494         case KOperationDelete:
       
   495         case KOperationDeleteWrite:
       
   496             {
       
   497             aDestination = EMmTsyPhoneBookStoreDeleteIPC;
       
   498             break;
       
   499             }
       
   500         case KOperationDeleteAll:
       
   501             {
       
   502             aDestination = EMmTsyPhoneBookStoreDeleteAllIPC;
       
   503             break;
       
   504             }
       
   505         case KOperationGetMailBoxNumber:
       
   506             {
       
   507             aDestination = EMobilePhoneGetMailboxNumbers;
       
   508             break;
       
   509             }
       
   510         default: //KOperationUnknown
       
   511             {
       
   512             TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::\
       
   513                 ConvertOperationToClientIPCType - Default case" );
       
   514 OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTOPERATIONTOCLIENTIPCTYPE, "CMmPhoneBookStoreOperationBase::ConvertOperationToClientIPCType, Default case" );
       
   515             aDestination = KErrNotFound;
       
   516             break;
       
   517             }
       
   518         }
       
   519     }
       
   520 
       
   521 
       
   522 
       
   523 // ---------------------------------------------------------------------------
       
   524 // CMmPhoneBookStoreOperationBase::HandleFcpData
       
   525 // Handles FCP data for both SIm and USIM card
       
   526 // to get the different parameters
       
   527 // ---------------------------------------------------------------------------
       
   528 //
       
   529 TInt CMmPhoneBookStoreOperationBase::HandleFcpData( const TDesC8 &aFileData, TInt& aValue , TUint8 aParam )
       
   530     {
       
   531     TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::HandleFcpData");
       
   532     OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONBASE_HANDLEFCPDATA, "CMmPhoneBookStoreOperationBase::HandleFcpData" );
       
   533     
       
   534     
       
   535     TInt ret(KErrNone);
       
   536     if(UICC_CARD_TYPE_UICC == iMmUiccMessHandler->GetCardType())
       
   537         {
       
   538         switch(aParam)
       
   539             {
       
   540             case KRecordLength:
       
   541                 {
       
   542                 // get the offset for File Descriptor for all EF's
       
   543                 TUint8 offset = aFileData.Find(&KTagFCIFileDescriptor,1);
       
   544                 Get16bit(aValue, aFileData, (offset+4) );
       
   545                 }
       
   546                 break;
       
   547             case KNoOfRecords:
       
   548                 {
       
   549                 // get the no of records
       
   550                 TUint8 offset = aFileData.Find(&KTagFCIFileDescriptor,1);
       
   551                 aValue = aFileData[offset + 6];
       
   552                 }
       
   553                 break;
       
   554             case KFileSize:
       
   555                 {
       
   556                 // get the file size tith tag value "85"
       
   557                 TUint8 offset = aFileData.Find(&KTagFCIFileSize,1);
       
   558                 aValue = aFileData[offset + 2];
       
   559                 }
       
   560                 break;
       
   561             case KFileIdentifier:
       
   562                 {
       
   563                 TUint8 offset = aFileData.Find(&KTagFCIFileIdentifier,1);
       
   564                 Get16bit(aValue, aFileData, (offset+2) );
       
   565                 }
       
   566                 break;
       
   567             default:
       
   568                 {
       
   569                 TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::HandleFcpData - No such parameter exist in UICC");
       
   570 OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKSTOREOPERATIONBASE_HANDLEFCPDATA, "CMmPhoneBookStoreOperationBase::HandleFcpData - No such parameter exist in UICC" );
       
   571                 }
       
   572                 break;
       
   573             }
       
   574         }
       
   575     else if(UICC_CARD_TYPE_ICC == iMmUiccMessHandler->GetCardType())
       
   576         {
       
   577         switch(aParam)
       
   578             {
       
   579             case KRecordLength:
       
   580                 {
       
   581                 // 14 is the index for record length Data
       
   582                 aValue = aFileData[14];
       
   583                 }
       
   584                 break;
       
   585             case KNoOfRecords:
       
   586                 {
       
   587                 // 2 is the index value for File Size Data
       
   588                 TInt fileSize(0);
       
   589                 Get16bit(fileSize, aFileData, 2 );
       
   590                 
       
   591                 // 14 is the index for record Length Data
       
   592                 TInt recordLength(0);
       
   593                 recordLength = aFileData[14];
       
   594                 
       
   595                 // get the No of records
       
   596                 
       
   597                 aValue = (fileSize/recordLength);
       
   598                 }
       
   599                 break;
       
   600             case KFileSize:
       
   601                 {
       
   602                 // 2 is the index location for File Size which is 2 bytes long
       
   603                 Get16bit(aValue, aFileData, 2 );
       
   604                 }
       
   605                 break;
       
   606             case KFileIdentifier:
       
   607                 {
       
   608                 // 4 is the index location for File ID which is 2 bytes long
       
   609                 Get16bit(aValue, aFileData, 4 );
       
   610                 }
       
   611                 break;
       
   612             case KFileStatus:
       
   613                 {
       
   614                 // 11 is index value for File Status
       
   615                 aValue = aFileData[11];
       
   616                 }
       
   617             default:
       
   618                 TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::HandleFcpData - No such parameter exist in ICC");
       
   619 OstTrace0( TRACE_NORMAL, DUP2_CMMPHONEBOOKSTOREOPERATIONBASE_HANDLEFCPDATA, "CMmPhoneBookStoreOperationBase::HandleFcpData - No such parameter exist in ICC Card" );
       
   620                 break;
       
   621             }
       
   622         }
       
   623     return ret;
       
   624     }
       
   625 
       
   626 
       
   627 
       
   628 // -----------------------------------------------------------------------------
       
   629 // CMmPhoneBookStoreOperationBase::Get16bit
       
   630 // Copies unsigned 16-bit word from source descriptor from location pointed
       
   631 // by index
       
   632 // -----------------------------------------------------------------------------
       
   633 //
       
   634 void CMmPhoneBookStoreOperationBase::Get16bit
       
   635         (
       
   636         TInt& aTarget,   //Target
       
   637         const TDesC8& aSource,    //Source
       
   638         TInt aIndex         //Index
       
   639         )
       
   640     {
       
   641     TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::Get16bit");
       
   642     OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONBASE_GET16BIT, "CMmPhoneBookStoreOperationBase::Get16bit" );
       
   643     
       
   644     
       
   645     if ( aIndex + 1 < aSource.Length() )
       
   646         {
       
   647         aTarget = TUint16( aSource[aIndex] ) << 8;
       
   648         aTarget = TUint16( aTarget | aSource[aIndex + 1] );
       
   649         }
       
   650     }
       
   651 
       
   652 
       
   653 
       
   654 // End of File