--- a/adaptationlayer/tsy/nokiatsy_dll/src/cmmuiccmesshandler.cpp Wed Apr 21 14:29:55 2010 +0300
+++ b/adaptationlayer/tsy/nokiatsy_dll/src/cmmuiccmesshandler.cpp Tue Oct 19 13:16:20 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009-2010 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"
@@ -15,8 +15,6 @@
*
*/
-
-
// INCLUDE FILES
#include "cmmuiccmesshandler.h"
#include "cmmphonetsender.h"
@@ -24,6 +22,7 @@
#include "cmmmessagerouter.h"
#include "cmmstaticutility.h"
#include "cmmphonemesshandler.h"
+#include "terminalprofile.h" // terminal profile
#include <ctsy/serviceapi/mmtsy_ipcdefs.h>
#include <e32cmn.h>
@@ -47,7 +46,15 @@
const TUint8 KUiccSbApduLengthOffset( 6 );
const TUint8 KUiccSbApduDataOffset( 8 );
const TUint16 KUiccSbApduSize( SIZE_UICC_SB_APDU + KApduDataLength );
+// Truncated AID length
+const TUint8 KTruncatedAidLength = 7;
+// Truncated AID ( 3GPP USIM RID + app code )
+// RID 'A000000087'
+// App code '1002'
+_LIT8( KTruncatedAID, "\xA0\x00\x00\x00\x87\x10\x02" );
+const TUint8 KSizeOfTerminalProfileSb = 40;
+const TInt KCardStatusFieldLength = 1;
// ============================= LOCAL FUNCTIONS ===============================
@@ -56,9 +63,28 @@
// Temporary for testing purposes, terminal profile sending will be moved
// to SAT TSY
TFLOGSTRING("TSY: CMmUiccMessHandler::SendTerminalProfile TEMPORARY SOLUTION FOR TESTING");
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_SENDTERMINALPROFILE, "CMmUiccMessHandler::SendTerminalProfile TEMPORARY SOLUTION FOR TESTING" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_SENDTERMINALPROFILE_TD, "CMmUiccMessHandler::SendTerminalProfile TEMPORARY SOLUTION FOR TESTING" );
+
+
+ // Pointer to terminal profile buffer
+ const TUint8* terminalProfilePtr( NULL );
+ // Size of terminal profile
+ TInt sizeofTerminalProfile( 0 );
- // Create UICC_CAT_TERMINAL_PROFILE message
+ if( UICC_CARD_TYPE_UICC == iCardType )
+ {
+ terminalProfilePtr = &KTerminalProfileUicc[0];
+ sizeofTerminalProfile = sizeof( KTerminalProfileUicc );
+TFLOGSTRING("TSY: CMmUiccMessHandler::SendTerminalProfile TEMPORARY SOLUTION FOR TESTING - Card type UICC");
+ }
+ else // ICC type
+ {
+ terminalProfilePtr = &KTerminalProfileIcc[0];
+ sizeofTerminalProfile = sizeof( KTerminalProfileIcc );
+TFLOGSTRING("TSY: CMmUiccMessHandler::SendTerminalProfile TEMPORARY SOLUTION FOR TESTING - Card type ICC");
+ }
+
+ // Create UICC_CAT_REQ message
TIsiSend isiMsg( iPhoNetSender->SendBufferDes() );
isiMsg.Set8bit( ISI_HEADER_OFFSET_RESOURCEID, PN_UICC );
isiMsg.Set8bit( ISI_HEADER_SIZE, UICC_CAT_REQ_OFFSET_TRANSID ); // transaction id
@@ -66,8 +92,8 @@
isiMsg.Set8bit( ISI_HEADER_SIZE + UICC_CAT_REQ_OFFSET_SERVICETYPE, UICC_CAT_TERMINAL_PROFILE );
isiMsg.Set8bit( ISI_HEADER_SIZE + UICC_CAT_REQ_OFFSET_NSB, 1 ); // num of subblocks
- // Create subblock
- TBuf8<30> terminalProfileBuf( 0 );
+ // Create UICC_SB_TERMINAL_PROFILE subblock
+ TBuf8<KSizeOfTerminalProfileSb> terminalProfileBuf( 0 );
TIsiSubBlock uiccSbTerminalProfile(
terminalProfileBuf,
UICC_SB_TERMINAL_PROFILE,
@@ -78,13 +104,15 @@
terminalProfileBuf.Append( KUiccPadding );
// Terminal profile length (16-bit)
- terminalProfileBuf.Append( KUiccPadding );
- terminalProfileBuf.Append( 1 );
terminalProfileBuf.Append( 0 );
+ terminalProfileBuf.Append( sizeofTerminalProfile );
+
+ // Terminal profile
+ terminalProfileBuf.Append( terminalProfilePtr, sizeofTerminalProfile );
// Append subblock to ISI message
isiMsg.CopyData(
- ISI_HEADER_SIZE + 4,
+ ISI_HEADER_SIZE + SIZE_UICC_CAT_REQ,
uiccSbTerminalProfile.CompleteSubBlock() );
iPhoNetSender->Send( isiMsg.Complete() );
@@ -200,7 +228,7 @@
CMmPhoNetReceiver* aPhoNetReceiver)
{
TFLOGSTRING("TSY: CMmUiccMessHandler::ConstructL");
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CONSTRUCTL, "CMmUiccMessHandler::ConstructL" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CONSTRUCTL_TD, "CMmUiccMessHandler::ConstructL" );
// Reset the pointer array
iMessHandlerPrtList.Reset();
@@ -226,6 +254,12 @@
// Initialized for USIM application
iApplFileId.Append( 0x7F );
iApplFileId.Append( 0xFF );
+
+ TUiccParamsApduReq params;
+ params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
+ params.trId = ETrIdGetCardStatus;
+ params.serviceType = UICC_CARD_STATUS_GET;
+ CreateUiccCardReq( params );
}
// -----------------------------------------------------------------------------
@@ -239,7 +273,7 @@
CMmMessageRouter* aMessageRouter )
{
TFLOGSTRING("TSY: CMmUiccMessHandler::NewL");
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_NEWL, "CMmUiccMessHandler::NewL" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_NEWL_TD, "CMmUiccMessHandler::NewL" );
CMmUiccMessHandler* uiccMessHandler( new ( ELeave ) CMmUiccMessHandler() );
CleanupStack::PushL( uiccMessHandler );
@@ -257,7 +291,7 @@
CMmUiccMessHandler::~CMmUiccMessHandler()
{
TFLOGSTRING("TSY: CMmUiccMessHandler::~CMmUiccMessHandler");
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CMMUICCMESSHANDLER, "CMmUiccMessHandler::~CMmUiccMessHandler" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CMMUICCMESSHANDLER_TD, "CMmUiccMessHandler::~CMmUiccMessHandler" );
}
// -----------------------------------------------------------------------------
@@ -268,7 +302,7 @@
//
void CMmUiccMessHandler::ReceiveMessageL( const TIsiReceiveC& aIsiMsg )
{
- TInt status( KErrNone );
+ TUint8 status( UICC_STATUS_FAIL );
TUint8 details ( UICC_NO_DETAILS );
TUint8 messageId( aIsiMsg.Get8bit( ISI_HEADER_OFFSET_MESSAGEID ) );
TUint8 trId( aIsiMsg.Get8bit( ISI_HEADER_OFFSET_TRANSID ) );
@@ -276,68 +310,83 @@
TPtrC8 fileData;
TFLOGSTRING3("TSY: CMmUiccMessHandler::ReceiveMessageL, message ID :0x%x, transaction ID: %d", messageId, trId );
-OstTraceExt2( TRACE_NORMAL, CMMUICCMESSHANDLER_RECEIVEMESSAGEL, "CMmUiccMessHandler::ReceiveMessageL;messageId=%hhx;trId=%hhu", messageId, trId );
+OstTraceExt2( TRACE_NORMAL, CMMUICCMESSHANDLER_RECEIVEMESSAGEL_TD, "CMmUiccMessHandler::ReceiveMessageL;messageId=%hhx;trId=%hhu", messageId, trId );
+ MUiccOperationBase* messHandler( NULL );
// Get the correct message handler for this operation
- MUiccOperationBase* messHandler( iMessHandlerPrtList.At( trId ) );
+ if( trId < iMessHandlerPrtList.Count() )
+ {
+ messHandler = iMessHandlerPrtList.At( trId );
+ }
switch( messageId )
{
case UICC_CAT_IND:
{
+TFLOGSTRING("TSY: CMmUiccMessHandler::ReceiveMessageL:UICC_CAT_IND");
// Send terminal profile ( to be moved to SAT TSY later )
- SendTerminalProfile();
+ serviceType = aIsiMsg.Get8bit(
+ ISI_HEADER_SIZE + UICC_CAT_IND_OFFSET_SERVICETYPE );
+ if( UICC_READY == serviceType )
+ {
+ SendTerminalProfile();
+ }
break;
}
case UICC_CAT_RESP:
{
// To be moved to SAT TSY later
+TFLOGSTRING("TSY: CMmUiccMessHandler::ReceiveMessageL: UICC_CAT_RESP");
break;
}
case UICC_CARD_IND:
{
+TFLOGSTRING("TSY: CMmUiccMessHandler::ReceiveMessageL: UICC_CARD_IND");
serviceType = aIsiMsg.Get8bit(
ISI_HEADER_SIZE + UICC_CARD_IND_OFFSET_SERVICETYPE );
// Start application activation procedure if the card is ready and
// the application is not active yet
- if ( UICC_CARD_READY == serviceType &&
+ if (UICC_CARD_READY == serviceType &&
UICC_STATUS_APPL_ACTIVE != iApplicationStatus )
{
TUiccParamsBase params;
params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
params.trId = ETrIdGetUiccApplication;
- CreateUiccApplicationReq( params, UICC_APPL_LIST );
+ CreateUiccApplicationReq( params, UICC_APPL_LIST, iCardType );
}
// No else. Application was active already
break;
}
case UICC_RESP:
{
+TFLOGSTRING("TSY: CMmUiccMessHandler::ReceiveMessageL: UICC_RESP");
iUiccServerStatus = HandleUiccResp( aIsiMsg );
- // Start application activation procedure if the card is ready and
- // the application is not active yet
+ // Start application activation procedure if UICC server is ready
+ // but appplication activations is not done by TSY
if ( UICC_STATUS_START_UP_COMPLETED == iUiccServerStatus &&
- UICC_STATUS_APPL_ACTIVE != iApplicationStatus)
+ UICC_STATUS_APPL_ACTIVE != iApplicationStatus )
{
// Read the application ID
TUiccParamsBase params;
params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
params.trId = ETrIdGetUiccApplication;
- CreateUiccApplicationReq( params, UICC_APPL_LIST );
+ //CreateUiccApplicationReq( params, UICC_APPL_LIST, iCardType );
}
break;
}
case UICC_APPLICATION_RESP:
{
- status = HandleUiccApplicationResp( aIsiMsg );
+ status = aIsiMsg.Get8bit(
+ ISI_HEADER_SIZE + UICC_APPLICATION_RESP_OFFSET_STATUS );
+ HandleUiccApplicationResp( aIsiMsg );
break;
}
case UICC_APPLICATION_IND:
{
+TFLOGSTRING("TSY: CMmUiccMessHandler::ReceiveMessageL: UICC_APPLICATION_IND");
TInt8 serviceType( aIsiMsg.Get8bit(
ISI_HEADER_SIZE + UICC_APPLICATION_IND_OFFSET_SERVICETYPE ) );
- iApplicationStatus = UICC_STATUS_APPL_ACTIVE;
// Application activation indication with service type
// UICC_APPL_ACTIVATED, as part of PowerOnSim sequence.
// Transaction id is set to ETrIdSimPowerOn and operation
@@ -345,7 +394,7 @@
if( UICC_APPL_ACTIVATED == serviceType )
{
iDoNotRemoveTransactionID = EFalse;
- status = KErrNone;
+ status = UICC_STATUS_OK;
trId = ETrIdSimPowerOn;
messHandler = iMessHandlerPrtList.At( trId );
}
@@ -353,31 +402,33 @@
}
case UICC_APPL_CMD_RESP:
{
+TFLOGSTRING("TSY: CMmUiccMessHandler::ReceiveMessageL: UICC_APPL_CMD_RESP");
status = aIsiMsg.Get8bit(
- ISI_HEADER_SIZE + UICC_APPL_CMD_RESP_OFFSET_STATUS );
-
+ ISI_HEADER_SIZE + UICC_APPL_CMD_RESP_OFFSET_STATUS );
+
details = aIsiMsg.Get8bit(
ISI_HEADER_SIZE + UICC_APPL_CMD_RESP_OFFSET_DETAILS );
- TInt8 serviceType( aIsiMsg.Get8bit(
+ TUint8 serviceType( aIsiMsg.Get8bit(
ISI_HEADER_SIZE + UICC_APPL_CMD_RESP_OFFSET_SERVICETYPE ) );
if ( UICC_STATUS_OK == status )
{
// If READ operation was required, read data from subblock
if ( UICC_APPL_READ_TRANSPARENT == serviceType ||
- UICC_APPL_READ_LINEAR_FIXED == serviceType )
+ UICC_APPL_READ_LINEAR_FIXED == serviceType )
{
fileData.Set( GetFileData( aIsiMsg ) );
}
- if ( UICC_APPL_FILE_INFO == serviceType )
+ else if ( UICC_APPL_FILE_INFO == serviceType )
{
fileData.Set( GetFileFCI( aIsiMsg ) );
}
- if ( UICC_APPL_APDU_SEND == serviceType )
+ else if ( UICC_APPL_APDU_SEND == serviceType )
{
fileData.Set( GetApduData( aIsiMsg ) );
}
+ // No else
}
else
{
@@ -388,9 +439,10 @@
}
case UICC_APDU_RESP:
{
+TFLOGSTRING("TSY: CMmUiccMessHandler::ReceiveMessageL: UICC_APDU_RESP");
status = aIsiMsg.Get8bit(
ISI_HEADER_SIZE + UICC_APDU_RESP_OFFSET_STATUS );
- TInt8 serviceType( aIsiMsg.Get8bit(
+ TUint8 serviceType( aIsiMsg.Get8bit(
ISI_HEADER_SIZE + UICC_APDU_RESP_OFFSET_SERVICETYPE ) );
// Extract actual APDU from SB_APDU
@@ -406,7 +458,8 @@
}
case UICC_APDU_RESET_IND:
{
- TInt8 serviceType( aIsiMsg.Get8bit(
+TFLOGSTRING("TSY: CMmUiccMessHandler::ReceiveMessageL: UICC_APDU_RESET_IND");
+ TUint8 serviceType( aIsiMsg.Get8bit(
ISI_HEADER_SIZE + UICC_APDU_RESET_IND_OFFSET_SERVICETYPE ) );
// Indication that SAP APDU interface is activated
@@ -420,23 +473,31 @@
}
case UICC_CONNECTOR_RESP:
{
+TFLOGSTRING("TSY: CMmUiccMessHandler::ReceiveMessageL: UICC_CONNECTOR_RESP");
status = aIsiMsg.Get8bit(
ISI_HEADER_SIZE + UICC_CONNECTOR_RESP_OFFSET_STATUS );
+ break;
}
- break;
case UICC_CARD_RESP:
{
+TFLOGSTRING("TSY: CMmUiccMessHandler::ReceiveMessageL: UICC_CARD_RESP");
status = aIsiMsg.Get8bit(
ISI_HEADER_SIZE + UICC_CARD_RESP_OFFSET_STATUS );
TUint8 serviceType( aIsiMsg.Get8bit(
ISI_HEADER_SIZE + UICC_CARD_RESP_OFFSET_SERVICETYPE ) );
+ iCardType = aIsiMsg.Get8bit(
+ ISI_HEADER_SIZE + UICC_CARD_RESP_OFFSET_CARDTYPE );
+TFLOGSTRING2("TSY: CMmUiccMessHandler::ReceiveMessageL: UICC_CARD_RESP iCardType = %d", iCardType );
+
if( UICC_STATUS_OK == status
&& UICC_CARD_STATUS_GET == serviceType )
{
+ UiccCardRespStatus( aIsiMsg );
+ }
// File data from SIZE_UICC_SB_CARD_STATUS
TUint uiccSbFileDataOffset( 0 );
- TInt cardStatusFieldLength( 1 );
+
if ( KErrNone == aIsiMsg.FindSubBlockOffsetById(
ISI_HEADER_SIZE + SIZE_UICC_CARD_RESP,
@@ -447,15 +508,15 @@
fileData.Set(aIsiMsg.GetData(
uiccSbFileDataOffset +
UICC_SB_CARD_STATUS_OFFSET_CARDSTATUS,
- cardStatusFieldLength) );
+ KCardStatusFieldLength ) );
}
- }
+
+ break;
}
- break;
default:
{
TFLOGSTRING("TSY: CMmUiccMessHandler::ReceiveMessageL, default" );
-OstTrace0( TRACE_NORMAL, DUP2_CMMUICCMESSHANDLER_RECEIVEMESSAGEL, "CMmUiccMessHandler::ReceiveMessageL, default" );
+OstTrace0( TRACE_NORMAL, DUP2_CMMUICCMESSHANDLER_RECEIVEMESSAGEL_TD, "CMmUiccMessHandler::ReceiveMessageL, default" );
break;
}
}
@@ -471,7 +532,7 @@
else
{
TFLOGSTRING("TSY: CMmUiccMessHandler::ReceiveMessageL, message handler not found -> no further handling of this message" );
-OstTrace0( TRACE_NORMAL, DUP3_CMMUICCMESSHANDLER_RECEIVEMESSAGEL, "CMmUiccMessHandler::ReceiveMessageL, message handler not found -> no further handling of this message" );
+OstTrace0( TRACE_NORMAL, DUP3_CMMUICCMESSHANDLER_RECEIVEMESSAGEL_TD, "CMmUiccMessHandler::ReceiveMessageL, message handler not found -> no further handling of this message" );
}
}
@@ -491,7 +552,7 @@
TUint8 sizeOfApplPathSubblock( 0 );
TFLOGSTRING2("TSY: CMmUiccMessHandler::CreateUiccApplCmdReq, transaction ID: %d", trId );
-OstTrace1( TRACE_NORMAL, CMMUICCMESSHANDLER_CREATEUICCAPPLCMDREQ, "CMmUiccMessHandler::CreateUiccApplCmdReq;trId=%d", trId );
+OstTrace1( TRACE_NORMAL, CMMUICCMESSHANDLER_CREATEUICCAPPLCMDREQ_TD, "CMmUiccMessHandler::CreateUiccApplCmdReq;trId=%d", trId );
TUint8 applId( aApplType == UICC_APPL_TYPE_UICC_ISIM ?
iIsimApplicationId : iApplicationId );
@@ -641,7 +702,8 @@
KUiccApplCmdReqOffset + SIZE_UICC_SB_CLIENT,
sizeOfApplPathSubblock );
// Create and append UICC_SB_APDU
- const TUiccSendApdu* tmpPtr = static_cast<const TUiccSendApdu*>( &aParams );
+ const TUiccSendApdu* tmpPtr =
+ static_cast<const TUiccSendApdu*>( &aParams );
CreateUiccSbApdu(
isiMsg,
KUiccApplCmdReqOffset + SIZE_UICC_SB_CLIENT +
@@ -653,7 +715,7 @@
{
ret = KErrArgument;
TFLOGSTRING("TSY: CMmUiccMessHandler::CreateUiccApplCmdReq, unknown service type!" );
-OstTrace0( TRACE_NORMAL, DUP2_CMMUICCMESSHANDLER_CREATEUICCAPPLCMDREQ, "CMmUiccMessHandler::CreateUiccApplCmdReq, unknown service type!" );
+OstTrace0( TRACE_NORMAL, DUP2_CMMUICCMESSHANDLER_CREATEUICCAPPLCMDREQ_TD, "CMmUiccMessHandler::CreateUiccApplCmdReq, unknown service type!" );
break;
}
} // End of switch ( serviceType )
@@ -670,7 +732,7 @@
else
{
TFLOGSTRING("TSY: CMmUiccMessHandler::CreateUiccApplCmdReq, cannot handle the request, server busy!" );
-OstTrace0( TRACE_NORMAL, DUP1_CMMUICCMESSHANDLER_CREATEUICCAPPLCMDREQ, "CMmUiccMessHandler::CreateUiccApplCmdReq, cannot handle the request, server busy!" );
+OstTrace0( TRACE_NORMAL, DUP1_CMMUICCMESSHANDLER_CREATEUICCAPPLCMDREQ_TD, "CMmUiccMessHandler::CreateUiccApplCmdReq, cannot handle the request, server busy!" );
ret = KErrServerBusy;
}
return ret;
@@ -687,7 +749,7 @@
TUint8 aApplType )
{
TFLOGSTRING2("TSY: CMmUiccMessHandler::CreateUiccApplicationReq, service type: %d", aServiceType );
-OstTraceExt1( TRACE_NORMAL, CMMUICCMESSHANDLER_CREATEUICCAPPLICATIONREQ, "CMmUiccMessHandler::CreateUiccApplicationReq;aServiceType=%hhu", aServiceType );
+OstTraceExt1( TRACE_NORMAL, CMMUICCMESSHANDLER_CREATEUICCAPPLICATIONREQ_TD, "CMmUiccMessHandler::CreateUiccApplicationReq;aServiceType=%hhu", aServiceType );
TInt ret (KErrGeneral);
TUiccTrId trId( aParams.trId );
@@ -710,7 +772,7 @@
isiMsg.Set8bit(
ISI_HEADER_SIZE + UICC_APPLICATION_REQ_OFFSET_SERVICETYPE,
aServiceType );
-
+
switch ( aServiceType )
{
case UICC_APPL_LIST:
@@ -720,11 +782,32 @@
}
case UICC_APPL_HOST_ACTIVATE:
{
- numOfSubblocks = 1;
+ CreateUiccSbApplInfo(
+ isiMsg,
+ ISI_HEADER_SIZE + SIZE_UICC_APPLICATION_REQ );
CreateUiccSbApplication(
isiMsg,
- ISI_HEADER_SIZE + SIZE_UICC_APPLICATION_REQ,
+ ISI_HEADER_SIZE + SIZE_UICC_APPLICATION_REQ +
+ SIZE_UICC_SB_APPL_INFO,
aApplType );
+
+ if ( UICC_APPL_LAST == iApplicationId )
+ {
+TFLOGSTRING("TSY: CMmUiccMessHandler::CreateUiccApplicationReq - need to add UICC_SB_AID subblock" );
+
+ CreateUiccSbAid(
+ isiMsg,
+ ISI_HEADER_SIZE +
+ SIZE_UICC_APPLICATION_REQ +
+ SIZE_UICC_SB_APPL_INFO +
+ SIZE_UICC_SB_APPLICATION );
+
+ numOfSubblocks = 3;
+ }
+ else
+ {
+ numOfSubblocks = 2;
+ }
break;
}
default:
@@ -745,7 +828,7 @@
else
{
TFLOGSTRING("TSY: CMmUiccMessHandler::CreateUiccApplicationReq, cannot handle the request, server busy!" );
-OstTrace0( TRACE_NORMAL, DUP1_CMMUICCMESSHANDLER_CREATEUICCAPPLICATIONREQ, "CMmUiccMessHandler::CreateUiccApplicationReq, cannot handle the request, server busy!" );
+OstTrace0( TRACE_NORMAL, DUP1_CMMUICCMESSHANDLER_CREATEUICCAPPLICATIONREQ_TD, "CMmUiccMessHandler::CreateUiccApplicationReq, cannot handle the request, server busy!" );
ret = KErrServerBusy;
}
return ret;
@@ -759,7 +842,7 @@
TUint8 CMmUiccMessHandler::GetApplicationId() const
{
TFLOGSTRING2("TSY: CMmUiccMessHandler::GetApplicationId, application ID: %d", iApplicationId );
-OstTraceExt1( TRACE_NORMAL, CMMUICCMESSHANDLER_GETAPPLICATIONID, "CMmUiccMessHandler::GetApplicationId;aApplId=%hhu", iApplicationId );
+OstTraceExt1( TRACE_NORMAL, CMMUICCMESSHANDLER_GETAPPLICATIONID_TD, "CMmUiccMessHandler::GetApplicationId;aApplId=%hhu", iApplicationId );
return iApplicationId;
}
@@ -771,7 +854,7 @@
TUint8 CMmUiccMessHandler::GetApplicationType() const
{
TFLOGSTRING2("TSY: CMmUiccMessHandler::GetApplicationType, application type: %d", iApplicationType );
-OstTraceExt1( TRACE_NORMAL, CMMUICCMESSHANDLER_GETAPPLICATIONTYPE, "CMmUiccMessHandler::GetApplicationType;aApplType=%hhu", iApplicationType );
+OstTraceExt1( TRACE_NORMAL, CMMUICCMESSHANDLER_GETAPPLICATIONTYPE_TD, "CMmUiccMessHandler::GetApplicationType;aApplType=%hhu", iApplicationType );
return iApplicationType;
}
@@ -783,7 +866,7 @@
const TDesC8& CMmUiccMessHandler::GetApplicationFileId() const
{
TFLOGSTRING("TSY: CMmUiccMessHandler::GetApplicationFileId" );
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_GETAPPLICATIONFILEID, "CMmUiccMessHandler::GetApplicationFileId" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_GETAPPLICATIONFILEID_TD, "CMmUiccMessHandler::GetApplicationFileId" );
return iApplFileId;
}
@@ -795,7 +878,7 @@
TUint8 CMmUiccMessHandler::GetCardType() const
{
TFLOGSTRING("TSY: CMmUiccMessHandler::GetCardType" );
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_GETCARDTYPE, "CMmUiccMessHandler::GetCardType" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_GETCARDTYPE_TD, "CMmUiccMessHandler::GetCardType" );
return iCardType;
}
@@ -807,7 +890,7 @@
TUint8 CMmUiccMessHandler::GetIsimApplicationStatus() const
{
TFLOGSTRING("TSY: CMmUiccMessHandler::GetIsimApplicationStatus" );
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_GETISIMAPPLICATIONSTATUS, "CMmUiccMessHandler::GetIsimApplicationStatus" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_GETISIMAPPLICATIONSTATUS_TD, "CMmUiccMessHandler::GetIsimApplicationStatus" );
return iIsimApplicationStatus;
}
@@ -819,7 +902,7 @@
TBool CMmUiccMessHandler::IsIsimApplicationFound() const
{
TFLOGSTRING("TSY: CMmUiccMessHandler::IsIsimApplicationFound" );
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_ISISIMAPPLICATIONFOUND, "CMmUiccMessHandler::IsIsimApplicationFound" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_ISISIMAPPLICATIONFOUND_TD, "CMmUiccMessHandler::IsIsimApplicationFound" );
return iIsimApplicationFound;
}
@@ -831,7 +914,7 @@
const RMobilePhone::TAID& CMmUiccMessHandler::GetAid() const
{
TFLOGSTRING("TSY: CMmUiccMessHandler::GetAid" );
-OstTrace0( TRACE_NORMAL, DUP1_CMMUICCMESSHANDLER_GETAPPLICATIONFILEID, "CMmUiccMessHandler::GetApplicationFileId" );
+OstTrace0( TRACE_NORMAL, DUP1_CMMUICCMESSHANDLER_GETAPPLICATIONFILEID_TD, "CMmUiccMessHandler::GetApplicationFileId" );
return iAid;
}
// -----------------------------------------------------------------------------
@@ -846,7 +929,7 @@
TUint8& aSizeOfSubblock )
{
TFLOGSTRING("TSY: CMmUiccMessHandler::CreateUiccSbApplPath" );
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CREATEUICCSBAPPLPATH, "CMmUiccMessHandler::CreateUiccSbApplPath" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CREATEUICCSBAPPLPATH_TD, "CMmUiccMessHandler::CreateUiccSbApplPath" );
// UICC_SB_APPL_PATH subblock
TBuf8<KUiccSbApplPathSize> uiccSbApplPathBuf( 0 );
@@ -885,7 +968,7 @@
const TUint8 aApplType )
{
TFLOGSTRING("TSY: CMmUiccMessHandler::CreateUiccSbClient" );
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CREATEUICCSBCLIENT, "CMmUiccMessHandler::CreateUiccSbClient" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CREATEUICCSBCLIENT_TD, "CMmUiccMessHandler::CreateUiccSbClient" );
// UICC_SB_CLIENT subblock
TBuf8<SIZE_UICC_SB_CLIENT> uiccSbClientBuf( 0 );
@@ -919,7 +1002,7 @@
else
{
TFLOGSTRING2("TSY: CMmUiccMessHandler::CreateUiccSbClient: unknown appl type: 0x%x", aApplType );
-OstTrace1( TRACE_NORMAL, DUP1_CMMUICCMESSHANDLER_CREATEUICCSBCLIENT, "CMmUiccMessHandler::CreateUiccSbClient: unknown appl type: 0x%x", aApplType );
+OstTrace1( TRACE_NORMAL, DUP1_CMMUICCMESSHANDLER_CREATEUICCSBCLIENT_TD, "CMmUiccMessHandler::CreateUiccSbClient: unknown appl type: 0x%x", aApplType );
}
}
@@ -934,7 +1017,7 @@
TUint8 aMsgOffset )
{
TFLOGSTRING("TSY: CMmUiccMessHandler::CreateUiccSbTransparent" );
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CREATEUICCSBTRANSPARENT, "CMmUiccMessHandler::CreateUiccSbTransparent" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CREATEUICCSBTRANSPARENT_TD, "CMmUiccMessHandler::CreateUiccSbTransparent" );
// UICC_SB_TRANSPARENT subblock
TBuf8<SIZE_UICC_SB_TRANSPARENT> uiccSbTransparentBuf( 0 );
@@ -967,7 +1050,7 @@
TUint8 aMsgOffset )
{
TFLOGSTRING("TSY: CMmUiccMessHandler::CreateUiccSbLinearFixed" );
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CREATEUICCSBLINEARFIXED, "CMmUiccMessHandler::CreateUiccSbLinearFixed" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CREATEUICCSBLINEARFIXED_TD, "CMmUiccMessHandler::CreateUiccSbLinearFixed" );
// UICC_SB_LINEAR_FIXED subblock
TBuf8<SIZE_UICC_SB_LINEAR_FIXED> uiccSbLinearFixedBuf( 0 );
@@ -999,7 +1082,7 @@
)
{
TFLOGSTRING("TSY: CMmUiccMessHandler::CreateUiccSbFileData" );
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CREATEUICCSBFILEDATA, "CMmUiccMessHandler::CreateUiccSbFileData" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CREATEUICCSBFILEDATA_TD, "CMmUiccMessHandler::CreateUiccSbFileData" );
// UICC_SB_FILE_DATA subblock
TBuf8<KUiccSbFileDataSize> uiccSbFileDataBuf( 0 );
@@ -1033,7 +1116,7 @@
TUint8 aApplType )
{
TFLOGSTRING("TSY: CMmUiccMessHandler::CreateUiccSbApplication" );
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CREATEUICCSBAPPLICATION, "CMmUiccMessHandler::CreateUiccSbApplication" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CREATEUICCSBAPPLICATION_TD, "CMmUiccMessHandler::CreateUiccSbApplication" );
// SIZE_UICC_SB_APPLICATION_STR
TBuf8<SIZE_UICC_SB_APPLICATION> uiccSbApplicationBuf( 0 );
@@ -1072,10 +1155,63 @@
else
{
TFLOGSTRING2("TSY: CMmUiccMessHandler::CreateUiccSbApplication: unknown application type: 0x%x", aApplType );
-OstTrace1( TRACE_NORMAL, DUP1_CMMUICCMESSHANDLER_CREATEUICCSBAPPLICATION, "CMmUiccMessHandler::CreateUiccSbApplication: unknown application type: 0x%x", aApplType );
+OstTrace1( TRACE_NORMAL, DUP1_CMMUICCMESSHANDLER_CREATEUICCSBAPPLICATION_TD, "CMmUiccMessHandler::CreateUiccSbApplication: unknown application type: 0x%x", aApplType );
}
}
+
+// -----------------------------------------------------------------------------
+// CMmUiccMessHandler::CreateUiccSbApplInfo
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CMmUiccMessHandler::CreateUiccSbApplInfo(
+ TIsiSend& aIsiMsg,
+ TUint8 aMsgOffset )
+ {
+TFLOGSTRING("TSY: CMmUiccMessHandler::CreateUiccSbApplInfo" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CREATEUICCSBAPPLINFO_TD, "CMmUiccMessHandler::CreateUiccSbApplInfo" );
+
+ TBuf8<SIZE_UICC_SB_APPL_INFO> uiccSbApplInfoBuf( 0 );
+ TIsiSubBlock uiccSbApplInfo(
+ uiccSbApplInfoBuf,
+ UICC_SB_APPL_INFO,
+ EIsiSubBlockTypeId16Len16 );
+
+ uiccSbApplInfoBuf.Append( KUiccPadding );
+ uiccSbApplInfoBuf.Append( KUiccPadding );
+ uiccSbApplInfoBuf.Append( KUiccPadding );
+
+ uiccSbApplInfoBuf.Append( UICC_APPL_START_UP_NO_INIT_PROC );
+
+ aIsiMsg.CopyData( aMsgOffset, uiccSbApplInfo.CompleteSubBlock() );
+ }
+
+// -----------------------------------------------------------------------------
+// CMmUiccMessHandler::CreateUiccSbAid
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CMmUiccMessHandler::CreateUiccSbAid(
+ TIsiSend& aIsiMsg,
+ TUint8 aMsgOffset )
+ {
+TFLOGSTRING("TSY: CMmUiccMessHandler::CreateUiccSbAid" );
+
+ TBuf8<SIZE_UICC_SB_AID + KTruncatedAidLength> uiccSbAidBuf( 0 );
+ TIsiSubBlock uiccSbAid(
+ uiccSbAidBuf,
+ UICC_SB_AID,
+ EIsiSubBlockTypeId16Len16 );
+
+ // Add truncated AID length
+ uiccSbAidBuf.Append( KTruncatedAidLength );
+ // Add 3GPP USIM RID and app code
+ uiccSbAidBuf.Append( KTruncatedAID );
+
+ aIsiMsg.CopyData( aMsgOffset, uiccSbAid.CompleteSubBlock() );
+ }
+
// -----------------------------------------------------------------------------
// CMmUiccMessHandler::GetFileData
// (other items were commented in a header).
@@ -1084,7 +1220,7 @@
const TPtrC8 CMmUiccMessHandler::GetFileData( const TIsiReceiveC& aIsiMsg )
{
TFLOGSTRING("TSY: CMmUiccMessHandler::GetFileData" );
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_GETFILEDATA, "CMmUiccMessHandler::GetFileData" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_GETFILEDATA_TD, "CMmUiccMessHandler::GetFileData" );
TPtrC8 data( KNullDesC8 );
@@ -1113,7 +1249,7 @@
TUint8 CMmUiccMessHandler::HandleUiccResp( const TIsiReceiveC& aIsiMsg )
{
TFLOGSTRING("TSY: CMmUiccMessHandler::HandleUiccResp" );
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_HANDLEUICCRESP, "CMmUiccMessHandler::HandleUiccResp" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_HANDLEUICCRESP_TD, "CMmUiccMessHandler::HandleUiccResp" );
TUint8 serverStatus( UICC_STATUS_NOT_READY );
// Check the service type
@@ -1134,6 +1270,282 @@
return serverStatus;
}
+
+
+// -----------------------------------------------------------------------------
+// CMmUiccMessHandler::HandleUiccApplListResp
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CMmUiccMessHandler::HandleUiccApplListResp(
+ const TIsiReceiveC& aIsiMsg )
+ {
+TFLOGSTRING("TSY: CMmUiccMessHandler::HandleUiccApplListResp" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_HANDLEUICCAPPLLISTRESP, "CMmUiccMessHandler::HandleUiccApplListResp" );
+
+ TInt ret( KErrNone );
+ TUint16 startIndex( ISI_HEADER_SIZE + SIZE_UICC_APPLICATION_RESP );
+
+ // Check if UICC_SB_APPL_DATA_OBJECT is included => UICC application
+ TUint uiccSbApplDataObjectOffset( 0 );
+ TUint8 applicationType( 0 );
+ TUint16 sbLen( 0 );
+
+ TBool usimOrSimApplFound( EFalse );
+
+ while ( KErrNone == aIsiMsg.FindSubBlockOffsetById(
+ startIndex,
+ UICC_SB_APPL_DATA_OBJECT,
+ EIsiSubBlockTypeId16Len16,
+ uiccSbApplDataObjectOffset ) )
+ {
+TFLOGSTRING("TSY: CMmUiccMessHandler::HandleUiccApplListResp-UICC_APPL_LIST FIND_SB" );
+OstTrace0( TRACE_NORMAL, DUP1_CMMUICCMESSHANDLER_HANDLEUICCAPPLLISTRESP, "CMmUiccMessHandler::HandleUiccApplListResp - UICC_APPL_LIST FIND_SB" );
+ applicationType = aIsiMsg.Get8bit(
+ uiccSbApplDataObjectOffset +
+ UICC_SB_APPL_DATA_OBJECT_OFFSET_APPLICATIONTYPE );
+
+ sbLen = aIsiMsg.Get16bit(
+ uiccSbApplDataObjectOffset +
+ UICC_SB_APPL_DATA_OBJECT_OFFSET_SBLEN );
+
+ if ( ( UICC_APPL_TYPE_UICC_USIM == applicationType ||
+ UICC_APPL_TYPE_ICC_SIM == applicationType ) &&
+ EFalse == usimOrSimApplFound )
+ {
+TFLOGSTRING("TSY: CMmUiccMessHandler::HandleUiccApplListResp-UICC_APPL_LIST FOUND_U/SIM" );
+OstTrace0( TRACE_NORMAL, DUP2_CMMUICCMESSHANDLER_HANDLEUICCAPPLLISTRESP, "CMmUiccMessHandler::HandleUiccApplListResp - UICC_APPL_LIST FOUND_U/SIM" );
+
+ iApplicationType = applicationType;
+
+ iApplicationId = aIsiMsg.Get8bit(
+ uiccSbApplDataObjectOffset +
+ UICC_SB_APPL_DATA_OBJECT_OFFSET_APPLID );
+
+ TUint8 length( aIsiMsg.Get8bit(
+ uiccSbApplDataObjectOffset +
+ UICC_SB_APPL_DATA_OBJECT_OFFSET_APPLDOLEN ) );
+
+ // Application data object contains EFdir data,
+ // 5 bytes are mandatory. See TS 102.221 V7.11.0 table 13.2
+ if ( 5 <= length )
+ {
+ TPtrC8 applDataObject( aIsiMsg.GetData(
+ uiccSbApplDataObjectOffset +
+ UICC_SB_APPL_DATA_OBJECT_OFFSET_APPLDO,
+ length ) );
+ // Length of AID is located in index 3
+ TUint8 aidLength( applDataObject[3] );
+ // Copy actual AID
+ iAid.Copy( applDataObject.Mid( 4, aidLength ) );
+ }
+
+ usimOrSimApplFound = ETrue;
+ }
+ else if( UICC_APPL_TYPE_UICC_ISIM == applicationType &&
+ EFalse == iIsimApplicationFound )
+ {
+TFLOGSTRING("TSY: CMmUiccMessHandler::HandleUiccApplListResp-UICC_APPL_LIST FOUND_ISIM" );
+OstTrace0( TRACE_NORMAL, DUP3_CMMUICCMESSHANDLER_HANDLEUICCAPPLLISTRESP, "CMmUiccMessHandler::HandleUiccApplListResp - UICC_APPL_LIST FOUND_ISIM" );
+ iIsimApplicationFound = ETrue;
+
+ iIsimApplicationId = aIsiMsg.Get8bit(
+ uiccSbApplDataObjectOffset +
+ UICC_SB_APPL_DATA_OBJECT_OFFSET_APPLID );
+ iIsimApplicationStatus = aIsiMsg.Get8bit(
+ uiccSbApplDataObjectOffset +
+ UICC_SB_APPL_DATA_OBJECT_OFFSET_APPLSTATUS );
+ }
+ startIndex = uiccSbApplDataObjectOffset + sbLen;
+ }
+
+ if ( !usimOrSimApplFound &&
+ UICC_CARD_TYPE_UICC == iCardType )
+ {
+TFLOGSTRING("TSY: CMmUiccMessHandler::HandleUiccApplListResp-UICC_APPL_LIST, NO SUBBLOCK - handle USIM" );
+OstTrace0( TRACE_NORMAL, DUP4_CMMUICCMESSHANDLER_HANDLEUICCAPPLLISTRESP, "CMmUiccMessHandler::HandleUiccApplListResp - UICC_APPL_LIST, NO SUBBLOCK - handle USIM" );
+ applicationType = UICC_APPL_TYPE_UICC_USIM;
+ iApplicationType = applicationType;
+ iApplicationId = UICC_APPL_LAST;
+ }
+ else if ( !usimOrSimApplFound &&
+ UICC_CARD_TYPE_ICC == iCardType )
+ {
+TFLOGSTRING("TSY: CMmUiccMessHandler::HandleUiccApplListResp-UICC_APPL_LIST, NO SUBBLOCK - handle SIM" );
+OstTrace0( TRACE_NORMAL, DUP5_CMMUICCMESSHANDLER_HANDLEUICCAPPLLISTRESP, "CMmUiccMessHandler::HandleUiccApplListResp - UICC_APPL_LIST, NO SUBBLOCK - handle SIM" );
+ applicationType = UICC_APPL_TYPE_ICC_SIM;
+ iApplicationType = applicationType;
+ iApplicationId = UICC_APPL_ID_UNKNOWN;
+ }
+ // No else
+
+ if ( UICC_CARD_TYPE_ICC == iCardType )
+ {
+TFLOGSTRING("TSY: CMmUiccMessHandler::HandleUiccApplListResp-UICC_APPL_LIST FOUND_SIM" );
+OstTrace0( TRACE_NORMAL, DUP6_CMMUICCMESSHANDLER_HANDLEUICCAPPLLISTRESP, "CMmUiccMessHandler::HandleUiccApplListResp - UICC_APPL_LIST FOUND_SIM" );
+
+ // Application file ID for GSM
+ TBuf8<2> gsmFileId;
+ gsmFileId.Append( 0x7F );
+ gsmFileId.Append( 0x20 );
+ iApplFileId.Copy( gsmFileId );
+ }
+
+ // Activate the application
+ TUiccParamsBase params;
+ params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
+ params.trId = ETrIdActivateUiccApplication;
+TFLOGSTRING("TSY: CMmUiccMessHandler::HandleUiccApplListResp-UICC_APPL_LIST HOST_ACTI" );
+OstTrace0( TRACE_NORMAL, DUP7_CMMUICCMESSHANDLER_HANDLEUICCAPPLLISTRESP, "CMmUiccMessHandler::HandleUiccApplListResp - UICC_APPL_LIST HOST_ACTI" );
+
+ ret = CreateUiccApplicationReq(
+ params,
+ UICC_APPL_HOST_ACTIVATE,
+ iApplicationType );
+
+ return ret;
+ }
+
+
+
+
+
+
+
+// -----------------------------------------------------------------------------
+// CMmUiccMessHandler::HandleUiccApplHostActivate
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CMmUiccMessHandler::HandleUiccApplHostActivate( const TIsiReceiveC& aIsiMsg )
+ {
+TFLOGSTRING("TSY: CMmUiccMessHandler::HandleUiccApplHostActivate" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_HANDLEUICCAPPLHOSTACTIVATE, "CMmUiccMessHandler::HandleUiccApplHostActivate" );
+
+ TInt ret( KErrNone );
+ TUint16 startIndex( ISI_HEADER_SIZE + SIZE_UICC_APPLICATION_RESP );
+ TUint8 trId( aIsiMsg.Get8bit(
+ ISI_HEADER_SIZE + UICC_APPLICATION_RESP_OFFSET_TRANSID ) );
+
+TFLOGSTRING("TSY: CMmUiccMessHandler::HandleUiccApplicationResp-HOST_ACTI" );
+OstTrace0( TRACE_NORMAL, DUP1_CMMUICCMESSHANDLER_HANDLEUICCAPPLHOSTACTIVATE, "CMmUiccMessHandler::HandleUiccApplHostActivate - HOST_ACTI" );
+
+ TUint uiccSbClientOffset( 0 );
+ if ( KErrNone == aIsiMsg.FindSubBlockOffsetById(
+ startIndex,
+ UICC_SB_CLIENT,
+ EIsiSubBlockTypeId16Len16,
+ uiccSbClientOffset ) )
+ {
+TFLOGSTRING("TSY: CMmUiccMessHandler::HandleUiccApplHostActivate - UICC_SB_CLIENT" );
+OstTrace0( TRACE_NORMAL, DUP2_CMMUICCMESSHANDLER_HANDLEUICCAPPLHOSTACTIVATE, "CMmUiccMessHandler::HandleUiccApplHostActivate - UICC_SB_CLIENT" );
+ if( ETrIdActivateUiccApplication == trId )
+ {
+ iUiccClientId = aIsiMsg.Get8bit(
+ uiccSbClientOffset +
+ UICC_SB_CLIENT_OFFSET_CLIENTID );
+ }
+ else if( ETrIdActivateIsimApplication == trId )
+ {
+ iUiccIsimClientId = aIsiMsg.Get8bit(
+ uiccSbClientOffset +
+ UICC_SB_CLIENT_OFFSET_CLIENTID );
+ }
+ }
+
+ // UICC_SB_FCI contains PIN key references
+ TUint uiccSbFciOffset( 0 );
+ if ( KErrNone == aIsiMsg.FindSubBlockOffsetById(
+ ISI_HEADER_SIZE + SIZE_UICC_APPLICATION_RESP,
+ UICC_SB_FCI,
+ EIsiSubBlockTypeId16Len16,
+ uiccSbFciOffset ) )
+ {
+TFLOGSTRING("TSY: CMmUiccMessHandler::HandleUiccApplHostActivate - UICC_SB_FCI" );
+OstTrace0( TRACE_NORMAL, DUP3_CMMUICCMESSHANDLER_HANDLEUICCAPPLHOSTACTIVATE, "CMmUiccMessHandler::HandleUiccApplHostActivate - UICC_SB_FCI" );
+
+ // Check is the SIM UICC
+ TPtrC8 data( KNullDesC8 );
+
+ // The whole sub block is returned
+ TInt sbLength( aIsiMsg.Get16bit(
+ uiccSbFciOffset + UICC_SB_FCI_OFFSET_SBLEN ) );
+ data.Set( aIsiMsg.GetData(
+ uiccSbFciOffset,
+ sbLength ) );
+
+ TFci fci( data );
+ if( UICC_CARD_TYPE_UICC == fci.GetTypeOfCard() )
+ {
+ StorePinKeyReferences( data );
+ }
+ }
+
+ // In case of ICC there is two UICC_SB_CHV subblocks
+ // that contain PIN IDs for ICC application
+ TUint uiccSbChvOffset( 0 );
+ while ( KErrNone == aIsiMsg.FindSubBlockOffsetById(
+ startIndex,
+ UICC_SB_CHV,
+ EIsiSubBlockTypeId16Len16,
+ uiccSbChvOffset ) )
+ {
+TFLOGSTRING("TSY: CMmUiccMessHandler::HandleUiccApplHostActivate - UICC_SB_CHV" );
+OstTrace0( TRACE_NORMAL, DUP4_CMMUICCMESSHANDLER_HANDLEUICCAPPLHOSTACTIVATE, "CMmUiccMessHandler::HandleUiccApplHostActivate - UICC_SB_CHV" );
+
+ TUint8 chvQualifier( aIsiMsg.Get8bit(
+ uiccSbChvOffset +
+ UICC_SB_CHV_OFFSET_CHVQUALIFIER ) );
+ if ( UICC_CHV1 == chvQualifier ) // PIN1
+ {
+ iPin1Id = aIsiMsg.Get8bit(
+ uiccSbChvOffset + UICC_SB_CHV_OFFSET_PINID );
+ }
+ else // PIN2
+ {
+ iPin2Id = aIsiMsg.Get8bit(
+ uiccSbChvOffset + UICC_SB_CHV_OFFSET_PINID );
+ }
+ startIndex = uiccSbChvOffset + SIZE_UICC_SB_CHV;
+ }
+
+ // In case EFdir was empty or didn't exist in APPL_LIST
+ // response, HOST_ACTIVATE request is done differently.
+ // Response for HOST_ACTIVATE include UICC_SB_APPLICATION
+ // subblock.
+ TUint uiccSbApplicationOffset( 0 );
+ if ( KErrNone == aIsiMsg.FindSubBlockOffsetById(
+ ISI_HEADER_SIZE + SIZE_UICC_APPLICATION_RESP,
+ UICC_SB_APPLICATION,
+ EIsiSubBlockTypeId16Len16,
+ uiccSbApplicationOffset ) )
+ {
+TFLOGSTRING("TSY: CMmUiccMessHandler::HandleUiccApplHostActivate - UICC_SB_APPLICATION" );
+OstTrace0( TRACE_NORMAL, DUP5_CMMUICCMESSHANDLER_HANDLEUICCAPPLHOSTACTIVATE, "CMmUiccMessHandler::HandleUiccApplHostActivate - UICC_SB_APPLICATION" );
+
+ // Update AID
+ iAid.Copy( KTruncatedAID );
+
+ // Update Application type
+ iApplicationType = aIsiMsg.Get8bit(
+ uiccSbApplicationOffset +
+ UICC_SB_APPLICATION_OFFSET_APPLICATIONTYPE );
+
+ // Update Appl ID
+ iApplicationId = aIsiMsg.Get8bit(
+ uiccSbApplicationOffset +
+ UICC_SB_APPLICATION_OFFSET_APPLID );
+ }
+
+ // Application is now ready to start receiving commands
+ iApplicationStatus = UICC_STATUS_APPL_ACTIVE;
+ InitializeSimServiceTableCache();
+ InitializeCphsInformationCache();
+
+ return ret;
+ }
+
+
// -----------------------------------------------------------------------------
// CMmUiccMessHandler::HandleUiccApplicationResp
// (other items were commented in a header).
@@ -1143,7 +1555,7 @@
const TIsiReceiveC& aIsiMsg )
{
TFLOGSTRING("TSY: CMmUiccMessHandler::HandleUiccApplicationResp" );
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_HANDLEUICCAPPLICATIONRESP, "CMmUiccMessHandler::HandleUiccApplicationResp" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_HANDLEUICCAPPLICATIONRESP_TD, "CMmUiccMessHandler::HandleUiccApplicationResp" );
TInt ret( KErrNone );
// Get service type and status
@@ -1155,7 +1567,6 @@
ISI_HEADER_SIZE + UICC_APPLICATION_RESP_OFFSET_CARDTYPE );
TUint8 trId( aIsiMsg.Get8bit(
ISI_HEADER_SIZE + UICC_APPLICATION_RESP_OFFSET_TRANSID ) );
- TUint16 startIndex( ISI_HEADER_SIZE + SIZE_UICC_APPLICATION_RESP );
if ( UICC_STATUS_OK == status )
{
@@ -1163,168 +1574,17 @@
{
case UICC_APPL_LIST:
{
- // Check if UICC_SB_APPL_DATA_OBJECT is included => UICC application
- TUint uiccSbApplDataObjectOffset( 0 );
- TUint8 applicationType( 0 );
- TUint16 sbLen( 0 );
-
- TBool usimApplFound( EFalse );
-
- while ( KErrNone == aIsiMsg.FindSubBlockOffsetById(
- startIndex,
- UICC_SB_APPL_DATA_OBJECT,
- EIsiSubBlockTypeId16Len16,
- uiccSbApplDataObjectOffset ) )
- {
- applicationType = aIsiMsg.Get8bit(
- uiccSbApplDataObjectOffset +
- UICC_SB_APPL_DATA_OBJECT_OFFSET_APPLICATIONTYPE );
-
- sbLen = aIsiMsg.Get16bit(
- uiccSbApplDataObjectOffset +
- UICC_SB_APPL_DATA_OBJECT_OFFSET_SBLEN );
-
- if ( UICC_APPL_TYPE_UICC_USIM == applicationType &&
- EFalse == usimApplFound )
- {
- iApplicationType = applicationType;
-
- iApplicationId = aIsiMsg.Get8bit(
- uiccSbApplDataObjectOffset +
- UICC_SB_APPL_DATA_OBJECT_OFFSET_APPLID );
- iApplicationStatus = aIsiMsg.Get8bit(
- uiccSbApplDataObjectOffset +
- UICC_SB_APPL_DATA_OBJECT_OFFSET_APPLSTATUS );
-
- TUint8 length( aIsiMsg.Get8bit(
- uiccSbApplDataObjectOffset +
- UICC_SB_APPL_DATA_OBJECT_OFFSET_APPLDOLEN ) );
-
- // Application data object contains EF dir data,
- // 5 bytes are mandatory. See TS 102.221 V7.11.0 table 13.2
- if ( 5 <= length )
- {
- TPtrC8 applDataObject( aIsiMsg.GetData(
- uiccSbApplDataObjectOffset +
- UICC_SB_APPL_DATA_OBJECT_OFFSET_APPLDO,
- length ) );
- // Length of AID is located in index 3
- TUint8 aidLength( applDataObject[3] );
- // Copy actual AID
- iAid.Copy( applDataObject.Mid( 4, aidLength ) );
- }
-
- usimApplFound = ETrue;
- }
- else if( UICC_APPL_TYPE_UICC_ISIM == applicationType &&
- EFalse == iIsimApplicationFound )
- {
- iIsimApplicationFound = ETrue;
-
- iIsimApplicationId = aIsiMsg.Get8bit(
- uiccSbApplDataObjectOffset +
- UICC_SB_APPL_DATA_OBJECT_OFFSET_APPLID );
- iIsimApplicationStatus = aIsiMsg.Get8bit(
- uiccSbApplDataObjectOffset +
- UICC_SB_APPL_DATA_OBJECT_OFFSET_APPLSTATUS );
- }
- startIndex = uiccSbApplDataObjectOffset + sbLen;
- }
- if ( EFalse == usimApplFound ) // ICC application
- {
- iApplicationType = UICC_APPL_TYPE_ICC_SIM;
- iApplicationId = UICC_APPL_ID_UNKNOWN;
- // Application file ID for GSM
- TBuf8<2> gsmFileId;
- gsmFileId.Append( 0x7F );
- gsmFileId.Append( 0x20 );
- iApplFileId.Copy( gsmFileId );
- }
- // Activate the application
- if ( UICC_STATUS_APPL_ACTIVE != iApplicationStatus )
- {
- TUiccParamsBase params;
- params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
- params.trId = ETrIdActivateUiccApplication;
- ret = CreateUiccApplicationReq( params, UICC_APPL_HOST_ACTIVATE );
- }
+ ret = HandleUiccApplListResp( aIsiMsg );
break;
}
case UICC_APPL_HOST_ACTIVATE:
{
- TUint uiccSbClientOffset( 0 );
- if ( KErrNone == aIsiMsg.FindSubBlockOffsetById(
- startIndex,
- UICC_SB_CLIENT,
- EIsiSubBlockTypeId16Len16,
- uiccSbClientOffset ) )
- {
- if( ETrIdActivateUiccApplication == trId )
- {
- iUiccClientId = aIsiMsg.Get8bit(
- uiccSbClientOffset +
- UICC_SB_CLIENT_OFFSET_CLIENTID );
- }
- else if( ETrIdActivateIsimApplication == trId )
- {
- iUiccIsimClientId = aIsiMsg.Get8bit(
- uiccSbClientOffset +
- UICC_SB_CLIENT_OFFSET_CLIENTID );
- }
- }
- // UICC_SB_FCI contains PIN key references
- TUint uiccSbFciOffset( 0 );
- if ( KErrNone == aIsiMsg.FindSubBlockOffsetById(
- ISI_HEADER_SIZE + SIZE_UICC_APPLICATION_RESP,
- UICC_SB_FCI,
- EIsiSubBlockTypeId16Len16,
- uiccSbFciOffset ) )
- {
- // Check is the SIM UICC
- TPtrC8 data( KNullDesC8 );
-
- // The whole sub block is returned
- TInt sbLength( aIsiMsg.Get16bit(
- uiccSbFciOffset + UICC_SB_FCI_OFFSET_SBLEN ) );
- data.Set( aIsiMsg.GetData(
- uiccSbFciOffset,
- sbLength ) );
-
- TFci fci( data );
- if( UICC_CARD_TYPE_UICC == fci.GetTypeOfCard() )
- {
- StorePinKeyReferences( data );
- }
- }
-
- // In case of ICC there is two UICC_SB_CHV subblocks
- // that contain PIN IDs for ICC application
- TUint uiccSbChvOffset( 0 );
- while ( KErrNone == aIsiMsg.FindSubBlockOffsetById(
- startIndex,
- UICC_SB_CHV,
- EIsiSubBlockTypeId16Len16,
- uiccSbChvOffset ) )
- {
- TUint8 chvQualifier( aIsiMsg.Get8bit(
- uiccSbChvOffset +
- UICC_SB_CHV_OFFSET_CHVQUALIFIER ) );
- if ( UICC_CHV1 == chvQualifier ) // PIN1
- {
- iPin1Id = aIsiMsg.Get8bit(
- uiccSbChvOffset + UICC_SB_CHV_OFFSET_PINID );
- }
- else // PIN2
- {
- iPin2Id = aIsiMsg.Get8bit(
- uiccSbChvOffset + UICC_SB_CHV_OFFSET_PINID );
- }
- startIndex = uiccSbChvOffset + SIZE_UICC_SB_CHV;
- }
+ ret = HandleUiccApplHostActivate( aIsiMsg );
break;
}
default:
{
+TFLOGSTRING("TSY: CMmUiccMessHandler::HandleUiccApplicationResp - default");
break;
}
}
@@ -1346,7 +1606,7 @@
const TPtrC8 CMmUiccMessHandler::GetFileFCI( const TIsiReceiveC& aIsiMsg )
{
TFLOGSTRING("TSY: CMmUiccMessHandler::GetFileFCI");
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_GETFILEFCI, "CMmUiccMessHandler::GetFileFCI" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_GETFILEFCI_TD, "CMmUiccMessHandler::GetFileFCI" );
TPtrC8 data( KNullDesC8 );
TUint uiccSbFileDataOffset( 0 );
@@ -1376,7 +1636,7 @@
const TUiccParamsBase& aParams )
{
TFLOGSTRING("TSY: CMmUiccMessHandler::CreateUiccConnectorReq");
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CREATEUICCCONNREQ, "CMmUiccMessHandler::CreateUiccConnectorReq" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CREATEUICCCONNREQ_TD, "CMmUiccMessHandler::CreateUiccConnectorReq" );
TInt ret (KErrGeneral);
TInt trId( aParams.trId );
@@ -1418,7 +1678,9 @@
break;
}
default:
+ {
break;
+ }
}
isiMsg.Set8bit(
@@ -1442,7 +1704,7 @@
TInt CMmUiccMessHandler::CreateUiccApduReq( const TUiccParamsApduReq& aParams )
{
TFLOGSTRING("TSY: CMmUiccMessHandler::CreateUiccApduReq");
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CREATEUICCAPDUREQ, "CMmUiccMessHandler::CreateUiccApduReq" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CREATEUICCAPDUREQ_TD, "CMmUiccMessHandler::CreateUiccApduReq" );
TInt ret (KErrGeneral);
TInt trId( aParams.trId );
@@ -1525,7 +1787,7 @@
TUint8 aAction )
{
TFLOGSTRING("TSY: CMmUiccMessHandler::CreateUiccSbApduActions");
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CREATEUICCASBPDUACTION, "CMmUiccMessHandler::CreateUiccSbApduActions" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CREATEUICCASBPDUACTION_TD, "CMmUiccMessHandler::CreateUiccSbApduActions" );
// SIZE_UICC_SB_APPLICATION_STR
TBuf8<SIZE_UICC_SB_APDU_ACTIONS> uiccSbApduActionBuf( 0 );
@@ -1555,7 +1817,7 @@
const TPtrC8 CMmUiccMessHandler::GetApduData( const TIsiReceiveC& aIsiMsg )
{
TFLOGSTRING("TSY: CMmUiccMessHandler::GetApduData");
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_GETAPDUDATA, "CMmUiccMessHandler::GetApduData" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_GETAPDUDATA_TD, "CMmUiccMessHandler::GetApduData" );
TPtrC8 data( KNullDesC8 );
@@ -1588,7 +1850,7 @@
const TDesC8& aAPDUData)
{
TFLOGSTRING("TSY: CMmUiccMessHandler::CreateUiccSbApdu" );
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CREATESBAPDU, "CMmUiccMessHandler::CreateUiccSbApdu" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CREATESBAPDU_TD, "CMmUiccMessHandler::CreateUiccSbApdu" );
// UICC_SB_APDU subblock
TBuf8<KUiccSbApduSize> uiccSbApduBuf( 0 );
@@ -1623,7 +1885,7 @@
TInt CMmUiccMessHandler::CreateUiccCardReq( const TUiccParamsBase& aParams )
{
TFLOGSTRING("TSY: CMmUiccMessHandler::CreateUiccCardReq" );
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CREATECARDREQ, "CMmUiccMessHandler::CreateUiccCardReq" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CREATECARDREQ_TD, "CMmUiccMessHandler::CreateUiccCardReq" );
TInt ret ( KErrGeneral );
TInt trId( aParams.trId );
@@ -1667,7 +1929,7 @@
void CMmUiccMessHandler::InitializeSimServiceTableCache( TBool aComplete )
{
TFLOGSTRING("TSY: CMmUiccMessHandler::InitializeSimServiceTableCache" );
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_INITIALIZESIMSERVICETABLECACHE, "CMmUiccMessHandler::InitializeSimServiceTableCache" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_INITIALIZESIMSERVICETABLECACHE_TD, "CMmUiccMessHandler::InitializeSimServiceTableCache" );
// Service table internal cacheing is done during strtup and SIM refresh.
// Completing of IPC EMmTsyBootNotifySimStatusReadyIPC is done only
@@ -1705,7 +1967,7 @@
const TDesC8& aFileData )
{
TFLOGSTRING("TSY: CMmUiccMessHandler::SimServiceTableCacheResp" );
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_SIMSERVICETABLECACHERESP, "CMmUiccMessHandler::SimServiceTableCacheResp" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_SIMSERVICETABLECACHERESP_TD, "CMmUiccMessHandler::SimServiceTableCacheResp" );
if ( UICC_STATUS_OK == aStatus )
{
@@ -1722,13 +1984,13 @@
else
{
TFLOGSTRING("TSY: CMmUiccMessHandler::SimServiceTableCacheResp unknown card type, cache not done" );
-OstTrace0( TRACE_NORMAL, DUP1_CMMUICCMESSHANDLER_SIMSERVICETABLECACHERESP, "CMmUiccMessHandler::SimServiceTableCacheResp unknown card type, cache not done" );
+OstTrace0( TRACE_NORMAL, DUP1_CMMUICCMESSHANDLER_SIMSERVICETABLECACHERESP_TD, "CMmUiccMessHandler::SimServiceTableCacheResp unknown card type, cache not done" );
}
}
else
{
TFLOGSTRING2("TSY: CMmUiccMessHandler::SimServiceTableCacheResp: reading failed (0x%x)", aStatus );
-OstTrace1( TRACE_NORMAL, DUP2_CMMUICCMESSHANDLER_SIMSERVICETABLECACHERESP, "CMmUiccMessHandler::SimServiceTableCacheResp: reading failed (%x)", aStatus );
+OstTrace1( TRACE_NORMAL, DUP2_CMMUICCMESSHANDLER_SIMSERVICETABLECACHERESP_TD, "CMmUiccMessHandler::SimServiceTableCacheResp: reading failed (%x)", aStatus );
}
// Cacheing during startup
@@ -1754,7 +2016,7 @@
TBool CMmUiccMessHandler::GetServiceStatus( TUint8 aServiceNo )
{
TFLOGSTRING2("TSY: CMmUiccMessHandler::GetServiceStatus for card: ox%x", iCardType );
-OstTrace1( TRACE_NORMAL, CMMUICCMESSHANDLER_GETSERVICESTATUS, "CMmUiccMessHandler::GetServiceStatus for card: ox%x", iCardType );
+OstTrace1( TRACE_NORMAL, CMMUICCMESSHANDLER_GETSERVICESTATUS_TD, "CMmUiccMessHandler::GetServiceStatus for card: ox%x", iCardType );
TBool ret( EFalse );
@@ -1785,7 +2047,7 @@
if( iUSTFile[index] & mask )
{
TFLOGSTRING2("TSY: CMmUiccMessHandler::GetServiceStatus: UICC service (%d) supported", aServiceNo );
-OstTrace1( TRACE_NORMAL, DUP1_CMMUICCMESSHANDLER_GETSERVICESTATUS, "CMmUiccMessHandler::GetServiceStatus: UICC service (%d) supported", aServiceNo );
+OstTrace1( TRACE_NORMAL, DUP1_CMMUICCMESSHANDLER_GETSERVICESTATUS_TD, "CMmUiccMessHandler::GetServiceStatus: UICC service (%d) supported", aServiceNo );
ret = ETrue;
}
}
@@ -1822,7 +2084,7 @@
if( ( iSSTFile[index] & mask ) == mask )
{
TFLOGSTRING2("TSY: CMmUiccMessHandler::GetServiceStatus: ICC service (%d) supported", aServiceNo );
-OstTrace1( TRACE_NORMAL, DUP2_CMMUICCMESSHANDLER_GETSERVICESTATUS, "CMmUiccMessHandler::GetServiceStatus: ICC service (%d) supported", aServiceNo );
+OstTrace1( TRACE_NORMAL, DUP2_CMMUICCMESSHANDLER_GETSERVICESTATUS_TD, "CMmUiccMessHandler::GetServiceStatus: ICC service (%d) supported", aServiceNo );
ret = ETrue;
}
}
@@ -1842,8 +2104,8 @@
const TDesC8& aFileData )
{
TFLOGSTRING3("TSY: CMmUiccMessHandler::ProcessUiccMsg, transaction ID: %d, status: %d", aTraId, aStatus );
-OstTrace1( TRACE_NORMAL, CMMUICCMESSHANDLER_PROCESSUICCMSG, "CMmUiccMessHandler::ProcessUiccMsg, transaction ID: %d", aTraId );
-OstTrace1( TRACE_NORMAL, DUP2_CMMUICCMESSHANDLER_PROCESSUICCMSG, "CMmUiccMessHandler::ProcessUiccMsg, status: %d", aStatus );
+OstTrace1( TRACE_NORMAL, CMMUICCMESSHANDLER_PROCESSUICCMSG_TD, "CMmUiccMessHandler::ProcessUiccMsg, transaction ID: %d", aTraId );
+OstTrace1( TRACE_NORMAL, DUP2_CMMUICCMESSHANDLER_PROCESSUICCMSG_TD, "CMmUiccMessHandler::ProcessUiccMsg, status: %d", aStatus );
TInt ret( KErrNone );
@@ -1862,7 +2124,7 @@
default:
{
TFLOGSTRING("TSY: CMmUiccMessHandler::ProcessUiccMsg, unknown transaction ID" );
-OstTrace0( TRACE_NORMAL, DUP1_CMMUICCMESSHANDLER_PROCESSUICCMSG, "CMmUiccMessHandler::ProcessUiccMsg, unknown transaction ID" );
+OstTrace0( TRACE_NORMAL, DUP1_CMMUICCMESSHANDLER_PROCESSUICCMSG_TD, "CMmUiccMessHandler::ProcessUiccMsg, unknown transaction ID" );
break;
}
}
@@ -1878,7 +2140,7 @@
void CMmUiccMessHandler::StorePinKeyReferences( const TDesC8& aFileData )
{
TFLOGSTRING("TSY: CMmUiccMessHandler::StorePinKeyReferences" );
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_STOREPINKEYREFERENCES, "CMmUiccMessHandler::StorePinKeyReferences" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_STOREPINKEYREFERENCES_TD, "CMmUiccMessHandler::StorePinKeyReferences" );
// Get offset for PIN Status Template DO
TFci fci( aFileData );
@@ -1955,7 +2217,7 @@
TUint8 CMmUiccMessHandler::GetPin1KeyReference()
{
TFLOGSTRING("TSY: CMmUiccMessHandler::GetPin1KeyReference" );
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_GETPIN1KEYREFERENCE, "CMmUiccMessHandler::GetPin1KeyReference" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_GETPIN1KEYREFERENCE_TD, "CMmUiccMessHandler::GetPin1KeyReference" );
return iPin1Id;
}
@@ -1967,7 +2229,7 @@
TUint8 CMmUiccMessHandler::GetPin2KeyReference()
{
TFLOGSTRING("TSY: CMmUiccMessHandler::GetPin2KeyReference" );
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_GETPIN2KEYREFERENCE, "CMmUiccMessHandler::GetPin2KeyReference" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_GETPIN2KEYREFERENCE_TD, "CMmUiccMessHandler::GetPin2KeyReference" );
return iPin2Id;
}
@@ -1979,7 +2241,7 @@
RMobilePhone::TMobilePhoneSecurityCode CMmUiccMessHandler::GetActivePin()
{
TFLOGSTRING("TSY: CMmUiccMessHandler::GetActivePin" );
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_GETACTIVEPIN, "CMmUiccMessHandler::GetActivePin" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_GETACTIVEPIN_TD, "CMmUiccMessHandler::GetActivePin" );
return iActivePin;
}
@@ -1991,7 +2253,7 @@
void CMmUiccMessHandler::ChangeActivePin()
{
TFLOGSTRING("TSY: CMmUiccMessHandler::ChangeActivePin" );
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CHANGEACTIVEPIN, "CMmUiccMessHandler::ChangeActivePin" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CHANGEACTIVEPIN_TD, "CMmUiccMessHandler::ChangeActivePin" );
// Change the internal flag indicating which PIN is active
if ( RMobilePhone::ESecurityCodePin1 == iActivePin )
{
@@ -2011,7 +2273,7 @@
void CMmUiccMessHandler::InitializeCphsInformationCache()
{
TFLOGSTRING("TSY: CMmUiccMessHandler::InitializeCphsInformationCache" );
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_INITIALIZECPHSINFORMATIONCACHE, "CMmUiccMessHandler::InitializeCphsInformationCache" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_INITIALIZECPHSINFORMATIONCACHE_TD, "CMmUiccMessHandler::InitializeCphsInformationCache" );
// CPHS information is read only in case of ICC card
if( UICC_CARD_TYPE_ICC == iCardType )
@@ -2045,7 +2307,7 @@
const TDesC8& aFileData )
{
TFLOGSTRING("TSY: CMmUiccMessHandler::CphsInformationCacheResp" );
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CPHSINFORMATIONCACHERESP, "CMmUiccMessHandler::CphsInformationCacheResp" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CPHSINFORMATIONCACHERESP_TD, "CMmUiccMessHandler::CphsInformationCacheResp" );
if ( UICC_STATUS_OK == aStatus )
{
@@ -2060,15 +2322,15 @@
else
{
TFLOGSTRING3("TSY: CMmUiccMessHandler::CphsInformationCacheResp: buffer too small (expected: %d, actual: %d), cannot store CPHS info", dataSize, iCPHSInformation.Length() );
-OstTrace0( TRACE_NORMAL, DUP3_CMMUICCMESSHANDLER_CPHSINFORMATIONCACHERESP, "CMmUiccMessHandler::CphsInformationCacheResp: buffer too small, cannot store CPHS info" );
-OstTrace1( TRACE_NORMAL, DUP2_CMMUICCMESSHANDLER_CPHSINFORMATIONCACHERESP, "CMmUiccMessHandler::CphsInformationCacheResp: expected size: %d", dataSize );
-OstTrace1( TRACE_NORMAL, DUP4_CMMUICCMESSHANDLER_CPHSINFORMATIONCACHERESP, "CMmUiccMessHandler::CphsInformationCacheResp: actual size: %d", iCPHSInformation.Length() );
+OstTrace0( TRACE_NORMAL, DUP3_CMMUICCMESSHANDLER_CPHSINFORMATIONCACHERESP_TD, "CMmUiccMessHandler::CphsInformationCacheResp: buffer too small, cannot store CPHS info" );
+OstTrace1( TRACE_NORMAL, DUP2_CMMUICCMESSHANDLER_CPHSINFORMATIONCACHERESP_TD, "CMmUiccMessHandler::CphsInformationCacheResp: expected size: %d", dataSize );
+OstTrace1( TRACE_NORMAL, DUP4_CMMUICCMESSHANDLER_CPHSINFORMATIONCACHERESP_TD, "CMmUiccMessHandler::CphsInformationCacheResp: actual size: %d", iCPHSInformation.Length() );
}
}
else
{
TFLOGSTRING2("TSY: CMmUiccMessHandler::CphsInformationCacheResp: reading failed (0x%x)", aStatus );
-OstTrace1( TRACE_NORMAL, DUP1_CMMUICCMESSHANDLER_CPHSINFORMATIONCACHERESP, "CMmUiccMessHandler::CphsInformationCacheResp: reading failed (0x%x)", aStatus );
+OstTrace1( TRACE_NORMAL, DUP1_CMMUICCMESSHANDLER_CPHSINFORMATIONCACHERESP_TD, "CMmUiccMessHandler::CphsInformationCacheResp: reading failed (0x%x)", aStatus );
}
}
@@ -2080,7 +2342,7 @@
TBool CMmUiccMessHandler::GetCphsInformationStatus( TUint8 aServiceNo )
{
TFLOGSTRING("TSY: CMmUiccMessHandler::GetCphsInformationStatus" );
-OstTrace0( TRACE_NORMAL, DUP1_CMMUICCMESSHANDLER_GETCPHSINFORMATIONSTATUS, "CMmUiccMessHandler::GetCphsInformationStatus" );
+OstTrace0( TRACE_NORMAL, DUP1_CMMUICCMESSHANDLER_GETCPHSINFORMATIONSTATUS_TD, "CMmUiccMessHandler::GetCphsInformationStatus" );
TBool ret( EFalse );
@@ -2113,7 +2375,7 @@
if( ( iCPHSInformation[index] & mask ) == mask )
{
TFLOGSTRING2("TSY: CMmUiccMessHandler::GetCphsInformationStatus: CPHS service (%d) supported", aServiceNo );
-OstTrace1( TRACE_NORMAL, CMMUICCMESSHANDLER_GETCPHSINFORMATIONSTATUS, "CMmUiccMessHandler::GetCphsInformationStatus: CPHS service (%d) supported", aServiceNo );
+OstTrace1( TRACE_NORMAL, CMMUICCMESSHANDLER_GETCPHSINFORMATIONSTATUS_TD, "CMmUiccMessHandler::GetCphsInformationStatus: CPHS service (%d) supported", aServiceNo );
ret = ETrue;
}
}
@@ -2132,7 +2394,7 @@
lengthOfFCISb = CMmStaticUtility::Get16Bit( iData,
UICC_SB_FCI_OFFSET_SBLEN );
TFLOGSTRING2("TSY: TFci::GetLength lengthOfFCISb = %d", lengthOfFCISb );
-OstTrace1( TRACE_NORMAL, TFCI_GETLENGTH, "TFci::GetLength;lengthOfFCISb=%d", lengthOfFCISb );
+OstTrace1( TRACE_NORMAL, TFCI_GETLENGTH_TD, "TFci::GetLength;lengthOfFCISb=%d", lengthOfFCISb );
return lengthOfFCISb;
}
@@ -2146,7 +2408,7 @@
{
TUint8 uiccCardType( iData[UICC_SB_FCI_OFFSET_CARDTYPE] );
TFLOGSTRING2("TSY: TFci::GetTypeOfCard uiccCardType = %d", uiccCardType );
-OstTraceExt1( TRACE_NORMAL, TFCI_GETTYPEOFCARD, "TFci::GetTypeOfCard;uiccCardType=%hhu", uiccCardType );
+OstTraceExt1( TRACE_NORMAL, TFCI_GETTYPEOFCARD_TD, "TFci::GetTypeOfCard;uiccCardType=%hhu", uiccCardType );
return uiccCardType;
}
@@ -2159,7 +2421,7 @@
TInt TFci::GetOffsetOfTLV( const TUint8 aDescription )
{
TFLOGSTRING("TSY: TFci::::GetOffsetOfTLV" );
-OstTrace0( TRACE_NORMAL, TFCI_GETOFFSETOFTLV, "TFci::GetOffsetOfTLV" );
+OstTrace0( TRACE_NORMAL, TFCI_GETOFFSETOFTLV_TD, "TFci::GetOffsetOfTLV" );
TInt indexOfData( 0 );
TInt length( GetLength() );
@@ -2211,7 +2473,7 @@
TInt TFci::GetNumberOfRecords()
{
TFLOGSTRING("TSY: TFci::GetNumberOfRecords" );
-OstTrace0( TRACE_NORMAL, TFCI_GETNUMBEROFRECORDS, "TFci::GetNumberOfRecords" );
+OstTrace0( TRACE_NORMAL, TFCI_GETNUMBEROFRECORDS_TD, "TFci::GetNumberOfRecords" );
TInt numberOfRecords( 0 );
TUint8 uiccCardType( GetTypeOfCard());
@@ -2248,11 +2510,11 @@
else
{
TFLOGSTRING("TSY: TFci::GetNumberOfRecords: UNKNOWN CARD TYPE" );
-OstTrace0( TRACE_NORMAL, DUP2_TFCI_GETNUMBEROFRECORDS, "TFci::GetNumberOfRecords: UNKNOWN CARD TYPE" );
+OstTrace0( TRACE_NORMAL, DUP2_TFCI_GETNUMBEROFRECORDS_TD, "TFci::GetNumberOfRecords: UNKNOWN CARD TYPE" );
}
TFLOGSTRING2("TSY: TFci::GetNumberOfRecords numberOfRecords = %d", numberOfRecords );
-OstTrace1( TRACE_NORMAL, DUP1_TFCI_GETNUMBEROFRECORDS, "TFci::GetNumberOfRecords;numberOfRecords=%d", numberOfRecords );
+OstTrace1( TRACE_NORMAL, DUP1_TFCI_GETNUMBEROFRECORDS_TD, "TFci::GetNumberOfRecords;numberOfRecords=%d", numberOfRecords );
return numberOfRecords;
}
@@ -2265,7 +2527,7 @@
TInt TFci::GetRecordLength()
{
TFLOGSTRING("TSY: TFci::GetRecordLength" );
-OstTrace0( TRACE_NORMAL, TFCI_GETRECORDLENGTH, "TFci::GetRecordLength" );
+OstTrace0( TRACE_NORMAL, TFCI_GETRECORDLENGTH_TD, "TFci::GetRecordLength" );
TInt recordLength( 0 );
TUint8 uiccCardType( GetTypeOfCard());
@@ -2295,11 +2557,11 @@
else
{
TFLOGSTRING("TSY: TFci::GetRecordLength: UNKNOWN CARD TYPE" );
-OstTrace0( TRACE_NORMAL, DUP2_TFCI_GETRECORDLENGTH, "TFci::GetRecordLength: UNKNOWN CARD TYPE" );
+OstTrace0( TRACE_NORMAL, DUP2_TFCI_GETRECORDLENGTH_TD, "TFci::GetRecordLength: UNKNOWN CARD TYPE" );
}
TFLOGSTRING2("TSY: TFci::GetRecordLength recordLength = %d", recordLength );
-OstTrace1( TRACE_NORMAL, DUP1_TFCI_GETRECORDLENGTH, "TFci::GetRecordLength;recordLength=%d", recordLength );
+OstTrace1( TRACE_NORMAL, DUP1_TFCI_GETRECORDLENGTH_TD, "TFci::GetRecordLength;recordLength=%d", recordLength );
return recordLength;
}
@@ -2312,7 +2574,7 @@
TInt TFci::GetSizeOfFile()
{
TFLOGSTRING("TSY: TFci::GetSizeOfFile" );
-OstTrace0( TRACE_NORMAL, TFCI_GETSIZEOFFILE, "TFci::GetSizeOfFile" );
+OstTrace0( TRACE_NORMAL, TFCI_GETSIZEOFFILE_TD, "TFci::GetSizeOfFile" );
TInt fileSize( 0 );
TUint8 uiccCardType( GetTypeOfCard() );
@@ -2342,12 +2604,12 @@
else
{
TFLOGSTRING("TSY: TFci::GetFileSize: UNKNOWN CARD TYPE" );
-OstTrace0( TRACE_NORMAL, DUP2_TFCI_GETSIZEOFFILE, "TFci::GetSizeOfFile: UNKNOWN CARD TYPE" );
+OstTrace0( TRACE_NORMAL, DUP2_TFCI_GETSIZEOFFILE_TD, "TFci::GetSizeOfFile: UNKNOWN CARD TYPE" );
}
TFLOGSTRING2("TSY: TFci::GetSizeOfFile fileSize = %d", fileSize );
-OstTrace1( TRACE_NORMAL, DUP1_TFCI_GETSIZEOFFILE, "TFci::GetSizeOfFile;fileSize=%d", fileSize );
+OstTrace1( TRACE_NORMAL, DUP1_TFCI_GETSIZEOFFILE_TD, "TFci::GetSizeOfFile;fileSize=%d", fileSize );
return fileSize;
}
@@ -2360,7 +2622,7 @@
TInt TFci::GetFileIdentifier()
{
TFLOGSTRING("TSY: TFci::GetFileIdentifier" );
-OstTrace0( TRACE_NORMAL, TFCI_GETFILEIDENTIFIER, "TFci::GetFileIdentifier" );
+OstTrace0( TRACE_NORMAL, TFCI_GETFILEIDENTIFIER_TD, "TFci::GetFileIdentifier" );
TInt fileIdentifier( 0 );
TUint8 uiccCardType( GetTypeOfCard());
@@ -2392,11 +2654,11 @@
else
{
TFLOGSTRING("TSY: TFci::GetFileIdentifier: UNKNOWN CARD TYPE" );
-OstTrace0( TRACE_NORMAL, DUP2_TFCI_GETFILEIDENTIFIER, "TFci::GetFileIdentifier: UNKNOWN CARD TYPE" );
+OstTrace0( TRACE_NORMAL, DUP2_TFCI_GETFILEIDENTIFIER_TD, "TFci::GetFileIdentifier: UNKNOWN CARD TYPE" );
}
TFLOGSTRING2("TSY: TFci::GetFileIdentifier fileIdentifier = %d", fileIdentifier );
-OstTrace1( TRACE_NORMAL, DUP1_TFCI_GETFILEIDENTIFIER, "TFci::GetFileIdentifier;fileIdentifier=%d", fileIdentifier );
+OstTrace1( TRACE_NORMAL, DUP1_TFCI_GETFILEIDENTIFIER_TD, "TFci::GetFileIdentifier;fileIdentifier=%d", fileIdentifier );
return fileIdentifier;
}
@@ -2409,7 +2671,7 @@
TUint8 TFci::GetFileStatus()
{
TFLOGSTRING("TSY: TFci::GetFileStatus" );
-OstTrace0( TRACE_NORMAL, TFCI_GETFILESTATUS, "TFci::GetFileStatus" );
+OstTrace0( TRACE_NORMAL, TFCI_GETFILESTATUS_TD, "TFci::GetFileStatus" );
TUint8 fileStatus( 0 );
TUint8 uiccCardType( GetTypeOfCard());
@@ -2426,11 +2688,11 @@
else
{
TFLOGSTRING("TSY: TFci::GetFileStatus: UNKNOWN CARD TYPE" );
-OstTrace0( TRACE_NORMAL, DUP1_TFCI_GETFILESTATUS, "TFci::GetFileStatus: UNKNOWN CARD TYPE" );
+OstTrace0( TRACE_NORMAL, DUP1_TFCI_GETFILESTATUS_TD, "TFci::GetFileStatus: UNKNOWN CARD TYPE" );
}
TFLOGSTRING2("TSY: TFci::GetFileStatus fileStatus = %d", fileStatus );
-OstTraceExt1( TRACE_NORMAL, DUP2_TFCI_GETFILESTATUS, "TFci::GetFileStatus;fileStatus=%hhu", fileStatus );
+OstTraceExt1( TRACE_NORMAL, DUP2_TFCI_GETFILESTATUS_TD, "TFci::GetFileStatus;fileStatus=%hhu", fileStatus );
return fileStatus;
}
@@ -2443,8 +2705,90 @@
TUint8 CMmUiccMessHandler::GetUiccClientId()
{
TFLOGSTRING("TSY: CMmUiccMessHandler::GetUiccClientId" );
-OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_GETUICCCLIENTID, "CMmUiccMessHandler::GetUiccClientId" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_GETUICCCLIENTID_TD, "CMmUiccMessHandler::GetUiccClientId" );
return iUiccClientId;
}
+// -----------------------------------------------------------------------------
+// CMmUiccMessHandler::GetUiccApplicationStatus
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TUint8 CMmUiccMessHandler::GetUiccApplicationStatus()
+ {
+TFLOGSTRING("TSY: CMmUiccMessHandler::GetUiccApplicationStatus" );
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_GETUICCAPPLICATIONSTATUS_TD, "CMmUiccMessHandler::GetUiccApplicationStatus" );
+ return iApplicationStatus;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMmUiccMessHandler::CreateUiccReq
+// Builds UICC_REQ ISI message and sends it via phonet
+// -----------------------------------------------------------------------------
+//
+TInt CMmUiccMessHandler::CreateUiccReq()
+ {
+TFLOGSTRING("TSY: CMmUiccMessHandler::CreateUiccReq");
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_CREATEUICCREQ_TD, "CMmUiccMessHandler::CreateUiccReq" );
+
+ // Create UICC_REQ message for querying card status
+ TIsiSend isiMsg( iPhoNetSender->SendBufferDes() );
+ isiMsg.Set8bit( ISI_HEADER_OFFSET_RESOURCEID, PN_UICC );
+ isiMsg.Set8bit( ISI_HEADER_OFFSET_TRANSID, ETrIdGetUiccStatus );
+ isiMsg.Set8bit( ISI_HEADER_OFFSET_MESSAGEID, UICC_REQ );
+ isiMsg.Set8bit( ISI_HEADER_SIZE + UICC_REQ_OFFSET_SERVICETYPE,
+ UICC_STATUS_GET );
+ // THERE IS NO OFFSET FOR SB COUNT CURRENTLY IN THE ISI HEADER
+ isiMsg.Set8bit( ISI_HEADER_SIZE + UICC_REQ_OFFSET_SERVICETYPE + 1, 0x00 );
+
+ return iPhoNetSender->Send( isiMsg.Complete() );
+ }
+
+// -----------------------------------------------------------------------------
+// CMmUiccMessHandler::UiccCardRespStatus
+// Uicc card response card status handling
+// -----------------------------------------------------------------------------
+//
+void CMmUiccMessHandler::UiccCardRespStatus( const TIsiReceiveC& aIsiMsg )
+ {
+TFLOGSTRING("TSY: CMmUiccMessHandler::UiccCardRespStatus");
+OstTrace0( TRACE_NORMAL, CMMUICCMESSHANDLER_UICCCARDRESPSTATUS_TD, "CMmUiccMessHandler::UiccCardRespStatus" );
+
+ TUint8 nbOfSubBlocks( aIsiMsg.Get8bit(
+ ISI_HEADER_SIZE + UICC_CARD_RESP_OFFSET_NSB ) );
+ if( nbOfSubBlocks )
+ {
+
+ TUint uiccSbFileDataOffset( 0 );
+ if( KErrNone == aIsiMsg.FindSubBlockOffsetById(
+ ISI_HEADER_SIZE + SIZE_UICC_CARD_RESP,
+ UICC_SB_CARD_STATUS,
+ EIsiSubBlockTypeId16Len16,
+ uiccSbFileDataOffset ) )
+ {
+
+ TInt cardStatus( aIsiMsg.Get8bit(
+ uiccSbFileDataOffset +
+ UICC_SB_CARD_STATUS_OFFSET_CARDSTATUS ) );
+TFLOGSTRING2("TSY: CMmUiccMessHandler::UiccCardRespStatus: UICC_CARD_RESP cardstatus = %d", cardStatus );
+ if( UICC_STATUS_CARD_NOT_READY == cardStatus )
+ {
+ SendTerminalProfile();
+ }
+ else if( UICC_STATUS_CARD_READY == cardStatus &&
+ UICC_APPL_ID_UNKNOWN == iApplicationId )
+ {
+TFLOGSTRING("TSY: CMmUiccMessHandler::UiccCardRespStatus: UICC_CARD_RESP ACTIVATE");
+ // Activate the application
+ TUiccParamsBase params;
+ params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
+ params.trId = ETrIdGetUiccApplication;
+ CreateUiccApplicationReq( params, UICC_APPL_LIST, iCardType );
+
+ }
+ }
+ }
+ }
+
// End of File