adaptationlayer/tsy/nokiatsy_dll/src/cmmphonebookstoreoperationbase.cpp
author <dalarub>
Fri, 06 Nov 2009 17:28:23 +0000
changeset 0 63b37f68c1ce
child 5 8ccc39f9d787
permissions -rw-r--r--
First Contribution. Vanilla as it came from Nokia

/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:   ?Description
*
*/

//  INCLUDE FILES
#include <etelmm.h>
#include <tisi.h>
#include "tsylogger.h"
#include <ctsy/serviceapi/mmtsy_ipcdefs.h>
#include "cmmmessagerouter.h"
#include "cmmphonebookstoreoperationbase.h"
#include "cmmphonemesshandler.h"
#include "cmmuiccmesshandler.h"

#ifdef INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
#include "cmmphonebookalphastring.h"
#endif // INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS

#include "osttracedefinitions.h"
#ifdef OST_TRACE_COMPILER_IN_USE
#include "cmmphonebookstoreoperationbasetraces.h"
#endif
// EXTERNAL DATA STRUCTURES
    // None

// EXTERNAL FUNCTION PROTOTYPES
    // None

// CONSTANTS
//const TUint8 KMinLength = 1;


// MACROS
    // None

// LOCAL CONSTANTS AND MACROS
    // None

// MODULE DATA STRUCTURES
    // None

// LOCAL FUNCTION PROTOTYPES
    // None

// ==================== LOCAL FUNCTIONS ======================================
    // None


// ================= MEMBER FUNCTIONS ========================================

// ---------------------------------------------------------------------------
// CMmPhoneBookStoreOperationBase::CMmPhoneBookStoreOperationBase
// C++ default constructor can NOT contain any code, that
// might leave.
// ---------------------------------------------------------------------------
//
CMmPhoneBookStoreOperationBase::CMmPhoneBookStoreOperationBase()
    {
    TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::\
        CMmPhoneBookStoreOperationBase");
OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONBASE_CMMPHONEBOOKSTOREOPERATIONBASE, "CMmPhoneBookStoreOperationBase::CMmPhoneBookStoreOperationBase" );

    iRet = KErrNone;
    iWriteLocation = 0;
    iNumberOfFdnInfoResps = 0;
    iWriteLocation = 0;
    iRet = 0;
    }

// ---------------------------------------------------------------------------
// CMmPhoneBookStoreOperationBase::~CMmPhoneBookStoreOperationBase
// C++ destructor.
// ---------------------------------------------------------------------------
//
CMmPhoneBookStoreOperationBase::~CMmPhoneBookStoreOperationBase()
    {
    TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::\
        ~CMmPhoneBookStoreOperationBase");
OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKSTOREOPERATIONBASE_CMMPHONEBOOKSTOREOPERATIONBASE, "CMmPhoneBookStoreOperationBase::~CMmPhoneBookStoreOperationBase" );
    }

// ---------------------------------------------------------------------------
// CMmPhoneBookStoreOperationBase::CancelReq
// Cancels the operation. Canceling of canceled operation is allowed.
// ---------------------------------------------------------------------------
//
void CMmPhoneBookStoreOperationBase::CancelReq()
    {
    TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::CancelReq - does nothing");
    OstTrace0( TRACE_NORMAL, DUP2_CMMPHONEBOOKSTOREOPERATIONBASE_CANCELREQ, "CMmPhoneBookStoreOperationBase::CancelReq - does nothing" );
    }

// ---------------------------------------------------------------------------
// CMmPhoneBookStoreOperationBase::PrepareReq
// Prepares the operation (makes it ready to be launched).
// ---------------------------------------------------------------------------
//
TInt CMmPhoneBookStoreOperationBase::PrepareReq(
        TInt /*aIpc*/,
        const CMmDataPackage* /*aDataPackage*/
        )
    {
    TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::PrepareReq - not supported");
    OstTrace0( TRACE_NORMAL, DUP3_CMMPHONEBOOKSTOREOPERATIONBASE_PREPAREREQ, "CMmPhoneBookStoreOperationBase::PrepareReq - not supported" );
    return KErrNotSupported;
    }

// ---------------------------------------------------------------------------
// CMmPhoneBookStoreOperationBase::IsPrepared
// Checks if operation is ready to be launched.
// ---------------------------------------------------------------------------
//
TBool CMmPhoneBookStoreOperationBase::IsPrepared() const
    {
    TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::IsPrepared");
    OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONBASE_ISPREPARED, "CMmPhoneBookStoreOperationBase::IsPrepared" );
    return EFalse;
    }

// ---------------------------------------------------------------------------
// CMmPhoneBookStoreOperationBase::LaunchReq
// Launches activated operation.
// ---------------------------------------------------------------------------
//
TInt CMmPhoneBookStoreOperationBase::LaunchReq()
    {
    TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::LaunchReq - not supported");
    OstTrace0( TRACE_NORMAL, DUP3_CMMPHONEBOOKSTOREOPERATIONBASE_LAUNCHREQ, "CMmPhoneBookStoreOperationBase::LaunchReq - not supported" );
    return KErrNotSupported;
    }

// ---------------------------------------------------------------------------
// CMmPhoneBookStoreOperationBase::CompleteReq
// Completes the request.
// ---------------------------------------------------------------------------
//
TInt CMmPhoneBookStoreOperationBase::CompleteReq( TInt /*aErrorCode*/ )
    {
    TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::CompleteReq - not supported");
    OstTrace0( TRACE_NORMAL, DUP2_CMMPHONEBOOKSTOREOPERATIONBASE_COMPLETEREQ, "CMmPhoneBookStoreOperationBase::CompleteReq - not supported" );
    return KErrNotSupported;
    }

// ---------------------------------------------------------------------------
// TUint8 CMmPhoneBookStoreOperationBase::TransId
// Gets transactionId
// ---------------------------------------------------------------------------
//
TUint8 CMmPhoneBookStoreOperationBase::TransId()
    {
    TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::TransId");
OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONBASE_TRANSID, "CMmPhoneBookStoreOperationBase::TransId" );

    return iTransactionId;
    }



// ---------------------------------------------------------------------------
// CMmPhoneBookStoreOperationBase::ConvertToSimPhoneBookType
// Converts internal phonebook number to server phonebook number
// ---------------------------------------------------------------------------
//
TUint16 CMmPhoneBookStoreOperationBase::ConvertToSimPhoneBookType(
    const TUint8 aPbMask )
    {
    TFLOGSTRING2("TSY: CMmPhoneBookStoreOperationBase::\
        ConvertToSimPhoneBookType SourcePBType: 0x%x", aPbMask);
OstTraceExt1( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTTOSIMPHONEBOOKTYPE, "CMmPhoneBookStoreOperationBase::ConvertToSimPhoneBookType;aPbMask=%hhx", aPbMask );

    TUint16 phoneBookType( KMaskUnspecifiedType );

    switch( aPbMask )
        {
        case KMaskMbdnType:
            {
            phoneBookType = PB_MBDN_FID;
            break;
            }
        case KMaskAdnType:
            {
            phoneBookType = PB_ADN_FID;
            break;
            }
        case KMaskFdnType:
            {
            phoneBookType = PB_FDN_FID;
            break;
            }
        case KMaskSdnType:
            {
            phoneBookType = PB_SDN_FID;
            break;
            }
        case KMaskVoiceMailBox:
            {// When Mask is SDN we set service type to SIM_PB_VMBX
            phoneBookType = PB_VMBX_FID;
            break;
            }
       case KMaskBdnType:
            {
            phoneBookType = PB_BDN_FID;
            break;
            }
        default:
            {
OstTrace1( TRACE_NORMAL, DUP2_CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTTOSIMPHONEBOOKTYPE, "CMmPhoneBookStoreOperationBase::ConvertToSimPhoneBookType;ASSERT phoneBookType (%d) != KMaskUnspecifiedType", phoneBookType );
            TF_ASSERT( phoneBookType != KMaskUnspecifiedType );
            break;
            }
        }

    TFLOGSTRING2("TSY: CMmPhoneBookStoreOperationBase::\
        ConvertToSimPhoneBookType phoneBookType: 0x%x" ,phoneBookType );
OstTrace1( TRACE_NORMAL, DUP1_CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTTOSIMPHONEBOOKTYPE, "CMmPhoneBookStoreOperationBase::ConvertToSimPhoneBookType;phoneBookType=%x", phoneBookType );

    return phoneBookType;
    }



void CMmPhoneBookStoreOperationBase::ConvertPBTypeToPbName(const TUint aPhoneBook , TName& apbName)
    {
    switch(aPhoneBook)
        {
        case EPhonebookTypeAdn:
            apbName.Copy(KETelIccAdnPhoneBook);
            break;
        case EPhonebookTypeFdn:
            apbName.Copy(KETelIccFdnPhoneBook);
            break;
        case EPhonebookTypeBdn:
            apbName.Copy(KETelIccBdnPhoneBook);
            break;
        case EPhonebookTypeSdn:
            apbName.Copy(KETelIccSdnPhoneBook);
            break;
        case EPhonebookTypeMBDN:
            apbName.Copy(KETelIccMbdnPhoneBook);
            break;
        case EPhonebookTypeVMBX:
            apbName.Copy(KETelIccVoiceMailBox);
            break;
            
        default:
            break;
        }
    }


// ---------------------------------------------------------------------------
// CMmPhoneBookStoreOperationBase::ConvertToPBtype
// Converts client phonebook type to internal phonebook mask
// ---------------------------------------------------------------------------
//
TUint8 CMmPhoneBookStoreOperationBase::ConvertToPBtype(
    const TName& aPBType )
    {
    TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::ConvertToPBtype");
OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTTOPBTYPE, "CMmPhoneBookStoreOperationBase::ConvertToPBtype" );

    TUint8 pbMask( 0 );

    if ( 0 == aPBType.CompareF( KETelIccAdnPhoneBook ) )
        {
        pbMask = KMaskAdnType;
        }
    else if ( 0 == aPBType.CompareF( KETelIccBdnPhoneBook ) )
        {
        pbMask = KMaskBdnType;
        }
    else if ( 0 == aPBType.CompareF( KETelIccSdnPhoneBook ) )
        {
        pbMask = KMaskSdnType;
        }
    else if ( 0 == aPBType.CompareF( KETelIccFdnPhoneBook ) )
        {
        pbMask = KMaskFdnType;
        }
    else if ( 0 == aPBType.CompareF( KETelIccVoiceMailBox ) )
        {
        pbMask = KMaskVoiceMailBox;
        }
    else if ( 0 == aPBType.CompareF( KETelIccMbdnPhoneBook ) )
        {
        pbMask = KMaskMbdnType;
        }
    else
        {
        pbMask = KMaskUnspecifiedType;
        }

    TFLOGSTRING2("TSY: CMmPhoneBookStoreOperationBase::ConvertToPBtype \
        phonebooktype: %d", pbMask);
OstTraceExt1( TRACE_NORMAL, DUP2_CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTTOPBTYPE, "CMmPhoneBookStoreOperationBase::ConvertToPBtype;pbMask=%hhx", pbMask );

    return pbMask;
    }

// ---------------------------------------------------------------------------
// CMmPhoneBookStoreOperationBase::ConvertToPBname
// Converts internal phonebook mask to client phonebook type
// ---------------------------------------------------------------------------
//
void CMmPhoneBookStoreOperationBase::ConvertToPBname(
    const TUint8 aTrans,
    TName& aName )
    {
    TFLOGSTRING2("TSY: CMmPhoneBookStoreOperationBase::ConvertToPBname \
        source: %d" ,aTrans );
OstTraceExt1( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTTOPBNAME, "CMmPhoneBookStoreOperationBase::ConvertToPBname;source=%hhu", aTrans );

    // get number of phonebook type from transaction Id
    TUint8 numOfPbType( aTrans & KMaskPhonebookType );

    if ( KMaskAdnType == numOfPbType )
        {
        TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::ConvertToPBname \
            - ADN");
OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTTOPBNAME, "CMmPhoneBookStoreOperationBase::ConvertToPBname - ADN" );
        aName = KETelIccAdnPhoneBook;
        }
    else if ( KMaskFdnType == numOfPbType )
        {
        TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::ConvertToPBname \
            - FDN");
OstTrace0( TRACE_NORMAL, DUP2_CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTTOPBNAME, "CMmPhoneBookStoreOperationBase::ConvertToPBname - FDN" );
        aName = KETelIccFdnPhoneBook;
        }
    else if ( KMaskSdnType == numOfPbType )
        {
        TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::ConvertToPBname \
            - SDN");
OstTrace0( TRACE_NORMAL, DUP3_CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTTOPBNAME, "CMmPhoneBookStoreOperationBase::ConvertToPBname - SDN" );
        aName = KETelIccSdnPhoneBook;
        }
    else if ( KMaskBdnType == numOfPbType )
        {
        TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::ConvertToPBname \
            - BDN");
OstTrace0( TRACE_NORMAL, DUP4_CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTTOPBNAME, "CMmPhoneBookStoreOperationBase::ConvertToPBname - BDN" );
        aName = KETelIccBdnPhoneBook;
        }
    else if ( KMaskVoiceMailBox == numOfPbType )
        {
        TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::ConvertToPBname \
            - VMBX");
OstTrace0( TRACE_NORMAL, DUP5_CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTTOPBNAME, "CMmPhoneBookStoreOperationBase::ConvertToPBname - VMBX" );
        aName = KETelIccVoiceMailBox;
        }
    else if ( KMaskMbdnType == numOfPbType )
        {
        TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::ConvertToPBname \
            - MBDN");
OstTrace0( TRACE_NORMAL, DUP6_CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTTOPBNAME, "CMmPhoneBookStoreOperationBase::ConvertToPBname - MBDN" );
        aName = KETelIccMbdnPhoneBook;
        }
    else
        {
        TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::ConvertToPBname \
            - unknown -> Error situation!" );
OstTrace0( TRACE_NORMAL, DUP7_CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTTOPBNAME, "CMmPhoneBookStoreOperationBase::ConvertToPBname - unknown -> Error situation!" );
        //Nothing can do.
        }
    }




// ---------------------------------------------------------------------------
// CMmPhoneBookStoreOperationBase::SeparatePhoneBookEntryFromIsiMsgL
// Separate phonebook entry from ISI message
// ---------------------------------------------------------------------------
//
TInt CMmPhoneBookStoreOperationBase::SeparatePhoneBookEntryFromUiccMsgL(
    const TDesC8& aFileData,      // ISI message
    TDes8& aNameBuf,
    TUint16 aSimPhonebookType)        // Entry to be filled
    {
    TInt ret( KErrNone );
    TBool nameNumberFound (ETrue);
    TUint8 nameLength (0);
    TUint8 numLength(0);
    
    // Maximum record length will be RecordLength -14 
    // Actual string length can be find the first FF , which indicates that after
    // that its empty
    nameLength = aFileData.Find(&KTagUnusedbyte,1);
    // minus 1 is for TON/NPI digit , which is 1 byte long
    numLength = aFileData[iRecordLength -14 + 1] - 1;
    
    if(nameLength == 1 && numLength == 1)
        nameNumberFound = EFalse;
    
    switch(aSimPhonebookType)
        {
        case PB_FDN_FID:
        case PB_BDN_FID:
        case PB_MBDN_FID:
        case PB_MSISDN_FID:
        case PB_VMBX_FID:
            {
            // Save name
            if ( KMinLength < nameLength )
                {
                TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::\
                    SeparatePhoneBookEntryFromIsiMsgL. Saving name.");
        OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKSTOREOPERATIONBASE_SEPARATEPHONEBOOKENTRYFROMISIMSGL, "CMmPhoneBookStoreOperationBase::SeparatePhoneBookEntryFromIsiMsgL, Saving name" );

                aNameBuf.Copy(aFileData.Mid(0,nameLength));
                }
            //no else

            // Save number
            if ( KMinLength < numLength )
                {
                // Store number in buffer
                iNumberBuf.Append(aFileData.Mid(10,numLength));
                }
            //no else

            }
            break;
        default:
            // None
            break;
        }
    
    if(!nameNumberFound)
        ret = KErrNotFound;

    return ret;
            
        }


void CMmPhoneBookStoreOperationBase::StorePhonebookEntry(
        TDes8& /*aName*/,
        TDes8& /*aNumber*/,
        CPhoneBookStoreEntry& /*aEntry*/)
    {
    
    }

// ---------------------------------------------------------------------------
// CMmPhoneBookStoreOperationBase::ConvertOperationToClientIPCType
// Converts internal request mask to client ipc request.
// ---------------------------------------------------------------------------
//
void CMmPhoneBookStoreOperationBase::ConvertOperationToClientIPCType(
    TInt& aDestination,
    const TUint8 aSource )
    {
    TFLOGSTRING2("TSY: CMmPhoneBookStoreOperationBase::\
        ConvertOperationToClientIPCType - source: %d", aSource );
OstTraceExt1( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTOPERATIONTOCLIENTIPCTYPE, "CMmPhoneBookStoreOperationBase::ConvertOperationToClientIPCType;aSource=%hhu", aSource );

    switch( aSource )
        {
        case KOperationInit:
            {
            aDestination = EMmTsyPhoneBookStoreInitIPC;
            break;
            }
        case KOperationCache:
            {
            aDestination = EMmTsyPhoneBookStoreCacheIPC;
            break;
            }
        case KOperationRead:
            {
            aDestination = EMmTsyPhoneBookStoreReadIPC;
            break;
            }
        case KOperationWrite:
        case KOperationReWrite:
            {
            aDestination = EMmTsyPhoneBookStoreWriteIPC;
            break;
            }
        case KOperationDelete:
        case KOperationDeleteWrite:
            {
            aDestination = EMmTsyPhoneBookStoreDeleteIPC;
            break;
            }
        case KOperationDeleteAll:
            {
            aDestination = EMmTsyPhoneBookStoreDeleteAllIPC;
            break;
            }
        case KOperationGetMailBoxNumber:
            {
            aDestination = EMobilePhoneGetMailboxNumbers;
            break;
            }
        default: //KOperationUnknown
            {
            TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::\
                ConvertOperationToClientIPCType - Default case" );
OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKSTOREOPERATIONBASE_CONVERTOPERATIONTOCLIENTIPCTYPE, "CMmPhoneBookStoreOperationBase::ConvertOperationToClientIPCType, Default case" );
            aDestination = KErrNotFound;
            break;
            }
        }
    }



// ---------------------------------------------------------------------------
// CMmPhoneBookStoreOperationBase::HandleFcpData
// Handles FCP data for both SIm and USIM card
// to get the different parameters
// ---------------------------------------------------------------------------
//
TInt CMmPhoneBookStoreOperationBase::HandleFcpData( const TDesC8 &aFileData, TInt& aValue , TUint8 aParam )
    {
    TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::HandleFcpData");
    OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONBASE_HANDLEFCPDATA, "CMmPhoneBookStoreOperationBase::HandleFcpData" );
    
    
    TInt ret(KErrNone);
    if(UICC_CARD_TYPE_UICC == iMmUiccMessHandler->GetCardType())
        {
        switch(aParam)
            {
            case KRecordLength:
                {
                // get the offset for File Descriptor for all EF's
                TUint8 offset = aFileData.Find(&KTagFCIFileDescriptor,1);
                Get16bit(aValue, aFileData, (offset+4) );
                }
                break;
            case KNoOfRecords:
                {
                // get the no of records
                TUint8 offset = aFileData.Find(&KTagFCIFileDescriptor,1);
                aValue = aFileData[offset + 6];
                }
                break;
            case KFileSize:
                {
                // get the file size tith tag value "85"
                TUint8 offset = aFileData.Find(&KTagFCIFileSize,1);
                aValue = aFileData[offset + 2];
                }
                break;
            case KFileIdentifier:
                {
                TUint8 offset = aFileData.Find(&KTagFCIFileIdentifier,1);
                Get16bit(aValue, aFileData, (offset+2) );
                }
                break;
            default:
                {
                TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::HandleFcpData - No such parameter exist in UICC");
OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKSTOREOPERATIONBASE_HANDLEFCPDATA, "CMmPhoneBookStoreOperationBase::HandleFcpData - No such parameter exist in UICC" );
                }
                break;
            }
        }
    else if(UICC_CARD_TYPE_ICC == iMmUiccMessHandler->GetCardType())
        {
        switch(aParam)
            {
            case KRecordLength:
                {
                // 14 is the index for record length Data
                aValue = aFileData[14];
                }
                break;
            case KNoOfRecords:
                {
                // 2 is the index value for File Size Data
                TInt fileSize(0);
                Get16bit(fileSize, aFileData, 2 );
                
                // 14 is the index for record Length Data
                TInt recordLength(0);
                recordLength = aFileData[14];
                
                // get the No of records
                
                aValue = (fileSize/recordLength);
                }
                break;
            case KFileSize:
                {
                // 2 is the index location for File Size which is 2 bytes long
                Get16bit(aValue, aFileData, 2 );
                }
                break;
            case KFileIdentifier:
                {
                // 4 is the index location for File ID which is 2 bytes long
                Get16bit(aValue, aFileData, 4 );
                }
                break;
            case KFileStatus:
                {
                // 11 is index value for File Status
                aValue = aFileData[11];
                }
            default:
                TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::HandleFcpData - No such parameter exist in ICC");
OstTrace0( TRACE_NORMAL, DUP2_CMMPHONEBOOKSTOREOPERATIONBASE_HANDLEFCPDATA, "CMmPhoneBookStoreOperationBase::HandleFcpData - No such parameter exist in ICC Card" );
                break;
            }
        }
    return ret;
    }



// -----------------------------------------------------------------------------
// CMmPhoneBookStoreOperationBase::Get16bit
// Copies unsigned 16-bit word from source descriptor from location pointed
// by index
// -----------------------------------------------------------------------------
//
void CMmPhoneBookStoreOperationBase::Get16bit
        (
        TInt& aTarget,   //Target
        const TDesC8& aSource,    //Source
        TInt aIndex         //Index
        )
    {
    TFLOGSTRING("TSY: CMmPhoneBookStoreOperationBase::Get16bit");
    OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONBASE_GET16BIT, "CMmPhoneBookStoreOperationBase::Get16bit" );
    
    
    if ( aIndex + 1 < aSource.Length() )
        {
        aTarget = TUint16( aSource[aIndex] ) << 8;
        aTarget = TUint16( aTarget | aSource[aIndex + 1] );
        }
    }



// End of File