adaptationlayer/tsy/nokiatsy_dll/inc/cmmuiccmesshandler.h
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 
       
    19 
       
    20 #ifndef _CMMUICCMESSHANDLER_
       
    21 #define _CMMUICCMESSHANDLER_
       
    22 
       
    23 //  INCLUDES
       
    24 #include "muiccoperationbase.h"
       
    25 #include "mmmmesshandlerbase.h"
       
    26 #include "cmmphonetreceiver.h"
       
    27 
       
    28 #include <etelmm.h> // Symbian Etel related types
       
    29 #include <e32def.h>
       
    30 #include <e32base.h>
       
    31 #include <tisi.h>
       
    32 #include <uiccisi.h>
       
    33 
       
    34 // CONSTANTS
       
    35 const TUint8 KFilePathLength( 16 );
       
    36 const TUint8 KFileDataLength( 200 );
       
    37 const TUint16 KApduDataLength( 270 );
       
    38 
       
    39 // UICC master file
       
    40 const TUint16 KMasterFileId( 0x3F00 );
       
    41 
       
    42 // ADFusim
       
    43 const TUint16 KAdfUsimFileId( 0x7FFF );
       
    44 
       
    45 // Operator specific dedicated files
       
    46 // Orange operator specific dedicated file
       
    47 const TUint16 KOrangeDedicatedFile( 0x7F40 );
       
    48 // Operator specific dedicated file
       
    49 const TUint16 KO2DedicatedFile( 0x7F43 );
       
    50 
       
    51 // UICC elementary files
       
    52 const TUint16 KElemFileAdministrativeData         ( 0x6FAD );
       
    53 const TUint16 KElemFileOperatorName               ( 0x6F14 );
       
    54 const TUint16 KElemFileShortMessages              ( 0x6F3C );
       
    55 const TUint16 KElemFileCellBroadcastMessId        ( 0x6F45 );
       
    56 const TUint16 KElemFileDyn2FlagsOrange            ( 0x6F92 );
       
    57 const TUint16 KElemFileHomeZone                   ( 0x6F60 );
       
    58 const TUint16 KElemFileHomeZoneCache1             ( 0x6F61 );
       
    59 const TUint16 KElemFileHomeZoneCache2             ( 0x6F62 );
       
    60 const TUint16 KElemFileHomeZoneCache3             ( 0x6F63 );
       
    61 const TUint16 KElemFileHomeZoneCache4             ( 0x6F64 );
       
    62 const TUint16 KElemFileUhziueSettings             ( 0x6F87 );
       
    63 const TUint16 KElemFileEhplmn                     ( 0x6FD9 );
       
    64 const TUint16 KElemFileImsi                       ( 0x6F07 );
       
    65 const TUint16 KElemFileCustomerServiceProfile     ( 0x6F15 );
       
    66 const TUint16 KElemFileServiceProviderName        ( 0x6F46 );
       
    67 const TUint16 KElemFileServiceProviderDisplayInfo ( 0x6FCD );
       
    68 const TUint16 KElemFileDynFlagsOrange             ( 0x6F9F );
       
    69 const TUint16 KElemFileCallFwdFlagsCphs           ( 0x6F13 );
       
    70 const TUint16 KElemFileCallFwdIndicationStatus    ( 0x6FCB );
       
    71 const TUint16 KElemFileVoiceMsgWaitingFlagsCphs   ( 0x6F11 );
       
    72 const TUint16 KElemFileMessageWaitingIndStatus    ( 0x6FCA );
       
    73 const TUint16 KElemSimServiceTable                ( 0x6F38 );
       
    74 const TUint16 KElemGba                            ( 0x6FD6 );
       
    75 const TUint16 KElemEst                            ( 0x6F56 );
       
    76 const TUint16 KElemCphsInformation                ( 0x6F16 );
       
    77 
       
    78 const TUint8 KEfSstSize (0xFF);
       
    79 const TUint8 KEfUstSize (0xFF);
       
    80 const TUint8 KEfCphsInfoSize (0xFF);
       
    81 
       
    82 // Unique transaction IDs for all UICC operations
       
    83 enum TUiccTrId
       
    84     {
       
    85     ETrIdNotDefined = 0,
       
    86     ETrIdWriteCallFwdFlagsCphs,
       
    87     ETrIdWriteCallFwdFlagsRel4,
       
    88     ETrIdReadCallFwdFlagsCphs,
       
    89     ETrIdWriteVoiceMsgFlags,
       
    90     ETrIdReadVoiceMsgFlags, // 5
       
    91     ETrIdReadCipheringIndicatorStatus,
       
    92     ETrIdGetUiccServerStatus,
       
    93     ETrIdGetUiccApplication,
       
    94     ETrIdActivateUiccApplication,
       
    95     ETrIdStartupCompleted, // 10
       
    96     ETrIdReadImsi,
       
    97     ETrIdPbOpInit,
       
    98     ETrIdReadCsDataEhplmn,
       
    99     ETrIdReadCsDataHplmn,
       
   100     ETrIdReadServiceProviderName, // 15
       
   101     ETrIdReadServiceProviderDisplayInfo,
       
   102     ETrIdReadCallFwdFlagsRel4,
       
   103     ETrIdReadCsp,
       
   104     ETrIdReadField,
       
   105     ETrIdReadMailboxIdentifier, // 20
       
   106     ETrIdReadCbMsgIds,
       
   107     ETrIdUpdateCbMsgIdsPhase1,
       
   108     ETrIdUpdateCbMsgIdsPhase2,
       
   109     ETrIdReadCipheringIndicatorStatusCustom,
       
   110     ETrIdNotifyCipheringIndicatorStatusCustom, // 25
       
   111     ETrIdReadOperatorNameCustom,
       
   112     ETrIdReadViagHomeZoneParamsCustom,
       
   113     ETrIdReadViagHomeZoneCacheCustom,
       
   114     ETrIdWriteViagHomeZoneCacheCustom,
       
   115     ETrIdWriteViagHomeZoneUhziueSettingsCustom, // 30
       
   116     ETrIdReadVoiceMsgFlagsRel4,
       
   117     ETrIdReadVoiceMsgFlagsCphs,
       
   118     ETrIdWriteVoiceMsgFlagsRel4,
       
   119     ETrIdWriteVoiceMsgFlagsCphs,
       
   120     ETrIdReadDynamicFlags, // 35
       
   121     ETrIdWriteDynamicFlags,
       
   122     ETrIdReadDynamic2Flags,
       
   123     ETrIdWriteDynamic2Flags,
       
   124     ETrIdSimPowerOff,
       
   125     ETrIdSimWarmReset, //40
       
   126     ETrIdSimGetATR,
       
   127     ETrIdSimPowerOn,
       
   128     ETrIdSendAPDUv2,
       
   129     ETrIdCardReaderStatus,
       
   130     ETrIdEEapAkaAuthenticate, // 45
       
   131     ETrIdEEapAuthenticate,
       
   132     ETrIdSendAPDU,
       
   133     ETrIdEEapSimAuthenticate,
       
   134     ETrIdEGbaBootstrap,
       
   135     ETrIdSstCache, // 50
       
   136     ETrIdEGbaBootstrapRead,
       
   137     ETrIdEGbaBootstrapUpdate,
       
   138     ETrIdEGbaNafDerivation,
       
   139     ETrIdEMbmsMskUpdate,
       
   140     ETrIdEMbmsMtkGeneration, // 55
       
   141     ETrIdEMbmsMskDeletion,
       
   142     ETrIdRunGsmAlgorithmSim,
       
   143     ETrIdRunGsmAlgorithmAka,
       
   144     ETrIdRunGsmAlgorithmIms,
       
   145     ETrIdActivateIsimApplication, // 60
       
   146     ETrIdEEapAkaAuthenticateIms,
       
   147     ETrIdReadSMS,
       
   148     ETrIdWriteSMS,
       
   149     ETrIdReadSMSRecordCount,
       
   150     ETrIdReadSMSForComplete,     // 65
       
   151     ETrIdPbInit,
       
   152     ETrIdPbInitFDN,
       
   153     ETrIdPbRead,
       
   154     ETrIdPbReadADN,
       
   155     ETrIdPbUpdate,              // 70
       
   156     ETrIdPbDelete,
       
   157     ETrIdSetFdnStateReadEst,
       
   158     ETrIdSetFdnStateWriteEst,
       
   159     ETrIdSetFdnIcc,
       
   160     ETrIdSetFdnStateReadFileInfo, // 75
       
   161     ETrIdGetFdnStateReadEst,
       
   162     ETrIdGetFdnStateReadFileInfo,
       
   163     ETrIdCphsCache,
       
   164     ENumOfUiccTrIds
       
   165     };
       
   166 
       
   167 // Common parameters needed in UICC_APPL_READ_TRANSPARENT,
       
   168 // UICC_APPL_UPDATE_TRANSPARENT, UICC_APPL_READ_LINEAR_FIXED,
       
   169 // UICC_APPL_UPDATE_LINEAR_FIXED, UICC_APPL_FILE_INFO and
       
   170 // UICC_APPL_APDU_SEND
       
   171 class TUiccParamsBase
       
   172     {
       
   173     public:
       
   174         // Constructor
       
   175         TUiccParamsBase();
       
   176 
       
   177         // Data
       
   178         MUiccOperationBase* messHandlerPtr; // Pointer to message handler
       
   179         TUiccTrId trId; // Unique transaction ID for every UICC operation
       
   180         TUint16 fileId; // ID of elementary file
       
   181         TUint8 fileIdSfi; // Filled only in case SFI is present
       
   182         TUint8 serviceType; // UICC service type
       
   183         TBuf8<KFilePathLength> filePath; // Elementary file path, (DF ) + EF
       
   184                                         // If same as fileId, no need to fill
       
   185     } ;
       
   186 
       
   187 // Parameters needed in UICC_APPL_FILE_INFO
       
   188 class TUiccApplFileInfo: public TUiccParamsBase
       
   189     {
       
   190     public:
       
   191         // Constructor
       
   192         TUiccApplFileInfo();
       
   193     };
       
   194 
       
   195 // Parameters needed in UICC_APPL_READ_TRANSPARENT
       
   196 class TUiccReadTransparent: public TUiccParamsBase
       
   197     {
       
   198     public:
       
   199         // Constructor
       
   200         TUiccReadTransparent();
       
   201 
       
   202         // Data
       
   203         TUint16 dataOffset; // Offset of elementary file data
       
   204         TUint16 dataAmount; // Used only in reading, bytes to be read
       
   205     };
       
   206 
       
   207 // Parameters needed in UICC_APPL_UPDATE_TRANSPARENT
       
   208 class TUiccWriteTransparent: public TUiccReadTransparent
       
   209     {
       
   210     public:
       
   211         // Constructor
       
   212         TUiccWriteTransparent();
       
   213 
       
   214         // Data
       
   215         TBuf8<KFileDataLength> fileData; // Data to be updated
       
   216     };
       
   217 
       
   218 // Parameters needed in UICC_APPL_READ_LINEAR_FIXED
       
   219 class TUiccReadLinearFixed: public TUiccReadTransparent
       
   220     {
       
   221     public:
       
   222         // Constructor
       
   223         TUiccReadLinearFixed();
       
   224 
       
   225         // Data
       
   226         TUint8 record; // Record number
       
   227     } ;
       
   228 
       
   229 // Parameters needed in UICC_APPL_UPDATE_LINEAR_FIXED
       
   230 class TUiccWriteLinearFixed: public TUiccReadLinearFixed
       
   231     {
       
   232     public:
       
   233         // Constructor
       
   234         TUiccWriteLinearFixed();
       
   235         // Data
       
   236         TBuf8<KFileDataLength> fileData; // Data to be updated
       
   237     } ;
       
   238 
       
   239 // Parameters needed in UICC_APPL_APDU_SEND
       
   240 class TUiccSendApdu: public TUiccParamsBase
       
   241     {
       
   242     public:
       
   243         // Constructor
       
   244         TUiccSendApdu();
       
   245         // Data
       
   246         TBuf8<KApduDataLength> apdu; // ADPU going to be send
       
   247     } ;
       
   248 
       
   249 // Parameters needed in UICC_APDU_REQ
       
   250 class TUiccParamsApduReq: public TUiccParamsBase
       
   251     {
       
   252     public:
       
   253         // Constructor
       
   254         TUiccParamsApduReq();
       
   255 
       
   256         // Data
       
   257         TUint8 action; //   UICC_SB_APDU_ACTIONS / Action
       
   258         // Data
       
   259         TBuf8<KApduDataLength> apduData; // APDU data
       
   260     } ;
       
   261 
       
   262 // FORWARD DECLARATIONS
       
   263     class CMmPhoNetSender;
       
   264     class CMmPhoNetReceiver;
       
   265     class CMmMessageRouter;
       
   266 
       
   267 // CLASS DECLARATION
       
   268 
       
   269 /**
       
   270 *  Class used for sending and receiving UICC messages
       
   271 */
       
   272 class CMmUiccMessHandler :
       
   273     public CBase,
       
   274     public MMmMessageReceiver,
       
   275     public MUiccOperationBase
       
   276     {
       
   277     public:  // Constructors and destructor
       
   278 
       
   279         /**
       
   280         * Two-phased constructor.
       
   281         */
       
   282         static CMmUiccMessHandler* NewL(
       
   283             CMmPhoNetSender* aPhoNetSender,
       
   284             CMmPhoNetReceiver* aPhoNetReceiver,
       
   285             CMmMessageRouter* aMessageRouter );
       
   286 
       
   287         /**
       
   288         * Destructor.
       
   289         */
       
   290         virtual ~CMmUiccMessHandler();
       
   291 
       
   292     public: // New functions
       
   293 
       
   294         /**
       
   295         * Receives ISI messages from phonet
       
   296         * @param aIsiMsg Received ISI message
       
   297         * @return void
       
   298         */
       
   299         void ReceiveMessageL( const TIsiReceiveC& aIsiMsg );
       
   300 
       
   301         /**
       
   302         * Create and send UICC_APPL_CMD_REQ message
       
   303         * @param aParams Parameters needed in message
       
   304         * @param aApplType Application type
       
   305         * @return KErrNone or error code
       
   306         */
       
   307         TInt CreateUiccApplCmdReq(
       
   308             const TUiccParamsBase& aParams,
       
   309             const TUint8 aApplType = UICC_APPL_TYPE_UICC_USIM );
       
   310 
       
   311         /**
       
   312         * Create and send UICC_APPLICATION_REQ message
       
   313         * @param aParams Parameters needed in message
       
   314         * @param aServiceType Service type
       
   315         * @param aApplType Application type
       
   316         * @return KErrNone or error code
       
   317         */
       
   318         TInt CreateUiccApplicationReq(
       
   319             const TUiccParamsBase& aParams,
       
   320             TUint8 aServiceType,
       
   321             TUint8 aApplType = UICC_APPL_TYPE_UICC_USIM );
       
   322 
       
   323         /**
       
   324         * Provide UICC application ID
       
   325         * @return TUint8
       
   326         */
       
   327         TUint8 GetApplicationId() const;
       
   328 
       
   329         /**
       
   330         * Provide UICC application type
       
   331         * @return TUint8
       
   332         */
       
   333         TUint8 GetApplicationType() const;
       
   334 
       
   335         /**
       
   336         * Provide UICC card type
       
   337         * @return TUint8
       
   338         */
       
   339         TUint8 GetCardType() const;
       
   340 
       
   341         /**
       
   342         * Provide UICC application file id
       
   343         * @return const TDesC8&
       
   344         */
       
   345         const TDesC8& GetApplicationFileId() const;
       
   346 
       
   347         /**
       
   348         * Provide UICC application AID
       
   349         * @return const TDesC8&
       
   350         */
       
   351         const RMobilePhone::TAID& GetAid() const;
       
   352 
       
   353         /**
       
   354         * Create and send UICC_CONNECTOR_REQ message
       
   355         * @param aParams Parameters needed in message
       
   356         * @return KErrNone or error code
       
   357         */
       
   358         TInt CreateUiccConnectorReq( const TUiccParamsBase& aParams );
       
   359 
       
   360         /**
       
   361         * Create and send UICC_APDU_REQ message
       
   362         * @param aParams Parameters needed in message
       
   363         * @return KErrNone or error code
       
   364         */
       
   365         TInt CreateUiccApduReq( const TUiccParamsApduReq& aParams );
       
   366 
       
   367         /**
       
   368         * Create and send UICC_CARD_REQ
       
   369         * @param aParams Parameters needed in message
       
   370         * @return KErrNone or error code
       
   371         */
       
   372         TInt CreateUiccCardReq( const TUiccParamsBase& aParams );
       
   373 
       
   374         /**
       
   375         * Caches SIM service table (EFust or EFsst depending
       
   376         * on card type in use)
       
   377         * @return none
       
   378         */
       
   379         void InitializeSimServiceTableCache();
       
   380 
       
   381         /**
       
   382         * Gets service status from service table
       
   383         * (from EFust or EFsst depending on card type)
       
   384         * on card type in use)
       
   385         * @return ETrue if service supported, otherwise EFalse
       
   386         */
       
   387         TBool GetServiceStatus( TUint8 aServiceNo );
       
   388 
       
   389         /**
       
   390         * Gets ISIM application status
       
   391         * @return TInt status of ISIM application
       
   392         */
       
   393         TUint8 GetIsimApplicationStatus() const;
       
   394 
       
   395         /**
       
   396         * Handle UICC response messages
       
   397         * @param aTraId Transaction ID
       
   398         * @param aStatus status of the UICC response
       
   399         * @param aFileData Descriptor for file data
       
   400         * @return KErrNone or error code
       
   401         */
       
   402         TInt ProcessUiccMsg(
       
   403             TInt aTraId,
       
   404             TInt aStatus,
       
   405             const TDesC8& aFileData );
       
   406 
       
   407         /**
       
   408         * Checks is ISim application found during boot
       
   409         * @return TBool ETrue if ISIM application found, otherwise EFalse
       
   410         */
       
   411         TBool IsIsimApplicationFound() const;
       
   412 
       
   413         /**
       
   414         * Get PIN1 key reference
       
   415         * @return PIN1 key reference
       
   416         */
       
   417         TUint8 GetPin1KeyReference();
       
   418 
       
   419         /**
       
   420         * Get PIN2 key reference
       
   421         * @return PIN2 key reference
       
   422         */
       
   423         TUint8 GetPin2KeyReference();
       
   424 
       
   425         /**
       
   426         * Get active PIN
       
   427         * @return Active PIN
       
   428         */
       
   429         RMobilePhone::TMobilePhoneSecurityCode GetActivePin();
       
   430 
       
   431         /**
       
   432         * Change active PIN
       
   433         * @return void
       
   434         */
       
   435         void ChangeActivePin();
       
   436 
       
   437         /**
       
   438         * Caches CPHS Information from elementary file in
       
   439         * case if ICC card
       
   440         * @return none
       
   441         */
       
   442         void InitializeCphsInformationCache();
       
   443 
       
   444         /**
       
   445         * Gets status of the CPHS information in case of ICC card
       
   446         * (CPHS information is read form elementary file CPHS Information.
       
   447         * file identifies is 0x6F16 )
       
   448         * @return ETrue if service supported, otherwise EFalse
       
   449         */
       
   450         TBool GetCphsInformationStatus( TUint8 aServiceNo );
       
   451 
       
   452     public: // Functions from base classes
       
   453 
       
   454     protected:  // New functions
       
   455 
       
   456     protected:  // Functions from base classes
       
   457 
       
   458     private:
       
   459 
       
   460         void SendTerminalProfile();
       
   461 
       
   462         /**
       
   463         * C++ default constructor.
       
   464         */
       
   465         CMmUiccMessHandler();
       
   466 
       
   467         /**
       
   468         * By default Symbian 2nd phase constructor is private.
       
   469         */
       
   470         void ConstructL(
       
   471             CMmPhoNetSender* aPhoNetSender,
       
   472             CMmPhoNetReceiver* aPhoNetReceiver );
       
   473 
       
   474         /**
       
   475         * Create and append UICC_SB_APPL_PATH
       
   476         * @param aParams Parameters needed for subblock
       
   477         * @param aIsiMsg ISI message
       
   478         * @param aMsgOffset Offset where subblock is appended
       
   479         * @param aSizeOfSubblock Subblock size to be returned
       
   480         * @return void
       
   481         */
       
   482         void CreateUiccSbApplPath(
       
   483             const TUiccParamsBase& aParams,
       
   484             TIsiSend& aIsiMsg,
       
   485             TUint8 aMsgOffset,
       
   486             TUint8& aSizeOfSubblock );
       
   487 
       
   488         /**
       
   489         * Create and append UICC_SB_CLIENT
       
   490         * @param aIsiMsg    ISI message
       
   491         * @param aMsgOffset Offset where subblock is appended
       
   492         * @param aApplType  type of the application
       
   493         * @return void
       
   494         */
       
   495         void CreateUiccSbClient(
       
   496             TIsiSend& aIsiMsg,
       
   497             TUint8 aMsgOffset,
       
   498             const TUint8 aApplType = UICC_APPL_TYPE_UICC_USIM );
       
   499 
       
   500         /**
       
   501         * Create and append UICC_SB_TRANSPARENT
       
   502         * @param aParams Parameters needed for subblock
       
   503         * @param aIsiMsg ISI message
       
   504         * @param aMsgOffset Offset where subblock is appended
       
   505         * @return void
       
   506         */
       
   507         void CreateUiccSbTransparent(
       
   508             const TUiccReadTransparent& aParams,
       
   509             TIsiSend& aIsiMsg,
       
   510             TUint8 aMsgOffset );
       
   511 
       
   512         /**
       
   513         * Create and append UICC_SB_LINEAR_FIXED
       
   514         * @param aParams Parameters needed for subblock
       
   515         * @param aIsiMsg ISI message
       
   516         * @param aMsgOffset Offset where subblock is appended
       
   517         * @return void
       
   518         */
       
   519         void CreateUiccSbLinearFixed(
       
   520             const TUiccReadLinearFixed& aParams,
       
   521             TIsiSend& aIsiMsg,
       
   522             TUint8 aMsgOffset );
       
   523 
       
   524         /**
       
   525         * Create and append UICC_SB_FILE_DATA
       
   526         * @param aIsiMsg ISI message
       
   527         * @param aMsgOffset Offset where subblock is appended
       
   528         * @param aUpdateData Data to be updated
       
   529         * @return void
       
   530         */
       
   531         void CreateUiccSbFileData(
       
   532             TIsiSend& aIsiMsg,
       
   533             TUint8 aMsgOffset,
       
   534             const TDesC8& aUpdateData );
       
   535 
       
   536         /**
       
   537         * Create and append UICC_SB_APPLICATION
       
   538         * @param aIsiMsg ISI message
       
   539         * @param aMsgOffset Offset where subblock is appended
       
   540         * @return void
       
   541         */
       
   542         void CreateUiccSbApplication(
       
   543             TIsiSend& aIsiMsg,
       
   544             TUint8 aMsgOffset,
       
   545             TUint8 aApplType = UICC_APPL_TYPE_UICC_USIM );
       
   546 
       
   547         /**
       
   548         * Get file data
       
   549         * @param aIsiMsg Received ISI message
       
   550         * @return File data
       
   551         */
       
   552         const TPtrC8 GetFileData( const TIsiReceiveC& aIsiMsg );
       
   553 
       
   554         /**
       
   555         * Get file FCI
       
   556         * @param aIsiMsg Received ISI message
       
   557         * @return FCI data
       
   558         */
       
   559         const TPtrC8 GetFileFCI( const TIsiReceiveC& aIsiMsg );
       
   560 
       
   561         /**
       
   562         * Create and append UICC_SB_APDU_ACTIONS
       
   563         * @param aIsiMsg ISI message
       
   564         * @return void
       
   565         */
       
   566         void CreateUiccSbApduActions(
       
   567             TIsiSend& aIsiMsg,
       
   568             TUint8 aAction);
       
   569 
       
   570         /**
       
   571         * Handle UICC_RESP ISI message
       
   572         * @param aIsiMsg ISI message
       
   573         * @return Server status
       
   574         */
       
   575         TUint8 HandleUiccResp( const TIsiReceiveC& aIsiMsg );
       
   576 
       
   577         /**
       
   578         * Handle UICC_APPLICATION_RESP ISI message
       
   579         * @param aIsiMsg ISI message
       
   580         * @return KErrNone or error code
       
   581         */
       
   582         TInt HandleUiccApplicationResp( const TIsiReceiveC& aIsiMsg );
       
   583 
       
   584         /**
       
   585         * Get apdu data
       
   586         * @param aIsiMsg Received ISI message
       
   587         * @return APDU data
       
   588         */
       
   589         const TPtrC8 GetApduData( const TIsiReceiveC& aIsiMsg );
       
   590 
       
   591         /**
       
   592         * Create and append UICC_SB_APDU
       
   593         * @param aIsiMsg ISI message
       
   594         * @param aMsgOffset Offset where subblock is appended
       
   595         * @param aAPDUData Data to be updated
       
   596         * @return void
       
   597         */
       
   598         void CreateUiccSbApdu(
       
   599             TIsiSend& aIsiMsg,
       
   600             TUint8 aMsgOffset,
       
   601             const TDesC8& aAPDUData );
       
   602 
       
   603         /**
       
   604         * Handles response to the service table reading
       
   605         * @param aStatus   status of the UICC response
       
   606         * @param aFileData service table data
       
   607         * @return void
       
   608         */
       
   609         void SimServiceTableCacheResp(
       
   610             TInt aStatus,
       
   611             const TDesC8& aFileData );
       
   612 
       
   613         /**
       
   614         * Stores PIN key references
       
   615         * @param aFileData File data
       
   616         * @return none
       
   617         */
       
   618         void StorePinKeyReferences( const TDesC8& aFileData );
       
   619 
       
   620         /**
       
   621         * Handles response to the CPHS information reading
       
   622         * @param aStatus   status of the UICC response
       
   623         * @param aFileData CPHS information data
       
   624         * @return void
       
   625         */
       
   626         void CphsInformationCacheResp(
       
   627             TInt aStatus,
       
   628             const TDesC8& aFileData );
       
   629 
       
   630 
       
   631     private:    // Data
       
   632 
       
   633         CMmPhoNetSender* iPhoNetSender;
       
   634 
       
   635         // Pointer to the Message router
       
   636         CMmMessageRouter* iMessageRouter;
       
   637 
       
   638         // Array for message handler pointers
       
   639         TFixedArray<MUiccOperationBase*, ENumOfUiccTrIds> iMessHandlerPrtList;
       
   640 
       
   641         TUint8 iCardType;
       
   642         TUint8 iApplicationType;
       
   643         TUint8 iApplicationId;
       
   644         TUint8 iApplicationStatus;
       
   645         TUint8 iUiccServerStatus;
       
   646         TUint8 iUiccClientId;
       
   647         TUint8 iIsimApplicationId;
       
   648         TUint8 iIsimApplicationStatus;
       
   649         TUint8 iUiccIsimClientId;
       
   650         TUint8 iPin1Id;
       
   651         TUint8 iPin2Id;
       
   652         TBool iIsimApplicationFound;
       
   653         // Application file ID, two bytes
       
   654         TBuf8<2> iApplFileId;
       
   655         // Flag for keeping tranactionid in list, so that future indications
       
   656         // can be relayed to interested party.
       
   657         TBool iDoNotRemoveTransactionID;
       
   658         // SIM Service Table, used to cache EFsst
       
   659         TBuf8<KEfSstSize> iSSTFile;
       
   660         // USIM Service Table, used to cache EFust
       
   661         TBuf8<KEfUstSize> iUSTFile;
       
   662         // CPHS Information Table, used to cache CPHS information
       
   663         TBuf8<KEfCphsInfoSize> iCPHSInformation;
       
   664         // Store AID of active application
       
   665         RMobilePhone::TAID iAid;
       
   666         // Store active PIN
       
   667         RMobilePhone::TMobilePhoneSecurityCode iActivePin;
       
   668 
       
   669     };
       
   670 
       
   671 #endif      // _CMMUICCMESSHANDLER_
       
   672 
       
   673 // End of File