adaptationlayer/tsy/nokiatsy_dll/src/cmmcustommesshandler.cpp
changeset 9 8486d82aef45
parent 7 fa67e03b87df
equal deleted inserted replaced
8:6295dc2169f3 9:8486d82aef45
     1 /*
     1 /*
     2 * Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 * Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
     3 * All rights reserved.
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     4 * This component and the accompanying materials are made available
     5 * under the terms of the License "Eclipse Public License v1.0"
     5 * under the terms of the License "Eclipse Public License v1.0"
     6 * which accompanies this distribution, and is available
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
    34 #include <gssisi.h>
    34 #include <gssisi.h>
    35 #include <infoisi.h>
    35 #include <infoisi.h>
    36 #include <net_modemisi.h>
    36 #include <net_modemisi.h>
    37 #include <uiccisi.h>
    37 #include <uiccisi.h>
    38 #include <ss_wmisi.h>
    38 #include <ss_wmisi.h>
    39 // #include <permisi.h> To be done in CPS
    39 // #include <permisi.h> 
    40 #include <product_profile_definitions.h>
    40 #include <product_profile_definitions.h>
    41 
    41 
    42 #include <ctsy/serviceapi/mmgsmwcdmautils.h>
    42 #include <ctsy/serviceapi/mmgsmwcdmautils.h>
    43 #include <ctsy/pluginapi/cmmdatapackage.h>
    43 #include <ctsy/pluginapi/cmmdatapackage.h>
    44 #include <ctsy/serviceapi/mmtsy_ipcdefs.h>
    44 #include <ctsy/serviceapi/mmtsy_ipcdefs.h>
   165 // -----------------------------------------------------------------------------
   165 // -----------------------------------------------------------------------------
   166 //
   166 //
   167 CMmCustomMessHandler::CMmCustomMessHandler()
   167 CMmCustomMessHandler::CMmCustomMessHandler()
   168     {
   168     {
   169 TFLOGSTRING("TSY: CMmCustomMessHandler::CMmCustomMessHandler.\n" );
   169 TFLOGSTRING("TSY: CMmCustomMessHandler::CMmCustomMessHandler.\n" );
   170 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_CMMCUSTOMMESSHANDLER, "CMmCustomMessHandler::CMmCustomMessHandler" );
   170 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_CMMCUSTOMMESSHANDLER_TD, "CMmCustomMessHandler::CMmCustomMessHandler" );
   171     iSimCBTopicToBeDeleted = KUnusedCbMsgId;
   171     iSimCBTopicToBeDeleted = KUnusedCbMsgId;
   172     // Set to true because it doesn't delete topic at start up
   172     // Set to true because it doesn't delete topic at start up
   173     iTopicInSimMemoryDelete = ETrue;
   173     iTopicInSimMemoryDelete = ETrue;
   174     }
   174     }
   175 
   175 
   179 // -----------------------------------------------------------------------------
   179 // -----------------------------------------------------------------------------
   180 //
   180 //
   181 CMmCustomMessHandler::~CMmCustomMessHandler()
   181 CMmCustomMessHandler::~CMmCustomMessHandler()
   182     {
   182     {
   183 TFLOGSTRING("TSY: CMmCustomMessHandler::~CMmCustomMessHandler.\n" );
   183 TFLOGSTRING("TSY: CMmCustomMessHandler::~CMmCustomMessHandler.\n" );
   184 OstTrace0( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_CMMCUSTOMMESSHANDLER, "CMmCustomMessHandler::~CMmCustomMessHandler" );
   184 OstTrace0( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_CMMCUSTOMMESSHANDLER_TD, "CMmCustomMessHandler::~CMmCustomMessHandler" );
   185 
   185 
   186     if( iListOfCiphValues )
   186     if( iListOfCiphValues )
   187         {
   187         {
   188         //close the array of ciphering values
   188         //close the array of ciphering values
   189         iListOfCiphValues->Close();
   189         iListOfCiphValues->Close();
   206         CMmMessageRouter* aMessageRouter, //pointer to the message router
   206         CMmMessageRouter* aMessageRouter, //pointer to the message router
   207         CMmUiccMessHandler* aUiccMessHandler
   207         CMmUiccMessHandler* aUiccMessHandler
   208         )
   208         )
   209     {
   209     {
   210 TFLOGSTRING("TSY: CMmCustomMessHandler::NewL.\n" );
   210 TFLOGSTRING("TSY: CMmCustomMessHandler::NewL.\n" );
   211 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_NEWL, "CMmCustomMessHandler::NewL" );
   211 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_NEWL_TD, "CMmCustomMessHandler::NewL" );
   212 
   212 
   213     CMmCustomMessHandler* customMessHandler =
   213     CMmCustomMessHandler* customMessHandler =
   214         new( ELeave ) CMmCustomMessHandler();
   214         new( ELeave ) CMmCustomMessHandler();
   215 
   215 
   216     CleanupStack::PushL( customMessHandler );
   216     CleanupStack::PushL( customMessHandler );
   232         customMessHandler,
   232         customMessHandler,
   233         PN_MODEM_NETWORK );
   233         PN_MODEM_NETWORK );
   234 
   234 
   235 #ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING
   235 #ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING
   236 
   236 
   237 // TO BE DONE WITH INFO_PP_DATA_READ_RESP
   237  
   238     aPhoNetReceiver->RegisterL(
   238     aPhoNetReceiver->RegisterL(
   239         customMessHandler,
   239         customMessHandler,
   240         PN_INFO,
   240         PN_INFO,
   241         INFO_PP_READ_RESP );
   241         INFO_PP_READ_RESP );
   242 #endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */
   242 #endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */
   275         customMessHandler,
   275         customMessHandler,
   276         PN_GSS,
   276         PN_GSS,
   277         GSS_HSXPA_USER_SETTING_IND );
   277         GSS_HSXPA_USER_SETTING_IND );
   278 
   278 
   279     // PMM
   279     // PMM
   280     /* To be done in CPS
   280     /* 
   281     aPhoNetReceiver->RegisterL( customMessHandler,
   281     aPhoNetReceiver->RegisterL( customMessHandler,
   282         PN_PERMANENT_DATA,
   282         PN_PERMANENT_DATA,
   283         PERM_PM_RECORD_READ_RESP );
   283         PERM_PM_RECORD_READ_RESP );
   284 
   284 
   285     aPhoNetReceiver->RegisterL( customMessHandler,
   285     aPhoNetReceiver->RegisterL( customMessHandler,
   307 // -----------------------------------------------------------------------------
   307 // -----------------------------------------------------------------------------
   308 //
   308 //
   309 void CMmCustomMessHandler::ConstructL()
   309 void CMmCustomMessHandler::ConstructL()
   310     {
   310     {
   311 TFLOGSTRING("TSY: CMmCustomMessHandler::ConstructL.\n" );
   311 TFLOGSTRING("TSY: CMmCustomMessHandler::ConstructL.\n" );
   312 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_CONSTRUCTL, "CMmCustomMessHandler::ConstructL" );
   312 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_CONSTRUCTL_TD, "CMmCustomMessHandler::ConstructL" );
   313 
   313 
   314     // Initialize iListOfCiphValues
   314     // Initialize iListOfCiphValues
   315     iListOfCiphValues = new ( ELeave ) RArray<TCiphListEntry>( 1 );
   315     iListOfCiphValues = new ( ELeave ) RArray<TCiphListEntry>( 1 );
   316 
   316 
   317     // Initialize refresh indication boolean
   317     // Initialize refresh indication boolean
   347     {
   347     {
   348     TInt resource( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_RESOURCEID ) );
   348     TInt resource( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_RESOURCEID ) );
   349     TInt messageId( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_MESSAGEID ) );
   349     TInt messageId( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_MESSAGEID ) );
   350 
   350 
   351 TFLOGSTRING3("TSY: CMmCustomMessHandler::ReceiveMessageL, Resource: %d, Message: %d", resource, messageId);
   351 TFLOGSTRING3("TSY: CMmCustomMessHandler::ReceiveMessageL, Resource: %d, Message: %d", resource, messageId);
   352 OstTraceExt2( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_RECEIVEMESSAGEL, "CMmCustomMessHandler::ReceiveMessageL;resource=%d;messageId=%d", resource, messageId );
   352 OstTraceExt2( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_RECEIVEMESSAGEL_TD, "CMmCustomMessHandler::ReceiveMessageL;resource=%d;messageId=%d", resource, messageId );
   353 
   353 
   354     switch( resource )
   354     switch( resource )
   355         {
   355         {
   356         case PN_MODEM_CALL:
   356         case PN_MODEM_CALL:
   357             {
   357             {
   395                     break;
   395                     break;
   396                     }
   396                     }
   397                 default:
   397                 default:
   398                     {
   398                     {
   399 TFLOGSTRING("TSY: CMmCustomMessHandler::ReceiveMessageL - switch resource - case PN_MODEM_CALL, switch messageId - default");
   399 TFLOGSTRING("TSY: CMmCustomMessHandler::ReceiveMessageL - switch resource - case PN_MODEM_CALL, switch messageId - default");
   400 OstTrace0( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_RECEIVEMESSAGEL, "CMmCustomMessHandler::ReceiveMessageL- switch resource - case PN_CALL, switch messageId - default" );
   400 OstTrace0( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_RECEIVEMESSAGEL_TD, "CMmCustomMessHandler::ReceiveMessageL- switch resource - case PN_CALL, switch messageId - default" );
   401                     break;
   401                     break;
   402                     }
   402                     }
   403                 }
   403                 }
   404             break;
   404             break;
   405             }
   405             }
   435                     break;
   435                     break;
   436                     }
   436                     }
   437                 default:
   437                 default:
   438                     {
   438                     {
   439 TFLOGSTRING("TSY: CMmCustomMessHandler::ReceiveMessageL - switch resource - case PN_GSS, switch messageId - default");
   439 TFLOGSTRING("TSY: CMmCustomMessHandler::ReceiveMessageL - switch resource - case PN_GSS, switch messageId - default");
   440 OstTrace0( TRACE_NORMAL, DUP2_CMMCUSTOMMESSHANDLER_RECEIVEMESSAGEL, "CMmCustomMessHandler::ReceiveMessageL- switch resource - case PN_GSS, switch messageId - default" );
   440 OstTrace0( TRACE_NORMAL,  DUP2_CMMCUSTOMMESSHANDLER_RECEIVEMESSAGEL_TD, "CMmCustomMessHandler::ReceiveMessageL- switch resource - case PN_GSS, switch messageId - default" );
   441                     break;
   441                     break;
   442                     }
   442                     }
   443                 }
   443                 }
   444             break; // end case PN_GSS
   444             break; // end case PN_GSS
   445             }
   445             }
   485                     break;
   485                     break;
   486                     }
   486                     }
   487                 default:
   487                 default:
   488                     {
   488                     {
   489 TFLOGSTRING("TSY: CMmCustomMessHandler::ReceiveMessageL - switch resource - case PN_MODEM_NETWORK, switch messageId - default");
   489 TFLOGSTRING("TSY: CMmCustomMessHandler::ReceiveMessageL - switch resource - case PN_MODEM_NETWORK, switch messageId - default");
   490 OstTrace0( TRACE_NORMAL, DUP4_CMMCUSTOMMESSHANDLER_RECEIVEMESSAGEL, "CMmCustomMessHandler::ReceiveMessageL- switch resource - case PN_MODEM_NETWORK, switch messageId - default" );
   490 OstTrace0( TRACE_NORMAL,  DUP4_CMMCUSTOMMESSHANDLER_RECEIVEMESSAGEL_TD, "CMmCustomMessHandler::ReceiveMessageL- switch resource - case PN_MODEM_NETWORK, switch messageId - default" );
   491                     break;
   491                     break;
   492                     }
   492                     }
   493                 }
   493                 }
   494             break;
   494             break;
   495             }
   495             }
   502             // switch according to the message id
   502             // switch according to the message id
   503             // and call the appropriate messagehandler method
   503             // and call the appropriate messagehandler method
   504             switch( messageId )
   504             switch( messageId )
   505                 {
   505                 {
   506 #ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING
   506 #ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING
   507                  // TO BE DONE WITH INFO_PP_DATA_READ_RESP
       
   508                  case INFO_PP_READ_RESP:
   507                  case INFO_PP_READ_RESP:
   509                     {
   508                     {
   510                     InfoPpReadResp( aIsiMessage );
   509                     InfoPpReadResp( aIsiMessage );
   511                     break;
   510                     break;
   512                     }
   511                     }
   513 #endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */
   512 #endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */
   514                  default:
   513                  default:
   515                     {
   514                     {
   516 TFLOGSTRING("TSY: CMmCustomMessHandler::ReceiveMessageL - switch resource - case PN_INFO, switch messageId - default");
   515 TFLOGSTRING("TSY: CMmCustomMessHandler::ReceiveMessageL - switch resource - case PN_INFO, switch messageId - default");
   517 OstTrace0( TRACE_NORMAL, DUP6_CMMCUSTOMMESSHANDLER_RECEIVEMESSAGEL, "CMmCustomMessHandler::ReceiveMessageL- switch resource - case PN_INFO, switch messageId - default" );
   516 OstTrace0( TRACE_NORMAL,  DUP6_CMMCUSTOMMESSHANDLER_RECEIVEMESSAGEL_TD, "CMmCustomMessHandler::ReceiveMessageL- switch resource - case PN_INFO, switch messageId - default" );
   518                     break;
   517                     break;
   519                     }
   518                     }
   520                 }
   519                 }
   521             break;
   520             break;
   522             }
   521             }
   540                     break;
   539                     break;
   541                     }
   540                     }
   542                 default:
   541                 default:
   543                     {
   542                     {
   544 TFLOGSTRING("TSY: CMmCustomMessHandler::ReceiveMessageL - switch resource - case PN_SS, switch messageId - default");
   543 TFLOGSTRING("TSY: CMmCustomMessHandler::ReceiveMessageL - switch resource - case PN_SS, switch messageId - default");
   545 OstTrace0( TRACE_NORMAL, DUP12_CMMCUSTOMMESSHANDLER_RECEIVEMESSAGEL, "CMmCustomMessHandler::ReceiveMessageL- switch resource - case PN_SS, switch messageId - default" );
   544 OstTrace0( TRACE_NORMAL,  DUP12_CMMCUSTOMMESSHANDLER_RECEIVEMESSAGEL_TD, "CMmCustomMessHandler::ReceiveMessageL- switch resource - case PN_SS, switch messageId - default" );
   546                     break;
   545                     break;
   547                     }
   546                     }
   548                 }
   547                 }
   549             break;
   548             break;
   550             }
   549             }
   551         /* To be done in CPS
   550         /*
   552         case PN_PERMANENT_DATA:
   551         case PN_PERMANENT_DATA:
   553             {
   552             {
   554             if ( KCustomTransId == aIsiMessage.Get8bit( ISI_HEADER_OFFSET_TRANSID ) )
   553             if ( KCustomTransId == aIsiMessage.Get8bit( ISI_HEADER_OFFSET_TRANSID ) )
   555                 {
   554                 {
   556                 switch( messageId )
   555                 switch( messageId )
   569 
   568 
   570                     default:
   569                     default:
   571                         {
   570                         {
   572                         TFLOGSTRING("TSY: CMmCustomMessHandler::ReceiveMessageL\
   571                         TFLOGSTRING("TSY: CMmCustomMessHandler::ReceiveMessageL\
   573                             - switch resource - case PN_PERMANENT_DATA, switch messageId - default.\n");
   572                             - switch resource - case PN_PERMANENT_DATA, switch messageId - default.\n");
   574 OstTrace0( TRACE_NORMAL, DUP16_CMMCUSTOMMESSHANDLER_RECEIVEMESSAGEL, "CMmCustomMessHandler::ReceiveMessageL - switch resource - case PN_PERMANENT_DATA, switch messageId - default." );
   573 OstTrace0( TRACE_NORMAL,  DUP16_CMMCUSTOMMESSHANDLER_RECEIVEMESSAGEL_TD, "CMmCustomMessHandler::ReceiveMessageL - switch resource - case PN_PERMANENT_DATA, switch messageId - default." );
   575                         break;
   574                         break;
   576                         }
   575                         }
   577                     }
   576                     }
   578                 TFLOGSTRING("TSY: CMmCustomMessHandler::ReceiveMessageL\
   577                 TFLOGSTRING("TSY: CMmCustomMessHandler::ReceiveMessageL\
   579                             - switch resource - case PN_PERMANENT_DATA, transaction id is not KCustomTransId\n");
   578                             - switch resource - case PN_PERMANENT_DATA, transaction id is not KCustomTransId\n");
   580 OstTrace0( TRACE_NORMAL, DUP14_CMMCUSTOMMESSHANDLER_RECEIVEMESSAGEL, "CMmCustomMessHandler::ReceiveMessageL - switch resource - case PN_PERMANENT_DATA, transaction id is not KCustomTransId" );
   579 OstTrace0( TRACE_NORMAL,  DUP14_CMMCUSTOMMESSHANDLER_RECEIVEMESSAGEL_TD, "CMmCustomMessHandler::ReceiveMessageL - switch resource - case PN_PERMANENT_DATA, transaction id is not KCustomTransId" );
   581                 }
   580                 }
   582             break;
   581             break;
   583             }*/
   582             }*/
   584 
   583 
   585         case PN_UICC:
   584         case PN_UICC:
   591             break;
   590             break;
   592             }
   591             }
   593         default:
   592         default:
   594             {
   593             {
   595 TFLOGSTRING("TSY: CMmCustomMessHandler::ReceiveMessageL - switch resource - default" );
   594 TFLOGSTRING("TSY: CMmCustomMessHandler::ReceiveMessageL - switch resource - default" );
   596 OstTrace0( TRACE_NORMAL, DUP13_CMMCUSTOMMESSHANDLER_RECEIVEMESSAGEL, "CMmCustomMessHandler::ReceiveMessageL- switch resource - default" );
   595 OstTrace0( TRACE_NORMAL,  DUP13_CMMCUSTOMMESSHANDLER_RECEIVEMESSAGEL_TD, "CMmCustomMessHandler::ReceiveMessageL- switch resource - default" );
   597             break; // server not known
   596             break; // server not known
   598             }
   597             }
   599         } // end of switch
   598         } // end of switch
   600     }
   599     }
   601 
   600 
   612         TUint8 aCallId, //call id
   611         TUint8 aCallId, //call id
   613         TUint8 aCause //cause value for releasing the call
   612         TUint8 aCause //cause value for releasing the call
   614         )
   613         )
   615     {
   614     {
   616     TFLOGSTRING("TSY: CMmCustomMessHandler::CallReleaseReq.\n" );
   615     TFLOGSTRING("TSY: CMmCustomMessHandler::CallReleaseReq.\n" );
   617 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_CALLRELEASEREQ, "CMmCustomMessHandler::CallReleaseReq" );
   616 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_CALLRELEASEREQ_TD, "CMmCustomMessHandler::CallReleaseReq" );
   618 
   617 
   619     iReleaseCauseValueSent = aCause;
   618     iReleaseCauseValueSent = aCause;
   620 
   619 
   621     //Append data for ISI message
   620     //Append data for ISI message
   622     TBuf8< 2 + SIZE_CALL_MODEM_SB_CAUSE > messageBuf;
   621     TBuf8< 2 + SIZE_CALL_MODEM_SB_CAUSE > messageBuf;
   646         (
   645         (
   647         const TIsiReceiveC& aIsiMsg    //received ISI message
   646         const TIsiReceiveC& aIsiMsg    //received ISI message
   648         )
   647         )
   649     {
   648     {
   650     TFLOGSTRING("TSY: CMmCustomMessHandler::CallReleaseResp.\n" );
   649     TFLOGSTRING("TSY: CMmCustomMessHandler::CallReleaseResp.\n" );
   651 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_CALLRELEASERESP, "CMmCustomMessHandler::CallReleaseResp" );
   650 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_CALLRELEASERESP_TD, "CMmCustomMessHandler::CallReleaseResp" );
   652 
   651 
   653     //initialize the causeType and causeValue
   652     //initialize the causeType and causeValue
   654     TUint8 causeType  = 0;
   653     TUint8 causeType  = 0;
   655     TUint8 causeValue = 0;
   654     TUint8 causeValue = 0;
   656     TInt ret = KErrNone;
   655     TInt ret = KErrNone;
   694         (
   693         (
   695         const TIsiReceiveC& aIsiMsg    //received ISI message
   694         const TIsiReceiveC& aIsiMsg    //received ISI message
   696         )
   695         )
   697     {
   696     {
   698     TFLOGSTRING("TSY: CMmCustomMessHandler::CallMoAlertInd.");
   697     TFLOGSTRING("TSY: CMmCustomMessHandler::CallMoAlertInd.");
   699 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_CALLMOALERTIND, "CMmCustomMessHandler::CallMoAlertInd" );
   698 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_CALLMOALERTIND_TD, "CMmCustomMessHandler::CallMoAlertInd" );
   700 
   699 
   701     TBool playRemoteAlertToneLocally( EFalse );
   700     TBool playRemoteAlertToneLocally( EFalse );
   702     TUint sbStartOffSet( 0 );
   701     TUint sbStartOffSet( 0 );
   703 
   702 
   704     // Get call alerting info sub block
   703     // Get call alerting info sub block
   709         EIsiSubBlockTypeId8Len8,
   708         EIsiSubBlockTypeId8Len8,
   710         sbStartOffSet ) )
   709         sbStartOffSet ) )
   711         {
   710         {
   712         TFLOGSTRING("TSY: CMmCustomMessHandler::CallMoAlertInd,\
   711         TFLOGSTRING("TSY: CMmCustomMessHandler::CallMoAlertInd,\
   713             - CALL_MODEM_SB_ALERTING_INFO sub block found.");
   712             - CALL_MODEM_SB_ALERTING_INFO sub block found.");
   714 OstTrace0( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_CALLMOALERTIND, "CMmCustomMessHandler::CallMoAlertInd, CALL_MODEM_SB_ALERTING_INFO sub block found" );
   713 OstTrace0( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_CALLMOALERTIND_TD, "CMmCustomMessHandler::CallMoAlertInd, CALL_MODEM_SB_ALERTING_INFO sub block found" );
   715 
   714 
   716         // Get alerting info
   715         // Get alerting info
   717         TUint8 callAlertingInfo( aIsiMsg.Get8bit(
   716         TUint8 callAlertingInfo( aIsiMsg.Get8bit(
   718             sbStartOffSet + CALL_MODEM_SB_ALERTING_INFO_OFFSET_ALERTINGINFO ) );
   717             sbStartOffSet + CALL_MODEM_SB_ALERTING_INFO_OFFSET_ALERTINGINFO ) );
   719 
   718 
   740 // -----------------------------------------------------------------------------
   739 // -----------------------------------------------------------------------------
   741 //
   740 //
   742 TInt CMmCustomMessHandler::UiccReadCiReq( TInt aTrId )
   741 TInt CMmCustomMessHandler::UiccReadCiReq( TInt aTrId )
   743     {
   742     {
   744 TFLOGSTRING2("TSY: CMmCustomMessHandler::UiccReadCiReq, transaction ID: %d", aTrId );
   743 TFLOGSTRING2("TSY: CMmCustomMessHandler::UiccReadCiReq, transaction ID: %d", aTrId );
   745 OstTrace1( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCREADCIREQ, "CMmCustomMessHandler::UiccReadCiReq;aTrId=%d", aTrId );
   744 OstTrace1( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCREADCIREQ_TD, "CMmCustomMessHandler::UiccReadCiReq;aTrId=%d", aTrId );
   746 
   745 
   747     // Set parameters for UICC_APPL_CMD_REQ message
   746     // Set parameters for UICC_APPL_CMD_REQ message
   748     TUiccReadTransparent params;
   747     TUiccReadTransparent params;
   749     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
   748     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
   750     params.trId = static_cast<TUiccTrId>( aTrId );
   749     params.trId = static_cast<TUiccTrId>( aTrId );
   774     TInt aStatus,
   773     TInt aStatus,
   775     TInt aTrId,
   774     TInt aTrId,
   776     const TDesC8& aFileData )
   775     const TDesC8& aFileData )
   777     {
   776     {
   778 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccReadCiResp" );
   777 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccReadCiResp" );
   779 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCREADCIRESP, "CMmCustomMessHandler::UiccReadCiResp" );
   778 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCREADCIRESP_TD, "CMmCustomMessHandler::UiccReadCiResp" );
   780 
   779 
   781     TInt ret( KErrNone );
   780     TInt ret( KErrNone );
   782     TBool cipherIndicatorStatus( EFalse );
   781     TBool cipherIndicatorStatus( EFalse );
   783 
   782 
   784     if( UICC_STATUS_OK == aStatus  )
   783     if( UICC_STATUS_OK == aStatus  )
   849 // -----------------------------------------------------------------------------
   848 // -----------------------------------------------------------------------------
   850 //
   849 //
   851 TInt CMmCustomMessHandler::NetCsWakeupReq( TUint8 aTransId )
   850 TInt CMmCustomMessHandler::NetCsWakeupReq( TUint8 aTransId )
   852     {
   851     {
   853 TFLOGSTRING("TSY: CMmCustomMessHandler::NetCsWakeupReq.\n" );
   852 TFLOGSTRING("TSY: CMmCustomMessHandler::NetCsWakeupReq.\n" );
   854 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_NETCSWAKEUPREQ, "CMmCustomMessHandler::NetCsWakeupReq" );
   853 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_NETCSWAKEUPREQ_TD, "CMmCustomMessHandler::NetCsWakeupReq" );
   855 
   854 
   856     //Data buffer length is 2
   855     //Data buffer length is 2
   857     TBuf8<2> data;
   856     TBuf8<2> data;
   858     data.Append( aTransId );
   857     data.Append( aTransId );
   859     data.Append( NET_CS_WAKEUP_REQ );
   858     data.Append( NET_CS_WAKEUP_REQ );
   873 // -----------------------------------------------------------------------------
   872 // -----------------------------------------------------------------------------
   874 //
   873 //
   875 void CMmCustomMessHandler::NetCsWakeupResp()
   874 void CMmCustomMessHandler::NetCsWakeupResp()
   876     {
   875     {
   877     TFLOGSTRING("TSY: CMmCustomMessHandler::NetCsWakeupResp.\n" );
   876     TFLOGSTRING("TSY: CMmCustomMessHandler::NetCsWakeupResp.\n" );
   878 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_NETCSWAKEUPRESP, "CMmCustomMessHandler::NetCsWakeupResp" );
   877 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_NETCSWAKEUPRESP_TD, "CMmCustomMessHandler::NetCsWakeupResp" );
   879 
   878 
   880     //getting this message indicates that the wakeup was successful
   879     //getting this message indicates that the wakeup was successful
   881     //complete NetWakeup method (no packed parameters)
   880     //complete NetWakeup method (no packed parameters)
   882     iMessageRouter->Complete( ECustomNetWakeupIPC, KErrNone );
   881     iMessageRouter->Complete( ECustomNetWakeupIPC, KErrNone );
   883 
   882 
   893 //
   892 //
   894 void CMmCustomMessHandler::NetCipheringInd(
   893 void CMmCustomMessHandler::NetCipheringInd(
   895         const TIsiReceiveC &aIsiMsg )
   894         const TIsiReceiveC &aIsiMsg )
   896     {
   895     {
   897     TFLOGSTRING("TSY: CMmCustomMessHandler::NetCipheringInd.\n" );
   896     TFLOGSTRING("TSY: CMmCustomMessHandler::NetCipheringInd.\n" );
   898 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_NETCIPHERINGIND, "CMmCustomMessHandler::NetCipheringInd" );
   897 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_NETCIPHERINGIND_TD, "CMmCustomMessHandler::NetCipheringInd" );
   899 
   898 
   900     //set chipering to False
   899     //set chipering to False
   901     TBool cipher( EFalse );
   900     TBool cipher( EFalse );
   902 
   901 
   903     //get the ciphering status
   902     //get the ciphering status
   936         (
   935         (
   937         const TIsiReceiveC& aIsiMsg
   936         const TIsiReceiveC& aIsiMsg
   938         )
   937         )
   939     {
   938     {
   940 TFLOGSTRING("TSY: CMmCustomMessHandler::NetModemRegStatusInd");
   939 TFLOGSTRING("TSY: CMmCustomMessHandler::NetModemRegStatusInd");
   941 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_NETMODEMREGSTATUSIND, "CMmCustomMessHandler::NetModemRegStatusInd" );
   940 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_NETMODEMREGSTATUSIND_TD, "CMmCustomMessHandler::NetModemRegStatusInd" );
   942 
   941 
   943     if ( 0 != aIsiMsg.Get8bit(
   942     if ( 0 != aIsiMsg.Get8bit(
   944         ISI_HEADER_SIZE +
   943         ISI_HEADER_SIZE +
   945         NET_MODEM_REG_STATUS_IND_OFFSET_SUBBLOCKCOUNT ) )
   944         NET_MODEM_REG_STATUS_IND_OFFSET_SUBBLOCKCOUNT ) )
   946         {
   945         {
   972                     }
   971                     }
   973                 case NET_REG_STATUS_NOSERV_NOSIM:
   972                 case NET_REG_STATUS_NOSERV_NOSIM:
   974                 case NET_REG_STATUS_NOSERV_SIM_REJECTED_BY_NW:
   973                 case NET_REG_STATUS_NOSERV_SIM_REJECTED_BY_NW:
   975                     {
   974                     {
   976 TFLOGSTRING("TSY: CMmCustomMessHandler::NetModemRegStatusInd, No SIM");
   975 TFLOGSTRING("TSY: CMmCustomMessHandler::NetModemRegStatusInd, No SIM");
   977 OstTrace0( TRACE_NORMAL, DUP2_CMMCUSTOMMESSHANDLER_NETMODEMREGSTATUSIND, "CMmCustomMessHandler::NetModemRegStatusInd, No SIM" );
   976 OstTrace0( TRACE_NORMAL,  DUP2_CMMCUSTOMMESSHANDLER_NETMODEMREGSTATUSIND_TD, "CMmCustomMessHandler::NetModemRegStatusInd, No SIM" );
   978                     // Complete NetworkConnectionFailure notification
   977                     // Complete NetworkConnectionFailure notification
   979                     // (no packed parameters).
   978                     // (no packed parameters).
   980                     // If puk code is required notification shouldn't
   979                     // If puk code is required notification shouldn't
   981                     // be completed.
   980                     // be completed.
   982                     TBool pukCodeRequired( iSecurityMessHandler->GetPukCodeReq() );
   981                     TBool pukCodeRequired( iSecurityMessHandler->GetPukCodeReq() );
   983                     if( !pukCodeRequired )
   982                     if( !pukCodeRequired )
   984                         {
   983                         {
   985 TFLOGSTRING("TSY: CMmCustomMessHandler::NetModemRegStatusInd - Complete network connection failure");
   984 TFLOGSTRING("TSY: CMmCustomMessHandler::NetModemRegStatusInd - Complete network connection failure");
   986 OstTrace0( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_NETMODEMREGSTATUSIND, "CMmCustomMessHandler::NetModemRegStatusInd - Complete network connection failure" );
   985 OstTrace0( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_NETMODEMREGSTATUSIND_TD, "CMmCustomMessHandler::NetModemRegStatusInd - Complete network connection failure" );
   987 
   986 
   988                         iMessageRouter->Complete(
   987                         iMessageRouter->Complete(
   989                             ECustomNotifyNetworkConnectionFailureIPC,
   988                             ECustomNotifyNetworkConnectionFailureIPC,
   990                             KErrNone );
   989                             KErrNone );
   991                         }
   990                         }
   992                     break;
   991                     break;
   993                     }
   992                     }
   994                 default:
   993                 default:
   995                     {
   994                     {
   996 TFLOGSTRING("TSY: CMmCustomMessHandler::NetModemRegStatusInd, switch registrationStatus - default");
   995 TFLOGSTRING("TSY: CMmCustomMessHandler::NetModemRegStatusInd, switch registrationStatus - default");
   997 OstTrace0( TRACE_NORMAL, DUP3_CMMCUSTOMMESSHANDLER_NETMODEMREGSTATUSIND, "CMmCustomMessHandler::NetModemRegStatusInd, switch registrationStatus - default" );
   996 OstTrace0( TRACE_NORMAL,  DUP3_CMMCUSTOMMESSHANDLER_NETMODEMREGSTATUSIND_TD, "CMmCustomMessHandler::NetModemRegStatusInd, switch registrationStatus - default" );
   998                     break;
   997                     break;
   999                     }
   998                     }
  1000                 }
   999                 }
  1001 
  1000 
  1002             // Inform of the status of NSPS.
  1001             // Inform of the status of NSPS.
  1023 // -----------------------------------------------------------------------------
  1022 // -----------------------------------------------------------------------------
  1024 //
  1023 //
  1025 TInt CMmCustomMessHandler::UiccReadDynamic2FlagsReq()
  1024 TInt CMmCustomMessHandler::UiccReadDynamic2FlagsReq()
  1026     {
  1025     {
  1027 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccReadDynamic2FlagsReq");
  1026 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccReadDynamic2FlagsReq");
  1028 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCREADDYNAMIC2FLAGSREQ, "CMmCustomMessHandler::UiccReadDynamic2FlagsReq" );
  1027 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCREADDYNAMIC2FLAGSREQ_TD, "CMmCustomMessHandler::UiccReadDynamic2FlagsReq" );
  1029     // Set parameters for UICC_APPL_CMD_REQ message
  1028     // Set parameters for UICC_APPL_CMD_REQ message
  1030     TUiccWriteTransparent params;
  1029     TUiccWriteTransparent params;
  1031     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  1030     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  1032     params.trId = ETrIdReadDynamic2Flags;
  1031     params.trId = ETrIdReadDynamic2Flags;
  1033     params.dataOffset = 0;
  1032     params.dataOffset = 0;
  1051 void CMmCustomMessHandler::UiccReadDynamic2FlagsResp(
  1050 void CMmCustomMessHandler::UiccReadDynamic2FlagsResp(
  1052     TInt aStatus,
  1051     TInt aStatus,
  1053     const TDesC8& aFileData )
  1052     const TDesC8& aFileData )
  1054     {
  1053     {
  1055 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccReadDynamic2FlagsResp");
  1054 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccReadDynamic2FlagsResp");
  1056 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCREADDYNAMIC2FLAGSRESP, "CMmCustomMessHandler::UiccReadDynamic2FlagsResp" );
  1055 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCREADDYNAMIC2FLAGSRESP_TD, "CMmCustomMessHandler::UiccReadDynamic2FlagsResp" );
  1057 
  1056 
  1058     TInt ret( KErrNone );
  1057     TInt ret( KErrNone );
  1059     RMmCustomAPI::TGetAlsBlockStatus blockStatus
  1058     RMmCustomAPI::TGetAlsBlockStatus blockStatus
  1060         ( RMmCustomAPI::EBlockStatusUnknown );
  1059         ( RMmCustomAPI::EBlockStatusUnknown );
  1061 
  1060 
  1092 // -----------------------------------------------------------------------------
  1091 // -----------------------------------------------------------------------------
  1093 //
  1092 //
  1094 TInt CMmCustomMessHandler::UiccWriteDynamic2FlagsReq( TUint8 aInfo )
  1093 TInt CMmCustomMessHandler::UiccWriteDynamic2FlagsReq( TUint8 aInfo )
  1095     {
  1094     {
  1096 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccWriteDynamic2FlagsReq");
  1095 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccWriteDynamic2FlagsReq");
  1097 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCWRITEDYNAMIC2FLAGSREQ, "CMmCustomMessHandler::UiccWriteDynamic2FlagsReq" );
  1096 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCWRITEDYNAMIC2FLAGSREQ_TD, "CMmCustomMessHandler::UiccWriteDynamic2FlagsReq" );
  1098 
  1097 
  1099     // Set parameters for UICC_APPL_CMD_REQ message
  1098     // Set parameters for UICC_APPL_CMD_REQ message
  1100     TUiccWriteTransparent params;
  1099     TUiccWriteTransparent params;
  1101     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  1100     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  1102     params.trId = ETrIdWriteDynamic2Flags;
  1101     params.trId = ETrIdWriteDynamic2Flags;
  1121 // -----------------------------------------------------------------------------
  1120 // -----------------------------------------------------------------------------
  1122 //
  1121 //
  1123 void CMmCustomMessHandler::UiccWriteDynamic2FlagsResp( TInt aStatus )
  1122 void CMmCustomMessHandler::UiccWriteDynamic2FlagsResp( TInt aStatus )
  1124     {
  1123     {
  1125 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccWriteDynamic2FlagsReq");
  1124 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccWriteDynamic2FlagsReq");
  1126 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCWRITEDYNAMIC2FLAGSRESP, "CMmCustomMessHandler::UiccWriteDynamic2FlagsResp" );
  1125 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCWRITEDYNAMIC2FLAGSRESP_TD, "CMmCustomMessHandler::UiccWriteDynamic2FlagsResp" );
  1127 
  1126 
  1128     TInt ret( KErrNone );
  1127     TInt ret( KErrNone );
  1129 
  1128 
  1130     if ( UICC_STATUS_OK != aStatus )
  1129     if ( UICC_STATUS_OK != aStatus )
  1131         {
  1130         {
  1147         (
  1146         (
  1148         const TIsiReceiveC& aIsiMsg    //received ISI message
  1147         const TIsiReceiveC& aIsiMsg    //received ISI message
  1149         )
  1148         )
  1150     {
  1149     {
  1151     TFLOGSTRING("TSY: CMmCustomMessHandler::CallTerminateInd.\n" );
  1150     TFLOGSTRING("TSY: CMmCustomMessHandler::CallTerminateInd.\n" );
  1152 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_CALLTERMINATEIND, "CMmCustomMessHandler::CallTerminateInd" );
  1151 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_CALLTERMINATEIND_TD, "CMmCustomMessHandler::CallTerminateInd" );
  1153 
  1152 
  1154     //unique call id (without possible generic id)
  1153     //unique call id (without possible generic id)
  1155     TInt callId = static_cast<TInt>( aIsiMsg.Get8bit( ISI_HEADER_SIZE +
  1154     TInt callId = static_cast<TInt>( aIsiMsg.Get8bit( ISI_HEADER_SIZE +
  1156         CALL_MODEM_TERMINATED_IND_OFFSET_CALLID ) & 0x07 );
  1155         CALL_MODEM_TERMINATED_IND_OFFSET_CALLID ) & 0x07 );
  1157 
  1156 
  1177             if ( 0 != ssDiagnostics )
  1176             if ( 0 != ssDiagnostics )
  1178                 {
  1177                 {
  1179                 ssDiagnostics |= 0x80; // binary 10000000
  1178                 ssDiagnostics |= 0x80; // binary 10000000
  1180                 TFLOGSTRING3("TSY:CMmCustomMessHandler::CallTerminatedInd: Diagnostic octet=%d received for call id=%d",
  1179                 TFLOGSTRING3("TSY:CMmCustomMessHandler::CallTerminatedInd: Diagnostic octet=%d received for call id=%d",
  1181                     ssDiagnostics, callId );
  1180                     ssDiagnostics, callId );
  1182 OstTraceExt2( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_CALLTERMINATEIND, "CMmCustomMessHandler::CallTerminateInd;Diagnostic octet==%hhu received for call id=%d", ssDiagnostics, callId );
  1181 OstTraceExt2( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_CALLTERMINATEIND_TD, "CMmCustomMessHandler::CallTerminateInd;Diagnostic octet==%hhu received for call id=%d", ssDiagnostics, callId );
  1183                 }
  1182                 }
  1184             }
  1183             }
  1185 
  1184 
  1186         // set the diagnostics in call object (might be zero)
  1185         // set the diagnostics in call object (might be zero)
  1187         // parameters for SOS layer: Call id and TUint8 with diagnostics
  1186         // parameters for SOS layer: Call id and TUint8 with diagnostics
  1205         (
  1204         (
  1206         const TIsiReceiveC& aIsiMsg    //received ISI message
  1205         const TIsiReceiveC& aIsiMsg    //received ISI message
  1207         )
  1206         )
  1208     {
  1207     {
  1209     TFLOGSTRING("TSY: CMmCustomMessHandler::CallReleaseInd.\n" );
  1208     TFLOGSTRING("TSY: CMmCustomMessHandler::CallReleaseInd.\n" );
  1210 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_CALLRELEASEIND, "CMmCustomMessHandler::CallReleaseInd" );
  1209 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_CALLRELEASEIND_TD, "CMmCustomMessHandler::CallReleaseInd" );
  1211 
  1210 
  1212     //unique call id (without possible generic id)
  1211     //unique call id (without possible generic id)
  1213     TInt callId = static_cast<TInt>( aIsiMsg.Get8bit( ISI_HEADER_SIZE +
  1212     TInt callId = static_cast<TInt>( aIsiMsg.Get8bit( ISI_HEADER_SIZE +
  1214         CALL_MODEM_RELEASE_IND_OFFSET_CALLID ) & 0x07 );
  1213         CALL_MODEM_RELEASE_IND_OFFSET_CALLID ) & 0x07 );
  1215 
  1214 
  1235             if ( 0 != ssDiagnostics )
  1234             if ( 0 != ssDiagnostics )
  1236                 {
  1235                 {
  1237                 ssDiagnostics |= 0x80; // binary 10000000
  1236                 ssDiagnostics |= 0x80; // binary 10000000
  1238                 TFLOGSTRING3("TSY:CMmCustomMessHandler::CallReleaseInd: Diagnostic octet=%d received for call id=%d",
  1237                 TFLOGSTRING3("TSY:CMmCustomMessHandler::CallReleaseInd: Diagnostic octet=%d received for call id=%d",
  1239                     ssDiagnostics, callId );
  1238                     ssDiagnostics, callId );
  1240 OstTraceExt2( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_CALLRELEASEIND, "CMmCustomMessHandler::CallReleaseInd;Diagnostic octet==%hhu received for call id=%d", ssDiagnostics, callId );
  1239 OstTraceExt2( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_CALLRELEASEIND_TD, "CMmCustomMessHandler::CallReleaseInd;Diagnostic octet==%hhu received for call id=%d", ssDiagnostics, callId );
  1241                 }
  1240                 }
  1242             }
  1241             }
  1243 
  1242 
  1244         // set the diagnostics in call object (might be zero)
  1243         // set the diagnostics in call object (might be zero)
  1245         // parameters for SOS layer: Call id and TUint8 with diagnostics
  1244         // parameters for SOS layer: Call id and TUint8 with diagnostics
  1264         (
  1263         (
  1265         TProductProfileRequestType aReqType // request type, used as
  1264         TProductProfileRequestType aReqType // request type, used as
  1266         )
  1265         )
  1267     {
  1266     {
  1268     TFLOGSTRING("TSY: CMmCustomMessHandler::InfoPpReadReq.\n" );
  1267     TFLOGSTRING("TSY: CMmCustomMessHandler::InfoPpReadReq.\n" );
  1269 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_INFOPPREADREQ, "CMmCustomMessHandler::InfoPpReadReq" );
  1268 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_INFOPPREADREQ_TD, "CMmCustomMessHandler::InfoPpReadReq" );
  1270 
  1269 
  1271 #ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING
  1270 #ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING
  1272     //create the buffer for SB_PP subblock
  1271     //create the buffer for SB_PP subblock
  1273     TBuf8<SIZE_INFO_SB_PP> sbPPSubBlockBuf( 0 );
  1272     TBuf8<SIZE_INFO_SB_PP> sbPPSubBlockBuf( 0 );
  1274     TIsiSubBlock sbPPSubBlock( sbPPSubBlockBuf, INFO_SB_PP, EIsiSubBlockTypeId8Len8 );
  1273     TIsiSubBlock sbPPSubBlock( sbPPSubBlockBuf, INFO_SB_PP, EIsiSubBlockTypeId8Len8 );
  1287         }
  1286         }
  1288     else if ( ECheckTwoDigitDialSupport == aReqType )
  1287     else if ( ECheckTwoDigitDialSupport == aReqType )
  1289         {
  1288         {
  1290         sbPPSubBlockBuf.Append( KinfoPpTwoDigitDial );
  1289         sbPPSubBlockBuf.Append( KinfoPpTwoDigitDial );
  1291         }
  1290         }
  1292   else
  1291     else
  1293     {
  1292         {
  1294     // not supported
  1293         // not supported
  1295     return KErrArgument;
  1294         return KErrArgument;
  1296     }
  1295         }
  1297 
  1296 
  1298     //value of the product profile is 0x00, not need cause we are reading
  1297     //value of the product profile is 0x00, not need cause we are reading
  1299     sbPPSubBlockBuf.Append( 0x00 );
  1298     sbPPSubBlockBuf.Append( 0x00 );
  1300 
  1299 
  1301   // Construct INFO_PP_READ_REQ message (1 data byte +
  1300     // Construct INFO_PP_READ_REQ message (1 data byte +
  1302   // sub block count + INFO_SB_PP sub block)
  1301     // sub block count + INFO_SB_PP sub block)
  1303   TBuf8< 2 + SIZE_INFO_SB_PP > infoPpReadReq;
  1302     TBuf8< 2 + SIZE_INFO_SB_PP > infoPpReadReq;
  1304 
  1303 
  1305     //set pp batch reading to read specific product profile, thus 0.
  1304     //set pp batch reading to read specific product profile, thus 0.
  1306     infoPpReadReq.Append( INFO_PP_PROD_PROFILE_FEATURE );
  1305     infoPpReadReq.Append( INFO_PP_PROD_PROFILE_FEATURE );
  1307 
  1306 
  1308     // add sub block
  1307     // add sub block
  1309     infoPpReadReq.Append( 1 ); // number of sub blocks
  1308     infoPpReadReq.Append( 1 ); // number of sub blocks
  1310     infoPpReadReq.Append( sbPPSubBlock.CompleteSubBlock() );
  1309     infoPpReadReq.Append( sbPPSubBlock.CompleteSubBlock() );
  1311 
  1310 
  1312     //create the isi message
  1311     //create the isi message
  1313   //transaction id = request type
  1312     //transaction id = request type
  1314   TUint8 transId = static_cast<TUint8>( aReqType );
  1313     TUint8 transId = static_cast<TUint8>( aReqType );
  1315 
  1314 
  1316     return iPhoNetSender->Send( PN_INFO, transId, INFO_PP_READ_REQ, infoPpReadReq );
  1315     return iPhoNetSender->Send( PN_INFO, transId, INFO_PP_READ_REQ, infoPpReadReq );
  1317 
  1316 
  1318 #endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */
  1317 #endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */
  1319     return KErrNone;
  1318     return KErrNone;
  1332         (
  1331         (
  1333         const TIsiReceiveC& aIsiMessage    //received ISI message
  1332         const TIsiReceiveC& aIsiMessage    //received ISI message
  1334         )
  1333         )
  1335     {
  1334     {
  1336     TFLOGSTRING("TSY: CMmCustomMessHandler::InfoPpReadResp.\n" );
  1335     TFLOGSTRING("TSY: CMmCustomMessHandler::InfoPpReadResp.\n" );
  1337 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_INFOPPREADRESP, "CMmCustomMessHandler::InfoPpReadResp" );
  1336 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_INFOPPREADRESP_TD, "CMmCustomMessHandler::InfoPpReadResp" );
  1338 #ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING
  1337 #ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING
  1339     TInt errorValue( KErrGeneral );
  1338     TInt errorValue( KErrGeneral );
  1340 
  1339 
  1341     // Get Status
  1340     // Get Status
  1342     TUint8 status = aIsiMessage.Get8bit( ISI_HEADER_SIZE + INFO_PP_READ_RESP_OFFSET_STATUS );
  1341     TUint8 status = aIsiMessage.Get8bit( ISI_HEADER_SIZE + INFO_PP_READ_RESP_OFFSET_STATUS );
  1346 
  1345 
  1347     //initialize two digit support with off
  1346     //initialize two digit support with off
  1348     RMmCustomAPI::TTwoDigitDialSupport twoDigitDialSupport(
  1347     RMmCustomAPI::TTwoDigitDialSupport twoDigitDialSupport(
  1349         RMmCustomAPI::ETwoDigitDialSupportOff );
  1348         RMmCustomAPI::ETwoDigitDialSupportOff );
  1350 
  1349 
  1351   TFLOGSTRING2("TSY: CMmCustomMessHandler::InfoPpReadResp - Status: %d",
  1350 TFLOGSTRING2("TSY: CMmCustomMessHandler::InfoPpReadResp - Status: %d", status );
  1352     status );
  1351 OstTraceExt1( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_INFOPPREADRESP_TD, "CMmCustomMessHandler::InfoPpReadResp;status=%hhu", status );
  1353 OstTraceExt1( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_INFOPPREADRESP, "CMmCustomMessHandler::InfoPpReadResp;status=%hhu", status );
       
  1354 
  1352 
  1355     switch ( status )
  1353     switch ( status )
  1356         {
  1354         {
  1357         case INFO_OK:
  1355         case INFO_OK:
  1358             {
  1356             {
  1359 
  1357             TUint sbInfoPpReadStartOffset(0);
  1360           TUint sbInfoPpReadStartOffset( 0 );
       
  1361 
       
  1362 
       
  1363             if ( KErrNone == aIsiMessage.FindSubBlockOffsetById( ISI_HEADER_SIZE + SIZE_INFO_PP_READ_RESP,
  1358             if ( KErrNone == aIsiMessage.FindSubBlockOffsetById( ISI_HEADER_SIZE + SIZE_INFO_PP_READ_RESP,
  1364               INFO_SB_PP, EIsiSubBlockTypeId8Len8, sbInfoPpReadStartOffset ) )
  1359               INFO_SB_PP, EIsiSubBlockTypeId8Len8, sbInfoPpReadStartOffset ) )
  1365 
  1360 
  1366                 {
  1361                 {
  1367 
  1362 
  1368                 TInt length = aIsiMessage.Get8bit( sbInfoPpReadStartOffset + INFO_SB_PP_OFFSET_STRLEN  );
  1363                 TInt length = aIsiMessage.Get8bit( sbInfoPpReadStartOffset + INFO_SB_PP_OFFSET_STRLEN  );
  1369 
  1364 
  1370         TFLOGSTRING2("TSY: CMmCustomMessHandler::InfoPpReadResp - Info length: %d",
  1365         TFLOGSTRING2("TSY: CMmCustomMessHandler::InfoPpReadResp - Info length: %d",
  1371           length );
  1366           length );
  1372 OstTrace1( TRACE_NORMAL, DUP2_CMMCUSTOMMESSHANDLER_INFOPPREADRESP, "CMmCustomMessHandler::InfoPpReadResp - Info length=%d", length );
  1367 OstTrace1( TRACE_NORMAL,  DUP2_CMMCUSTOMMESSHANDLER_INFOPPREADRESP_TD, "CMmCustomMessHandler::InfoPpReadResp - Info length=%d", length );
  1373 
       
  1374                 if ( 1 == length )
  1368                 if ( 1 == length )
  1375                     {
  1369                     {
  1376                     //introduce the pPFeatures buffer to hold the feature value,
  1370                     //introduce the pPFeatures buffer to hold the feature value,
  1377                     //buffer size is 2
  1371                     //buffer size is 2
  1378                     TBuf8<KTwo> pPFeatures;
  1372                     TBuf8<KTwo> pPFeatures;
  1381                     pPFeatures.Copy( aIsiMessage.GetData( sbInfoPpReadStartOffset
  1375                     pPFeatures.Copy( aIsiMessage.GetData( sbInfoPpReadStartOffset
  1382                       + INFO_SB_PP_OFFSET_PRODUCTPROFILE, KTwo ) );
  1376                       + INFO_SB_PP_OFFSET_PRODUCTPROFILE, KTwo ) );
  1383 
  1377 
  1384           TFLOGSTRING2("TSY: CMmCustomMessHandler::InfoPpReadResp - Info data: %S",
  1378           TFLOGSTRING2("TSY: CMmCustomMessHandler::InfoPpReadResp - Info data: %S",
  1385             &pPFeatures );
  1379             &pPFeatures );
  1386 OstTraceExt1( TRACE_NORMAL, DUP3_CMMCUSTOMMESSHANDLER_INFOPPREADRESP, "CMmCustomMessHandler::InfoPpReadResp;pPfeatures=%s", pPFeatures );
  1380 OstTraceExt1( TRACE_NORMAL,  DUP3_CMMCUSTOMMESSHANDLER_INFOPPREADRESP_TD, "CMmCustomMessHandler::InfoPpReadResp;pPfeatures=%s", pPFeatures );
  1387 
  1381 
  1388                     //check that product profile is requested one
  1382                     //check that product profile is requested one
  1389                     if ( INFO_PP_ALS == pPFeatures [0] )
  1383                     if ( INFO_PP_ALS == pPFeatures [0] )
  1390                         {
  1384                         {
  1391                         //Get the value of the Als feature
  1385                         //Get the value of the Als feature
  1392                         if ( 0 != pPFeatures [1] )
  1386                         if ( 0 != pPFeatures [1] )
  1393                             {
  1387                             {
  1394               TFLOGSTRING("TSY: CMmCustomMessHandler::InfoPpReadResp - EAlsSupportOn");
  1388               TFLOGSTRING("TSY: CMmCustomMessHandler::InfoPpReadResp - EAlsSupportOn");
  1395 OstTrace0( TRACE_NORMAL, DUP4_CMMCUSTOMMESSHANDLER_INFOPPREADRESP, "CMmCustomMessHandler::InfoPpReadResp - EAlsSupportOn" );
  1389 OstTrace0( TRACE_NORMAL,  DUP4_CMMCUSTOMMESSHANDLER_INFOPPREADRESP_TD, "CMmCustomMessHandler::InfoPpReadResp - EAlsSupportOn" );
  1396               alsSupport = RMmCustomAPI::EAlsSupportOn;
  1390               alsSupport = RMmCustomAPI::EAlsSupportOn;
  1397                             }
  1391                             }
  1398                         //set the error value to KErrNone
  1392                         //set the error value to KErrNone
  1399                         errorValue = KErrNone;
  1393                         errorValue = KErrNone;
  1400                         }
  1394                         }
  1402                         {
  1396                         {
  1403                         //Get the value of the two digit dial feature
  1397                         //Get the value of the two digit dial feature
  1404                         if ( 0 != pPFeatures [1] )
  1398                         if ( 0 != pPFeatures [1] )
  1405                             {
  1399                             {
  1406               TFLOGSTRING("TSY: CMmCustomMessHandler::InfoPpReadResp - EAlsSupportOff");
  1400               TFLOGSTRING("TSY: CMmCustomMessHandler::InfoPpReadResp - EAlsSupportOff");
  1407 OstTrace0( TRACE_NORMAL, DUP5_CMMCUSTOMMESSHANDLER_INFOPPREADRESP, "CMmCustomMessHandler::InfoPpReadResp - EAlsSupportOff" );
  1401 OstTrace0( TRACE_NORMAL,  DUP5_CMMCUSTOMMESSHANDLER_INFOPPREADRESP_TD, "CMmCustomMessHandler::InfoPpReadResp - EAlsSupportOff" );
  1408               twoDigitDialSupport =
  1402               twoDigitDialSupport =
  1409                 RMmCustomAPI::ETwoDigitDialSupportOn;
  1403                 RMmCustomAPI::ETwoDigitDialSupportOn;
  1410                             }
  1404                             }
  1411                         //set the error value to KErrNone
  1405                         //set the error value to KErrNone
  1412                         errorValue = KErrNone;
  1406                         errorValue = KErrNone;
  1413                         }
  1407                         }
  1414 
       
  1415                     //No else
  1408                     //No else
  1416 
       
  1417                     }
  1409                     }
  1418                 }
  1410                 }
  1419             break;
  1411             break;
  1420             }
  1412             }
  1421         case INFO_FAIL:
  1413         case INFO_FAIL:
  1430             errorValue = KErrNotFound;
  1422             errorValue = KErrNotFound;
  1431             break;
  1423             break;
  1432             }
  1424             }
  1433         default:
  1425         default:
  1434             {
  1426             {
  1435             TFLOGSTRING("TSY: CMmCustomMessHandler::InfoPpReadResp, switch status - default.\n" );
  1427 TFLOGSTRING("TSY: CMmCustomMessHandler::InfoPpReadResp, switch status - default.\n" );
  1436 OstTrace0( TRACE_NORMAL, DUP6_CMMCUSTOMMESSHANDLER_INFOPPREADRESP, "CMmCustomMessHandler::InfoPpReadResp, switch status - default" );
  1428 OstTrace0( TRACE_NORMAL,  DUP6_CMMCUSTOMMESSHANDLER_INFOPPREADRESP_TD, "CMmCustomMessHandler::InfoPpReadResp, switch status - default" );
  1437             errorValue = KErrNotSupported;
  1429             errorValue = KErrNotSupported;
  1438             break;
  1430             break;
  1439             }
  1431             }
  1440         }
  1432         }
  1441 
  1433 
  1454     CMmDataPackage dataPackage;
  1446     CMmDataPackage dataPackage;
  1455     dataPackage.PackData( &twoDigitDialSupport );
  1447     dataPackage.PackData( &twoDigitDialSupport );
  1456     iMessageRouter->Complete( ECustomCheckTwoDigitDialSupportIPC,
  1448     iMessageRouter->Complete( ECustomCheckTwoDigitDialSupportIPC,
  1457       &dataPackage, errorValue );
  1449       &dataPackage, errorValue );
  1458         }
  1450         }
  1459 
       
  1460     //No else
  1451     //No else
  1461 #endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */
  1452 #endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */
  1462     }
  1453     }
  1463 
  1454 
  1464 // -----------------------------------------------------------------------------
  1455 // -----------------------------------------------------------------------------
  1472         (
  1463         (
  1473          TUint8 aTransId // Transaction Id
  1464          TUint8 aTransId // Transaction Id
  1474         )
  1465         )
  1475     {
  1466     {
  1476     TFLOGSTRING("TSY: CMmCustomMessHandler::CallGsmBlackListClearReq.\n" );
  1467     TFLOGSTRING("TSY: CMmCustomMessHandler::CallGsmBlackListClearReq.\n" );
  1477 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_CALLGSMBLACKLISTCLEARREQ, "CMmCustomMessHandler::CallGsmBlackListClearReq" );
  1468 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_CALLGSMBLACKLISTCLEARREQ_TD, "CMmCustomMessHandler::CallGsmBlackListClearReq" );
  1478 
  1469 
  1479   // Construct CALL_MODEM_BLACKLIST_CLEAR_REQ message (1 data byte +
  1470   // Construct CALL_MODEM_BLACKLIST_CLEAR_REQ message (1 data byte +
  1480   // sub block count)
  1471   // sub block count)
  1481   TBuf8<2> blackListClearReq;
  1472   TBuf8<2> blackListClearReq;
  1482 
  1473 
  1500         (
  1491         (
  1501 //         const TIsiReceiveC& aIsiMsg // Received isi messge
  1492 //         const TIsiReceiveC& aIsiMsg // Received isi messge
  1502         )
  1493         )
  1503     {
  1494     {
  1504     TFLOGSTRING("TSY: CMmCustomMessHandler::CallGsmBlackListClearResp.\n" );
  1495     TFLOGSTRING("TSY: CMmCustomMessHandler::CallGsmBlackListClearResp.\n" );
  1505 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_CALLGSMBLACKLISTCLEARRESP, "CMmCustomMessHandler::CallGsmBlackListClearResp" );
  1496 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_CALLGSMBLACKLISTCLEARRESP_TD, "CMmCustomMessHandler::CallGsmBlackListClearResp" );
  1506 
  1497 
  1507     // call server response
  1498     // call server response
  1508     //getting this message indicates that the clear blacklist was successful
  1499     //getting this message indicates that the clear blacklist was successful
  1509     //complete SOS layer method
  1500     //complete SOS layer method
  1510   iMessageRouter->Complete( ECustomClearCallBlackListIPC, KErrNone );
  1501   iMessageRouter->Complete( ECustomClearCallBlackListIPC, KErrNone );
  1522         (
  1513         (
  1523         const TIsiReceiveC& aIsiMessage //received ISI message
  1514         const TIsiReceiveC& aIsiMessage //received ISI message
  1524         )
  1515         )
  1525     {
  1516     {
  1526     TFLOGSTRING("TSY: CMmCustomMessHandler::SsServiceCompletedInd");
  1517     TFLOGSTRING("TSY: CMmCustomMessHandler::SsServiceCompletedInd");
  1527 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_SSSERVICECOMPLETEDIND, "CMmCustomMessHandler::SsServiceCompletedInd" );
  1518 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_SSSERVICECOMPLETEDIND_TD, "CMmCustomMessHandler::SsServiceCompletedInd" );
  1528 
  1519 
  1529     if ( 0 < aIsiMessage.Get8bit( ISI_HEADER_SIZE +
  1520     if ( 0 < aIsiMessage.Get8bit( ISI_HEADER_SIZE +
  1530                 SS_SERVICE_COMPLETED_IND_OFFSET_SUBBLOCKCOUNT ) )
  1521                 SS_SERVICE_COMPLETED_IND_OFFSET_SUBBLOCKCOUNT ) )
  1531         {
  1522         {
  1532         TUint ssStatus( 0 );
  1523         TUint ssStatus( 0 );
  1640                 {
  1631                 {
  1641                 ssStatus = KCustomApiSsGsmQuiescent;
  1632                 ssStatus = KCustomApiSsGsmQuiescent;
  1642                 }
  1633                 }
  1643       TFLOGSTRING2("TSY: CMmCustomMessHandler::SsServiceCompletedInd: Complete SsRequestCompleteNotification ssStatus:%d",
  1634       TFLOGSTRING2("TSY: CMmCustomMessHandler::SsServiceCompletedInd: Complete SsRequestCompleteNotification ssStatus:%d",
  1644         ssStatus );
  1635         ssStatus );
  1645 OstTrace1( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_SSSERVICECOMPLETEDIND, "CMmCustomMessHandler::SsServiceCompletedInd;Complete SsRequestCompleteNotification ssStatus=%u", ssStatus );
  1636 OstTrace1( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_SSSERVICECOMPLETEDIND_TD, "CMmCustomMessHandler::SsServiceCompletedInd;Complete SsRequestCompleteNotification ssStatus=%u", ssStatus );
  1646 
  1637 
  1647             CMmDataPackage dataPackage;
  1638             CMmDataPackage dataPackage;
  1648             // pack parameter: a TInt with SS status
  1639             // pack parameter: a TInt with SS status
  1649             dataPackage.PackData( &ssStatus );
  1640             dataPackage.PackData( &ssStatus );
  1650             iMessageRouter->Complete( ECustomNotifySsRequestCompleteIPC,
  1641             iMessageRouter->Complete( ECustomNotifySsRequestCompleteIPC,
  1671             additionalInfo.iAdditionalInfo.Copy( aIsiMessage.GetData(
  1662             additionalInfo.iAdditionalInfo.Copy( aIsiMessage.GetData(
  1672                 sbStartOffset + SS_GSM_ADDITIONAL_INFO_OFFSET_RETURNRESULT,
  1663                 sbStartOffset + SS_GSM_ADDITIONAL_INFO_OFFSET_RETURNRESULT,
  1673                 length  ) );
  1664                 length  ) );
  1674 
  1665 
  1675       TFLOGSTRING("TSY: CMmCustomMessHandler::SsServiceCompletedInd: Complete SsAdditionalInfoNotification");
  1666       TFLOGSTRING("TSY: CMmCustomMessHandler::SsServiceCompletedInd: Complete SsAdditionalInfoNotification");
  1676 OstTrace0( TRACE_NORMAL, DUP2_CMMCUSTOMMESSHANDLER_SSSERVICECOMPLETEDIND, "CMmCustomMessHandler::SsServiceCompletedInd - Complete SsAdditionalInfoNotification" );
  1667 OstTrace0( TRACE_NORMAL,  DUP2_CMMCUSTOMMESSHANDLER_SSSERVICECOMPLETEDIND_TD, "CMmCustomMessHandler::SsServiceCompletedInd - Complete SsAdditionalInfoNotification" );
  1677 
  1668 
  1678       // complete notification
  1669       // complete notification
  1679             CMmDataPackage dataPackage;
  1670             CMmDataPackage dataPackage;
  1680             // pack parameter: pointer to RMmCustomAPI::TSsAdditionalInfo
  1671             // pack parameter: pointer to RMmCustomAPI::TSsAdditionalInfo
  1681             RMmCustomAPI::TSsAdditionalInfo* additionalInfoPtr =
  1672             RMmCustomAPI::TSsAdditionalInfo* additionalInfoPtr =
  1711         (
  1702         (
  1712         const TIsiReceiveC& aIsiMessage //received ISI message
  1703         const TIsiReceiveC& aIsiMessage //received ISI message
  1713         )
  1704         )
  1714     {
  1705     {
  1715     TFLOGSTRING("TSY: CMmCustomMessHandler::SsServiceFailedResp");
  1706     TFLOGSTRING("TSY: CMmCustomMessHandler::SsServiceFailedResp");
  1716 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_SSSERVICEFAILEDRESP, "CMmCustomMessHandler::SsServiceFailedResp" );
  1707 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_SSSERVICEFAILEDRESP_TD, "CMmCustomMessHandler::SsServiceFailedResp" );
  1717 
  1708 
  1718     TInt ssStatus( RMmCustomAPI::KSsStatusReturnError );
  1709     TInt ssStatus( RMmCustomAPI::KSsStatusReturnError );
  1719 
  1710 
  1720     CMmDataPackage dataPackage;
  1711     CMmDataPackage dataPackage;
  1721 
  1712 
  1806                 additionalInfo.iAdditionalInfo.Append( 0x00 );
  1797                 additionalInfo.iAdditionalInfo.Append( 0x00 );
  1807                 break;
  1798                 break;
  1808                 }
  1799                 }
  1809             }
  1800             }
  1810         TFLOGSTRING2("TSY: CMmCustomMessHandler::SsServiceFailedResp: Ss Status: %d", ssStatus );
  1801         TFLOGSTRING2("TSY: CMmCustomMessHandler::SsServiceFailedResp: Ss Status: %d", ssStatus );
  1811 OstTrace1( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_SSSERVICEFAILEDRESP, "CMmCustomMessHandler::SsServiceFailedResp;Ss Status=%d", ssStatus );
  1802 OstTrace1( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_SSSERVICEFAILEDRESP_TD, "CMmCustomMessHandler::SsServiceFailedResp;Ss Status=%d", ssStatus );
  1812         // pack parameter: a TInt with SS status
  1803         // pack parameter: a TInt with SS status
  1813         dataPackage.PackData( &ssStatus );
  1804         dataPackage.PackData( &ssStatus );
  1814 
  1805 
  1815         // To complete outstanding SsRequestCompleteNotification
  1806         // To complete outstanding SsRequestCompleteNotification
  1816         iMessageRouter->Complete(
  1807         iMessageRouter->Complete(
  1817             ECustomNotifySsRequestCompleteIPC,
  1808             ECustomNotifySsRequestCompleteIPC,
  1818             &dataPackage,
  1809             &dataPackage,
  1819             KErrNone );
  1810             KErrNone );
  1820 
  1811 
  1821         TFLOGSTRING2("TSY: CMmCustomMessHandler::SsServiceFailedResp: SB ID: 0x%x",subBlockId );
  1812         TFLOGSTRING2("TSY: CMmCustomMessHandler::SsServiceFailedResp: SB ID: 0x%x",subBlockId );
  1822 OstTraceExt1( TRACE_NORMAL, DUP2_CMMCUSTOMMESSHANDLER_SSSERVICEFAILEDRESP, "CMmCustomMessHandler::SsServiceFailedResp;subBlockId=%hhx", subBlockId );
  1813 OstTraceExt1( TRACE_NORMAL,  DUP2_CMMCUSTOMMESSHANDLER_SSSERVICEFAILEDRESP_TD, "CMmCustomMessHandler::SsServiceFailedResp;subBlockId=%hhx", subBlockId );
  1823         // pack parameter: pointer to RMmCustomAPI::TSsAdditionalInfo
  1814         // pack parameter: pointer to RMmCustomAPI::TSsAdditionalInfo
  1824         RMmCustomAPI::TSsAdditionalInfo* additionalInfoPtr = &additionalInfo;
  1815         RMmCustomAPI::TSsAdditionalInfo* additionalInfoPtr = &additionalInfo;
  1825         dataPackage.PackData( &additionalInfoPtr );
  1816         dataPackage.PackData( &additionalInfoPtr );
  1826 
  1817 
  1827         // To complete outstanding SsAdditionalInfoNotification
  1818         // To complete outstanding SsAdditionalInfoNotification
  1831             KErrNone );
  1822             KErrNone );
  1832         }
  1823         }
  1833     else
  1824     else
  1834         {
  1825         {
  1835         TFLOGSTRING("TSY: CMmCustomMessHandler::SsServiceFailedResp: No subblock's");
  1826         TFLOGSTRING("TSY: CMmCustomMessHandler::SsServiceFailedResp: No subblock's");
  1836 OstTrace0( TRACE_NORMAL, DUP3_CMMCUSTOMMESSHANDLER_SSSERVICEFAILEDRESP, "CMmCustomMessHandler::SsServiceFailedResp - No subblock's" );
  1827 OstTrace0( TRACE_NORMAL,  DUP3_CMMCUSTOMMESSHANDLER_SSSERVICEFAILEDRESP_TD, "CMmCustomMessHandler::SsServiceFailedResp - No subblock's" );
  1837 
  1828 
  1838         dataPackage.PackData( &ssStatus );
  1829         dataPackage.PackData( &ssStatus );
  1839 
  1830 
  1840         // No subblocks, complete with default values
  1831         // No subblocks, complete with default values
  1841         iMessageRouter->Complete( ECustomNotifySsRequestCompleteIPC,
  1832         iMessageRouter->Complete( ECustomNotifySsRequestCompleteIPC,
  1860         RMmCustomAPI::TMobileTelNumber& aNumber,  // Telnumber
  1851         RMmCustomAPI::TMobileTelNumber& aNumber,  // Telnumber
  1861         RMmCustomAPI::TCheckMode aCheckMode     // Check mode
  1852         RMmCustomAPI::TCheckMode aCheckMode     // Check mode
  1862         )
  1853         )
  1863     {
  1854     {
  1864   TFLOGSTRING( "TSY: CMmCustomMessHandler::CallEmergencyNbrCheckReq" );
  1855   TFLOGSTRING( "TSY: CMmCustomMessHandler::CallEmergencyNbrCheckReq" );
  1865 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_CALLEMERGENCYNBRCHECKREQ, "CMmCustomMessHandler::CallEmergencyNbrCheckReq" );
  1856 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_CALLEMERGENCYNBRCHECKREQ_TD, "CMmCustomMessHandler::CallEmergencyNbrCheckReq" );
  1866 
  1857 
  1867     //save the information to match it when the response is got
  1858     //save the information to match it when the response is got
  1868     iUsedEmergencyNbrCheckMode = aCheckMode;
  1859     iUsedEmergencyNbrCheckMode = aCheckMode;
  1869     iEmergencyNumberLength = aNumber.Length();
  1860     iEmergencyNumberLength = aNumber.Length();
  1870 
  1861 
  1921         (
  1912         (
  1922         const TIsiReceiveC& aIsiMsg        // Received ISI message
  1913         const TIsiReceiveC& aIsiMsg        // Received ISI message
  1923         )
  1914         )
  1924     {
  1915     {
  1925   TFLOGSTRING("TSY: CMmCustomMessHandler::CallEmergencyNbrCheckResp" );
  1916   TFLOGSTRING("TSY: CMmCustomMessHandler::CallEmergencyNbrCheckResp" );
  1926 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_CALLEMERGENCYNBRCHECKRESP, "CMmCustomMessHandler::CallEmergencyNbrCheckResp" );
  1917 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_CALLEMERGENCYNBRCHECKRESP_TD, "CMmCustomMessHandler::CallEmergencyNbrCheckResp" );
  1927 
  1918 
  1928     // Get Status
  1919     // Get Status
  1929     TUint8 status( aIsiMsg.Get8bit( ISI_HEADER_SIZE +
  1920     TUint8 status( aIsiMsg.Get8bit( ISI_HEADER_SIZE +
  1930         CALL_MODEM_EMERG_NBR_CHECK_RESP_OFFSET_STATUS ));
  1921         CALL_MODEM_EMERG_NBR_CHECK_RESP_OFFSET_STATUS ));
  1931 
  1922 
  1996 // -----------------------------------------------------------------------------
  1987 // -----------------------------------------------------------------------------
  1997 //
  1988 //
  1998 TInt CMmCustomMessHandler::UiccOperatorReq()
  1989 TInt CMmCustomMessHandler::UiccOperatorReq()
  1999     {
  1990     {
  2000 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccOperatorReq" );
  1991 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccOperatorReq" );
  2001 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCOPERATORREQ, "CMmCustomMessHandler::UiccOperatorReq" );
  1992 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCOPERATORREQ_TD, "CMmCustomMessHandler::UiccOperatorReq" );
  2002 
  1993 
  2003     // Set parameters for UICC_APPL_CMD_REQ message
  1994     // Set parameters for UICC_APPL_CMD_REQ message
  2004     TUiccReadTransparent params;
  1995     TUiccReadTransparent params;
  2005     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  1996     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  2006     params.trId = ETrIdReadOperatorNameCustom;
  1997     params.trId = ETrIdReadOperatorNameCustom;
  2022 // CMmCustomMessHandler::UiccOperatorResp
  2013 // CMmCustomMessHandler::UiccOperatorResp
  2023 // Complete operator name
  2014 // Complete operator name
  2024 // -----------------------------------------------------------------------------
  2015 // -----------------------------------------------------------------------------
  2025 //
  2016 //
  2026 void CMmCustomMessHandler::UiccOperatorResp(
  2017 void CMmCustomMessHandler::UiccOperatorResp(
  2027     TInt aStatus,
  2018     TUint8 aStatus,
  2028     const TDesC8& aFileData )
  2019     const TDesC8& aFileData )
  2029     {
  2020     {
  2030 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccOperatorResp" );
  2021 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccOperatorResp" );
  2031 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCOPERATORRESP, "CMmCustomMessHandler::UiccOperatorResp" );
  2022 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCOPERATORRESP_TD, "CMmCustomMessHandler::UiccOperatorResp" );
  2032 
  2023 
  2033     TInt errorValue( KErrGeneral );
  2024     TInt errorValue( KErrGeneral );
  2034 
  2025 
  2035     // Network provider name
  2026     // Network provider name
  2036     TBuf<KNwProviderNameLength> name;
  2027     TBuf<KNwProviderNameLength> name;
  2037 
  2028 
  2038     if ( KErrNone == aStatus )
  2029     if ( UICC_STATUS_OK == aStatus )
  2039         {
  2030         {
  2040         errorValue = KErrNone;
  2031         errorValue = KErrNone;
  2041         name.Copy( aFileData );
  2032         name.Copy( aFileData );
  2042         }
  2033         }
  2043 
  2034 
  2064         (
  2055         (
  2065         TUint8 aTransId             //transaction Id
  2056         TUint8 aTransId             //transaction Id
  2066         )
  2057         )
  2067     {
  2058     {
  2068     TFLOGSTRING("TSY: CMmCustomMessHandler::SsGsmUssdSendReq" );
  2059     TFLOGSTRING("TSY: CMmCustomMessHandler::SsGsmUssdSendReq" );
  2069 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_SSGSMUSSDSENDREQ, "CMmCustomMessHandler::SsGsmUssdSendReq" );
  2060 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_SSGSMUSSDSENDREQ_TD, "CMmCustomMessHandler::SsGsmUssdSendReq" );
  2070 
  2061 
  2071     // create buffer for isi msg data
  2062     // create buffer for isi msg data
  2072     TBuf8<2> data;
  2063     TBuf8<2> data;
  2073     data.Append( SS_GSM_USSD_END );
  2064     data.Append( SS_GSM_USSD_END );
  2074     //number of sub blocks
  2065     //number of sub blocks
  2092         (
  2083         (
  2093         const TIsiReceiveC& aIsiMessage //received ISI message
  2084         const TIsiReceiveC& aIsiMessage //received ISI message
  2094         )
  2085         )
  2095     {
  2086     {
  2096     TFLOGSTRING("TSY: CMmCustomMessHandler::SsGsmUssdSendResp" );
  2087     TFLOGSTRING("TSY: CMmCustomMessHandler::SsGsmUssdSendResp" );
  2097 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_SSGSMUSSDSENDRESP, "CMmCustomMessHandler::SsGsmUssdSendResp" );
  2088 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_SSGSMUSSDSENDRESP_TD, "CMmCustomMessHandler::SsGsmUssdSendResp" );
  2098 
  2089 
  2099 
  2090 
  2100     TUint ussdType( aIsiMessage.Get8bit(
  2091     TUint ussdType( aIsiMessage.Get8bit(
  2101                         ISI_HEADER_SIZE +
  2092                         ISI_HEADER_SIZE +
  2102                         SS_GSM_USSD_SEND_RESP_OFFSET_USSDTYPE ) );
  2093                         SS_GSM_USSD_SEND_RESP_OFFSET_USSDTYPE ) );
  2120         const TCiphListEntry& aArg1, //first argument
  2111         const TCiphListEntry& aArg1, //first argument
  2121         const TCiphListEntry& aArg2  //second argument
  2112         const TCiphListEntry& aArg2  //second argument
  2122         )
  2113         )
  2123     {
  2114     {
  2124     TFLOGSTRING("TSY: CMmCustomMessHandler::Match.\n" );
  2115     TFLOGSTRING("TSY: CMmCustomMessHandler::Match.\n" );
  2125 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_MATCH, "CMmCustomMessHandler::Match" );
  2116 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_MATCH_TD, "CMmCustomMessHandler::Match" );
  2126 
  2117 
  2127     TBool ret ( EFalse );
  2118     TBool ret ( EFalse );
  2128 
  2119 
  2129     //we are interested only in the traId value
  2120     //we are interested only in the traId value
  2130     if ( aArg1.iTraId == aArg2.iTraId )
  2121     if ( aArg1.iTraId == aArg2.iTraId )
  2146         (
  2137         (
  2147         const TUint8 aTransactionId
  2138         const TUint8 aTransactionId
  2148         )
  2139         )
  2149     {
  2140     {
  2150 TFLOGSTRING("TSY: CMmCustomMessHandler::NetModemRegStatusGetReq." );
  2141 TFLOGSTRING("TSY: CMmCustomMessHandler::NetModemRegStatusGetReq." );
  2151 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_NETMODEMREGSTATUSGETREQ, "CMmCustomMessHandler::NetModemRegStatusGetReq" );
  2142 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_NETMODEMREGSTATUSGETREQ_TD, "CMmCustomMessHandler::NetModemRegStatusGetReq" );
  2152 
  2143 
  2153     // Data length buffer is 2.
  2144     // Data length buffer is 2.
  2154     TBuf8<2> data;
  2145     TBuf8<2> data;
  2155     data.Append( aTransactionId );
  2146     data.Append( aTransactionId );
  2156     data.Append( NET_MODEM_REG_STATUS_GET_REQ );
  2147     data.Append( NET_MODEM_REG_STATUS_GET_REQ );
  2172 //
  2163 //
  2173 void CMmCustomMessHandler::NetModemRegStatusGetResp(
  2164 void CMmCustomMessHandler::NetModemRegStatusGetResp(
  2174        const TIsiReceiveC& aIsiMsg )
  2165        const TIsiReceiveC& aIsiMsg )
  2175     {
  2166     {
  2176 TFLOGSTRING("TSY: CMmCustomMessHandler::NetModemRegStatusGetResp" );
  2167 TFLOGSTRING("TSY: CMmCustomMessHandler::NetModemRegStatusGetResp" );
  2177 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_NETMODEMREGSTATUSGETRESP, "CMmCustomMessHandler::NetModemRegStatusGetResp" );
  2168 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_NETMODEMREGSTATUSGETRESP_TD, "CMmCustomMessHandler::NetModemRegStatusGetResp" );
  2178 
  2169 
  2179     // Get the success code.
  2170     // Get the success code.
  2180     TUint8 successCode( aIsiMsg.Get8bit(
  2171     TUint8 successCode( aIsiMsg.Get8bit(
  2181         ISI_HEADER_SIZE +
  2172         ISI_HEADER_SIZE +
  2182         NET_MODEM_REG_STATUS_GET_RESP_OFFSET_SUCCESSCODE ) );
  2173         NET_MODEM_REG_STATUS_GET_RESP_OFFSET_SUCCESSCODE ) );
  2201         (
  2192         (
  2202         const TIsiReceiveC& aIsiMsg // received ISI message
  2193         const TIsiReceiveC& aIsiMsg // received ISI message
  2203         )
  2194         )
  2204     {
  2195     {
  2205     TFLOGSTRING("TSY: CMmCustomMessHandler::CallGsmNotificationInd");
  2196     TFLOGSTRING("TSY: CMmCustomMessHandler::CallGsmNotificationInd");
  2206 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_CALLGSMNOTIFICATIONIND, "CMmCustomMessHandler::CallGsmNotificationInd" );
  2197 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_CALLGSMNOTIFICATIONIND_TD, "CMmCustomMessHandler::CallGsmNotificationInd" );
  2207 
  2198 
  2208     TInt ret( KErrNone );
  2199     TInt ret( KErrNone );
  2209 
  2200 
  2210     // For packaging
  2201     // For packaging
  2211     CMmDataPackage dataPackage;
  2202     CMmDataPackage dataPackage;
  2235         EIsiSubBlockTypeId8Len8,
  2226         EIsiSubBlockTypeId8Len8,
  2236         sbStartOffSet ) )
  2227         sbStartOffSet ) )
  2237         {
  2228         {
  2238         TFLOGSTRING("TSY: CMmCustomMessHandler::CallGsmNotificationInd,\
  2229         TFLOGSTRING("TSY: CMmCustomMessHandler::CallGsmNotificationInd,\
  2239             - CALL_MODEM_SB_SS_CODE sub block founded");
  2230             - CALL_MODEM_SB_SS_CODE sub block founded");
  2240 OstTrace0( TRACE_NORMAL, DUP3_CMMCUSTOMMESSHANDLER_CALLGSMNOTIFICATIONIND, "CMmCustomMessHandler::CallGsmNotificationInd, CALL_MODEM_SB_SS_CODE sub block found" );
  2231 OstTrace0( TRACE_NORMAL,  DUP3_CMMCUSTOMMESSHANDLER_CALLGSMNOTIFICATIONIND_TD, "CMmCustomMessHandler::CallGsmNotificationInd, CALL_MODEM_SB_SS_CODE sub block found" );
  2241 
  2232 
  2242         TUint16 ssCode( aIsiMsg.Get16bit(
  2233         TUint16 ssCode( aIsiMsg.Get16bit(
  2243             sbStartOffSet + CALL_MODEM_SB_SS_CODE_OFFSET_MMISSCODE ) );
  2234             sbStartOffSet + CALL_MODEM_SB_SS_CODE_OFFSET_MMISSCODE ) );
  2244 
  2235 
  2245         switch ( ssCode )
  2236         switch ( ssCode )
  2287                 }
  2278                 }
  2288             default:
  2279             default:
  2289                 {
  2280                 {
  2290                 TFLOGSTRING("TSY: CMmCustomMessHandler::CallGsmNotificationInd,\
  2281                 TFLOGSTRING("TSY: CMmCustomMessHandler::CallGsmNotificationInd,\
  2291                     switch ssCode - default.");
  2282                     switch ssCode - default.");
  2292 OstTrace0( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_CALLGSMNOTIFICATIONIND, "CMmCustomMessHandler::CallGsmNotificationInd, switch ssCode - default" );
  2283 OstTrace0( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_CALLGSMNOTIFICATIONIND_TD, "CMmCustomMessHandler::CallGsmNotificationInd, switch ssCode - default" );
  2293                 break;
  2284                 break;
  2294                 }
  2285                 }
  2295             }
  2286             }
  2296         }
  2287         }
  2297 
  2288 
  2302         EIsiSubBlockTypeId8Len8,
  2293         EIsiSubBlockTypeId8Len8,
  2303         sbStartOffSet ) )
  2294         sbStartOffSet ) )
  2304         {
  2295         {
  2305         TFLOGSTRING("TSY: CMmCustomMessHandler::CallGsmNotificationInd,\
  2296         TFLOGSTRING("TSY: CMmCustomMessHandler::CallGsmNotificationInd,\
  2306             - CALL_MODEM_SB_SS_NOTIFY sub block founded");
  2297             - CALL_MODEM_SB_SS_NOTIFY sub block founded");
  2307 OstTrace0( TRACE_NORMAL, DUP4_CMMCUSTOMMESSHANDLER_CALLGSMNOTIFICATIONIND, "CMmCustomMessHandler::CallGsmNotificationInd, CALL_MODEM_SB_SS_NOTIFY sub block found" );
  2298 OstTrace0( TRACE_NORMAL,  DUP4_CMMCUSTOMMESSHANDLER_CALLGSMNOTIFICATIONIND_TD, "CMmCustomMessHandler::CallGsmNotificationInd, CALL_MODEM_SB_SS_NOTIFY sub block found" );
  2308 
  2299 
  2309         // Get the SsNotifyIndictor
  2300         // Get the SsNotifyIndictor
  2310         TUint8 ssNotify( aIsiMsg.Get8bit(
  2301         TUint8 ssNotify( aIsiMsg.Get8bit(
  2311             sbStartOffSet + CALL_MODEM_SB_SS_NOTIFY_OFFSET_SSNOTIFICATION ) );
  2302             sbStartOffSet + CALL_MODEM_SB_SS_NOTIFY_OFFSET_SSNOTIFICATION ) );
  2312 
  2303 
  2336         EIsiSubBlockTypeId8Len8,
  2327         EIsiSubBlockTypeId8Len8,
  2337         sbStartOffSet ) )
  2328         sbStartOffSet ) )
  2338         {
  2329         {
  2339         TFLOGSTRING("TSY: CMmCustomMessHandler::CallGsmNotificationInd,\
  2330         TFLOGSTRING("TSY: CMmCustomMessHandler::CallGsmNotificationInd,\
  2340             - CALL_MODEM_SB_SS_NOTIFY_INDICATOR sub block founded");
  2331             - CALL_MODEM_SB_SS_NOTIFY_INDICATOR sub block founded");
  2341 OstTrace0( TRACE_NORMAL, DUP5_CMMCUSTOMMESSHANDLER_CALLGSMNOTIFICATIONIND, "CMmCustomMessHandler::CallGsmNotificationInd, CALL_MODEM_SB_SS_NOTIFY_INDICATOR sub block found" );
  2332 OstTrace0( TRACE_NORMAL,  DUP5_CMMCUSTOMMESSHANDLER_CALLGSMNOTIFICATIONIND_TD, "CMmCustomMessHandler::CallGsmNotificationInd, CALL_MODEM_SB_SS_NOTIFY_INDICATOR sub block found" );
  2342 
  2333 
  2343         // Get the SsNotifyIndictor
  2334         // Get the SsNotifyIndictor
  2344         TUint8 ssNotifyIndicator( aIsiMsg.Get8bit( sbStartOffSet +
  2335         TUint8 ssNotifyIndicator( aIsiMsg.Get8bit( sbStartOffSet +
  2345             CALL_MODEM_SB_SS_NOTIFY_INDICATOR_OFFSET_SSINDICATOR ) );
  2336             CALL_MODEM_SB_SS_NOTIFY_INDICATOR_OFFSET_SSINDICATOR ) );
  2346 
  2337 
  2368         EIsiSubBlockTypeId8Len8,
  2359         EIsiSubBlockTypeId8Len8,
  2369         sbStartOffSet ) )
  2360         sbStartOffSet ) )
  2370         {
  2361         {
  2371         TFLOGSTRING("TSY: CMmCustomMessHandler::CallGsmNotificationInd,\
  2362         TFLOGSTRING("TSY: CMmCustomMessHandler::CallGsmNotificationInd,\
  2372             - CALL_MODEM_SB_SS_HOLD_INDICATOR sub block founded");
  2363             - CALL_MODEM_SB_SS_HOLD_INDICATOR sub block founded");
  2373 OstTrace0( TRACE_NORMAL, DUP6_CMMCUSTOMMESSHANDLER_CALLGSMNOTIFICATIONIND, "CMmCustomMessHandler::CallGsmNotificationInd, CALL_MODEM_SB_SS_HOLD_INDICATOR sub block found" );
  2364 OstTrace0( TRACE_NORMAL,  DUP6_CMMCUSTOMMESSHANDLER_CALLGSMNOTIFICATIONIND_TD, "CMmCustomMessHandler::CallGsmNotificationInd, CALL_MODEM_SB_SS_HOLD_INDICATOR sub block found" );
  2374 
  2365 
  2375         // Get the ectIndictor
  2366         // Get the ectIndictor
  2376         TUint8 holdIndicator( aIsiMsg.Get8bit( sbStartOffSet +
  2367         TUint8 holdIndicator( aIsiMsg.Get8bit( sbStartOffSet +
  2377             CALL_MODEM_SB_SS_HOLD_INDICATOR_OFFSET_SSHOLDINDICATOR ) );
  2368             CALL_MODEM_SB_SS_HOLD_INDICATOR_OFFSET_SSHOLDINDICATOR ) );
  2378 
  2369 
  2394         EIsiSubBlockTypeId8Len8,
  2385         EIsiSubBlockTypeId8Len8,
  2395         sbStartOffSet ) )
  2386         sbStartOffSet ) )
  2396         {
  2387         {
  2397         TFLOGSTRING("TSY: CMmCustomMessHandler::CallGsmNotificationInd,\
  2388         TFLOGSTRING("TSY: CMmCustomMessHandler::CallGsmNotificationInd,\
  2398             - CALL_MODEM_SB_CUG_INFO sub block founded");
  2389             - CALL_MODEM_SB_CUG_INFO sub block founded");
  2399 OstTrace0( TRACE_NORMAL, DUP7_CMMCUSTOMMESSHANDLER_CALLGSMNOTIFICATIONIND, "CMmCustomMessHandler::CallGsmNotificationInd, CALL_MODEM_SB_CUG_INFO sub block found" );
  2390 OstTrace0( TRACE_NORMAL,  DUP7_CMMCUSTOMMESSHANDLER_CALLGSMNOTIFICATIONIND_TD, "CMmCustomMessHandler::CallGsmNotificationInd, CALL_MODEM_SB_CUG_INFO sub block found" );
  2400 
  2391 
  2401         // Get the CUG index
  2392         // Get the CUG index
  2402         ssInfo.iCugIndex = aIsiMsg.Get16bit(
  2393         ssInfo.iCugIndex = aIsiMsg.Get16bit(
  2403             sbStartOffSet + CALL_MODEM_SB_CUG_INFO_OFFSET_CUGIND );
  2394             sbStartOffSet + CALL_MODEM_SB_CUG_INFO_OFFSET_CUGIND );
  2404         }
  2395         }
  2410         EIsiSubBlockTypeId8Len8,
  2401         EIsiSubBlockTypeId8Len8,
  2411         sbStartOffSet ) )
  2402         sbStartOffSet ) )
  2412         {
  2403         {
  2413         TFLOGSTRING("TSY: CMmCustomMessHandler::CallGsmNotificationInd,\
  2404         TFLOGSTRING("TSY: CMmCustomMessHandler::CallGsmNotificationInd,\
  2414             - CALL_MODEM_SB_SS_ECT_INDICATOR sub block founded");
  2405             - CALL_MODEM_SB_SS_ECT_INDICATOR sub block founded");
  2415 OstTrace0( TRACE_NORMAL, DUP8_CMMCUSTOMMESSHANDLER_CALLGSMNOTIFICATIONIND, "CMmCustomMessHandler::CallGsmNotificationInd, CALL_MODEM_SB_SS_ECT_INDICATOR sub block found" );
  2406 OstTrace0( TRACE_NORMAL,  DUP8_CMMCUSTOMMESSHANDLER_CALLGSMNOTIFICATIONIND_TD, "CMmCustomMessHandler::CallGsmNotificationInd, CALL_MODEM_SB_SS_ECT_INDICATOR sub block found" );
  2416 
  2407 
  2417         // Get the ectIndictor
  2408         // Get the ectIndictor
  2418         TUint8 ectIndicator( aIsiMsg.Get8bit(
  2409         TUint8 ectIndicator( aIsiMsg.Get8bit(
  2419             sbStartOffSet + CALL_MODEM_SB_SS_ECT_INDICATOR_OFFSET_SSECTINDICATOR ) );
  2410             sbStartOffSet + CALL_MODEM_SB_SS_ECT_INDICATOR_OFFSET_SSECTINDICATOR ) );
  2420 
  2411 
  2436         EIsiSubBlockTypeId8Len8,
  2427         EIsiSubBlockTypeId8Len8,
  2437         sbStartOffSet ) )
  2428         sbStartOffSet ) )
  2438         {
  2429         {
  2439         TFLOGSTRING("TSY: CMmCustomMessHandler::CallGsmNotificationInd,\
  2430         TFLOGSTRING("TSY: CMmCustomMessHandler::CallGsmNotificationInd,\
  2440             - CALL_MODEM_SB_REMOTE_ADDRESS sub block founded");
  2431             - CALL_MODEM_SB_REMOTE_ADDRESS sub block founded");
  2441 OstTrace0( TRACE_NORMAL, DUP9_CMMCUSTOMMESSHANDLER_CALLGSMNOTIFICATIONIND, "CMmCustomMessHandler::CallGsmNotificationInd, CALL_MODEM_SB_REMOTE_ADDRESS sub block found" );
  2432 OstTrace0( TRACE_NORMAL,  DUP9_CMMCUSTOMMESSHANDLER_CALLGSMNOTIFICATIONIND_TD, "CMmCustomMessHandler::CallGsmNotificationInd, CALL_MODEM_SB_REMOTE_ADDRESS sub block found" );
  2442 
  2433 
  2443         // Get the presentation
  2434         // Get the presentation
  2444 
  2435 
  2445         TUint8 presentationIndicator( aIsiMsg.Get8bit(
  2436         TUint8 presentationIndicator( aIsiMsg.Get8bit(
  2446             sbStartOffSet + CALL_MODEM_SB_REMOTE_ADDRESS_OFFSET_PRESENTATION ) );
  2437             sbStartOffSet + CALL_MODEM_SB_REMOTE_ADDRESS_OFFSET_PRESENTATION ) );
  2467             default:
  2458             default:
  2468                 {
  2459                 {
  2469                 TFLOGSTRING("TSY: CMmCustomMessHandler::CallGsmNotificationInd,\
  2460                 TFLOGSTRING("TSY: CMmCustomMessHandler::CallGsmNotificationInd,\
  2470                     - CALL_MODEM_SB_REMOTE_ADDRESS sub block\
  2461                     - CALL_MODEM_SB_REMOTE_ADDRESS sub block\
  2471                     - switch presentationIndicator - default.");
  2462                     - switch presentationIndicator - default.");
  2472 OstTrace0( TRACE_NORMAL, DUP2_CMMCUSTOMMESSHANDLER_CALLGSMNOTIFICATIONIND, "CMmCustomMessHandler::CallGsmNotificationInd, switch presentationIndicator - default" );
  2463 OstTrace0( TRACE_NORMAL,  DUP2_CMMCUSTOMMESSHANDLER_CALLGSMNOTIFICATIONIND_TD, "CMmCustomMessHandler::CallGsmNotificationInd, switch presentationIndicator - default" );
  2473                 // The variable already has a default value
  2464                 // The variable already has a default value
  2474                 break;
  2465                 break;
  2475                 }
  2466                 }
  2476             }
  2467             }
  2477 
  2468 
  2493         EIsiSubBlockTypeId8Len8,
  2484         EIsiSubBlockTypeId8Len8,
  2494         sbStartOffSet ) )
  2485         sbStartOffSet ) )
  2495         {
  2486         {
  2496         TFLOGSTRING("TSY: CMmCustomMessHandler::CallGsmNotificationInd,\
  2487         TFLOGSTRING("TSY: CMmCustomMessHandler::CallGsmNotificationInd,\
  2497             - CALL_MODEM_SB_ALERTING_INFO sub block founded");
  2488             - CALL_MODEM_SB_ALERTING_INFO sub block founded");
  2498 OstTrace0( TRACE_NORMAL, DUP10_CMMCUSTOMMESSHANDLER_CALLGSMNOTIFICATIONIND, "CMmCustomMessHandler::CallGsmNotificationInd, CALL_MODEM_SB_ALERTING_INFO sub block found" );
  2489 OstTrace0( TRACE_NORMAL,  DUP10_CMMCUSTOMMESSHANDLER_CALLGSMNOTIFICATIONIND_TD, "CMmCustomMessHandler::CallGsmNotificationInd, CALL_MODEM_SB_ALERTING_INFO sub block found" );
  2499 
  2490 
  2500         TBool playRemoteAlertToneLocally( EFalse );
  2491         TBool playRemoteAlertToneLocally( EFalse );
  2501 
  2492 
  2502         // Get alerting info
  2493         // Get alerting info
  2503         TUint8 callAlertingInfo( aIsiMsg.Get8bit(
  2494         TUint8 callAlertingInfo( aIsiMsg.Get8bit(
  2542         const TIsiReceiveC& aIsiMsg,  //Isi message
  2533         const TIsiReceiveC& aIsiMsg,  //Isi message
  2543         RMmCustomAPI::TSsTypeAndMode& aSsTypeAndMode //ss type and mode
  2534         RMmCustomAPI::TSsTypeAndMode& aSsTypeAndMode //ss type and mode
  2544         ) const
  2535         ) const
  2545     {
  2536     {
  2546     TFLOGSTRING("TSY: CMmCustomMessHandler::HandleForwarding.\n" );
  2537     TFLOGSTRING("TSY: CMmCustomMessHandler::HandleForwarding.\n" );
  2547 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_HANDLEFORWARDING, "CMmCustomMessHandler::HandleForwarding" );
  2538 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_HANDLEFORWARDING_TD, "CMmCustomMessHandler::HandleForwarding" );
  2548 
  2539 
  2549     //identify the kind of forwarding
  2540     //identify the kind of forwarding
  2550     switch ( aSsCode )
  2541     switch ( aSsCode )
  2551         {
  2542         {
  2552         case CALL_MODEM_SSC_ALL_FWDS:
  2543         case CALL_MODEM_SSC_ALL_FWDS:
  2567         case CALL_MODEM_SSC_ALL_COND_FWD:
  2558         case CALL_MODEM_SSC_ALL_COND_FWD:
  2568             aSsTypeAndMode.iSsType = RMmCustomAPI::ESsAllCondForwardings;
  2559             aSsTypeAndMode.iSsType = RMmCustomAPI::ESsAllCondForwardings;
  2569             break;
  2560             break;
  2570         default:
  2561         default:
  2571             TFLOGSTRING("TSY: CMmCustomMessHandler::HandleForwarding, switch aSsCode - default.\n" );
  2562             TFLOGSTRING("TSY: CMmCustomMessHandler::HandleForwarding, switch aSsCode - default.\n" );
  2572 OstTrace0( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_HANDLEFORWARDING, "CMmCustomMessHandler::HandleForwarding, switch aSsCode - default" );
  2563 OstTrace0( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_HANDLEFORWARDING_TD, "CMmCustomMessHandler::HandleForwarding, switch aSsCode - default" );
  2573             //this case is imposible, added due code convention
  2564             //this case is imposible, added due code convention
  2574             break;
  2565             break;
  2575         }
  2566         }
  2576 
  2567 
  2577     TUint sbStartOffSet( 0 );
  2568     TUint sbStartOffSet( 0 );
  2628         const TIsiReceiveC& aIsiMsg,  //ISI message
  2619         const TIsiReceiveC& aIsiMsg,  //ISI message
  2629         RMmCustomAPI::TSsTypeAndMode& aSsTypeAndMode //Ss type and mode
  2620         RMmCustomAPI::TSsTypeAndMode& aSsTypeAndMode //Ss type and mode
  2630         ) const
  2621         ) const
  2631     {
  2622     {
  2632     TFLOGSTRING("TSY: CMmCustomMessHandler::HandleBarring.\n" );
  2623     TFLOGSTRING("TSY: CMmCustomMessHandler::HandleBarring.\n" );
  2633 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_HANDLEBARRING, "CMmCustomMessHandler::HandleBarring" );
  2624 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_HANDLEBARRING_TD, "CMmCustomMessHandler::HandleBarring" );
  2634 
  2625 
  2635     //identify the kind of barring
  2626     //identify the kind of barring
  2636     switch ( aSsCode )
  2627     switch ( aSsCode )
  2637         {
  2628         {
  2638          case CALL_MODEM_SSC_OUTGOING_BARR_SERV:
  2629          case CALL_MODEM_SSC_OUTGOING_BARR_SERV:
  2641          case CALL_MODEM_SSC_INCOMING_BARR_SERV:
  2632          case CALL_MODEM_SSC_INCOMING_BARR_SERV:
  2642              aSsTypeAndMode.iSsType = RMmCustomAPI::ESsIncomingBarrServ;
  2633              aSsTypeAndMode.iSsType = RMmCustomAPI::ESsIncomingBarrServ;
  2643              break;
  2634              break;
  2644          default:
  2635          default:
  2645              TFLOGSTRING("TSY: CMmCustomMessHandler::HandleBarring, switch aSsCode - default.\n" );
  2636              TFLOGSTRING("TSY: CMmCustomMessHandler::HandleBarring, switch aSsCode - default.\n" );
  2646 OstTrace0( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_HANDLEBARRING, "CMmCustomMessHandler::HandleBarring, switch aSsCode - default" );
  2637 OstTrace0( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_HANDLEBARRING_TD, "CMmCustomMessHandler::HandleBarring, switch aSsCode - default" );
  2647              //this case is imposible, added due code convention
  2638              //this case is imposible, added due code convention
  2648              break;
  2639              break;
  2649         }
  2640         }
  2650 
  2641 
  2651     TUint sbStartOffSet( 0 );
  2642     TUint sbStartOffSet( 0 );
  2691 // -----------------------------------------------------------------------------
  2682 // -----------------------------------------------------------------------------
  2692 //
  2683 //
  2693 TInt CMmCustomMessHandler::NetSetReq( TUint8 aTransId )
  2684 TInt CMmCustomMessHandler::NetSetReq( TUint8 aTransId )
  2694     {
  2685     {
  2695 TFLOGSTRING("TSY: CMmCustomMessHandler::NetSetReq");
  2686 TFLOGSTRING("TSY: CMmCustomMessHandler::NetSetReq");
  2696 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_NETSETREQ, "CMmCustomMessHandler::NetSetReq" );
  2687 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_NETSETREQ_TD, "CMmCustomMessHandler::NetSetReq" );
  2697 
  2688 
  2698     // Data for ISI message, buffer size is one
  2689     // Data for ISI message, buffer size is one
  2699     TBuf8<2 + SIZE_NET_OPERATOR_INFO_COMMON> netSetReq;
  2690     TBuf8<2 + SIZE_NET_OPERATOR_INFO_COMMON> netSetReq;
  2700     // Registered in another protocol is set to 0
  2691     // Registered in another protocol is set to 0
  2701     netSetReq.Append ( 0 );
  2692     netSetReq.Append ( 0 );
  2731 // -----------------------------------------------------------------------------
  2722 // -----------------------------------------------------------------------------
  2732 //
  2723 //
  2733 void CMmCustomMessHandler::NetSetResp( const TIsiReceiveC& aIsiMsg )
  2724 void CMmCustomMessHandler::NetSetResp( const TIsiReceiveC& aIsiMsg )
  2734     {
  2725     {
  2735 TFLOGSTRING("TSY: CMmCustomMessHandler::NetSetResp");
  2726 TFLOGSTRING("TSY: CMmCustomMessHandler::NetSetResp");
  2736 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_NETSETRESP, "CMmCustomMessHandler::NetSetResp" );
  2727 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_NETSETRESP_TD, "CMmCustomMessHandler::NetSetResp" );
  2737 
  2728 
  2738     // Get the cause
  2729     // Get the cause
  2739     TUint8 cause( aIsiMsg.Get8bit(
  2730     TUint8 cause( aIsiMsg.Get8bit(
  2740         ISI_HEADER_SIZE +
  2731         ISI_HEADER_SIZE +
  2741         NET_SET_RESP_OFFSET_SUCCESSCODE ) );
  2732         NET_SET_RESP_OFFSET_SUCCESSCODE ) );
  2759 // -----------------------------------------------------------------------------
  2750 // -----------------------------------------------------------------------------
  2760 //
  2751 //
  2761 void CMmCustomMessHandler::NetRatResp( const TIsiReceiveC& aIsiMsg )
  2752 void CMmCustomMessHandler::NetRatResp( const TIsiReceiveC& aIsiMsg )
  2762     {
  2753     {
  2763 TFLOGSTRING( "TSY: CMmCustomMessHandler::NetRatResp");
  2754 TFLOGSTRING( "TSY: CMmCustomMessHandler::NetRatResp");
  2764 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_NETRATRESP, "CMmCustomMessHandler::NetRatResp" );
  2755 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_NETRATRESP_TD, "CMmCustomMessHandler::NetRatResp" );
  2765 
  2756 
  2766     // Get the success code
  2757     // Get the success code
  2767     TUint8 successCode( aIsiMsg.Get8bit(
  2758     TUint8 successCode( aIsiMsg.Get8bit(
  2768         ISI_HEADER_SIZE + NET_RAT_RESP_OFFSET_SUCCESSCODE ) );
  2759         ISI_HEADER_SIZE + NET_RAT_RESP_OFFSET_SUCCESSCODE ) );
  2769 
  2760 
  2770     TInt ret( KErrNone );
  2761     TInt ret( KErrNone );
  2771 
  2762 
  2772     TUint32 supportedNetworkModes( 0 );
  2763     TUint32 supportedNetworkModes( 0 );
  2773 
  2764 
  2774 TFLOGSTRING2( "TSY: CMmCustomMessHandler::NetRatResp successCode : %d", successCode);
  2765 TFLOGSTRING2( "TSY: CMmCustomMessHandler::NetRatResp successCode : %d", successCode);
  2775 OstTraceExt1( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_NETRATRESP, "CMmCustomMessHandler::NetRatResp;successCode=%hhu", successCode );
  2766 OstTraceExt1( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_NETRATRESP_TD, "CMmCustomMessHandler::NetRatResp;successCode=%hhu", successCode );
  2776 
  2767 
  2777     // Check if we have sub blocks in the message
  2768     // Check if we have sub blocks in the message
  2778     if ( aIsiMsg.Get8bit( ISI_HEADER_SIZE + NET_RAT_RESP_OFFSET_SUBBLOCKCOUNT )
  2769     if ( aIsiMsg.Get8bit( ISI_HEADER_SIZE + NET_RAT_RESP_OFFSET_SUBBLOCKCOUNT )
  2779         != 0 && NET_CAUSE_OK == successCode )
  2770         != 0 && NET_CAUSE_OK == successCode )
  2780         {
  2771         {
  2819 
  2810 
  2820     CMmDataPackage dataPackage;
  2811     CMmDataPackage dataPackage;
  2821     dataPackage.PackData( &supportedNetworkModes );
  2812     dataPackage.PackData( &supportedNetworkModes );
  2822 
  2813 
  2823 TFLOGSTRING2( "TSY: CMmCustomMessHandler::NetRatResp - ret: %d", ret);
  2814 TFLOGSTRING2( "TSY: CMmCustomMessHandler::NetRatResp - ret: %d", ret);
  2824 OstTrace1( TRACE_NORMAL, DUP2_CMMCUSTOMMESSHANDLER_NETRATRESP, "CMmCustomMessHandler::NetRatResp;ret=%d", ret );
  2815 OstTrace1( TRACE_NORMAL,  DUP2_CMMCUSTOMMESSHANDLER_NETRATRESP_TD, "CMmCustomMessHandler::NetRatResp;ret=%d", ret );
  2825 
  2816 
  2826     // Completion ResetNetServer method (packed parameters)
  2817     // Completion ResetNetServer method (packed parameters)
  2827     iMessageRouter->Complete(
  2818     iMessageRouter->Complete(
  2828         ECustomGetSystemNetworkModesIPC,
  2819         ECustomGetSystemNetworkModesIPC,
  2829         &dataPackage,
  2820         &dataPackage,
  2841 //
  2832 //
  2842 void CMmCustomMessHandler::GssCsServiceResp (
  2833 void CMmCustomMessHandler::GssCsServiceResp (
  2843         const TIsiReceiveC& aIsiMessage ) // Received isi message
  2834         const TIsiReceiveC& aIsiMessage ) // Received isi message
  2844     {
  2835     {
  2845 TFLOGSTRING( "TSY: CMmCustomMessHandler::GssCsServiceResp" );
  2836 TFLOGSTRING( "TSY: CMmCustomMessHandler::GssCsServiceResp" );
  2846 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_GSSCSSERVICERESP, "CMmCustomMessHandler::GssCsServiceResp" );
  2837 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_GSSCSSERVICERESP_TD, "CMmCustomMessHandler::GssCsServiceResp" );
  2847 
  2838 
  2848     TUint8 transactId ( aIsiMessage.Get8bit(
  2839     TUint8 transactId ( aIsiMessage.Get8bit(
  2849         ISI_HEADER_SIZE + GSS_CS_SERVICE_RESP_OFFSET_TRANSID ) );
  2840         ISI_HEADER_SIZE + GSS_CS_SERVICE_RESP_OFFSET_TRANSID ) );
  2850 
  2841 
  2851     if ( KCustomTransId == transactId )
  2842     if ( KCustomTransId == transactId )
  2855 
  2846 
  2856         // GSS_SELECTED_RAT_WRITE (0x0E)
  2847         // GSS_SELECTED_RAT_WRITE (0x0E)
  2857         if ( GSS_SELECTED_RAT_WRITE == operation )
  2848         if ( GSS_SELECTED_RAT_WRITE == operation )
  2858             {
  2849             {
  2859 TFLOGSTRING("TSY: CMmCustomMessHandler::GssCsServiceResp - Complete ECustomSetSystemNetworkModeIPC");
  2850 TFLOGSTRING("TSY: CMmCustomMessHandler::GssCsServiceResp - Complete ECustomSetSystemNetworkModeIPC");
  2860 OstTrace0( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_GSSCSSERVICERESP, "CMmCustomMessHandler::GssCsServiceResp - Complete ECustomSetSystemNetworkModeIPC" );
  2851 OstTrace0( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_GSSCSSERVICERESP_TD, "CMmCustomMessHandler::GssCsServiceResp - Complete ECustomSetSystemNetworkModeIPC" );
  2861             //completion ResetGssServer method (no packed parameters)
  2852             //completion ResetGssServer method (no packed parameters)
  2862             iMessageRouter->Complete( ECustomSetSystemNetworkModeIPC, KErrNone );
  2853             iMessageRouter->Complete( ECustomSetSystemNetworkModeIPC, KErrNone );
  2863             }
  2854             }
  2864         // GSS_SELECTED_RAT_READ (0x9C)
  2855         // GSS_SELECTED_RAT_READ (0x9C)
  2865         else if ( GSS_SELECTED_RAT_READ == operation )
  2856         else if ( GSS_SELECTED_RAT_READ == operation )
  2866             {
  2857             {
  2867 TFLOGSTRING("TSY: CMmCustomMessHandler::GssCsServiceResp - Complete ECustomGetCurrentSystemNetworkModesIPC");
  2858 TFLOGSTRING("TSY: CMmCustomMessHandler::GssCsServiceResp - Complete ECustomGetCurrentSystemNetworkModesIPC");
  2868 OstTrace0( TRACE_NORMAL, DUP3_CMMCUSTOMMESSHANDLER_GSSCSSERVICERESP, "CMmCustomMessHandler::GssCsServiceResp - Complete ECustomGetCurrentSystemNetworkModesIPC" );
  2859 OstTrace0( TRACE_NORMAL,  DUP3_CMMCUSTOMMESSHANDLER_GSSCSSERVICERESP_TD, "CMmCustomMessHandler::GssCsServiceResp - Complete ECustomGetCurrentSystemNetworkModesIPC" );
  2869             TInt err( KErrNone );
  2860             TInt err( KErrNone );
  2870             TUint32 ratMode ( RMmCustomAPI::KCapsNetworkModeDual );
  2861             TUint32 ratMode ( RMmCustomAPI::KCapsNetworkModeDual );
  2871             TUint subblockOffset( 0 );
  2862             TUint subblockOffset( 0 );
  2872             if ( KErrNone == aIsiMessage.FindSubBlockOffsetById(
  2863             if ( KErrNone == aIsiMessage.FindSubBlockOffsetById(
  2873                 ISI_HEADER_SIZE + SIZE_GSS_CS_SERVICE_RESP,
  2864                 ISI_HEADER_SIZE + SIZE_GSS_CS_SERVICE_RESP,
  2895                         break;
  2886                         break;
  2896                         }
  2887                         }
  2897                     default:
  2888                     default:
  2898                         {
  2889                         {
  2899 TFLOGSTRING("TSY: CMmCustomMessHandler::GssCsServiceResp - Unrecognized RAT");
  2890 TFLOGSTRING("TSY: CMmCustomMessHandler::GssCsServiceResp - Unrecognized RAT");
  2900 OstTrace0( TRACE_NORMAL, DUP4_CMMCUSTOMMESSHANDLER_GSSCSSERVICERESP, "CMmCustomMessHandler::GssCsServiceResp - Unrecognized RAT" );
  2891 OstTrace0( TRACE_NORMAL,  DUP4_CMMCUSTOMMESSHANDLER_GSSCSSERVICERESP_TD, "CMmCustomMessHandler::GssCsServiceResp - Unrecognized RAT" );
  2901                         err = KErrGeneral;
  2892                         err = KErrGeneral;
  2902                         break;
  2893                         break;
  2903                         }
  2894                         }
  2904                     }
  2895                     }
  2905                 }
  2896                 }
  2917 #if ( NCP_COMMON_S60_VERSION_SUPPORT != S60_VERSION_32 )
  2908 #if ( NCP_COMMON_S60_VERSION_SUPPORT != S60_VERSION_32 )
  2918         // GSS_SELECTED_BANDS_WRITE (0x9D)
  2909         // GSS_SELECTED_BANDS_WRITE (0x9D)
  2919         else if ( GSS_SELECTED_BANDS_WRITE == operation )
  2910         else if ( GSS_SELECTED_BANDS_WRITE == operation )
  2920             {
  2911             {
  2921 TFLOGSTRING("TSY: CMmCustomMessHandler::GssCsServiceResp - Complete ECustomSetBandSelectionIPC");
  2912 TFLOGSTRING("TSY: CMmCustomMessHandler::GssCsServiceResp - Complete ECustomSetBandSelectionIPC");
  2922 OstTrace0( TRACE_NORMAL, DUP2_CMMCUSTOMMESSHANDLER_GSSCSSERVICERESP, "CMmCustomMessHandler::GssCsServiceResp - Complete ECustomSetBandSelectionIPC" );
  2913 OstTrace0( TRACE_NORMAL,  DUP2_CMMCUSTOMMESSHANDLER_GSSCSSERVICERESP_TD, "CMmCustomMessHandler::GssCsServiceResp - Complete ECustomSetBandSelectionIPC" );
  2923             iMessageRouter->Complete( ECustomSetBandSelectionIPC, KErrNone );
  2914             iMessageRouter->Complete( ECustomSetBandSelectionIPC, KErrNone );
  2924             }
  2915             }
  2925         // GSS_SELECTED_BANDS_READ (0x9E)
  2916         // GSS_SELECTED_BANDS_READ (0x9E)
  2926         else if ( GSS_SELECTED_BANDS_READ == operation )
  2917         else if ( GSS_SELECTED_BANDS_READ == operation )
  2927             {
  2918             {
  2941 //
  2932 //
  2942 void CMmCustomMessHandler::GssCsServiceFailResp (
  2933 void CMmCustomMessHandler::GssCsServiceFailResp (
  2943         const TIsiReceiveC& aIsiMessage ) // Received isi message
  2934         const TIsiReceiveC& aIsiMessage ) // Received isi message
  2944     {
  2935     {
  2945     TFLOGSTRING( "TSY: CMmCustomMessHandler::GssCsServiceFailResp" );
  2936     TFLOGSTRING( "TSY: CMmCustomMessHandler::GssCsServiceFailResp" );
  2946 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_GSSCSSERVICEFAILRESP, "CMmCustomMessHandler::GssCsServiceFailResp" );
  2937 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_GSSCSSERVICEFAILRESP_TD, "CMmCustomMessHandler::GssCsServiceFailResp" );
  2947 
  2938 
  2948     TUint8 transactId ( aIsiMessage.Get8bit( ISI_HEADER_SIZE +
  2939     TUint8 transactId ( aIsiMessage.Get8bit( ISI_HEADER_SIZE +
  2949         GSS_CS_SERVICE_FAIL_RESP_OFFSET_TRANSID ) );
  2940         GSS_CS_SERVICE_FAIL_RESP_OFFSET_TRANSID ) );
  2950     TUint8 operation ( aIsiMessage.Get8bit( ISI_HEADER_SIZE +
  2941     TUint8 operation ( aIsiMessage.Get8bit( ISI_HEADER_SIZE +
  2951         GSS_CS_SERVICE_FAIL_RESP_OFFSET_OPERATION ) );
  2942         GSS_CS_SERVICE_FAIL_RESP_OFFSET_OPERATION ) );
  2953     // GSS_SELECTED_RAT_WRITE (0x0E)
  2944     // GSS_SELECTED_RAT_WRITE (0x0E)
  2954     if ( KCustomTransId == transactId && GSS_SELECTED_RAT_WRITE == operation )
  2945     if ( KCustomTransId == transactId && GSS_SELECTED_RAT_WRITE == operation )
  2955         {
  2946         {
  2956         //completion ResetGssServer method (no packed parameters)
  2947         //completion ResetGssServer method (no packed parameters)
  2957         TFLOGSTRING("TSY: CMmCustomMessHandler::GssCsServiceFailResp - ECustomSetSystemNetworkModeIPC");
  2948         TFLOGSTRING("TSY: CMmCustomMessHandler::GssCsServiceFailResp - ECustomSetSystemNetworkModeIPC");
  2958 OstTrace0( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_GSSCSSERVICEFAILRESP, "CMmCustomMessHandler::GssCsServiceFailResp - ECustomSetSystemNetworkModeIPC" );
  2949 OstTrace0( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_GSSCSSERVICEFAILRESP_TD, "CMmCustomMessHandler::GssCsServiceFailResp - ECustomSetSystemNetworkModeIPC" );
  2959         iMessageRouter->Complete( ECustomSetSystemNetworkModeIPC, KErrGeneral );
  2950         iMessageRouter->Complete( ECustomSetSystemNetworkModeIPC, KErrGeneral );
  2960         }
  2951         }
  2961 // not suppoted for S60 ver 3.2
  2952 // not suppoted for S60 ver 3.2
  2962 #if ( NCP_COMMON_S60_VERSION_SUPPORT != S60_VERSION_32 )
  2953 #if ( NCP_COMMON_S60_VERSION_SUPPORT != S60_VERSION_32 )
  2963 
  2954 
  2964     else if ( GSS_SELECTED_BANDS_WRITE == operation )
  2955     else if ( GSS_SELECTED_BANDS_WRITE == operation )
  2965         {
  2956         {
  2966         TFLOGSTRING("TSY: CMmCustomMessHandler::GssCsServiceFailResp - ECustomSetBandSelectionIPC");
  2957         TFLOGSTRING("TSY: CMmCustomMessHandler::GssCsServiceFailResp - ECustomSetBandSelectionIPC");
  2967 OstTrace0( TRACE_NORMAL, DUP2_CMMCUSTOMMESSHANDLER_GSSCSSERVICEFAILRESP, "CMmCustomMessHandler::GssCsServiceFailResp - ECustomSetBandSelectionIPC" );
  2958 OstTrace0( TRACE_NORMAL,  DUP2_CMMCUSTOMMESSHANDLER_GSSCSSERVICEFAILRESP_TD, "CMmCustomMessHandler::GssCsServiceFailResp - ECustomSetBandSelectionIPC" );
  2968         iMessageRouter->Complete( ECustomSetBandSelectionIPC, KErrGeneral );
  2959         iMessageRouter->Complete( ECustomSetBandSelectionIPC, KErrGeneral );
  2969         }
  2960         }
  2970     else if ( GSS_SELECTED_BANDS_READ == operation )
  2961     else if ( GSS_SELECTED_BANDS_READ == operation )
  2971         {
  2962         {
  2972         TFLOGSTRING("TSY: CMmCustomMessHandler::GssCsServiceFailResp - ECustomGetBandSelectionIPC");
  2963         TFLOGSTRING("TSY: CMmCustomMessHandler::GssCsServiceFailResp - ECustomGetBandSelectionIPC");
  2973 OstTrace0( TRACE_NORMAL, DUP3_CMMCUSTOMMESSHANDLER_GSSCSSERVICEFAILRESP, "CMmCustomMessHandler::GssCsServiceFailResp - ECustomGetBandSelectionIPC" );
  2964 OstTrace0( TRACE_NORMAL,  DUP3_CMMCUSTOMMESSHANDLER_GSSCSSERVICEFAILRESP_TD, "CMmCustomMessHandler::GssCsServiceFailResp - ECustomGetBandSelectionIPC" );
  2974         iMessageRouter->Complete( ECustomGetBandSelectionIPC, KErrGeneral );
  2965         iMessageRouter->Complete( ECustomGetBandSelectionIPC, KErrGeneral );
  2975         }
  2966         }
  2976 #endif // NCP_COMMON_S60_VERSION_SUPPORT
  2967 #endif // NCP_COMMON_S60_VERSION_SUPPORT
  2977     }
  2968     }
  2978 
  2969 
  2983 //
  2974 //
  2984 TInt CMmCustomMessHandler::UiccReadFieldReq(
  2975 TInt CMmCustomMessHandler::UiccReadFieldReq(
  2985     RMmCustomAPI::TSimFileInfo& aSimFileInfo )
  2976     RMmCustomAPI::TSimFileInfo& aSimFileInfo )
  2986     {
  2977     {
  2987 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccReadFieldReq" );
  2978 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccReadFieldReq" );
  2988 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCREADFIELDREQ, "CMmCustomMessHandler::UiccReadFieldReq" );
  2979 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCREADFIELDREQ_TD, "CMmCustomMessHandler::UiccReadFieldReq" );
  2989 
  2980 
  2990     // We have received only file path, file ID is two last bytes of path
  2981     // We have received only file path, file ID is two last bytes of path
  2991     TInt length( aSimFileInfo.iPath.Length() );
  2982     TInt length( aSimFileInfo.iPath.Length() );
  2992     TBuf8<2> temp;
  2983     TBuf8<2> temp;
  2993     if ( 2 <= length )
  2984     if ( 2 <= length )
  3013 // CMmCustomMessHandler::UiccReadFieldResp
  3004 // CMmCustomMessHandler::UiccReadFieldResp
  3014 // Complete read file
  3005 // Complete read file
  3015 // -----------------------------------------------------------------------------
  3006 // -----------------------------------------------------------------------------
  3016 //
  3007 //
  3017 void CMmCustomMessHandler::UiccReadFieldResp(
  3008 void CMmCustomMessHandler::UiccReadFieldResp(
  3018     TInt aStatus,
  3009     TUint8 aStatus,
  3019     const TDesC8& aFileData )
  3010     const TDesC8& aFileData )
  3020     {
  3011     {
  3021 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccReadFieldResp" );
  3012 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccReadFieldResp" );
  3022 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCREADFIELDRESP, "CMmCustomMessHandler::UiccReadFieldResp" );
  3013 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCREADFIELDRESP_TD, "CMmCustomMessHandler::UiccReadFieldResp" );
  3023 
  3014 
  3024     TInt error( KErrNone );
  3015     TInt error( KErrNone );
  3025     if ( aStatus != KErrNone )
  3016     if ( aStatus != UICC_STATUS_OK )
  3026         {
  3017         {
  3027         error = KErrNotFound;
  3018         error = KErrNotFound;
  3028         }
  3019         }
  3029 
  3020 
  3030     // Packed parameter for completion: pointer to TDesC8 with data
  3021     // Packed parameter for completion: pointer to TDesC8 with data
  3046         TUint8 aTransId, // transaction Id
  3037         TUint8 aTransId, // transaction Id
  3047         TBool aUseCurrentRats // use current rats setting
  3038         TBool aUseCurrentRats // use current rats setting
  3048         )
  3039         )
  3049     {
  3040     {
  3050 TFLOGSTRING("TSY: CMmCustomMessHandler::NetRatReq");
  3041 TFLOGSTRING("TSY: CMmCustomMessHandler::NetRatReq");
  3051 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_NETRATREQ, "CMmCustomMessHandler::NetRatReq" );
  3042 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_NETRATREQ_TD, "CMmCustomMessHandler::NetRatReq" );
  3052 
  3043 
  3053 TFLOGSTRING3( "TSY: CCMmCustomMessHandler::NetRatReq - aTransId: %d, aUseCurrentRats: %d", aTransId, aUseCurrentRats );
  3044 TFLOGSTRING3( "TSY: CCMmCustomMessHandler::NetRatReq - aTransId: %d, aUseCurrentRats: %d", aTransId, aUseCurrentRats );
  3054 OstTraceExt2( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_NETRATREQ, "CMmCustomMessHandler::NetRatReq;aTransId=%hhu;aUseCurrentRats=%hhu", aTransId, aUseCurrentRats );
  3045 OstTraceExt2( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_NETRATREQ_TD, "CMmCustomMessHandler::NetRatReq;aTransId=%hhu;aUseCurrentRats=%hhu", aTransId, aUseCurrentRats );
  3055 
  3046 
  3056     // Create message data buffer for service type, buffer size is 1
  3047     // Create message data buffer for service type, buffer size is 1
  3057     TBuf8<1> messageData;
  3048     TBuf8<1> messageData;
  3058     // Append service type
  3049     // Append service type
  3059     if ( aUseCurrentRats )
  3050     if ( aUseCurrentRats )
  3087         )
  3078         )
  3088     {
  3079     {
  3089 
  3080 
  3090     TFLOGSTRING2( "TSY: CMmCustomMessHandler::GssCsServiceReq - aTransId: %d",
  3081     TFLOGSTRING2( "TSY: CMmCustomMessHandler::GssCsServiceReq - aTransId: %d",
  3091                     aTransId );
  3082                     aTransId );
  3092 OstTraceExt1( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_GSSCSSERVICEREQ, "CMmCustomMessHandler::GssCsServiceReq;aTransId=%hhu", aTransId );
  3083 OstTraceExt1( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_GSSCSSERVICEREQ_TD, "CMmCustomMessHandler::GssCsServiceReq;aTransId=%hhu", aTransId );
  3093 
  3084 
  3094     // create message data buffer for service type, buffer size is 6
  3085     // create message data buffer for service type, buffer size is 6
  3095     TBuf8< KGssCsBufferSize > messageData;
  3086     TBuf8< KGssCsBufferSize > messageData;
  3096 
  3087 
  3097     // append service type, GSS_SELECTED_RAT_WRITE (0x0E)
  3088     // append service type, GSS_SELECTED_RAT_WRITE (0x0E)
  3142         (
  3133         (
  3143         TUint8 aTransId   //transaction Id
  3134         TUint8 aTransId   //transaction Id
  3144         )
  3135         )
  3145     {
  3136     {
  3146 TFLOGSTRING( "TSY: CMmCustomMessHandler::GssCsServiceReq" );
  3137 TFLOGSTRING( "TSY: CMmCustomMessHandler::GssCsServiceReq" );
  3147 OstTrace0( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_GSSCSSERVICEREQ, "CMmCustomMessHandler::GssCsServiceReq" );
  3138 OstTrace0( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_GSSCSSERVICEREQ_TD, "CMmCustomMessHandler::GssCsServiceReq" );
  3148 
  3139 
  3149     TBuf8<KTwo> messageData;
  3140     TBuf8<KTwo> messageData;
  3150 
  3141 
  3151     messageData.Append( GSS_SELECTED_RAT_READ );
  3142     messageData.Append( GSS_SELECTED_RAT_READ );
  3152     messageData.Append( 0 ); // number of subblocks
  3143     messageData.Append( 0 ); // number of subblocks
  3178     TInt ret( KErrNone );
  3169     TInt ret( KErrNone );
  3179 
  3170 
  3180     TUint8 transId = KCustomTransId;
  3171     TUint8 transId = KCustomTransId;
  3181 
  3172 
  3182     TFLOGSTRING2("TSY: CMmCustomMessHandler::ExtFuncL -- aIpc -- (%d)", aIpc );
  3173     TFLOGSTRING2("TSY: CMmCustomMessHandler::ExtFuncL -- aIpc -- (%d)", aIpc );
  3183 OstTrace1( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_EXTFUNCL, "CMmCustomMessHandler::ExtFuncL;aIpc=%d", aIpc );
  3174 OstTrace1( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_EXTFUNCL_TD, "CMmCustomMessHandler::ExtFuncL;aIpc=%d", aIpc );
  3184 
  3175 
  3185     switch ( aIpc )
  3176     switch ( aIpc )
  3186         {
  3177         {
  3187         case ECustomCancelUssdSessionIPC:
  3178         case ECustomCancelUssdSessionIPC:
  3188             {
  3179             {
  3226             // call id means all calls. Taking absolute value of it gives
  3217             // call id means all calls. Taking absolute value of it gives
  3227             // alerting call id.
  3218             // alerting call id.
  3228             if ( 0 >= callId )
  3219             if ( 0 >= callId )
  3229                 {
  3220                 {
  3230                 TFLOGSTRING("TSY: CMmCustomMessHandler::ExtFuncL -- ECustomTerminateCallIPC -- (hold+active+alerting)");
  3221                 TFLOGSTRING("TSY: CMmCustomMessHandler::ExtFuncL -- ECustomTerminateCallIPC -- (hold+active+alerting)");
  3231 OstTrace0( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_EXTFUNCL, "CMmCustomMessHandler::ExtFuncL - ECustomTerminateCallIPC - (hold+active+alerting)" );
  3222 OstTrace0( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_EXTFUNCL_TD, "CMmCustomMessHandler::ExtFuncL - ECustomTerminateCallIPC - (hold+active+alerting)" );
  3232                 // alerting call (if any) is included as negated value..
  3223                 // alerting call (if any) is included as negated value..
  3233                 callIdISA = TUint8( CALL_MODEM_ID_HOLD | CALL_MODEM_ID_ACTIVE | ( -callId ));
  3224                 callIdISA = TUint8( CALL_MODEM_ID_HOLD | CALL_MODEM_ID_ACTIVE | ( -callId ));
  3234                 }
  3225                 }
  3235             else if ( 1 <= callId && 7 >= callId )
  3226             else if ( 1 <= callId && 7 >= callId )
  3236                 {
  3227                 {
  3237                 TFLOGSTRING2("TSY: CMmCustomMessHandler::ExtFuncL -- ECustomTerminateCallIPC -- (%d)", TInt(callId) );
  3228                 TFLOGSTRING2("TSY: CMmCustomMessHandler::ExtFuncL -- ECustomTerminateCallIPC -- (%d)", TInt(callId) );
  3238 OstTrace1( TRACE_NORMAL, DUP3_CMMCUSTOMMESSHANDLER_EXTFUNCL, "CMmCustomMessHandler::ExtFuncL;callId=%d", callId );
  3229 OstTrace1( TRACE_NORMAL,  DUP3_CMMCUSTOMMESSHANDLER_EXTFUNCL_TD, "CMmCustomMessHandler::ExtFuncL;callId=%d", callId );
  3239                 callIdISA = static_cast<TUint8>( callId );
  3230                 callIdISA = static_cast<TUint8>( callId );
  3240                 }
  3231                 }
  3241             else
  3232             else
  3242                 {
  3233                 {
  3243                 // no call found
  3234                 // no call found
  3520 
  3511 
  3521         default:
  3512         default:
  3522             {
  3513             {
  3523             // this method should only be called for Custom Tsy cases
  3514             // this method should only be called for Custom Tsy cases
  3524             TFLOGSTRING2("TSY: CMmCustomMessHandler::ExtFuncL - Unknown IPC: %d", aIpc);
  3515             TFLOGSTRING2("TSY: CMmCustomMessHandler::ExtFuncL - Unknown IPC: %d", aIpc);
  3525 OstTrace1( TRACE_NORMAL, DUP2_CMMCUSTOMMESSHANDLER_EXTFUNCL, "CMmCustomMessHandler::ExtFuncL;aIpc=%d", aIpc );
  3516 OstTrace1( TRACE_NORMAL,  DUP2_CMMCUSTOMMESSHANDLER_EXTFUNCL_TD, "CMmCustomMessHandler::ExtFuncL;aIpc=%d", aIpc );
  3526             ret = KErrArgument;
  3517             ret = KErrArgument;
  3527             break;
  3518             break;
  3528             }
  3519             }
  3529         }
  3520         }
  3530 
  3521 
  3542     TInt aStatus,
  3533     TInt aStatus,
  3543     TUint8 /*aDetails*/,
  3534     TUint8 /*aDetails*/,
  3544     const TDesC8& aFileData )
  3535     const TDesC8& aFileData )
  3545     {
  3536     {
  3546 TFLOGSTRING3("TSY: CMmCustomMessHandler::ProcessUiccMsg, transaction ID: %d, status: %d", aTraId, aStatus );
  3537 TFLOGSTRING3("TSY: CMmCustomMessHandler::ProcessUiccMsg, transaction ID: %d, status: %d", aTraId, aStatus );
  3547 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_PROCESSUICCMSG, "CMmCustomMessHandler::ProcessUiccMsg" );
  3538 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_PROCESSUICCMSG_TD, "CMmCustomMessHandler::ProcessUiccMsg" );
  3548 
  3539 
  3549     TInt ret( KErrNone );
  3540     TInt ret( KErrNone );
  3550 
  3541 
  3551     switch( aTraId )
  3542     switch( aTraId )
  3552         {
  3543         {
  3703             break;
  3694             break;
  3704             }
  3695             }
  3705         default:
  3696         default:
  3706             {
  3697             {
  3707 TFLOGSTRING("TSY: CMmNetMessHandler::ProcessUiccMsg - unknown transaction ID" );
  3698 TFLOGSTRING("TSY: CMmNetMessHandler::ProcessUiccMsg - unknown transaction ID" );
  3708 OstTrace0( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_PROCESSUICCMSG, "CMmCustomMessHandler::ProcessUiccMsg - unknown transaction ID" );
  3699 OstTrace0( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_PROCESSUICCMSG_TD, "CMmCustomMessHandler::ProcessUiccMsg - unknown transaction ID" );
  3709 
  3700 
  3710             break;
  3701             break;
  3711             }
  3702             }
  3712         }
  3703         }
  3713     return ret;
  3704     return ret;
  3719 // -----------------------------------------------------------------------------
  3710 // -----------------------------------------------------------------------------
  3720 //
  3711 //
  3721 TInt CMmCustomMessHandler::UiccReadViagHomeZoneParametersReq()
  3712 TInt CMmCustomMessHandler::UiccReadViagHomeZoneParametersReq()
  3722     {
  3713     {
  3723 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccReadViagHomeZoneParametersReq" );
  3714 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccReadViagHomeZoneParametersReq" );
  3724 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCREADVIAGHOMEZONEPARAMETERSREQ, "CMmCustomMessHandler::UiccReadViagHomeZoneParametersReq" );
  3715 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCREADVIAGHOMEZONEPARAMETERSREQ_TD, "CMmCustomMessHandler::UiccReadViagHomeZoneParametersReq" );
  3725 
  3716 
  3726     // Set parameters for UICC_APPL_CMD_REQ message
  3717     // Set parameters for UICC_APPL_CMD_REQ message
  3727     TUiccReadTransparent params;
  3718     TUiccReadTransparent params;
  3728     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  3719     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  3729     params.trId = ETrIdReadViagHomeZoneParamsCustom;
  3720     params.trId = ETrIdReadViagHomeZoneParamsCustom;
  3745 // CMmCustomMessHandler::UiccReadViagHomeZoneParametersResp
  3736 // CMmCustomMessHandler::UiccReadViagHomeZoneParametersResp
  3746 // Complete home zone parameters
  3737 // Complete home zone parameters
  3747 // -----------------------------------------------------------------------------
  3738 // -----------------------------------------------------------------------------
  3748 //
  3739 //
  3749 void CMmCustomMessHandler::UiccReadViagHomeZoneParametersResp(
  3740 void CMmCustomMessHandler::UiccReadViagHomeZoneParametersResp(
  3750     TInt aStatus,
  3741     TUint8 aStatus,
  3751     const TDesC8& aFileData )
  3742     const TDesC8& aFileData )
  3752     {
  3743     {
  3753 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccReadViagHomeZoneParametersResp" );
  3744 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccReadViagHomeZoneParametersResp" );
  3754 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCREADVIAGHOMEZONEPARAMETERSRESP, "CMmCustomMessHandler::UiccReadViagHomeZoneParametersResp" );
  3745 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCREADVIAGHOMEZONEPARAMETERSRESP_TD, "CMmCustomMessHandler::UiccReadViagHomeZoneParametersResp" );
  3755 
  3746 
  3756     TInt error( KErrNone );
  3747     TInt error( KErrNone );
  3757     if ( KErrNone == aStatus )
  3748     if ( UICC_STATUS_OK == aStatus )
  3758         {
  3749         {
  3759         TUint8 length( 0 );
  3750         TUint8 length( 0 );
  3760         TUint8 i( 0 );
  3751         TUint8 i( 0 );
  3761         TUint8 j( 0 );
  3752         TUint8 j( 0 );
  3762         TUint8 index( 2 );
  3753         TUint8 index( 2 );
  3900 //
  3891 //
  3901 TInt CMmCustomMessHandler::UiccReadViagHomeZoneCacheReq(
  3892 TInt CMmCustomMessHandler::UiccReadViagHomeZoneCacheReq(
  3902     const RMmCustomAPI::TViagCacheRecordId& aRecordId )
  3893     const RMmCustomAPI::TViagCacheRecordId& aRecordId )
  3903     {
  3894     {
  3904 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccReadViagHomeZoneCacheReq" );
  3895 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccReadViagHomeZoneCacheReq" );
  3905 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCREADVIAGHOMEZONECACHEREQ, "CMmCustomMessHandler::UiccReadViagHomeZoneCacheReq" );
  3896 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCREADVIAGHOMEZONECACHEREQ_TD, "CMmCustomMessHandler::UiccReadViagHomeZoneCacheReq" );
  3906 
  3897 
  3907     TUint8 cacheId( aRecordId.iCacheId );
  3898     TUint8 cacheId( aRecordId.iCacheId );
  3908     TUint8 recordId( aRecordId.iRecordId );
  3899     TUint8 recordId( aRecordId.iRecordId );
  3909     TUint16 fileId( 0 );
  3900     TUint16 fileId( 0 );
  3910 
  3901 
  3966 // CMmCustomMessHandler::UiccReadViagHomeZoneCacheResp
  3957 // CMmCustomMessHandler::UiccReadViagHomeZoneCacheResp
  3967 // Complete home zone cache
  3958 // Complete home zone cache
  3968 // -----------------------------------------------------------------------------
  3959 // -----------------------------------------------------------------------------
  3969 //
  3960 //
  3970 void CMmCustomMessHandler::UiccReadViagHomeZoneCacheResp(
  3961 void CMmCustomMessHandler::UiccReadViagHomeZoneCacheResp(
  3971     TInt aStatus,
  3962     TUint8 aStatus,
  3972     const TDesC8& aFileData )
  3963     const TDesC8& aFileData )
  3973     {
  3964     {
  3974 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccReadViagHomeZoneCacheResp" );
  3965 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccReadViagHomeZoneCacheResp" );
  3975 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCREADVIAGHOMEZONECACHERESP, "CMmCustomMessHandler::UiccReadViagHomeZoneCacheResp" );
  3966 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCREADVIAGHOMEZONECACHERESP_TD, "CMmCustomMessHandler::UiccReadViagHomeZoneCacheResp" );
  3976 
  3967 
  3977     TInt ret( KErrAccessDenied );
  3968     TInt ret( KErrAccessDenied );
  3978 
  3969 
  3979     RMmCustomAPI::TViagCacheRecordContent viagRecord;
  3970     RMmCustomAPI::TViagCacheRecordContent viagRecord;
  3980 
  3971 
  3981     if ( KErrNone == aStatus )
  3972     if ( UICC_STATUS_OK == aStatus )
  3982         {
  3973         {
  3983         viagRecord.iLac = ( aFileData[0] << 8 ) | aFileData[1];
  3974         viagRecord.iLac = ( aFileData[0] << 8 ) | aFileData[1];
  3984         viagRecord.iCellId = ( aFileData[2] << 8 ) | aFileData[3];
  3975         viagRecord.iCellId = ( aFileData[2] << 8 ) | aFileData[3];
  3985         ret = KErrNone;
  3976         ret = KErrNone;
  3986         }
  3977         }
  4007 TInt CMmCustomMessHandler::UiccWriteViagHomeZoneCacheReq(
  3998 TInt CMmCustomMessHandler::UiccWriteViagHomeZoneCacheReq(
  4008     const RMmCustomAPI::TViagCacheRecordId& aRecordId,
  3999     const RMmCustomAPI::TViagCacheRecordId& aRecordId,
  4009     const RMmCustomAPI::TViagCacheRecordContent& aViagRecordContent )
  4000     const RMmCustomAPI::TViagCacheRecordContent& aViagRecordContent )
  4010     {
  4001     {
  4011 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccWriteViagHomeZoneCacheReq" );
  4002 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccWriteViagHomeZoneCacheReq" );
  4012 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCWRITEVIAGHOMEZONECACHEREQ, "CMmCustomMessHandler::UiccWriteViagHomeZoneCacheReq" );
  4003 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCWRITEVIAGHOMEZONECACHEREQ_TD, "CMmCustomMessHandler::UiccWriteViagHomeZoneCacheReq" );
  4013 
  4004 
  4014     TUint8 cacheId( (TUint8)aRecordId.iCacheId );
  4005     TUint8 cacheId( (TUint8)aRecordId.iCacheId );
  4015     TUint8 recordId( (TUint8)aRecordId.iRecordId );
  4006     TUint8 recordId( (TUint8)aRecordId.iRecordId );
  4016     TUint16 lac( (TUint16)aViagRecordContent.iLac );
  4007     TUint16 lac( (TUint16)aViagRecordContent.iLac );
  4017     TUint16 cellId( (TUint16)aViagRecordContent.iCellId );
  4008     TUint16 cellId( (TUint16)aViagRecordContent.iCellId );
  4083 // -----------------------------------------------------------------------------
  4074 // -----------------------------------------------------------------------------
  4084 // CMmCustomMessHandler::UiccWriteViagHomeZoneCacheResp
  4075 // CMmCustomMessHandler::UiccWriteViagHomeZoneCacheResp
  4085 // Complete home zone cache
  4076 // Complete home zone cache
  4086 // -----------------------------------------------------------------------------
  4077 // -----------------------------------------------------------------------------
  4087 //
  4078 //
  4088 void CMmCustomMessHandler::UiccWriteViagHomeZoneCacheResp( TInt aStatus )
  4079 void CMmCustomMessHandler::UiccWriteViagHomeZoneCacheResp( TUint8 aStatus )
  4089     {
  4080     {
  4090 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccWriteViagHomeZoneCacheResp" );
  4081 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccWriteViagHomeZoneCacheResp" );
  4091 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCWRITEVIAGHOMEZONECACHERESP, "CMmCustomMessHandler::UiccWriteViagHomeZoneCacheResp" );
  4082 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCWRITEVIAGHOMEZONECACHERESP_TD, "CMmCustomMessHandler::UiccWriteViagHomeZoneCacheResp" );
  4092 
  4083 
  4093     if ( KErrNone == aStatus )
  4084     if ( UICC_STATUS_OK == aStatus )
  4094         {
  4085         {
  4095         iMessageRouter->Complete( EWriteViagHomeZoneCacheIPC, KErrNone );
  4086         iMessageRouter->Complete( EWriteViagHomeZoneCacheIPC, KErrNone );
  4096         }
  4087         }
  4097     else
  4088     else
  4098         {
  4089         {
  4107 //
  4098 //
  4108 TInt CMmCustomMessHandler::UiccWriteViagHomeZoneUhziueSettingsReq(
  4099 TInt CMmCustomMessHandler::UiccWriteViagHomeZoneUhziueSettingsReq(
  4109     const RMmCustomAPI::TViagUHZIUESettings& aUhziuiSettings )
  4100     const RMmCustomAPI::TViagUHZIUESettings& aUhziuiSettings )
  4110     {
  4101     {
  4111 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccWriteViagHomeZoneUhziueSettingsReq" );
  4102 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccWriteViagHomeZoneUhziueSettingsReq" );
  4112 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCWRITEVIAGHOMEZONEUHZIUESETTINGSREQ, "CMmCustomMessHandler::UiccWriteViagHomeZoneUhziueSettingsReq" );
  4103 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCWRITEVIAGHOMEZONEUHZIUESETTINGSREQ_TD, "CMmCustomMessHandler::UiccWriteViagHomeZoneUhziueSettingsReq" );
  4113 
  4104 
  4114     TUint8 settingsField( aUhziuiSettings.iSettings );
  4105     TUint8 settingsField( aUhziuiSettings.iSettings );
  4115     TUint8 versionField( aUhziuiSettings.iVersion );
  4106     TUint8 versionField( aUhziuiSettings.iVersion );
  4116 
  4107 
  4117     // Set parameters for UICC_APPL_CMD_REQ message
  4108     // Set parameters for UICC_APPL_CMD_REQ message
  4143 // CMmCustomMessHandler::UiccWriteViagHomeZoneUhziueSettingsResp
  4134 // CMmCustomMessHandler::UiccWriteViagHomeZoneUhziueSettingsResp
  4144 // Complete home zone settings
  4135 // Complete home zone settings
  4145 // -----------------------------------------------------------------------------
  4136 // -----------------------------------------------------------------------------
  4146 //
  4137 //
  4147 void CMmCustomMessHandler::UiccWriteViagHomeZoneUhziueSettingsResp(
  4138 void CMmCustomMessHandler::UiccWriteViagHomeZoneUhziueSettingsResp(
  4148     TInt aStatus )
  4139     TUint8 aStatus )
  4149     {
  4140     {
  4150 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccWriteViagHomeZoneUhziueSettingsResp" );
  4141 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccWriteViagHomeZoneUhziueSettingsResp" );
  4151 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCWRITEVIAGHOMEZONEUHZIUESETTINGSRESP, "CMmCustomMessHandler::UiccWriteViagHomeZoneUhziueSettingsResp" );
  4142 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCWRITEVIAGHOMEZONEUHZIUESETTINGSRESP_TD, "CMmCustomMessHandler::UiccWriteViagHomeZoneUhziueSettingsResp" );
  4152 
  4143 
  4153     TInt status( KErrAccessDenied );
  4144     TInt status( KErrAccessDenied );
  4154 
  4145 
  4155     if ( KErrNone == aStatus  )
  4146     if ( UICC_STATUS_OK == aStatus  )
  4156         {
  4147         {
  4157         status = KErrNone;
  4148         status = KErrNone;
  4158         }
  4149         }
  4159     iMessageRouter->Complete( EWriteViagHomeZoneUHZIUESettingsIPC, status );
  4150     iMessageRouter->Complete( EWriteViagHomeZoneUHZIUESettingsIPC, status );
  4160     }
  4151     }
  4165 // -----------------------------------------------------------------------------
  4156 // -----------------------------------------------------------------------------
  4166 //
  4157 //
  4167 TInt CMmCustomMessHandler::UiccReadCbMsgIdsReq( TUiccTrId aTrId )
  4158 TInt CMmCustomMessHandler::UiccReadCbMsgIdsReq( TUiccTrId aTrId )
  4168     {
  4159     {
  4169 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccReadCbMsgIdsReq" );
  4160 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccReadCbMsgIdsReq" );
  4170 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCREADCBMSGIDSREQ, "CMmCustomMessHandler::UiccReadCbMsgIdsReq" );
  4161 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCREADCBMSGIDSREQ_TD, "CMmCustomMessHandler::UiccReadCbMsgIdsReq" );
  4171 
  4162 
  4172     // Set parameters for UICC_APPL_CMD_REQ message
  4163     // Set parameters for UICC_APPL_CMD_REQ message
  4173     TUiccReadTransparent params;
  4164     TUiccReadTransparent params;
  4174     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  4165     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  4175     params.trId = aTrId;
  4166     params.trId = aTrId;
  4191 // CMmCustomMessHandler::UiccReadCbMsgIdsResp
  4182 // CMmCustomMessHandler::UiccReadCbMsgIdsResp
  4192 // Complete CB message IDs
  4183 // Complete CB message IDs
  4193 // -----------------------------------------------------------------------------
  4184 // -----------------------------------------------------------------------------
  4194 //
  4185 //
  4195 void CMmCustomMessHandler::UiccReadCbMsgIdsResp(
  4186 void CMmCustomMessHandler::UiccReadCbMsgIdsResp(
  4196     TInt aStatus,
  4187     TUint8 aStatus,
  4197     TInt aTraId,
  4188     TInt aTraId,
  4198     const TDesC8& aFileData )
  4189     const TDesC8& aFileData )
  4199     {
  4190     {
  4200 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccReadCbMsgIdsResp" );
  4191 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccReadCbMsgIdsResp" );
  4201 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCREADCBMSGIDSRESP, "CMmCustomMessHandler::UiccReadCbMsgIdsResp" );
  4192 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCREADCBMSGIDSRESP_TD, "CMmCustomMessHandler::UiccReadCbMsgIdsResp" );
  4202 
  4193 
  4203     TInt numOfCbIds( 0 );
  4194     TInt err( KErrNone );
  4204     // File data in bytes
  4195 
  4205     TInt length( aFileData.Length() );
  4196     TPtrC16 cbIdsBigEndian( reinterpret_cast<const TUint16*>( aFileData.Ptr() ),
  4206     // Divide by two to get number of 16-bit CB ids
  4197         aFileData.Length() / 2);
  4207     numOfCbIds = length >> 1;
       
  4208     // Buffer for 16 bits CB identifiers
       
  4209     TBuf16<KSimNumberOfCbMsgIds> cbIds;
       
  4210     TInt i( 0 );
       
  4211     TInt j( 0 );
       
  4212     // Loop all the bytes and append 16 bit id to buffer
       
  4213     for ( ; i < length && j < numOfCbIds; i += 2, j++ )
       
  4214         {
       
  4215         TUint16 cbId ( ( aFileData[i] << 8 ) | ( aFileData[i+1] ) );
       
  4216         cbIds.Append( cbId );
       
  4217         }
       
  4218     // Read request, complete CB topic list to CTSY
  4198     // Read request, complete CB topic list to CTSY
  4219     if ( KErrNone == aStatus && ETrIdReadCbMsgIds == aTraId && numOfCbIds > 0 )
  4199     if ( UICC_STATUS_OK == aStatus && ETrIdReadCbMsgIds == aTraId &&
  4220         {
  4200         cbIdsBigEndian.Length() > 0 )
  4221         CArrayFixFlat<RMmCustomAPI::TSimCbTopic>* simCbTopics = new ( ELeave )
  4201         {
  4222             CArrayFixFlat<RMmCustomAPI::TSimCbTopic> ( numOfCbIds );
  4202         CArrayFixFlat<RMmCustomAPI::TSimCbTopic>* simCbTopics( NULL );
  4223 
  4203         TRAP(err, simCbTopics = CollectCbTopicIdsL( cbIdsBigEndian ) );
  4224         for ( i = 0; i < numOfCbIds; i++ )
  4204         if ( KErrNone == err )
  4225             {
  4205             {
  4226             if ( KUnusedCbMsgId != cbIds[i] )
  4206             CMmDataPackage dataPackage;
  4227                 {
  4207             dataPackage.PackData( &simCbTopics );
  4228                 RMmCustomAPI::TSimCbTopic simCbTopic;
  4208             iMessageRouter->Complete(
  4229                 // CB ID
  4209                 ECustomStartSimCbTopicBrowsingIPC,
  4230                 simCbTopic.iNumber = cbIds[i];
  4210                 &dataPackage,
  4231                 // Topic names are not stored on the SIM
  4211                 KErrNone );
  4232                 simCbTopic.iName.Zero();
  4212             delete simCbTopics;
  4233                 // Add CB topic to array
  4213             }
  4234                 simCbTopics->AppendL( simCbTopic );
       
  4235                 }
       
  4236              }
       
  4237         simCbTopics->Compress();
       
  4238 
       
  4239         // Complete to SOS layer with packed parameter:
       
  4240         // pointer to array with CB topics
       
  4241         CMmDataPackage dataPackage;
       
  4242         dataPackage.PackData( &simCbTopics );
       
  4243 
       
  4244         iMessageRouter->Complete(
       
  4245             ECustomStartSimCbTopicBrowsingIPC,
       
  4246             &dataPackage,
       
  4247             KErrNone );
       
  4248         }
  4214         }
  4249     // Delete request, update EF CBMI with new topic list
  4215     // Delete request, update EF CBMI with new topic list
  4250     else if ( KErrNone == aStatus && ETrIdUpdateCbMsgIdsPhase1 == aTraId &&
  4216     else if ( UICC_STATUS_OK == aStatus && ETrIdUpdateCbMsgIdsPhase1 == aTraId
  4251         numOfCbIds > 0 && iTopicInSimMemoryDelete )
  4217         && cbIdsBigEndian.Length() > 0 && iTopicInSimMemoryDelete )
  4252         {
  4218         {
  4253         // Set parameters for UICC_APPL_CMD_REQ message
  4219         // Set parameters for UICC_APPL_CMD_REQ message
  4254         TUiccWriteTransparent params;
  4220         TUiccWriteTransparent params;
  4255         params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  4221         params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  4256         params.trId = ETrIdUpdateCbMsgIdsPhase2;
  4222         params.trId = ETrIdUpdateCbMsgIdsPhase2;
  4262         // File id path
  4228         // File id path
  4263         params.filePath.Append( KMasterFileId >> 8 );
  4229         params.filePath.Append( KMasterFileId >> 8 );
  4264         params.filePath.Append( KMasterFileId );
  4230         params.filePath.Append( KMasterFileId );
  4265         params.filePath.Append( iMmUiccMessHandler->GetApplicationFileId() );
  4231         params.filePath.Append( iMmUiccMessHandler->GetApplicationFileId() );
  4266 
  4232 
  4267         // File data to be updated.
  4233         TUint16 topicToDeleteBigEndian =
  4268         TBuf8<KSimNumberOfCbMsgIds*2> fileDataBuf;
  4234             ( iSimCBTopicToBeDeleted >> 8 ) | ( iSimCBTopicToBeDeleted << 8 );
  4269         for ( i = 0; i < numOfCbIds; i++ )
  4235         for ( TInt i = 0 ; i < cbIdsBigEndian.Length(); i++ )
  4270             {
  4236             {
  4271             if ( cbIds[ i ] != iSimCBTopicToBeDeleted )
  4237             TUint16 appendData = cbIdsBigEndian[i] == topicToDeleteBigEndian ?
  4272                 {
  4238                 KUnusedCbMsgId : cbIdsBigEndian[i];
  4273                 fileDataBuf.Append( cbIds[ i ] >> 8 ); // MSB
  4239             // already big-endian
  4274                 fileDataBuf.Append( cbIds[ i ] & 0x00FF ); // LSB
  4240             params.fileData.Append( appendData );
  4275                 }
  4241             params.fileData.Append( appendData >> 8 );
  4276             else // This CB id is deleted-> set unused
       
  4277                 {
       
  4278                 fileDataBuf.Append( 0xFF );
       
  4279                 fileDataBuf.Append( 0xFF );
       
  4280                 }
       
  4281             }
  4242             }
  4282         iSimCBTopicToBeDeleted = KUnusedCbMsgId;
  4243         iSimCBTopicToBeDeleted = KUnusedCbMsgId;
  4283         params.fileData.Append( fileDataBuf );
       
  4284         iMmUiccMessHandler->CreateUiccApplCmdReq( params );
  4244         iMmUiccMessHandler->CreateUiccApplCmdReq( params );
  4285         }
  4245         }
  4286     else // Complete error values
  4246     else
       
  4247         {
       
  4248         err = KErrNotFound;
       
  4249         }
       
  4250 
       
  4251     if ( KErrNone != err )
  4287         {
  4252         {
  4288         if ( ETrIdReadCbMsgIds == aTraId )
  4253         if ( ETrIdReadCbMsgIds == aTraId )
  4289             {
  4254             {
  4290             iMessageRouter->Complete(
  4255             iMessageRouter->Complete(
  4291                 ECustomStartSimCbTopicBrowsingIPC,
  4256                 ECustomStartSimCbTopicBrowsingIPC,
  4292                 KErrNotFound );
  4257                 err );
  4293             }
  4258             }
  4294         else // Delete request
  4259         else // Delete request
  4295             {
  4260             {
  4296             iMessageRouter->Complete(
  4261             iMessageRouter->Complete(
  4297                 ECustomDeleteSimCbTopicIPC,
  4262                 ECustomDeleteSimCbTopicIPC,
  4298                 KErrNotFound );
  4263                 err );
  4299             }
  4264             }
  4300         iTopicInSimMemoryDelete = ETrue;
  4265         }
  4301         }
  4266 
       
  4267     iTopicInSimMemoryDelete = ETrue;
  4302     }
  4268     }
  4303 
  4269 
  4304 // -----------------------------------------------------------------------------
  4270 // -----------------------------------------------------------------------------
  4305 // CMmCustomMessHandler::UiccDeleteCbMsgIdResp
  4271 // CMmCustomMessHandler::UiccDeleteCbMsgIdResp
  4306 // Delete CB message ID
  4272 // Delete CB message ID
  4307 // -----------------------------------------------------------------------------
  4273 // -----------------------------------------------------------------------------
  4308 //
  4274 //
  4309 void CMmCustomMessHandler::UiccDeleteCbMsgIdResp( TInt aStatus )
  4275 void CMmCustomMessHandler::UiccDeleteCbMsgIdResp( TUint8 aStatus )
  4310     {
  4276     {
  4311 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccDeleteCbMsgIdResp" );
  4277 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccDeleteCbMsgIdResp" );
  4312 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCDELETECBMSGIDRESP, "CMmCustomMessHandler::UiccDeleteCbMsgIdResp" );
  4278 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCDELETECBMSGIDRESP_TD, "CMmCustomMessHandler::UiccDeleteCbMsgIdResp" );
  4313 
  4279 
  4314     TInt err( KErrNone );
  4280     TInt err( KErrNone );
  4315     if ( KErrNone != aStatus )
  4281     if ( UICC_STATUS_OK != aStatus )
  4316         {
  4282         {
  4317         err = KErrAccessDenied;
  4283         err = KErrAccessDenied;
  4318         }
  4284         }
  4319 
  4285 
  4320     iMessageRouter->Complete( ECustomDeleteSimCbTopicIPC, err );
  4286     iMessageRouter->Complete( ECustomDeleteSimCbTopicIPC, err );
  4331         TUint8 aTraId,                      // Transaction identification
  4297         TUint8 aTraId,                      // Transaction identification
  4332         RMmCustomAPI::THSxPAStatus status   // HSxPA status
  4298         RMmCustomAPI::THSxPAStatus status   // HSxPA status
  4333         )
  4299         )
  4334     {
  4300     {
  4335     TFLOGSTRING("TSY: CMmCustomMessHandler::WriteHSxPAStatusReq");
  4301     TFLOGSTRING("TSY: CMmCustomMessHandler::WriteHSxPAStatusReq");
  4336 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_WRITEHSXPASTATUSREQ, "CMmCustomMessHandler::WriteHSxPAStatusReq" );
  4302 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_WRITEHSXPASTATUSREQ_TD, "CMmCustomMessHandler::WriteHSxPAStatusReq" );
  4337 
  4303 
  4338     TBuf8<KHSxPAMaxMessageSize> data;
  4304     TBuf8<KHSxPAMaxMessageSize> data;
  4339     TUint8 value(0);
  4305     TUint8 value(0);
  4340 
  4306 
  4341     if ( RMmCustomAPI::EHSxPAEnabled == status )
  4307     if ( RMmCustomAPI::EHSxPAEnabled == status )
  4366         (
  4332         (
  4367         const TIsiReceiveC& aIsiMessage    // an ISI message
  4333         const TIsiReceiveC& aIsiMessage    // an ISI message
  4368         )
  4334         )
  4369     {
  4335     {
  4370     TFLOGSTRING("TSY: CMmCustomMessHandler::WriteHSxPAStatusResp");
  4336     TFLOGSTRING("TSY: CMmCustomMessHandler::WriteHSxPAStatusResp");
  4371 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_WRITEHSXPASTATUSRESP, "CMmCustomMessHandler::WriteHSxPAStatusResp" );
  4337 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_WRITEHSXPASTATUSRESP_TD, "CMmCustomMessHandler::WriteHSxPAStatusResp" );
  4372 
  4338 
  4373     TInt epocError( KErrWrite );
  4339     TInt epocError( KErrWrite );
  4374 
  4340 
  4375     TUint8 writeStatus = aIsiMessage.Get8bit(
  4341     TUint8 writeStatus = aIsiMessage.Get8bit(
  4376       ISI_HEADER_SIZE + GSS_HSXPA_USER_SETTING_WRITE_RESP_OFFSET_WRITESTATUS );
  4342       ISI_HEADER_SIZE + GSS_HSXPA_USER_SETTING_WRITE_RESP_OFFSET_WRITESTATUS );
  4384         }
  4350         }
  4385     // GSS_FAIL == writeStatus and PP bit is disabled
  4351     // GSS_FAIL == writeStatus and PP bit is disabled
  4386     else if ( GSS_HSXPA_DISABLED_VIA_PP == reason )
  4352     else if ( GSS_HSXPA_DISABLED_VIA_PP == reason )
  4387         {
  4353         {
  4388         TFLOGSTRING("TSY: CMmCustomMessHandler::WriteHSxPAStatusResp. KErrNotSupported");
  4354         TFLOGSTRING("TSY: CMmCustomMessHandler::WriteHSxPAStatusResp. KErrNotSupported");
  4389 OstTrace0( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_WRITEHSXPASTATUSRESP, "CMmCustomMessHandler::WriteHSxPAStatusResp, KErrNotSupported" );
  4355 OstTrace0( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_WRITEHSXPASTATUSRESP_TD, "CMmCustomMessHandler::WriteHSxPAStatusResp, KErrNotSupported" );
  4390         epocError = KErrNotSupported;
  4356         epocError = KErrNotSupported;
  4391         }
  4357         }
  4392 
  4358 
  4393     iMessageRouter->Complete( ECustomWriteHSxPAStatusIPC, epocError );
  4359     iMessageRouter->Complete( ECustomWriteHSxPAStatusIPC, epocError );
  4394     }
  4360     }
  4403         (
  4369         (
  4404         TUint8 aTraId              // Transaction identification
  4370         TUint8 aTraId              // Transaction identification
  4405         )
  4371         )
  4406     {
  4372     {
  4407     TFLOGSTRING("TSY: CMmCustomMessHandler::ReadHSxPAStatusReq");
  4373     TFLOGSTRING("TSY: CMmCustomMessHandler::ReadHSxPAStatusReq");
  4408 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_READHSXPASTATUSREQ, "CMmCustomMessHandler::ReadHSxPAStatusReq" );
  4374 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_READHSXPASTATUSREQ_TD, "CMmCustomMessHandler::ReadHSxPAStatusReq" );
  4409 
  4375 
  4410     TBuf8<KHSxPAMaxMessageSize> data;
  4376     TBuf8<KHSxPAMaxMessageSize> data;
  4411     data.Append( KCustomPadding ); //Filler
  4377     data.Append( KCustomPadding ); //Filler
  4412     data.Append( KCustomPadding ); //Filler
  4378     data.Append( KCustomPadding ); //Filler
  4413 
  4379 
  4427         (
  4393         (
  4428         const TIsiReceiveC& aIsiMessage    // an ISI message
  4394         const TIsiReceiveC& aIsiMessage    // an ISI message
  4429         )
  4395         )
  4430     {
  4396     {
  4431     TFLOGSTRING("TSY: CMmCustomMessHandler::ReadHSxPAStatusResp");
  4397     TFLOGSTRING("TSY: CMmCustomMessHandler::ReadHSxPAStatusResp");
  4432 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_READHSXPASTATUSRESP, "CMmCustomMessHandler::ReadHSxPAStatusResp" );
  4398 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_READHSXPASTATUSRESP_TD, "CMmCustomMessHandler::ReadHSxPAStatusResp" );
  4433 
  4399 
  4434     CMmDataPackage dataPackage;
  4400     CMmDataPackage dataPackage;
  4435 
  4401 
  4436     TUint8 state = aIsiMessage.Get8bit(
  4402     TUint8 state = aIsiMessage.Get8bit(
  4437       ISI_HEADER_SIZE + GSS_HSXPA_USER_SETTING_READ_RESP_OFFSET_HSXPAUSERSETTING );
  4403       ISI_HEADER_SIZE + GSS_HSXPA_USER_SETTING_READ_RESP_OFFSET_HSXPAUSERSETTING );
  4478         (
  4444         (
  4479         const TIsiReceiveC& aIsiMessage    // an ISI message
  4445         const TIsiReceiveC& aIsiMessage    // an ISI message
  4480         )
  4446         )
  4481     {
  4447     {
  4482     TFLOGSTRING("TSY: CMmCustomMessHandler::HSxPASettingInd");
  4448     TFLOGSTRING("TSY: CMmCustomMessHandler::HSxPASettingInd");
  4483 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_HSXPASETTINGIND, "CMmCustomMessHandler::HSxPASettingInd" );
  4449 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_HSXPASETTINGIND_TD, "CMmCustomMessHandler::HSxPASettingInd" );
  4484 
  4450 
  4485     CMmDataPackage dataPackage;
  4451     CMmDataPackage dataPackage;
  4486     RMmCustomAPI::THSxPAStatus hsxpaStatus;
  4452     RMmCustomAPI::THSxPAStatus hsxpaStatus;
  4487 
  4453 
  4488     TUint8 currentState = aIsiMessage.Get8bit(
  4454     TUint8 currentState = aIsiMessage.Get8bit(
  4508 // -----------------------------------------------------------------------------
  4474 // -----------------------------------------------------------------------------
  4509 //
  4475 //
  4510 TInt CMmCustomMessHandler::NetNeighbourCellsReq( const TUint8 aTraId )
  4476 TInt CMmCustomMessHandler::NetNeighbourCellsReq( const TUint8 aTraId )
  4511     {
  4477     {
  4512 TFLOGSTRING("TSY: CMmCustomMessHandler::NetNeighbourCellsReq");
  4478 TFLOGSTRING("TSY: CMmCustomMessHandler::NetNeighbourCellsReq");
  4513 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_NETNEIGHBOURCELLSREQ, "CMmCustomMessHandler::NetNeighbourCellsReq" );
  4479 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_NETNEIGHBOURCELLSREQ_TD, "CMmCustomMessHandler::NetNeighbourCellsReq" );
  4514 
  4480 
  4515     // Add NET_NEIGHBOUR_CELL_INFO_TYPE
  4481     // Add NET_NEIGHBOUR_CELL_INFO_TYPE
  4516     // (data size is allways 1)
  4482     // (data size is allways 1)
  4517     TBuf8<1> data;
  4483     TBuf8<1> data;
  4518     data.Append( NET_ECID_INFORMATION );
  4484     data.Append( NET_ECID_INFORMATION );
  4532 //
  4498 //
  4533 void CMmCustomMessHandler::NetNeighbourCellsResp(
  4499 void CMmCustomMessHandler::NetNeighbourCellsResp(
  4534     const TIsiReceiveC& aIsiMessage )
  4500     const TIsiReceiveC& aIsiMessage )
  4535     {
  4501     {
  4536 TFLOGSTRING("TSY: CMmCustomMessHandler::NetNeighbourCellsResp");
  4502 TFLOGSTRING("TSY: CMmCustomMessHandler::NetNeighbourCellsResp");
  4537 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_NETNEIGHBOURCELLSRESP, "CMmCustomMessHandler::NetNeighbourCellsResp" );
  4503 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_NETNEIGHBOURCELLSRESP_TD, "CMmCustomMessHandler::NetNeighbourCellsResp" );
  4538 
  4504 
  4539     TECIDInfo tempECIDInfo;
  4505     TBool triggerNotify( EFalse );
  4540     TInt ret( KErrNone );
  4506     TInt ret( KErrNone );
  4541 
  4507 
  4542     // Get the success code.
  4508     // Get the success code.
  4543     TUint8 successCode( aIsiMessage.Get8bit(
  4509     TUint8 successCode( aIsiMessage.Get8bit(
  4544         ISI_HEADER_SIZE +
  4510         ISI_HEADER_SIZE +
  4545         NET_NEIGHBOUR_CELLS_RESP_OFFSET_SUCCESSCODE ) );
  4511         NET_NEIGHBOUR_CELLS_RESP_OFFSET_SUCCESSCODE ) );
  4546 
  4512 
  4547     if ( NET_CAUSE_OK == successCode )
  4513     if ( NET_CAUSE_OK == successCode )
  4548         {
  4514         {
  4549 TFLOGSTRING("TSY: CMmCustomMessHandler::NetNeighbourCellsResp - NET_CAUSE_OK");
  4515 TFLOGSTRING("TSY: CMmCustomMessHandler::NetNeighbourCellsResp - NET_CAUSE_OK");
  4550 OstTrace0( TRACE_NORMAL, DUP5_CMMCUSTOMMESSHANDLER_NETNEIGHBOURCELLSRESP, "CMmCustomMessHandler::NetNeighbourCellsResp, NET_CAUSE_OK" );
  4516 OstTrace0( TRACE_NORMAL,  DUP5_CMMCUSTOMMESSHANDLER_NETNEIGHBOURCELLSRESP_TD, "CMmCustomMessHandler::NetNeighbourCellsResp, NET_CAUSE_OK" );
  4551 
  4517 
  4552         TUint sbOffset( 0 );
  4518         TUint sbOffset( 0 );
  4553 
  4519 
  4554         if ( KErrNone == aIsiMessage.FindSubBlockOffsetById(
  4520         if ( KErrNone == aIsiMessage.FindSubBlockOffsetById(
  4555             ISI_HEADER_SIZE + SIZE_NET_NEIGHBOUR_CELLS_RESP,
  4521             ISI_HEADER_SIZE + SIZE_NET_NEIGHBOUR_CELLS_RESP,
  4557             EIsiSubBlockTypeId8Len8,
  4523             EIsiSubBlockTypeId8Len8,
  4558             sbOffset ) )
  4524             sbOffset ) )
  4559             {
  4525             {
  4560             // GSM cell info.
  4526             // GSM cell info.
  4561 TFLOGSTRING("TSY: CMmCustomMessHandler::NetNeighbourCellsResp - NET_ECID_GERAN_INFO found");
  4527 TFLOGSTRING("TSY: CMmCustomMessHandler::NetNeighbourCellsResp - NET_ECID_GERAN_INFO found");
  4562 OstTrace0( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_NETNEIGHBOURCELLSRESP, "CMmCustomMessHandler::NetNeighbourCellsResp - NET_ECID_GERAN_INFO found" );
  4528 OstTrace0( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_NETNEIGHBOURCELLSRESP_TD, "CMmCustomMessHandler::NetNeighbourCellsResp - NET_ECID_GERAN_INFO found" );
  4563             // Set mode
  4529             // Set mode
  4564             tempECIDInfo.iCellInfo.iMode = RMmCustomAPI::TMmCellInfo::EGSM;
  4530             if ( RMmCustomAPI::TMmCellInfo::EGSM != iECIDInfo.iCellInfo.iMode )
       
  4531                 {
       
  4532                 triggerNotify = ETrue;
       
  4533                 iECIDInfo.iCellInfo.iMode = RMmCustomAPI::TMmCellInfo::EGSM;
       
  4534                 }
  4565 
  4535 
  4566             // Set Current MCC.
  4536             // Set Current MCC.
  4567             tempECIDInfo.iMCC = aIsiMessage.Get16bit(
  4537             TUint16 mcc( aIsiMessage.Get16bit(
  4568                 sbOffset + NET_ECID_GERAN_INFO_OFFSET_CURRENTMCC );
  4538                 sbOffset + NET_ECID_GERAN_INFO_OFFSET_CURRENTMCC ) );
       
  4539             if ( mcc != iECIDInfo.iMCC )
       
  4540                 {
       
  4541                 triggerNotify = ETrue;
       
  4542                 iECIDInfo.iMCC = mcc;
       
  4543                 }
  4569 
  4544 
  4570             // Set Current MNC.
  4545             // Set Current MNC.
  4571             tempECIDInfo.iMNC = aIsiMessage.Get16bit(
  4546             TUint16 mnc( aIsiMessage.Get16bit(
  4572                 sbOffset + NET_ECID_GERAN_INFO_OFFSET_CURRENTMNC );
  4547                 sbOffset + NET_ECID_GERAN_INFO_OFFSET_CURRENTMNC ) );
       
  4548             if ( mnc != iECIDInfo.iMNC )
       
  4549                 {
       
  4550                 triggerNotify = ETrue;
       
  4551                 iECIDInfo.iMNC = mnc;
       
  4552                 }
  4573 
  4553 
  4574             // Set Current LAC.
  4554             // Set Current LAC.
  4575             tempECIDInfo.iLAC = aIsiMessage.Get16bit(
  4555             TUint16 lac( aIsiMessage.Get16bit(
  4576                 sbOffset + NET_ECID_GERAN_INFO_OFFSET_CURRENTLAC );
  4556                 sbOffset + NET_ECID_GERAN_INFO_OFFSET_CURRENTLAC ) );
       
  4557             if ( lac != iECIDInfo.iLAC )
       
  4558                 {
       
  4559                 triggerNotify = ETrue;
       
  4560                 iECIDInfo.iLAC = lac;
       
  4561                 }
  4577 
  4562 
  4578             // Set Current Cell ID.
  4563             // Set Current Cell ID.
  4579             tempECIDInfo.iCID = aIsiMessage.Get16bit(
  4564             TUint16 cid( aIsiMessage.Get16bit(
  4580                 sbOffset + NET_ECID_GERAN_INFO_OFFSET_CURRENTCELLID );
  4565                 sbOffset + NET_ECID_GERAN_INFO_OFFSET_CURRENTCELLID ) );
       
  4566             if ( cid != iECIDInfo.iCID )
       
  4567                 {
       
  4568                 triggerNotify = ETrue;
       
  4569                 iECIDInfo.iCID = cid;
       
  4570                 }
  4581 
  4571 
  4582             // Set Current TA.
  4572             // Set Current TA.
  4583             TUint8 temp8bitUVal( aIsiMessage.Get8bit(
  4573             TUint8 temp8bitUVal( aIsiMessage.Get8bit(
  4584                 sbOffset + NET_ECID_GERAN_INFO_OFFSET_CURRENTTA ) );
  4574                 sbOffset + NET_ECID_GERAN_INFO_OFFSET_CURRENTTA ) );
  4585 
  4575 
  4586             if ( NET_ECID_TA_UNDEFINED != temp8bitUVal )
  4576             if ( NET_ECID_TA_UNDEFINED != temp8bitUVal )
  4587                 {
  4577                 {
  4588                 tempECIDInfo.iCellInfo.iGsmCellInfo.iTA = temp8bitUVal;
  4578                 iECIDInfo.iCellInfo.iGsmCellInfo.iTA = temp8bitUVal;
  4589                 }
  4579                 }
  4590             // No else.
  4580             // No else.
  4591 
  4581 
  4592             // Get Number of Neighbours included.
  4582             // Get Number of Neighbours included.
  4593             TUint8 nmrCount( aIsiMessage.Get8bit(
  4583             TUint8 nmrCount( aIsiMessage.Get8bit(
  4595 
  4585 
  4596             // Set NMR list.
  4586             // Set NMR list.
  4597             for ( TUint8 i = 0; i < nmrCount; i++ )
  4587             for ( TUint8 i = 0; i < nmrCount; i++ )
  4598                 {
  4588                 {
  4599                 // Set Carrier number.
  4589                 // Set Carrier number.
  4600                 tempECIDInfo.iCellInfo.iGsmCellInfo.iNmr[ i ].iARFCN =
  4590                 iECIDInfo.iCellInfo.iGsmCellInfo.iNmr[i].iARFCN =
  4601                     aIsiMessage.Get16bit(
  4591                     aIsiMessage.Get16bit(
  4602                         sbOffset + NET_ECID_GERAN_INFO_OFFSET_GSMNMRLIST +
  4592                         sbOffset + NET_ECID_GERAN_INFO_OFFSET_GSMNMRLIST +
  4603                         ( i * SIZE_NET_GSM_NMR_LIST_SEQ ) +
  4593                         ( i * SIZE_NET_GSM_NMR_LIST_SEQ ) +
  4604                         NET_GSM_NMR_LIST_SEQ_OFFSET_ARFCN );
  4594                         NET_GSM_NMR_LIST_SEQ_OFFSET_ARFCN );
  4605                 // Set BSIC.
  4595                 // Set BSIC.
  4606                 tempECIDInfo.iCellInfo.iGsmCellInfo.iNmr[ i ].iBSIC =
  4596                 iECIDInfo.iCellInfo.iGsmCellInfo.iNmr[i].iBSIC =
  4607                     aIsiMessage.Get8bit(
  4597                     aIsiMessage.Get8bit(
  4608                         sbOffset + NET_ECID_GERAN_INFO_OFFSET_GSMNMRLIST +
  4598                         sbOffset + NET_ECID_GERAN_INFO_OFFSET_GSMNMRLIST +
  4609                         ( i * SIZE_NET_GSM_NMR_LIST_SEQ ) +
  4599                         ( i * SIZE_NET_GSM_NMR_LIST_SEQ ) +
  4610                         NET_GSM_NMR_LIST_SEQ_OFFSET_BSIC );
  4600                         NET_GSM_NMR_LIST_SEQ_OFFSET_BSIC );
  4611                 // Set RX level.
  4601                 // Set RX level.
  4612                 tempECIDInfo.iCellInfo.iGsmCellInfo.iNmr[ i ].iRxLEV =
  4602                 iECIDInfo.iCellInfo.iGsmCellInfo.iNmr[i].iRxLEV =
  4613                     aIsiMessage.Get8bit(
  4603                     aIsiMessage.Get8bit(
  4614                         sbOffset + NET_ECID_GERAN_INFO_OFFSET_GSMNMRLIST +
  4604                         sbOffset + NET_ECID_GERAN_INFO_OFFSET_GSMNMRLIST +
  4615                         ( i * SIZE_NET_GSM_NMR_LIST_SEQ ) +
  4605                         ( i * SIZE_NET_GSM_NMR_LIST_SEQ ) +
  4616                         NET_GSM_NMR_LIST_SEQ_OFFSET_RXLEVEL );
  4606                         NET_GSM_NMR_LIST_SEQ_OFFSET_RXLEVEL );
  4617                 }
  4607                 }
  4622             EIsiSubBlockTypeId8Len16,
  4612             EIsiSubBlockTypeId8Len16,
  4623             sbOffset ) )
  4613             sbOffset ) )
  4624             {
  4614             {
  4625             // WCDMA cell info.
  4615             // WCDMA cell info.
  4626 TFLOGSTRING("TSY: CMmCustomMessHandler::NetNeighbourCellsResp - NET_ECID_UTRAN_FDD_INFO found");
  4616 TFLOGSTRING("TSY: CMmCustomMessHandler::NetNeighbourCellsResp - NET_ECID_UTRAN_FDD_INFO found");
  4627 OstTrace0( TRACE_NORMAL, DUP2_CMMCUSTOMMESSHANDLER_NETNEIGHBOURCELLSRESP, "CMmCustomMessHandler::NetNeighbourCellsResp - NET_ECID_UTRAN_FDD_INFO found" );
  4617 OstTrace0( TRACE_NORMAL,  DUP2_CMMCUSTOMMESSHANDLER_NETNEIGHBOURCELLSRESP_TD, "CMmCustomMessHandler::NetNeighbourCellsResp - NET_ECID_UTRAN_FDD_INFO found" );
  4628             // Set mode.
  4618             // Set mode.
  4629             tempECIDInfo.iCellInfo.iMode = RMmCustomAPI::TMmCellInfo::EWCDMA;
  4619             if ( RMmCustomAPI::TMmCellInfo::EWCDMA != iECIDInfo.iCellInfo.iMode )
       
  4620                 {
       
  4621                 triggerNotify = ETrue;
       
  4622                 iECIDInfo.iCellInfo.iMode = RMmCustomAPI::TMmCellInfo::EWCDMA;
       
  4623                 }
  4630 
  4624 
  4631             // Set UCID.
  4625             // Set UCID.
  4632             tempECIDInfo.iCID = aIsiMessage.Get32bit(
  4626             TUint32 cid( aIsiMessage.Get32bit(
  4633                 sbOffset + NET_ECID_UTRAN_FDD_INFO_OFFSET_UCID );
  4627                 sbOffset + NET_ECID_UTRAN_FDD_INFO_OFFSET_UCID ) );
       
  4628             if ( cid != iECIDInfo.iCID )
       
  4629                 {
       
  4630                 triggerNotify = ETrue;
       
  4631                 iECIDInfo.iCID = cid;
       
  4632                 }
  4634 
  4633 
  4635             // Set current MCC.
  4634             // Set current MCC.
  4636             tempECIDInfo.iMCC = aIsiMessage.Get16bit(
  4635             TUint16 mcc( aIsiMessage.Get16bit(
  4637                 sbOffset + NET_ECID_UTRAN_FDD_INFO_OFFSET_CURRENTMCC );
  4636                 sbOffset + NET_ECID_UTRAN_FDD_INFO_OFFSET_CURRENTMCC ) );
       
  4637             if ( mcc != iECIDInfo.iMCC )
       
  4638                 {
       
  4639                 triggerNotify = ETrue;
       
  4640                 iECIDInfo.iMCC = mcc;
       
  4641                 }
  4638 
  4642 
  4639             // Set current MNC.
  4643             // Set current MNC.
  4640             tempECIDInfo.iMNC = aIsiMessage.Get16bit(
  4644             TUint16 mnc( aIsiMessage.Get16bit(
  4641                 sbOffset + NET_ECID_UTRAN_FDD_INFO_OFFSET_CURRENTMNC );
  4645                 sbOffset + NET_ECID_UTRAN_FDD_INFO_OFFSET_CURRENTMNC ) );
  4642 
  4646             if ( mnc != iECIDInfo.iMNC )
  4643             // Set current LAC (new value not received here).
  4647                 {
  4644             tempECIDInfo.iLAC = iECIDInfo.iLAC;
  4648                 triggerNotify = ETrue;
       
  4649                 iECIDInfo.iMNC = mnc;
       
  4650                 }
       
  4651 
       
  4652             // New LAC not received here
  4645 
  4653 
  4646             // Set primary scrambling code.
  4654             // Set primary scrambling code.
  4647             tempECIDInfo.iCellInfo.iWcdmaCellInfo.iPrimaryScrambilingCode =
  4655             iECIDInfo.iCellInfo.iWcdmaCellInfo.iPrimaryScrambilingCode =
  4648                 aIsiMessage.Get16bit(
  4656                 aIsiMessage.Get16bit(
  4649                     sbOffset + NET_ECID_UTRAN_FDD_INFO_OFFSET_PRISCRAMBLING );
  4657                     sbOffset + NET_ECID_UTRAN_FDD_INFO_OFFSET_PRISCRAMBLING );
  4650 
  4658 
  4651             // Set Frequency Info.
  4659             // Set Frequency Info.
  4652             // Set frequency Info (Uplink UARFCN and UARFCN-Nt not available)
  4660             // Set frequency Info (Uplink UARFCN and UARFCN-Nt not available)
  4653             // Downlink UARFCN.
  4661             // Downlink UARFCN.
  4654             tempECIDInfo.iCellInfo.iWcdmaCellInfo.iFrequencyInfo.iFddDL =
  4662             iECIDInfo.iCellInfo.iWcdmaCellInfo.iFrequencyInfo.iFddDL =
  4655                 aIsiMessage.Get16bit(
  4663                 aIsiMessage.Get16bit(
  4656                     sbOffset + NET_ECID_UTRAN_FDD_INFO_OFFSET_UARFCNDL );
  4664                     sbOffset + NET_ECID_UTRAN_FDD_INFO_OFFSET_UARFCNDL );
  4657 
  4665 
  4658             // Get number of neighbours included.
  4666             // Get number of neighbours included.
  4659             TUint8 nmrCount( aIsiMessage.Get8bit(
  4667             TUint8 nmrCount( aIsiMessage.Get8bit(
  4665 
  4673 
  4666             // Handle NMR lists.
  4674             // Handle NMR lists.
  4667             for ( TUint8 i( 0 ); i < nmrCount; i++ )
  4675             for ( TUint8 i( 0 ); i < nmrCount; i++ )
  4668                 {
  4676                 {
  4669                 // Set Frequency Info: Downlink UARFCN.
  4677                 // Set Frequency Info: Downlink UARFCN.
  4670                 tempECIDInfo.iCellInfo.iWcdmaCellInfo.
  4678                 iECIDInfo.iCellInfo.iWcdmaCellInfo.
  4671                     iNwkMeasureReport[i].iFrequencyInfo.iFddDL =
  4679                     iNwkMeasureReport[i].iFrequencyInfo.iFddDL =
  4672                         aIsiMessage.Get16bit( nmrListOffset );
  4680                         aIsiMessage.Get16bit( nmrListOffset );
  4673 
  4681 
  4674                 // Uplink UARFCN and UARFCN-Nt not available, set to -1.
  4682                 // Uplink UARFCN and UARFCN-Nt not available, set to -1.
  4675                 tempECIDInfo.iCellInfo.iWcdmaCellInfo.
  4683                 iECIDInfo.iCellInfo.iWcdmaCellInfo.
  4676                     iNwkMeasureReport[i].iFrequencyInfo.iFddUL = -1;
  4684                     iNwkMeasureReport[i].iFrequencyInfo.iFddUL = -1;
  4677                 tempECIDInfo.iCellInfo.iWcdmaCellInfo.
  4685                 iECIDInfo.iCellInfo.iWcdmaCellInfo.
  4678                     iNwkMeasureReport[i].iFrequencyInfo.iTddNt = -1;
  4686                     iNwkMeasureReport[i].iFrequencyInfo.iTddNt = -1;
  4679 
  4687 
  4680                 // Set UTRA Carrier RSSI.
  4688                 // Set UTRA Carrier RSSI.
  4681                 tempECIDInfo.iCellInfo.iWcdmaCellInfo.
  4689                 iECIDInfo.iCellInfo.iWcdmaCellInfo.
  4682                     iNwkMeasureReport[i].iCarrierRSSI =
  4690                     iNwkMeasureReport[i].iCarrierRSSI =
  4683                         aIsiMessage.Get8bit(
  4691                         aIsiMessage.Get8bit(
  4684                             nmrListOffset +
  4692                             nmrListOffset +
  4685                             NET_UTRAN_NEIGH_LIST_SEQ_OFFSET_UCRSSI );
  4693                             NET_UTRAN_NEIGH_LIST_SEQ_OFFSET_UCRSSI );
  4686 
  4694 
  4699                     TUint32 temp32bitUVal(
  4707                     TUint32 temp32bitUVal(
  4700                         aIsiMessage.Get32bit( nmrListOffset ) );
  4708                         aIsiMessage.Get32bit( nmrListOffset ) );
  4701 
  4709 
  4702                     if ( NET_ECID_UCID_UNDEFINED != temp32bitUVal )
  4710                     if ( NET_ECID_UCID_UNDEFINED != temp32bitUVal )
  4703                         {
  4711                         {
  4704                         tempECIDInfo.iCellInfo.iWcdmaCellInfo.
  4712                         iECIDInfo.iCellInfo.iWcdmaCellInfo.
  4705                             iNwkMeasureReport[i].iCellMeasuredResult[f].iCID =
  4713                             iNwkMeasureReport[i].iCellMeasuredResult[f].iCID =
  4706                                 temp32bitUVal;
  4714                                 temp32bitUVal;
  4707                         }
  4715                         }
  4708                     // No else.
  4716                     // No else.
  4709 
  4717 
  4710                     // Set Primary CPICH.
  4718                     // Set Primary CPICH.
  4711                     tempECIDInfo.iCellInfo.iWcdmaCellInfo.
  4719                     iECIDInfo.iCellInfo.iWcdmaCellInfo.
  4712                         iNwkMeasureReport[i].iCellMeasuredResult[f].
  4720                         iNwkMeasureReport[i].iCellMeasuredResult[f].
  4713                             iFddInfo.iPrimaryCPICH = aIsiMessage.Get16bit(
  4721                             iFddInfo.iPrimaryCPICH = aIsiMessage.Get16bit(
  4714                                 nmrListOffset +
  4722                                 nmrListOffset +
  4715                                     NET_UTRAN_CELL_LIST_SEQ_OFFSET_PCPICH );
  4723                                     NET_UTRAN_CELL_LIST_SEQ_OFFSET_PCPICH );
  4716 
  4724 
  4719                         nmrListOffset +
  4727                         nmrListOffset +
  4720                             NET_UTRAN_CELL_LIST_SEQ_OFFSET_CPICHECNO ) );
  4728                             NET_UTRAN_CELL_LIST_SEQ_OFFSET_CPICHECNO ) );
  4721 
  4729 
  4722                     if ( NET_ECID_CPICH_ECNO_UNDEFINED != temp8bitUVal )
  4730                     if ( NET_ECID_CPICH_ECNO_UNDEFINED != temp8bitUVal )
  4723                         {
  4731                         {
  4724                         tempECIDInfo.iCellInfo.iWcdmaCellInfo.
  4732                         iECIDInfo.iCellInfo.iWcdmaCellInfo.
  4725                             iNwkMeasureReport[i].iCellMeasuredResult[f].
  4733                             iNwkMeasureReport[i].iCellMeasuredResult[f].
  4726                                 iFddInfo.iCpichEcN0 = temp8bitUVal;
  4734                                 iFddInfo.iCpichEcN0 = temp8bitUVal;
  4727                         }
  4735                         }
  4728                     // No else.
  4736                     // No else.
  4729 
  4737 
  4730                     // Set CPICH RSCP.
  4738                     // Set CPICH RSCP.
  4731                     tempECIDInfo.iCellInfo.iWcdmaCellInfo.
  4739                     iECIDInfo.iCellInfo.iWcdmaCellInfo.
  4732                         iNwkMeasureReport[i].iCellMeasuredResult[f].
  4740                         iNwkMeasureReport[i].iCellMeasuredResult[f].
  4733                             iFddInfo.iCpichRscp = aIsiMessage.Get8bit(
  4741                             iFddInfo.iCpichRscp = aIsiMessage.Get8bit(
  4734                                 nmrListOffset +
  4742                                 nmrListOffset +
  4735                                     NET_UTRAN_CELL_LIST_SEQ_OFFSET_CPICHRSCP );
  4743                                     NET_UTRAN_CELL_LIST_SEQ_OFFSET_CPICHRSCP );
  4736 
  4744 
  4739                             nmrListOffset +
  4747                             nmrListOffset +
  4740                                 NET_UTRAN_CELL_LIST_SEQ_OFFSET_PATHLOSS );
  4748                                 NET_UTRAN_CELL_LIST_SEQ_OFFSET_PATHLOSS );
  4741 
  4749 
  4742                     if ( NET_ECID_PATHLOSS_UNDEFINED != temp8bitUVal )
  4750                     if ( NET_ECID_PATHLOSS_UNDEFINED != temp8bitUVal )
  4743                         {
  4751                         {
  4744                         tempECIDInfo.iCellInfo.iWcdmaCellInfo.
  4752                         iECIDInfo.iCellInfo.iWcdmaCellInfo.
  4745                             iNwkMeasureReport[i].iCellMeasuredResult[f].
  4753                             iNwkMeasureReport[i].iCellMeasuredResult[f].
  4746                                 iFddInfo.iPathloss = temp8bitUVal;
  4754                                 iFddInfo.iPathloss = temp8bitUVal;
  4747                         }
  4755                         }
  4748                     // No else.
  4756                     // No else.
  4749 
  4757 
  4754                 }
  4762                 }
  4755             }
  4763             }
  4756         else
  4764         else
  4757             {
  4765             {
  4758 TFLOGSTRING("TSY: CMmCustomMessHandler::NetNeighbourCellsResp - No ECID data found");
  4766 TFLOGSTRING("TSY: CMmCustomMessHandler::NetNeighbourCellsResp - No ECID data found");
  4759 OstTrace0( TRACE_NORMAL, DUP3_CMMCUSTOMMESSHANDLER_NETNEIGHBOURCELLSRESP, "CMmCustomMessHandler::NetNeighbourCellsResp - No ECID data found" );
  4767 OstTrace0( TRACE_NORMAL,  DUP3_CMMCUSTOMMESSHANDLER_NETNEIGHBOURCELLSRESP_TD, "CMmCustomMessHandler::NetNeighbourCellsResp - No ECID data found" );
  4760             ret = KErrNotFound;
  4768             ret = KErrNotFound;
  4761             }
  4769             }
  4762         }
  4770         }
  4763     else
  4771     else
  4764         {
  4772         {
  4765 TFLOGSTRING2("TSY: CMmCustomMessHandler::NetNeighbourCellsResp - NET Server Error, Success Code: %d", successCode);
  4773 TFLOGSTRING2("TSY: CMmCustomMessHandler::NetNeighbourCellsResp - NET Server Error, Success Code: %d", successCode);
  4766 OstTraceExt1( TRACE_NORMAL, DUP4_CMMCUSTOMMESSHANDLER_NETNEIGHBOURCELLSRESP, "CMmCustomMessHandler::NetNeighbourCellsResp;NET Server Error, Success Code=%hhu", successCode );
  4774 OstTraceExt1( TRACE_NORMAL,  DUP4_CMMCUSTOMMESSHANDLER_NETNEIGHBOURCELLSRESP_TD, "CMmCustomMessHandler::NetNeighbourCellsResp;NET Server Error, Success Code=%hhu", successCode );
  4767 
  4775 
  4768         // Map cause to symbian error value.
  4776         // Map cause to symbian error value.
  4769         ret = CMmStaticUtility::CSCauseToEpocError(
  4777         ret = CMmStaticUtility::CSCauseToEpocError(
  4770             PN_MODEM_NETWORK,
  4778             PN_MODEM_NETWORK,
  4771             KTsyNetCauseCommon,
  4779             KTsyNetCauseCommon,
  4777         {
  4785         {
  4778         iECIDInfoRequested = EFalse;
  4786         iECIDInfoRequested = EFalse;
  4779 
  4787 
  4780         // Complete with packed parameter.
  4788         // Complete with packed parameter.
  4781         CMmDataPackage dataPackage;
  4789         CMmDataPackage dataPackage;
  4782         dataPackage.PackData( &tempECIDInfo.iCellInfo );
  4790         dataPackage.PackData( &iECIDInfo.iCellInfo );
  4783 
  4791 
  4784         iMessageRouter->Complete(
  4792         iMessageRouter->Complete(
  4785             ECustomGetCellInfoIPC,
  4793             ECustomGetCellInfoIPC,
  4786             &dataPackage,
  4794             &dataPackage,
  4787             ret );
  4795             ret );
  4788         }
  4796         }
  4789     // No else.
  4797     // No else.
  4790 
  4798 
  4791     // If info received, save and complete change notification.
  4799     // If info received, save and complete change notification.
  4792     if ( KErrNone == ret )
  4800     if ( KErrNone == ret && triggerNotify )
  4793         {
  4801         {
  4794         if ( iECIDInfo.iCellInfo.iMode != tempECIDInfo.iCellInfo.iMode ||
  4802         // Complete with packed parameter.
  4795             iECIDInfo.iMCC != tempECIDInfo.iMCC ||
  4803         CMmDataPackage dataPackage;
  4796             iECIDInfo.iMNC != tempECIDInfo.iMNC ||
  4804         dataPackage.PackData( &iECIDInfo.iCellInfo );
  4797             iECIDInfo.iCID != tempECIDInfo.iCID ||
  4805 
  4798             iECIDInfo.iLAC != tempECIDInfo.iLAC )
  4806         iMessageRouter->Complete(
  4799             {
  4807             ECustomNotifyCellInfoChangeIPC,
  4800             // Complete with packed parameter.
  4808             &dataPackage,
  4801             CMmDataPackage dataPackage;
  4809             KErrNone );
  4802             dataPackage.PackData( &tempECIDInfo.iCellInfo );
       
  4803 
       
  4804             iMessageRouter->Complete(
       
  4805                 ECustomNotifyCellInfoChangeIPC,
       
  4806                 &dataPackage,
       
  4807                 KErrNone );
       
  4808             }
       
  4809         // No else.
       
  4810 
       
  4811         // Save ECID information.
       
  4812         iECIDInfo = tempECIDInfo;
       
  4813         }
  4810         }
  4814     // No else.
  4811     // No else.
  4815     }
  4812     }
  4816 
  4813 
  4817 // -----------------------------------------------------------------------------
  4814 // -----------------------------------------------------------------------------
  4824 //
  4821 //
  4825 void CMmCustomMessHandler::CheckECIDInfo(
  4822 void CMmCustomMessHandler::CheckECIDInfo(
  4826     const TIsiReceiveC& aIsiMessage )
  4823     const TIsiReceiveC& aIsiMessage )
  4827     {
  4824     {
  4828 TFLOGSTRING("TSY: CMmCustomMessHandler::CheckECIDInfo");
  4825 TFLOGSTRING("TSY: CMmCustomMessHandler::CheckECIDInfo");
  4829 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_CHECKECIDINFO, "CMmCustomMessHandler::CheckECIDInfo" );
  4826 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_CHECKECIDINFO_TD, "CMmCustomMessHandler::CheckECIDInfo" );
  4830 
  4827 
  4831     TUint8 msgId( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_MESSAGEID ) );
  4828     TUint8 msgId( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_MESSAGEID ) );
  4832 
  4829 
  4833     if ( NET_MODEM_REG_STATUS_IND == msgId ||
  4830     if ( NET_MODEM_REG_STATUS_IND == msgId ||
  4834         NET_MODEM_REG_STATUS_GET_RESP == msgId )
  4831         NET_MODEM_REG_STATUS_GET_RESP == msgId )
  4835         {
  4832         {
  4836         // Check if cell information needs to be updated.
  4833         // Check if cell information needs to be updated.
  4837         TBool isNetRetStatusInd( NET_MODEM_REG_STATUS_IND == msgId );
  4834         TBool isNetRetStatusInd( NET_MODEM_REG_STATUS_IND == msgId );
  4838 
  4835 
  4839 TFLOGSTRING("TSY:CMmCustomMessHandler::CheckECIDInfo - Find NET_MODEM_CURRENT_CELL_INFO SubBlock");
  4836 TFLOGSTRING("TSY:CMmCustomMessHandler::CheckECIDInfo - Find NET_MODEM_CURRENT_CELL_INFO SubBlock");
  4840 OstTrace0( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_CHECKECIDINFO, "CMmCustomMessHandler::CheckECIDInfo - Find NET_MODEM_CURRENT_CELL_INFO SubBlock" );
  4837 OstTrace0( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_CHECKECIDINFO_TD, "CMmCustomMessHandler::CheckECIDInfo - Find NET_MODEM_CURRENT_CELL_INFO SubBlock" );
  4841         // Get NET_MODEM_CURRENT_CELL_INFO sub block
  4838         // Get NET_MODEM_CURRENT_CELL_INFO sub block
  4842         // (should be always used when exists (coming when in 3G/RRC
  4839         // (should be always used when exists (coming when in 3G/RRC
  4843         // connected mode), otherwise NET_MODEM_GSM_REG_INFO is used).
  4840         // connected mode), otherwise NET_MODEM_GSM_REG_INFO is used).
  4844 
  4841 
  4845         TUint sbStartOffSet( 0 );
  4842         TUint sbStartOffSet( 0 );
  4864 
  4861 
  4865         // Get NET_MODEM_GSM_REG_INFO sub block.
  4862         // Get NET_MODEM_GSM_REG_INFO sub block.
  4866         if ( KErrNone != retValue )
  4863         if ( KErrNone != retValue )
  4867             {
  4864             {
  4868 TFLOGSTRING("TSY:CMmCustomMessHandler::CheckECIDInfo - Find NET_MODEM_GSM_REG_INFO SubBlock");
  4865 TFLOGSTRING("TSY:CMmCustomMessHandler::CheckECIDInfo - Find NET_MODEM_GSM_REG_INFO SubBlock");
  4869 OstTrace0( TRACE_NORMAL, DUP2_CMMCUSTOMMESSHANDLER_CHECKECIDINFO, "CMmCustomMessHandler::CheckECIDInfo - Find NET_MODEM_GSM_REG_INFO SubBlock" );
  4866 OstTrace0( TRACE_NORMAL,  DUP2_CMMCUSTOMMESSHANDLER_CHECKECIDINFO_TD, "CMmCustomMessHandler::CheckECIDInfo - Find NET_MODEM_GSM_REG_INFO SubBlock" );
  4870 
  4867 
  4871             sbStartOffSet = 0;
  4868             sbStartOffSet = 0;
  4872 
  4869 
  4873             if ( isNetRetStatusInd )
  4870             if ( isNetRetStatusInd )
  4874                 {
  4871                 {
  4891 
  4888 
  4892         // If subblock found.
  4889         // If subblock found.
  4893         if ( KErrNone == retValue )
  4890         if ( KErrNone == retValue )
  4894             {
  4891             {
  4895 TFLOGSTRING("TSY:CMmCustomMessHandler::CheckECIDInfo - SubBlock Found");
  4892 TFLOGSTRING("TSY:CMmCustomMessHandler::CheckECIDInfo - SubBlock Found");
  4896 OstTrace0( TRACE_NORMAL, DUP3_CMMCUSTOMMESSHANDLER_CHECKECIDINFO, "CMmCustomMessHandler::CheckECIDInfo, SubBlock Found" );
  4893 OstTrace0( TRACE_NORMAL,  DUP3_CMMCUSTOMMESSHANDLER_CHECKECIDINFO_TD, "CMmCustomMessHandler::CheckECIDInfo, SubBlock Found" );
  4897             TUint tempMCC( 0 ); // Mobile Country Code.
  4894             TUint tempMCC( 0 ); // Mobile Country Code.
  4898             TUint tempMNC( 0 ); // Mobile Network Code.
  4895             TUint tempMNC( 0 ); // Mobile Network Code.
  4899             TUint tempCID( 0 ); // Cell identity.
  4896             TUint tempCID( 0 ); // Cell identity.
  4900             TUint tempLAC( 0 ); // Location area code.
  4897             TUint tempLAC( 0 ); // Location area code.
  4901 
  4898 
  4959     (
  4956     (
  4960       const TIsiReceiveC& aIsiMessage, TInt aError
  4957       const TIsiReceiveC& aIsiMessage, TInt aError
  4961       )
  4958       )
  4962     {
  4959     {
  4963     TFLOGSTRING2( "TSY: CMmCustomMessHandler::HandleError - Error: %d", aError );
  4960     TFLOGSTRING2( "TSY: CMmCustomMessHandler::HandleError - Error: %d", aError );
  4964 OstTrace1( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_HANDLEERROR, "CMmCustomMessHandler::HandleError;aError=%d", aError );
  4961 OstTrace1( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_HANDLEERROR_TD, "CMmCustomMessHandler::HandleError;aError=%d", aError );
  4965 
  4962 
  4966     TInt resource( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_RESOURCEID ) );
  4963     TInt resource( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_RESOURCEID ) );
  4967     TInt messageId( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_MESSAGEID ) );
  4964     TInt messageId( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_MESSAGEID ) );
  4968     TUint8 transId( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_TRANSID ) );
  4965     TUint8 transId( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_TRANSID ) );
  4969     TUint8 serviceType( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_SUBMESSAGEID ) );
  4966     TUint8 serviceType( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_SUBMESSAGEID ) );
  4971     switch( resource )
  4968     switch( resource )
  4972         {
  4969         {
  4973         default:
  4970         default:
  4974             {
  4971             {
  4975             TFLOGSTRING("TSY: CMmCustomMessHandler::HandleError, switch resource - default.\n" );
  4972             TFLOGSTRING("TSY: CMmCustomMessHandler::HandleError, switch resource - default.\n" );
  4976 OstTrace0( TRACE_NORMAL, DUP3_CMMCUSTOMMESSHANDLER_HANDLEERROR, "CMmCustomMessHandler::HandleError, switch resource - default" );
  4973 OstTrace0( TRACE_NORMAL,  DUP3_CMMCUSTOMMESSHANDLER_HANDLEERROR_TD, "CMmCustomMessHandler::HandleError, switch resource - default" );
  4977             // Nothing to do here.
  4974             // Nothing to do here.
  4978             break;
  4975             break;
  4979             }
  4976             }
  4980         } // end switch ( resource )
  4977         } // end switch ( resource )
  4981     }
  4978     }
  4993 TInt CMmCustomMessHandler::GssCsServiceSetBandReq( TUint8 aTransId, // transaction Id
  4990 TInt CMmCustomMessHandler::GssCsServiceSetBandReq( TUint8 aTransId, // transaction Id
  4994         RMmCustomAPI::TNetworkModeCaps aNetworkModeCaps, // network mode caps
  4991         RMmCustomAPI::TNetworkModeCaps aNetworkModeCaps, // network mode caps
  4995         RMmCustomAPI::TBandSelection aBandSelection ) // band selection
  4992         RMmCustomAPI::TBandSelection aBandSelection ) // band selection
  4996     {
  4993     {
  4997     TFLOGSTRING2( "TSY: CMmCustomMessHandler::GssCsServiceSetBandReq - aTransId: %d", aTransId );
  4994     TFLOGSTRING2( "TSY: CMmCustomMessHandler::GssCsServiceSetBandReq - aTransId: %d", aTransId );
  4998 OstTraceExt1( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_GSSCSSERVICESETBANDREQ, "CMmCustomMessHandler::GssCsServiceSetBandReq;aTransId=%hhu", aTransId );
  4995 OstTraceExt1( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_GSSCSSERVICESETBANDREQ_TD, "CMmCustomMessHandler::GssCsServiceSetBandReq;aTransId=%hhu", aTransId );
  4999 
  4996 
  5000     if ( RMmCustomAPI::KCapsNetworkModeUmts == aNetworkModeCaps ||
  4997     if ( RMmCustomAPI::KCapsNetworkModeUmts == aNetworkModeCaps ||
  5001          RMmCustomAPI::KCapsNetworkModeDual == aNetworkModeCaps )
  4998          RMmCustomAPI::KCapsNetworkModeDual == aNetworkModeCaps )
  5002         {
  4999         {
  5003         TFLOGSTRING3( "TSY: CMmCustomMessHandler::GssCsServiceSetBandReq - NWModeCaps: %d - Band: %d",
  5000         TFLOGSTRING3( "TSY: CMmCustomMessHandler::GssCsServiceSetBandReq - NWModeCaps: %d - Band: %d",
  5004             aNetworkModeCaps, aBandSelection );
  5001             aNetworkModeCaps, aBandSelection );
  5005 OstTraceExt2( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_GSSCSSERVICESETBANDREQ, "CMmCustomMessHandler::GssCsServiceSetBandReq; - NWModeCaps=%d - Band=%d", aNetworkModeCaps, aBandSelection );
  5002 OstTraceExt2( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_GSSCSSERVICESETBANDREQ_TD, "CMmCustomMessHandler::GssCsServiceSetBandReq; - NWModeCaps=%d - Band=%d", aNetworkModeCaps, aBandSelection );
  5006 
  5003 
  5007         // create message data buffer
  5004         // create message data buffer
  5008         TBuf8< 20 > messageData;
  5005         TBuf8< 20 > messageData;
  5009         messageData.Append( GSS_SELECTED_BANDS_WRITE ); // append service type
  5006         messageData.Append( GSS_SELECTED_BANDS_WRITE ); // append service type
  5010         messageData.Append( 1 ); // number of subblocks
  5007         messageData.Append( 1 ); // number of subblocks
  5049 // -----------------------------------------------------------------------------
  5046 // -----------------------------------------------------------------------------
  5050 //
  5047 //
  5051 TInt CMmCustomMessHandler::GssCsServiceGetBandReq( TUint8 aTransId ) //transaction Id
  5048 TInt CMmCustomMessHandler::GssCsServiceGetBandReq( TUint8 aTransId ) //transaction Id
  5052     {
  5049     {
  5053     TFLOGSTRING2( "TSY: CMmCustomMessHandler::GssCsServiceGetBandReq - aTransId: %d", aTransId );
  5050     TFLOGSTRING2( "TSY: CMmCustomMessHandler::GssCsServiceGetBandReq - aTransId: %d", aTransId );
  5054 OstTraceExt1( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_GSSCSSERVICEGETBANDREQ, "CMmCustomMessHandler::GssCsServiceGetBandReq;aTransId=%hhu", aTransId );
  5051 OstTraceExt1( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_GSSCSSERVICEGETBANDREQ_TD, "CMmCustomMessHandler::GssCsServiceGetBandReq;aTransId=%hhu", aTransId );
  5055 
  5052 
  5056     // create message data buffer
  5053     // create message data buffer
  5057     TBuf8< 4 > messageData;
  5054     TBuf8< 4 > messageData;
  5058     messageData.Append( GSS_SELECTED_BANDS_READ ); // append service type
  5055     messageData.Append( GSS_SELECTED_BANDS_READ ); // append service type
  5059     messageData.Append( 0 ); // No subblocks
  5056     messageData.Append( 0 ); // No subblocks
  5068 // -----------------------------------------------------------------------------
  5065 // -----------------------------------------------------------------------------
  5069 //
  5066 //
  5070 void CMmCustomMessHandler::CompleteGetBandSelection( const TIsiReceiveC& aIsiMessage )
  5067 void CMmCustomMessHandler::CompleteGetBandSelection( const TIsiReceiveC& aIsiMessage )
  5071     {
  5068     {
  5072     TFLOGSTRING("TSY: CMmCustomMessHandler::CompleteGetBandSelection");
  5069     TFLOGSTRING("TSY: CMmCustomMessHandler::CompleteGetBandSelection");
  5073 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_COMPLETEGETBANDSELECTION, "CMmCustomMessHandler::CompleteGetBandSelection" );
  5070 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_COMPLETEGETBANDSELECTION_TD, "CMmCustomMessHandler::CompleteGetBandSelection" );
  5074 
  5071 
  5075     RMmCustomAPI::TNetworkModeCaps nwModeCaps; // network mode caps
  5072     RMmCustomAPI::TNetworkModeCaps nwModeCaps; // network mode caps
  5076     RMmCustomAPI::TBandSelection bandSelection; // band selection
  5073     RMmCustomAPI::TBandSelection bandSelection; // band selection
  5077     bandSelection = RMmCustomAPI::ENetworkBandAny; // set "any" as a default
  5074     bandSelection = RMmCustomAPI::ENetworkBandAny; // set "any" as a default
  5078 
  5075 
  5084         GSS_CS_SERVICE_RESP_OFFSET_NBROFSUBBLOCKS + 1 );
  5081         GSS_CS_SERVICE_RESP_OFFSET_NBROFSUBBLOCKS + 1 );
  5085 
  5082 
  5086     TUint8 firstSubblock ( aIsiMessage.Get8bit( sbOffset ) );
  5083     TUint8 firstSubblock ( aIsiMessage.Get8bit( sbOffset ) );
  5087 
  5084 
  5088     TFLOGSTRING2("TSY: CMmCustomMessHandler::CompleteGetBandSelection - ECustomGetBandSelectionIPC. NrOfSubblocks:%d", nrOfSubblocks);
  5085     TFLOGSTRING2("TSY: CMmCustomMessHandler::CompleteGetBandSelection - ECustomGetBandSelectionIPC. NrOfSubblocks:%d", nrOfSubblocks);
  5089 OstTraceExt1( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_COMPLETEGETBANDSELECTION, "CMmCustomMessHandler::CompleteGetBandSelection;nrOfSubblocks=%hhu", nrOfSubblocks );
  5086 OstTraceExt1( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_COMPLETEGETBANDSELECTION_TD, "CMmCustomMessHandler::CompleteGetBandSelection;nrOfSubblocks=%hhu", nrOfSubblocks );
  5090 
  5087 
  5091     // In 2G only products only sub block GSS_SELECTED_GSM_BANDS_INFO is returned.
  5088     // In 2G only products only sub block GSS_SELECTED_GSM_BANDS_INFO is returned.
  5092     if ( 1 == nrOfSubblocks && firstSubblock == GSS_SELECTED_GSM_BAND_INFO )
  5089     if ( 1 == nrOfSubblocks && firstSubblock == GSS_SELECTED_GSM_BAND_INFO )
  5093         {
  5090         {
  5094         nwModeCaps = RMmCustomAPI::KCapsNetworkModeGsm;
  5091         nwModeCaps = RMmCustomAPI::KCapsNetworkModeGsm;
  5101 
  5098 
  5102         // first SB is GSS_SELECTED_GSM_BAND_INFO
  5099         // first SB is GSS_SELECTED_GSM_BAND_INFO
  5103         if ( GSS_SELECTED_GSM_BAND_INFO == firstSubblock )
  5100         if ( GSS_SELECTED_GSM_BAND_INFO == firstSubblock )
  5104             {
  5101             {
  5105             TFLOGSTRING("TSY: CMmCustomMessHandler::CompleteGetBandSelection - 1st SB = GSM BAND INFO");
  5102             TFLOGSTRING("TSY: CMmCustomMessHandler::CompleteGetBandSelection - 1st SB = GSM BAND INFO");
  5106 OstTrace0( TRACE_NORMAL, DUP2_CMMCUSTOMMESSHANDLER_COMPLETEGETBANDSELECTION, "CMmCustomMessHandler::CompleteGetBandSelection - 1st SB = GSM BAND INFO" );
  5103 OstTrace0( TRACE_NORMAL,  DUP2_CMMCUSTOMMESSHANDLER_COMPLETEGETBANDSELECTION_TD, "CMmCustomMessHandler::CompleteGetBandSelection - 1st SB = GSM BAND INFO" );
  5107 
  5104 
  5108             // calculate offsets
  5105             // calculate offsets
  5109             gsmBandInfoOffset = sbOffset +
  5106             gsmBandInfoOffset = sbOffset +
  5110                 GSS_SELECTED_GSM_BAND_INFO_OFFSET_SELECTEDGSMBANDS;
  5107                 GSS_SELECTED_GSM_BAND_INFO_OFFSET_SELECTEDGSMBANDS;
  5111 
  5108 
  5118                 }
  5115                 }
  5119             }
  5116             }
  5120         else if ( GSS_SELECTED_UMTS_BAND_INFO == firstSubblock )
  5117         else if ( GSS_SELECTED_UMTS_BAND_INFO == firstSubblock )
  5121             {
  5118             {
  5122             TFLOGSTRING("TSY: CMmCustomMessHandler::CompleteGetBandSelection - 1st SB = UMTS BAND INFO");
  5119             TFLOGSTRING("TSY: CMmCustomMessHandler::CompleteGetBandSelection - 1st SB = UMTS BAND INFO");
  5123 OstTrace0( TRACE_NORMAL, DUP3_CMMCUSTOMMESSHANDLER_COMPLETEGETBANDSELECTION, "CMmCustomMessHandler::CompleteGetBandSelection - 1st SB = UMTS BAND INFO" );
  5120 OstTrace0( TRACE_NORMAL,  DUP3_CMMCUSTOMMESSHANDLER_COMPLETEGETBANDSELECTION_TD, "CMmCustomMessHandler::CompleteGetBandSelection - 1st SB = UMTS BAND INFO" );
  5124 
  5121 
  5125             // calculate offsets
  5122             // calculate offsets
  5126             umtsBandInfoOffset = sbOffset +
  5123             umtsBandInfoOffset = sbOffset +
  5127                 GSS_SELECTED_UMTS_BAND_INFO_OFFSET_SELECTEDUMTSBANDS;
  5124                 GSS_SELECTED_UMTS_BAND_INFO_OFFSET_SELECTEDUMTSBANDS;
  5128 
  5125 
  5137 
  5134 
  5138         //If phone is forced to GSM, value in GSS_SELECTED_UMTS_BAND_INFO shall be GSS_UMTS_NO_BANDS
  5135         //If phone is forced to GSM, value in GSS_SELECTED_UMTS_BAND_INFO shall be GSS_UMTS_NO_BANDS
  5139         if ( GSS_UMTS_NO_BANDS == aIsiMessage.Get32bit( umtsBandInfoOffset ) ) // forced GSM
  5136         if ( GSS_UMTS_NO_BANDS == aIsiMessage.Get32bit( umtsBandInfoOffset ) ) // forced GSM
  5140             {
  5137             {
  5141             TFLOGSTRING("TSY: CMmCustomMessHandler::CompleteGetBandSelection - umtsBandInfo==GSS_UMTS_NO_BANDS => Forced GSM");
  5138             TFLOGSTRING("TSY: CMmCustomMessHandler::CompleteGetBandSelection - umtsBandInfo==GSS_UMTS_NO_BANDS => Forced GSM");
  5142 OstTrace0( TRACE_NORMAL, DUP4_CMMCUSTOMMESSHANDLER_COMPLETEGETBANDSELECTION, "CMmCustomMessHandler::CompleteGetBandSelection - umtsBandInfo==GSS_UMTS_NO_BANDS => Forced GSM" );
  5139 OstTrace0( TRACE_NORMAL,  DUP4_CMMCUSTOMMESSHANDLER_COMPLETEGETBANDSELECTION_TD, "CMmCustomMessHandler::CompleteGetBandSelection - umtsBandInfo==GSS_UMTS_NO_BANDS => Forced GSM" );
  5143             nwModeCaps = RMmCustomAPI::KCapsNetworkModeGsm;
  5140             nwModeCaps = RMmCustomAPI::KCapsNetworkModeGsm;
  5144             }
  5141             }
  5145         else
  5142         else
  5146             {
  5143             {
  5147             //If phone is forced to GSM, value in GSS_SELECTED_UMTS_BAND_INFO shall be GSS_UMTS_NO_BANDS.
  5144             //If phone is forced to GSM, value in GSS_SELECTED_UMTS_BAND_INFO shall be GSS_UMTS_NO_BANDS.
  5148             if ( 0 < gsmBandInfoOffset && GSS_GSM_NO_BANDS == aIsiMessage.Get8bit( gsmBandInfoOffset ) ) // forced UMTS
  5145             if ( 0 < gsmBandInfoOffset && GSS_GSM_NO_BANDS == aIsiMessage.Get8bit( gsmBandInfoOffset ) ) // forced UMTS
  5149                 {
  5146                 {
  5150                 TFLOGSTRING("TSY: CMmCustomMessHandler::CompleteGetBandSelection - gsmBandInfo==GSS_GSM_NO_BANDS => Forced UMTS");
  5147                 TFLOGSTRING("TSY: CMmCustomMessHandler::CompleteGetBandSelection - gsmBandInfo==GSS_GSM_NO_BANDS => Forced UMTS");
  5151 OstTrace0( TRACE_NORMAL, DUP5_CMMCUSTOMMESSHANDLER_COMPLETEGETBANDSELECTION, "CMmCustomMessHandler::CompleteGetBandSelection - gsmBandInfo==GSS_GSM_NO_BANDS => Forced UMTS" );
  5148 OstTrace0( TRACE_NORMAL,  DUP5_CMMCUSTOMMESSHANDLER_COMPLETEGETBANDSELECTION_TD, "CMmCustomMessHandler::CompleteGetBandSelection - gsmBandInfo==GSS_GSM_NO_BANDS => Forced UMTS" );
  5152                 nwModeCaps = RMmCustomAPI::KCapsNetworkModeUmts;
  5149                 nwModeCaps = RMmCustomAPI::KCapsNetworkModeUmts;
  5153                 }
  5150                 }
  5154             else // dual mode
  5151             else // dual mode
  5155                 {
  5152                 {
  5156                 TFLOGSTRING("TSY: CMmCustomMessHandler::CompleteGetBandSelection - Dual mode");
  5153                 TFLOGSTRING("TSY: CMmCustomMessHandler::CompleteGetBandSelection - Dual mode");
  5157 OstTrace0( TRACE_NORMAL, DUP6_CMMCUSTOMMESSHANDLER_COMPLETEGETBANDSELECTION, "CMmCustomMessHandler::CompleteGetBandSelection - Dual mode" );
  5154 OstTrace0( TRACE_NORMAL,  DUP6_CMMCUSTOMMESSHANDLER_COMPLETEGETBANDSELECTION_TD, "CMmCustomMessHandler::CompleteGetBandSelection - Dual mode" );
  5158                 nwModeCaps = RMmCustomAPI::KCapsNetworkModeDual;
  5155                 nwModeCaps = RMmCustomAPI::KCapsNetworkModeDual;
  5159                 }
  5156                 }
  5160 
  5157 
  5161             // Set network band
  5158             // Set network band
  5162             if ( GSS_UMTS_BAND_V_MASK == aIsiMessage.Get32bit( umtsBandInfoOffset ) )
  5159             if ( GSS_UMTS_BAND_V_MASK == aIsiMessage.Get32bit( umtsBandInfoOffset ) )
  5163                 {
  5160                 {
  5164                 TFLOGSTRING("TSY: CMmCustomMessHandler::CompleteGetBandSelection - UMTS850");
  5161                 TFLOGSTRING("TSY: CMmCustomMessHandler::CompleteGetBandSelection - UMTS850");
  5165 OstTrace0( TRACE_NORMAL, DUP7_CMMCUSTOMMESSHANDLER_COMPLETEGETBANDSELECTION, "CMmCustomMessHandler::CompleteGetBandSelection - UMTS850" );
  5162 OstTrace0( TRACE_NORMAL,  DUP7_CMMCUSTOMMESSHANDLER_COMPLETEGETBANDSELECTION_TD, "CMmCustomMessHandler::CompleteGetBandSelection - UMTS850" );
  5166                 bandSelection = RMmCustomAPI::ENetworkBandUmts850;
  5163                 bandSelection = RMmCustomAPI::ENetworkBandUmts850;
  5167                 }
  5164                 }
  5168             else if( GSS_UMTS_BAND_I_MASK == aIsiMessage.Get32bit( umtsBandInfoOffset ) )
  5165             else if( GSS_UMTS_BAND_I_MASK == aIsiMessage.Get32bit( umtsBandInfoOffset ) )
  5169                 {
  5166                 {
  5170                 TFLOGSTRING("TSY: CMmCustomMessHandler::CompleteGetBandSelection - UMTS2100");
  5167                 TFLOGSTRING("TSY: CMmCustomMessHandler::CompleteGetBandSelection - UMTS2100");
  5171 OstTrace0( TRACE_NORMAL, DUP8_CMMCUSTOMMESSHANDLER_COMPLETEGETBANDSELECTION, "CMmCustomMessHandler::CompleteGetBandSelection - UMTS2100" );
  5168 OstTrace0( TRACE_NORMAL,  DUP8_CMMCUSTOMMESSHANDLER_COMPLETEGETBANDSELECTION_TD, "CMmCustomMessHandler::CompleteGetBandSelection - UMTS2100" );
  5172                 bandSelection = RMmCustomAPI::ENetworkBandUmts2100;
  5169                 bandSelection = RMmCustomAPI::ENetworkBandUmts2100;
  5173                 }
  5170                 }
  5174             }
  5171             }
  5175         }
  5172         }
  5176 
  5173 
  5191         (
  5188         (
  5192         const TUint8 //aTransId
  5189         const TUint8 //aTransId
  5193         )
  5190         )
  5194     {
  5191     {
  5195 TFLOGSTRING("TSY: CMmCustomMessHandler::ReadLifeTimerFromPermanentMemory.\n" );
  5192 TFLOGSTRING("TSY: CMmCustomMessHandler::ReadLifeTimerFromPermanentMemory.\n" );
  5196 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_READLIFETIMERFROMPERMANENTMEMORY, "CMmCustomMessHandler::ReadLifeTimerFromPermanentMemory" );
  5193 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_READLIFETIMERFROMPERMANENTMEMORY_TD, "CMmCustomMessHandler::ReadLifeTimerFromPermanentMemory" );
  5197 
  5194 
  5198     // Group ID 2 + Index 2 + Filler 2 + Offset 4 + Data amount to be read 4 = 14
  5195     // Group ID 2 + Index 2 + Filler 2 + Offset 4 + Data amount to be read 4 = 14
  5199     TBuf8<14> data;
  5196     TBuf8<14> data;
  5200 
  5197 
  5201     // Append Group ID
  5198     // Append Group ID
  5216     data.Append( static_cast<TUint8>( KCallLifeTimerDataAmount >> 24 ) );
  5213     data.Append( static_cast<TUint8>( KCallLifeTimerDataAmount >> 24 ) );
  5217     data.Append( static_cast<TUint8>( KCallLifeTimerDataAmount >> 16 ) );
  5214     data.Append( static_cast<TUint8>( KCallLifeTimerDataAmount >> 16 ) );
  5218     data.Append( static_cast<TUint8>( KCallLifeTimerDataAmount >> 8 ) );
  5215     data.Append( static_cast<TUint8>( KCallLifeTimerDataAmount >> 8 ) );
  5219     data.Append( static_cast<TUint8>( KCallLifeTimerDataAmount ) );
  5216     data.Append( static_cast<TUint8>( KCallLifeTimerDataAmount ) );
  5220 
  5217 
  5221     /* To be done in CPS
  5218     /*
  5222     return iPhoNetSender->Send( PN_PERMANENT_DATA,
  5219     return iPhoNetSender->Send( PN_PERMANENT_DATA,
  5223         aTransId,
  5220         aTransId,
  5224         PERM_PM_RECORD_READ_REQ,
  5221         PERM_PM_RECORD_READ_REQ,
  5225         data );*/
  5222         data );*/
  5226     return KErrNone;
  5223     return KErrNone;
  5229 // -----------------------------------------------------------------------------
  5226 // -----------------------------------------------------------------------------
  5230 // CMmCustomMessHandler::LifeTimerFromPermanentMemoryReadResponse
  5227 // CMmCustomMessHandler::LifeTimerFromPermanentMemoryReadResponse
  5231 // Breaks  PERM_PM_RECORD_READ_RESP message.
  5228 // Breaks  PERM_PM_RECORD_READ_RESP message.
  5232 // -----------------------------------------------------------------------------
  5229 // -----------------------------------------------------------------------------
  5233 //
  5230 //
  5234 /* To be done in CPS
  5231 /* 
  5235 void CMmCustomMessHandler::LifeTimerFromPermanentMemoryReadResponse
  5232 void CMmCustomMessHandler::LifeTimerFromPermanentMemoryReadResponse
  5236         (
  5233         (
  5237         const TIsiReceiveC& aIsiMessage    // an ISI message
  5234         const TIsiReceiveC& aIsiMessage    // an ISI message
  5238         )
  5235         )
  5239     {
  5236     {
  5240 TFLOGSTRING("TSY: CCMmCustomMessHandler::LifeTimerFromPermanentMemoryReadResponse.\n" );
  5237 TFLOGSTRING("TSY: CCMmCustomMessHandler::LifeTimerFromPermanentMemoryReadResponse.\n" );
  5241 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_LIFETIMERFROMPERMANENTMEMORYREADRESPONSE, "CMmCustomMessHandler::LifeTimerFromPermanentMemoryReadResponse" );
  5238 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_LIFETIMERFROMPERMANENTMEMORYREADRESPONSE_TD, "CMmCustomMessHandler::LifeTimerFromPermanentMemoryReadResponse" );
  5242 
  5239 
  5243     TInt ret( KErrNone );
  5240     TInt ret( KErrNone );
  5244 
  5241 
  5245     TUint8 pmmStatus = aIsiMessage.Get8bit(
  5242     TUint8 pmmStatus = aIsiMessage.Get8bit(
  5246                ISI_HEADER_SIZE +
  5243                ISI_HEADER_SIZE +
  5265             if ( KCallLifeTimerDataAmount == dataSize )
  5262             if ( KCallLifeTimerDataAmount == dataSize )
  5266                 {
  5263                 {
  5267                 iCallLifeTimer = aIsiMessage.Get32bit( sbStartOffSet +
  5264                 iCallLifeTimer = aIsiMessage.Get32bit( sbStartOffSet +
  5268                                      PERM_SB_PM_DATA_OFFSET_DATA );
  5265                                      PERM_SB_PM_DATA_OFFSET_DATA );
  5269 TFLOGSTRING2( "TSY: CMmCustomMessHandler::LifeTimerFromPermanentMemoryReadResponse - iCallLifeTimer: %d", iCallLifeTimer );
  5266 TFLOGSTRING2( "TSY: CMmCustomMessHandler::LifeTimerFromPermanentMemoryReadResponse - iCallLifeTimer: %d", iCallLifeTimer );
  5270 OstTrace1( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_LIFETIMERFROMPERMANENTMEMORYREADRESPONSE, "CMmCustomMessHandler::LifeTimerFromPermanentMemoryReadResponse;iCallLifeTimer=%d", iCallLifeTimer );
  5267 OstTrace1( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_LIFETIMERFROMPERMANENTMEMORYREADRESPONSE_TD, "CMmCustomMessHandler::LifeTimerFromPermanentMemoryReadResponse;iCallLifeTimer=%d", iCallLifeTimer );
  5271                 }
  5268                 }
  5272             else
  5269             else
  5273                 {
  5270                 {
  5274 TFLOGSTRING2( "TSY: CMmCustomMessHandler::LifeTimerFromPermanentMemoryReadResponse - Incorrect data size: %d", dataSize );
  5271 TFLOGSTRING2( "TSY: CMmCustomMessHandler::LifeTimerFromPermanentMemoryReadResponse - Incorrect data size: %d", dataSize );
  5275 OstTrace1( TRACE_NORMAL, DUP2_CMMCUSTOMMESSHANDLER_LIFETIMERFROMPERMANENTMEMORYREADRESPONSE, "CMmCustomMessHandler::LifeTimerFromPermanentMemoryReadResponse - Incorrect data size=%u", dataSize );
  5272 OstTrace1( TRACE_NORMAL,  DUP2_CMMCUSTOMMESSHANDLER_LIFETIMERFROMPERMANENTMEMORYREADRESPONSE_TD, "CMmCustomMessHandler::LifeTimerFromPermanentMemoryReadResponse - Incorrect data size=%u", dataSize );
  5276                 TF_ASSERT( KCallLifeTimerDataAmount != dataSize );
  5273                 TF_ASSERT( KCallLifeTimerDataAmount != dataSize );
  5277                 ret = KErrGeneral;
  5274                 ret = KErrGeneral;
  5278                 }
  5275                 }
  5279             }
  5276             }
  5280         }
  5277         }
  5282         {
  5279         {
  5283         if ( PMM_NOT_READY == pmmStatus )
  5280         if ( PMM_NOT_READY == pmmStatus )
  5284             {
  5281             {
  5285             // Send request again max 3 times
  5282             // Send request again max 3 times
  5286 TFLOGSTRING("TSY: CMmCustomMessHandler::LifeTimerFromPermanentMemoryReadResponse - PMM not ready. Send request again\n" );
  5283 TFLOGSTRING("TSY: CMmCustomMessHandler::LifeTimerFromPermanentMemoryReadResponse - PMM not ready. Send request again\n" );
  5287 OstTrace0( TRACE_NORMAL, DUP4_CMMCUSTOMMESSHANDLER_LIFETIMERFROMPERMANENTMEMORYREADRESPONSE, "CMmCustomMessHandler::LifeTimerFromPermanentMemoryReadResponse - PMM not ready. Send request again" );
  5284 OstTrace0( TRACE_NORMAL,  DUP4_CMMCUSTOMMESSHANDLER_LIFETIMERFROMPERMANENTMEMORYREADRESPONSE_TD, "CMmCustomMessHandler::LifeTimerFromPermanentMemoryReadResponse - PMM not ready. Send request again" );
  5288             iPMMReadRetryCounter++;
  5285             iPMMReadRetryCounter++;
  5289             if ( KMaxPMMReadRequests > iPMMReadRetryCounter )
  5286             if ( KMaxPMMReadRequests > iPMMReadRetryCounter )
  5290                 {
  5287                 {
  5291                 ReadLifeTimerFromPermanentMemory ( KCustomTransId );
  5288                 ReadLifeTimerFromPermanentMemory ( KCustomTransId );
  5292                 }
  5289                 }
  5293             }
  5290             }
  5294         else if ( PMM_RECORD_NOT_FOUND == pmmStatus )
  5291         else if ( PMM_RECORD_NOT_FOUND == pmmStatus )
  5295             {
  5292             {
  5296             // The first boot of the phone.
  5293             // The first boot of the phone.
  5297 TFLOGSTRING("TSY: CMmCustomMessHandler::LifeTimerFromPermanentMemoryReadResponse - The first boot. Set iCallLifeTimer 0\n" );
  5294 TFLOGSTRING("TSY: CMmCustomMessHandler::LifeTimerFromPermanentMemoryReadResponse - The first boot. Set iCallLifeTimer 0\n" );
  5298             OstTrace0( TRACE_NORMAL, DUP5_CMMCUSTOMMESSHANDLER_LIFETIMERFROMPERMANENTMEMORYREADRESPONSE, "CMmCustomMessHandler::LifeTimerFromPermanentMemoryReadResponse - The first boot. Set iCallLifeTimer 0" );
  5295             OstTrace0( TRACE_NORMAL,  DUP5_CMMCUSTOMMESSHANDLER_LIFETIMERFROMPERMANENTMEMORYREADRESPONSE_TD, "CMmCustomMessHandler::LifeTimerFromPermanentMemoryReadResponse - The first boot. Set iCallLifeTimer 0" );
  5299             iCallLifeTimer = 0;
  5296             iCallLifeTimer = 0;
  5300             }
  5297             }
  5301         else
  5298         else
  5302             {
  5299             {
  5303 TFLOGSTRING2( "TSY: CMmCustomMessHandler::LifeTimerFromPermanentMemoryReadResponse - PMM Status NOT OK: %d", pmmStatus );
  5300 TFLOGSTRING2( "TSY: CMmCustomMessHandler::LifeTimerFromPermanentMemoryReadResponse - PMM Status NOT OK: %d", pmmStatus );
  5304 OstTraceExt1( TRACE_NORMAL, DUP3_CMMCUSTOMMESSHANDLER_LIFETIMERFROMPERMANENTMEMORYREADRESPONSE, "CMmCustomMessHandler::LifeTimerFromPermanentMemoryReadResponse - PMM Status NOT OK=%hhu", pmmStatus );
  5301 OstTraceExt1( TRACE_NORMAL,  DUP3_CMMCUSTOMMESSHANDLER_LIFETIMERFROMPERMANENTMEMORYREADRESPONSE_TD, "CMmCustomMessHandler::LifeTimerFromPermanentMemoryReadResponse - PMM Status NOT OK=%hhu", pmmStatus );
  5305             }
  5302             }
  5306         }
  5303         }
  5307     }*/
  5304     }*/
  5308 
  5305 
  5309 // -----------------------------------------------------------------------------
  5306 // -----------------------------------------------------------------------------
  5317         const TUint8 /*aTransId*/,
  5314         const TUint8 /*aTransId*/,
  5318         TTimeIntervalSeconds aTime
  5315         TTimeIntervalSeconds aTime
  5319         )
  5316         )
  5320     {
  5317     {
  5321 TFLOGSTRING("TSY: CMmCustomMessHandler::WriteLifeTimerToPermanentMemory.\n" );
  5318 TFLOGSTRING("TSY: CMmCustomMessHandler::WriteLifeTimerToPermanentMemory.\n" );
  5322 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_WRITELIFETIMERTOPERMANENTMEMORY, "CMmCustomMessHandler::WriteLifeTimerToPermanentMemory" );
  5319 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_WRITELIFETIMERTOPERMANENTMEMORY_TD, "CMmCustomMessHandler::WriteLifeTimerToPermanentMemory" );
  5323 
  5320 
  5324     // Group ID 2 + Index 2 + Filler 2 + Offset 4 + Data amount to be read 4 = 14
  5321     // Group ID 2 + Index 2 + Filler 2 + Offset 4 + Data amount to be read 4 = 14
  5325     TBuf8<14> data;
  5322     TBuf8<14> data;
  5326 
  5323 
  5327     // Append Group ID
  5324     // Append Group ID
  5343 
  5340 
  5344     if ( KCallLifeTimerNotSet == iCallLifeTimer )
  5341     if ( KCallLifeTimerNotSet == iCallLifeTimer )
  5345         {
  5342         {
  5346 TFLOGSTRING( "TSY: CMmCustomMessHandler::WriteLifeTimerToPermanentMemory - Call Life Timer is not set from PMM ret KErrNotReady\n" );
  5343 TFLOGSTRING( "TSY: CMmCustomMessHandler::WriteLifeTimerToPermanentMemory - Call Life Timer is not set from PMM ret KErrNotReady\n" );
  5347 TFLOGSTRING("TSY: CMmCustomMessHandler::WriteLifeTimerToPermanentMemory - PERM_PM_RECORD_WRITE_REQ is NOT send\n" );
  5344 TFLOGSTRING("TSY: CMmCustomMessHandler::WriteLifeTimerToPermanentMemory - PERM_PM_RECORD_WRITE_REQ is NOT send\n" );
  5348 OstTrace0( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_WRITELIFETIMERTOPERMANENTMEMORY, "CMmCustomMessHandler::WriteLifeTimerToPermanentMemory - Call Life Timer is not set from PMM ret KErrNotReady" );
  5345 OstTrace0( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_WRITELIFETIMERTOPERMANENTMEMORY_TD, "CMmCustomMessHandler::WriteLifeTimerToPermanentMemory - Call Life Timer is not set from PMM ret KErrNotReady" );
  5349 OstTrace0( TRACE_NORMAL, DUP2_CMMCUSTOMMESSHANDLER_WRITELIFETIMERTOPERMANENTMEMORY, "CMmCustomMessHandler::WriteLifeTimerToPermanentMemory - PERM_PM_RECORD_WRITE_REQ is NOT send" );
  5346 OstTrace0( TRACE_NORMAL,  DUP2_CMMCUSTOMMESSHANDLER_WRITELIFETIMERTOPERMANENTMEMORY_TD, "CMmCustomMessHandler::WriteLifeTimerToPermanentMemory - PERM_PM_RECORD_WRITE_REQ is NOT send" );
  5350 
  5347 
  5351         // Return request with KErrNotReady
  5348         // Return request with KErrNotReady
  5352         return ( KErrNotReady );
  5349         return ( KErrNotReady );
  5353         }
  5350         }
  5354     else
  5351     else
  5360         data.Append( static_cast<TUint8>( iCallLifeTimer >> 24 ) );
  5357         data.Append( static_cast<TUint8>( iCallLifeTimer >> 24 ) );
  5361         data.Append( static_cast<TUint8>( iCallLifeTimer >> 16 ) );
  5358         data.Append( static_cast<TUint8>( iCallLifeTimer >> 16 ) );
  5362         data.Append( static_cast<TUint8>( iCallLifeTimer >> 8 ) );
  5359         data.Append( static_cast<TUint8>( iCallLifeTimer >> 8 ) );
  5363         data.Append( static_cast<TUint8>( iCallLifeTimer ) );
  5360         data.Append( static_cast<TUint8>( iCallLifeTimer ) );
  5364 
  5361 
  5365         /* To be done in CPS
  5362         /* 
  5366         return iPhoNetSender->Send( PN_PERMANENT_DATA,
  5363         return iPhoNetSender->Send( PN_PERMANENT_DATA,
  5367             aTransId,
  5364             aTransId,
  5368             PERM_PM_RECORD_WRITE_REQ,
  5365             PERM_PM_RECORD_WRITE_REQ,
  5369             data );*/
  5366             data );*/
  5370         return KErrNone;
  5367         return KErrNone;
  5374 // -----------------------------------------------------------------------------
  5371 // -----------------------------------------------------------------------------
  5375 // CMmCustomMessHandler::LifeTimerToPermanentMemoryWriteResponse
  5372 // CMmCustomMessHandler::LifeTimerToPermanentMemoryWriteResponse
  5376 // Breaks  PERM_PM_RECORD_WRITE_RESP message.
  5373 // Breaks  PERM_PM_RECORD_WRITE_RESP message.
  5377 // -----------------------------------------------------------------------------
  5374 // -----------------------------------------------------------------------------
  5378 //
  5375 //
  5379 /* To be done in CPS
  5376 /* 
  5380 void CMmCustomMessHandler::LifeTimerToPermanentMemoryWriteResponse
  5377 void CMmCustomMessHandler::LifeTimerToPermanentMemoryWriteResponse
  5381         (
  5378         (
  5382         const TIsiReceiveC& aIsiMessage    // an ISI message
  5379         const TIsiReceiveC& aIsiMessage    // an ISI message
  5383         )
  5380         )
  5384     {
  5381     {
  5385 TFLOGSTRING("TSY: CMmCustomMessHandler::LifeTimerToPermanentMemoryWriteResponse.\n" );
  5382 TFLOGSTRING("TSY: CMmCustomMessHandler::LifeTimerToPermanentMemoryWriteResponse.\n" );
  5386 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_LIFETIMERTOPERMANENTMEMORYWRITERESPONSE, "CMmCustomMessHandler::LifeTimerToPermanentMemoryWriteResponse" );
  5383 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_LIFETIMERTOPERMANENTMEMORYWRITERESPONSE_TD, "CMmCustomMessHandler::LifeTimerToPermanentMemoryWriteResponse" );
  5387 
  5384 
  5388     TInt ret( KErrNone );
  5385     TInt ret( KErrNone );
  5389 
  5386 
  5390     TUint8 pmmStatus = aIsiMessage.Get8bit(
  5387     TUint8 pmmStatus = aIsiMessage.Get8bit(
  5391                ISI_HEADER_SIZE +
  5388                ISI_HEADER_SIZE +
  5392                PERM_PM_RECORD_WRITE_RESP_OFFSET_PMMSTATUS );
  5389                PERM_PM_RECORD_WRITE_RESP_OFFSET_PMMSTATUS );
  5393 TFLOGSTRING2( "TSY: CMmCustomMessHandler::LifeTimerToPermanentMemoryWriteResponse - pmmStatus: %d", pmmStatus );
  5390 TFLOGSTRING2( "TSY: CMmCustomMessHandler::LifeTimerToPermanentMemoryWriteResponse - pmmStatus: %d", pmmStatus );
  5394 OstTraceExt1( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_LIFETIMERTOPERMANENTMEMORYWRITERESPONSE, "CMmCustomMessHandler::LifeTimerToPermanentMemoryWriteResponse;pmmStatus=%hhu", pmmStatus );
  5391 OstTraceExt1( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_LIFETIMERTOPERMANENTMEMORYWRITERESPONSE_TD, "CMmCustomMessHandler::LifeTimerToPermanentMemoryWriteResponse;pmmStatus=%hhu", pmmStatus );
  5395 
  5392 
  5396     if ( PMM_OK != pmmStatus )
  5393     if ( PMM_OK != pmmStatus )
  5397         {
  5394         {
  5398         ret = KErrNotReady;
  5395         ret = KErrNotReady;
  5399         TF_ASSERT( PMM_OK != pmmStatus );
  5396         TF_ASSERT( PMM_OK != pmmStatus );
  5400 TFLOGSTRING2( "TSY: CMmCustomMessHandler::LifeTimerToPermanentMemoryWriteResponse - Call Life Timer is not updated / error from PMM ret: %d", ret );
  5397 TFLOGSTRING2( "TSY: CMmCustomMessHandler::LifeTimerToPermanentMemoryWriteResponse - Call Life Timer is not updated / error from PMM ret: %d", ret );
  5401 OstTrace1( TRACE_NORMAL, DUP2_CMMCUSTOMMESSHANDLER_LIFETIMERTOPERMANENTMEMORYWRITERESPONSE, "CMmCustomMessHandler::LifeTimerToPermanentMemoryWriteResponse - Call Life Timer is not updated / error from PMM ret=%d", ret );
  5398 OstTrace1( TRACE_NORMAL,  DUP2_CMMCUSTOMMESSHANDLER_LIFETIMERTOPERMANENTMEMORYWRITERESPONSE_TD, "CMmCustomMessHandler::LifeTimerToPermanentMemoryWriteResponse - Call Life Timer is not updated / error from PMM ret=%d", ret );
  5402         }
  5399         }
  5403 
  5400 
  5404     return iMessageRouter->Complete( EMmTsyUpdateLifeTimeIPC, ret );
  5401     return iMessageRouter->Complete( EMmTsyUpdateLifeTimeIPC, ret );
  5405     }*/
  5402     }*/
  5406 
  5403 
  5412 TInt CMmCustomMessHandler::GetTotalLifeTimerValue
  5409 TInt CMmCustomMessHandler::GetTotalLifeTimerValue
  5413         (
  5410         (
  5414         )
  5411         )
  5415     {
  5412     {
  5416 TFLOGSTRING("TSY: CMmCustomMessHandler::GetTotalLifeTimerValue.\n" );
  5413 TFLOGSTRING("TSY: CMmCustomMessHandler::GetTotalLifeTimerValue.\n" );
  5417 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_GETTOTALLIFETIMERVALUE, "CMmCustomMessHandler::GetTotalLifeTimerValue" );
  5414 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_GETTOTALLIFETIMERVALUE_TD, "CMmCustomMessHandler::GetTotalLifeTimerValue" );
  5418 
  5415 
  5419     TInt ret( KErrNone );
  5416     TInt ret( KErrNone );
  5420     RMmCustomAPI::TLifeTimeData timeInfo;
  5417     RMmCustomAPI::TLifeTimeData timeInfo;
  5421 
  5418 
  5422     timeInfo.iHours = 0;
  5419     timeInfo.iHours = 0;
  5424 
  5421 
  5425     if ( KCallLifeTimerNotSet == iCallLifeTimer )
  5422     if ( KCallLifeTimerNotSet == iCallLifeTimer )
  5426         {
  5423         {
  5427         ret = KErrNotReady;
  5424         ret = KErrNotReady;
  5428 TFLOGSTRING( "TSY: CMmCustomMessHandler::GetTotalLifeTimerValue - PMM has not been able to be read ret: KErrNotReady\n" );
  5425 TFLOGSTRING( "TSY: CMmCustomMessHandler::GetTotalLifeTimerValue - PMM has not been able to be read ret: KErrNotReady\n" );
  5429 OstTrace0( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_GETTOTALLIFETIMERVALUE, "CMmCustomMessHandler::GetTotalLifeTimerValue - PMM has not been able to be read ret: KErrNotReady" );
  5426 OstTrace0( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_GETTOTALLIFETIMERVALUE_TD, "CMmCustomMessHandler::GetTotalLifeTimerValue - PMM has not been able to be read ret: KErrNotReady" );
  5430         }
  5427         }
  5431     else
  5428     else
  5432         {
  5429         {
  5433         //set the data into timeInfo class, one hour is 3600 seconds.
  5430         //set the data into timeInfo class, one hour is 3600 seconds.
  5434         timeInfo.iHours = iCallLifeTimer / KSecsInHour ;
  5431         timeInfo.iHours = iCallLifeTimer / KSecsInHour ;
  5439         timeInfo.iCaps |=
  5436         timeInfo.iCaps |=
  5440             RMmCustomAPI::TLifeTimeData::ELifeTimeDataCapsLifeTime;
  5437             RMmCustomAPI::TLifeTimeData::ELifeTimeDataCapsLifeTime;
  5441 TFLOGSTRING2( "TSY: TSY: CMmCustomMessHandler::GetTotalLifeTimerValue - iCallLifeTimer: %d", iCallLifeTimer );
  5438 TFLOGSTRING2( "TSY: TSY: CMmCustomMessHandler::GetTotalLifeTimerValue - iCallLifeTimer: %d", iCallLifeTimer );
  5442 TFLOGSTRING2( "TSY: TSY: CMmCustomMessHandler::GetTotalLifeTimerValue - timeInfo.iHours: %d", timeInfo.iHours );
  5439 TFLOGSTRING2( "TSY: TSY: CMmCustomMessHandler::GetTotalLifeTimerValue - timeInfo.iHours: %d", timeInfo.iHours );
  5443 TFLOGSTRING2( "TSY: TSY: CMmCustomMessHandler::GetTotalLifeTimerValue - timeInfo.iMinutes: %d", timeInfo.iMinutes );
  5440 TFLOGSTRING2( "TSY: TSY: CMmCustomMessHandler::GetTotalLifeTimerValue - timeInfo.iMinutes: %d", timeInfo.iMinutes );
  5444 OstTrace1( TRACE_NORMAL, DUP2_CMMCUSTOMMESSHANDLER_GETTOTALLIFETIMERVALUE, "CMmCustomMessHandler::GetTotalLifeTimerValue;iCallLifeTimer=%d", iCallLifeTimer );
  5441 OstTrace1( TRACE_NORMAL,  DUP2_CMMCUSTOMMESSHANDLER_GETTOTALLIFETIMERVALUE_TD, "CMmCustomMessHandler::GetTotalLifeTimerValue;iCallLifeTimer=%d", iCallLifeTimer );
  5445 OstTrace1( TRACE_NORMAL, DUP3_CMMCUSTOMMESSHANDLER_GETTOTALLIFETIMERVALUE, "CMmCustomMessHandler::GetTotalLifeTimerValue;timeInfo.iHours=%u", timeInfo.iHours );
  5442 OstTrace1( TRACE_NORMAL,  DUP3_CMMCUSTOMMESSHANDLER_GETTOTALLIFETIMERVALUE_TD, "CMmCustomMessHandler::GetTotalLifeTimerValue;timeInfo.iHours=%u", timeInfo.iHours );
  5446 OstTraceExt1( TRACE_NORMAL, DUP4_CMMCUSTOMMESSHANDLER_GETTOTALLIFETIMERVALUE, "CMmCustomMessHandler::GetTotalLifeTimerValue;timeInfo.iMinutes=%hhu", timeInfo.iMinutes );
  5443 OstTraceExt1( TRACE_NORMAL,  DUP4_CMMCUSTOMMESSHANDLER_GETTOTALLIFETIMERVALUE_TD, "CMmCustomMessHandler::GetTotalLifeTimerValue;timeInfo.iMinutes=%hhu", timeInfo.iMinutes );
  5447         }
  5444         }
  5448 
  5445 
  5449     CMmDataPackage dataPackage;
  5446     CMmDataPackage dataPackage;
  5450     dataPackage.PackData( &timeInfo );
  5447     dataPackage.PackData( &timeInfo );
  5451     iMessageRouter->Complete( ECustomGetLifeTimeIPC, &dataPackage, ret );
  5448     iMessageRouter->Complete( ECustomGetLifeTimeIPC, &dataPackage, ret );
  5459 // -----------------------------------------------------------------------------
  5456 // -----------------------------------------------------------------------------
  5460 //
  5457 //
  5461 TInt CMmCustomMessHandler::UiccSimPowerOffReq()
  5458 TInt CMmCustomMessHandler::UiccSimPowerOffReq()
  5462     {
  5459     {
  5463 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccSimPowerOffReq.\n");
  5460 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccSimPowerOffReq.\n");
  5464 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCSIMPOWEROFFREQ, "CMmCustomMessHandler::UiccSimPowerOffReq" );
  5461 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCSIMPOWEROFFREQ_TD, "CMmCustomMessHandler::UiccSimPowerOffReq" );
  5465 
  5462 
  5466     iSapApduIfState = EUiccSapIfStatus1;
  5463     iSapApduIfState = EUiccSapIfStatus1;
  5467     // Set parameters for UICC_CONNECTION_REQ message
  5464     // Set parameters for UICC_CONNECTION_REQ message
  5468     TUiccParamsBase params;
  5465     TUiccParamsBase params;
  5469     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  5466     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  5479 // -----------------------------------------------------------------------------
  5476 // -----------------------------------------------------------------------------
  5480 //
  5477 //
  5481 void CMmCustomMessHandler::UiccSimPowerOffResp( TInt aStatus )
  5478 void CMmCustomMessHandler::UiccSimPowerOffResp( TInt aStatus )
  5482     {
  5479     {
  5483 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccSimPowerOffResp.\n" );
  5480 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccSimPowerOffResp.\n" );
  5484 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCSIMPOWEROFFRESP, "CMmCustomMessHandler::UiccSimPowerOffResp" );
  5481 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCSIMPOWEROFFRESP_TD, "CMmCustomMessHandler::UiccSimPowerOffResp" );
  5485 
  5482 
  5486     TInt err ( KErrNone );
  5483     TInt err ( KErrNone );
  5487 
  5484 
  5488     if( aStatus == UICC_STATUS_OK )
  5485     if( aStatus == UICC_STATUS_OK )
  5489         {
  5486         {
  5542 // -----------------------------------------------------------------------------
  5539 // -----------------------------------------------------------------------------
  5543 //
  5540 //
  5544 TInt CMmCustomMessHandler::UiccSimWarmResetReq()
  5541 TInt CMmCustomMessHandler::UiccSimWarmResetReq()
  5545     {
  5542     {
  5546 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccSimWarmResetReq.\n" );
  5543 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccSimWarmResetReq.\n" );
  5547 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCSIMWARMRESETREQ, "CMmCustomMessHandler::UiccSimWarmResetReq" );
  5544 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCSIMWARMRESETREQ_TD, "CMmCustomMessHandler::UiccSimWarmResetReq" );
  5548 
  5545 
  5549     TUiccParamsApduReq params;
  5546     TUiccParamsApduReq params;
  5550     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  5547     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  5551     params.trId = ETrIdSimWarmReset;
  5548     params.trId = ETrIdSimWarmReset;
  5552     params.serviceType = UICC_APDU_CONTROL;
  5549     params.serviceType = UICC_APDU_CONTROL;
  5561 // -----------------------------------------------------------------------------
  5558 // -----------------------------------------------------------------------------
  5562 //
  5559 //
  5563 void CMmCustomMessHandler::UiccSimWarmResetResp( TInt aStatus )
  5560 void CMmCustomMessHandler::UiccSimWarmResetResp( TInt aStatus )
  5564     {
  5561     {
  5565 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccSimWarmResetResp.\n" );
  5562 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccSimWarmResetResp.\n" );
  5566 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCSIMWARMRESETRESP, "CMmCustomMessHandler::UiccSimWarmResetResp" );
  5563 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCSIMWARMRESETRESP_TD, "CMmCustomMessHandler::UiccSimWarmResetResp" );
  5567 
  5564 
  5568     TInt err ( KErrNone );
  5565     TInt err ( KErrNone );
  5569 
  5566 
  5570     if( aStatus != UICC_STATUS_OK )
  5567     if( aStatus != UICC_STATUS_OK )
  5571         {
  5568         {
  5589 // -----------------------------------------------------------------------------
  5586 // -----------------------------------------------------------------------------
  5590 //
  5587 //
  5591 TInt CMmCustomMessHandler::UiccSimGetAtrReq()
  5588 TInt CMmCustomMessHandler::UiccSimGetAtrReq()
  5592     {
  5589     {
  5593 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccSimGetAtrReq.\n" );
  5590 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccSimGetAtrReq.\n" );
  5594 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCSIMGETATRREQ, "CMmCustomMessHandler::UiccSimGetAtrReq" );
  5591 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCSIMGETATRREQ_TD, "CMmCustomMessHandler::UiccSimGetAtrReq" );
  5595 
  5592 
  5596     TUiccParamsApduReq params;
  5593     TUiccParamsApduReq params;
  5597     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  5594     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  5598     params.trId = ETrIdSimGetATR;
  5595     params.trId = ETrIdSimGetATR;
  5599     params.serviceType = UICC_APDU_ATR_GET;
  5596     params.serviceType = UICC_APDU_ATR_GET;
  5609 void CMmCustomMessHandler::UiccSimGetAtrResp(
  5606 void CMmCustomMessHandler::UiccSimGetAtrResp(
  5610     TInt aStatus,
  5607     TInt aStatus,
  5611     const TDesC8& aFileData )
  5608     const TDesC8& aFileData )
  5612     {
  5609     {
  5613 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccSimGetAtrResp.\n" );
  5610 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccSimGetAtrResp.\n" );
  5614 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCSIMGETATRRESP, "CMmCustomMessHandler::UiccSimGetAtrResp" );
  5611 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCSIMGETATRRESP_TD, "CMmCustomMessHandler::UiccSimGetAtrResp" );
  5615 
  5612 
  5616     TInt err( KErrNone );
  5613     TInt err( KErrNone );
  5617     const TDesC8* dataPtr = &aFileData;
  5614     const TDesC8* dataPtr = &aFileData;
  5618     CMmDataPackage dataPackage;
  5615     CMmDataPackage dataPackage;
  5619     dataPackage.PackData( &dataPtr );
  5616     dataPackage.PackData( &dataPtr );
  5640 // -----------------------------------------------------------------------------
  5637 // -----------------------------------------------------------------------------
  5641 //
  5638 //
  5642 TInt CMmCustomMessHandler::UiccSimPowerOnReq()
  5639 TInt CMmCustomMessHandler::UiccSimPowerOnReq()
  5643     {
  5640     {
  5644 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccSimPowerOnReq.\n" );
  5641 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccSimPowerOnReq.\n" );
  5645 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCSIMPOWERONREQ, "CMmCustomMessHandler::UiccSimPowerOnReq" );
  5642 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCSIMPOWERONREQ_TD, "CMmCustomMessHandler::UiccSimPowerOnReq" );
  5646 
  5643 
  5647     //Set APDU interface state
  5644     //Set APDU interface state
  5648     iSapApduIfState = EUiccSapIfStatus1;
  5645     iSapApduIfState = EUiccSapIfStatus1;
  5649 
  5646 
  5650     // Set parameters for UICC_CONNECTION_REQ message
  5647     // Set parameters for UICC_CONNECTION_REQ message
  5662 // -----------------------------------------------------------------------------
  5659 // -----------------------------------------------------------------------------
  5663 //
  5660 //
  5664 void CMmCustomMessHandler::UiccSimPowerOnResp( TInt aStatus )
  5661 void CMmCustomMessHandler::UiccSimPowerOnResp( TInt aStatus )
  5665     {
  5662     {
  5666 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccSimPowerOnResp.\n" );
  5663 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccSimPowerOnResp.\n" );
  5667 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCSIMPOWERONRESP, "CMmCustomMessHandler::UiccSimPowerOnResp" );
  5664 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCSIMPOWERONRESP_TD, "CMmCustomMessHandler::UiccSimPowerOnResp" );
  5668 
  5665 
  5669     TInt err( KErrNone );
  5666     TInt err( KErrNone );
  5670 
  5667 
  5671     if( aStatus == UICC_STATUS_OK )
  5668     if( aStatus == UICC_STATUS_OK )
  5672         {
  5669         {
  5712 TInt CMmCustomMessHandler::UiccSendAPDUReq(
  5709 TInt CMmCustomMessHandler::UiccSendAPDUReq(
  5713     const RMmCustomAPI::TApduParameters& aApduParameters,
  5710     const RMmCustomAPI::TApduParameters& aApduParameters,
  5714     TInt aTraId )
  5711     TInt aTraId )
  5715     {
  5712     {
  5716 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccSimSendAPDUReq.\n" );
  5713 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccSimSendAPDUReq.\n" );
  5717 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCSIMSENAPDUREQ, "CMmCustomMessHandler::UiccSendAPDUReq" );
  5714 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCSIMSENAPDUREQ_TD, "CMmCustomMessHandler::UiccSendAPDUReq" );
  5718 
  5715 
  5719     TUiccParamsApduReq params;
  5716     TUiccParamsApduReq params;
  5720     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  5717     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  5721     params.trId = ( TUiccTrId )aTraId;
  5718     params.trId = ( TUiccTrId )aTraId;
  5722     params.serviceType = UICC_APDU_SEND;
  5719     params.serviceType = UICC_APDU_SEND;
  5734     TInt aStatus,
  5731     TInt aStatus,
  5735     const TDesC8& aFileData,
  5732     const TDesC8& aFileData,
  5736     TInt aTraId )
  5733     TInt aTraId )
  5737     {
  5734     {
  5738 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccSendAPDUResp.\n" );
  5735 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccSendAPDUResp.\n" );
  5739 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCSIMSENAPDURESP, "CMmCustomMessHandler::UiccSendAPDUResp" );
  5736 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCSIMSENAPDURESP_TD, "CMmCustomMessHandler::UiccSendAPDUResp" );
  5740 
  5737 
  5741     TInt err( KErrNone );
  5738     TInt err( KErrNone );
  5742     const TDesC8* dataPtr = &aFileData;
  5739     const TDesC8* dataPtr = &aFileData;
  5743     CMmDataPackage dataPackage;
  5740     CMmDataPackage dataPackage;
  5744     dataPackage.PackData( &dataPtr );
  5741     dataPackage.PackData( &dataPtr );
  5779 // -----------------------------------------------------------------------------
  5776 // -----------------------------------------------------------------------------
  5780 //
  5777 //
  5781 TInt CMmCustomMessHandler::UiccCardReaderStatusReq()
  5778 TInt CMmCustomMessHandler::UiccCardReaderStatusReq()
  5782     {
  5779     {
  5783 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccCardReaderStatusReq.\n" );
  5780 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccCardReaderStatusReq.\n" );
  5784 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCCARDREADERSTATUSREQ, "CMmCustomMessHandler::UiccCardReaderStatusReq" );
  5781 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCCARDREADERSTATUSREQ_TD, "CMmCustomMessHandler::UiccCardReaderStatusReq" );
  5785 
  5782 
  5786     TUiccParamsApduReq params;
  5783     TUiccParamsApduReq params;
  5787     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  5784     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  5788     params.trId = ETrIdCardReaderStatus;
  5785     params.trId = ETrIdCardReaderStatus;
  5789     params.serviceType = UICC_CARD_STATUS_GET;
  5786     params.serviceType = UICC_CARD_STATUS_GET;
  5805 void CMmCustomMessHandler::UiccCardReaderStatusResp(
  5802 void CMmCustomMessHandler::UiccCardReaderStatusResp(
  5806     TInt aStatus,
  5803     TInt aStatus,
  5807     const TDesC8& aFileData )
  5804     const TDesC8& aFileData )
  5808     {
  5805     {
  5809 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccCardReaderStatusResp.\n" );
  5806 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccCardReaderStatusResp.\n" );
  5810 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCCARDREADERSTATUSRESP, "CMmCustomMessHandler::UiccCardReaderStatusResp" );
  5807 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCCARDREADERSTATUSRESP_TD, "CMmCustomMessHandler::UiccCardReaderStatusResp" );
  5811 
  5808 
  5812     TInt err ( KErrNone );
  5809     TInt err ( KErrNone );
  5813     CMmDataPackage dataPackage;
  5810     CMmDataPackage dataPackage;
  5814     TUint8 cardStatus( 0 );
  5811     TUint8 cardStatus( 0 );
  5815     TBuf8<1> statusByte;
  5812     TBuf8<1> statusByte;
  5874     // Get service type
  5871     // Get service type
  5875     TUint8 serviceType( aIsiMessage.Get8bit(
  5872     TUint8 serviceType( aIsiMessage.Get8bit(
  5876         ISI_HEADER_SIZE + UICC_IND_OFFSET_SERVICETYPE ) );
  5873         ISI_HEADER_SIZE + UICC_IND_OFFSET_SERVICETYPE ) );
  5877 
  5874 
  5878 TFLOGSTRING2("TSY: CMmCustomMessHandler::UiccCardInd, service type: %d", serviceType );
  5875 TFLOGSTRING2("TSY: CMmCustomMessHandler::UiccCardInd, service type: %d", serviceType );
  5879 OstTraceExt1( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCIND, "CMmCustomMessHandler::UiccCardInd;serviceType=%hhu", serviceType );
  5876 OstTraceExt1( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCIND_TD, "CMmCustomMessHandler::UiccCardInd;serviceType=%hhu", serviceType );
  5880 
  5877 
  5881     RMmCustomAPI::TSIMCardStatus returnStatus;
  5878     RMmCustomAPI::TSIMCardStatus returnStatus;
  5882     returnStatus = RMmCustomAPI::SimCardUnknowError;
  5879     returnStatus = RMmCustomAPI::SimCardUnknowError;
  5883 
  5880 
  5884     switch ( serviceType )
  5881     switch ( serviceType )
  5915 //
  5912 //
  5916 TInt CMmCustomMessHandler::UiccSendAuthenticateApdu(
  5913 TInt CMmCustomMessHandler::UiccSendAuthenticateApdu(
  5917     const CMmDataPackage& aDataPackage )
  5914     const CMmDataPackage& aDataPackage )
  5918     {
  5915     {
  5919 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccSendAuthenticateApdu.\n" );
  5916 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccSendAuthenticateApdu.\n" );
  5920 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCSENDAUTHENTICATEAPDU, "CMmCustomMessHandler::UiccSendAuthenticateApdu" );
  5917 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCSENDAUTHENTICATEAPDU_TD, "CMmCustomMessHandler::UiccSendAuthenticateApdu" );
  5921 
  5918 
  5922     TInt ret( KErrNone );
  5919     TInt ret( KErrNone );
  5923     TBool apduSendNeeded( EFalse );
  5920     TBool apduSendNeeded( EFalse );
  5924 
  5921 
  5925     // Let's construct AUTHENTICATE APDU based on authenticate type
  5922     // Let's construct AUTHENTICATE APDU based on authenticate type
  5997                 }
  5994                 }
  5998             else
  5995             else
  5999                 {
  5996                 {
  6000                 // GBA not supported if card type is ICC or GBA not supported in EFust
  5997                 // GBA not supported if card type is ICC or GBA not supported in EFust
  6001 TFLOGSTRING3("TSY: CMmCustomMessHandler::UiccSendAuthenticateApdu: GBA not supported (card type: 0x%x, ss: 0x%x)\n", cardType, serviceStatus );
  5998 TFLOGSTRING3("TSY: CMmCustomMessHandler::UiccSendAuthenticateApdu: GBA not supported (card type: 0x%x, ss: 0x%x)\n", cardType, serviceStatus );
  6002 OstTraceExt2( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_UICCSENDAUTHENTICATEAPDU, "CMmCustomMessHandler::UiccSendAuthenticateApdu: GBA not supported (card type: %x, ss: 0x%x)", cardType, serviceStatus );
  5999 OstTraceExt2( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_UICCSENDAUTHENTICATEAPDU_TD, "CMmCustomMessHandler::UiccSendAuthenticateApdu: GBA not supported (card type: %x, ss: 0x%x)", cardType, serviceStatus );
  6003                 ret = KErrGeneral;
  6000                 ret = KErrGeneral;
  6004                 }
  6001                 }
  6005             break;
  6002             break;
  6006             }
  6003             }
  6007         case RMmCustomAPI::TSimAuthenticationBase::EGbaBootstrapUpdate:
  6004         case RMmCustomAPI::TSimAuthenticationBase::EGbaBootstrapUpdate:
  6015                 }
  6012                 }
  6016             else
  6013             else
  6017                 {
  6014                 {
  6018                 // GBA not supported if card type is ICC or GBA not supported in EFust
  6015                 // GBA not supported if card type is ICC or GBA not supported in EFust
  6019 TFLOGSTRING3("TSY: CMmCustomMessHandler::UiccSendAuthenticateApdu: GBA not supported (card type: 0x%x, ss: 0x%x)\n", cardType, serviceStatus );
  6016 TFLOGSTRING3("TSY: CMmCustomMessHandler::UiccSendAuthenticateApdu: GBA not supported (card type: 0x%x, ss: 0x%x)\n", cardType, serviceStatus );
  6020 OstTraceExt2( TRACE_NORMAL, DUP2_CMMCUSTOMMESSHANDLER_UICCSENDAUTHENTICATEAPDU, "CMmCustomMessHandler::UiccSendAuthenticateApdu: GBA not supported (card type: 0x%x, ss: 0x%x)", cardType, serviceStatus );
  6017 OstTraceExt2( TRACE_NORMAL,  DUP2_CMMCUSTOMMESSHANDLER_UICCSENDAUTHENTICATEAPDU_TD, "CMmCustomMessHandler::UiccSendAuthenticateApdu: GBA not supported (card type: 0x%x, ss: 0x%x)", cardType, serviceStatus );
  6021                 ret = KErrGeneral;
  6018                 ret = KErrGeneral;
  6022                 }
  6019                 }
  6023             break;
  6020             break;
  6024               }
  6021               }
  6025         case RMmCustomAPI::TSimAuthenticationBase::EGbaBootstrapNafDerivation:
  6022         case RMmCustomAPI::TSimAuthenticationBase::EGbaBootstrapNafDerivation:
  6034                 }
  6031                 }
  6035             else
  6032             else
  6036                 {
  6033                 {
  6037                 // GBA not supported if card type is ICC or GBA not supported in EFust
  6034                 // GBA not supported if card type is ICC or GBA not supported in EFust
  6038 TFLOGSTRING3("TSY: CMmCustomMessHandler::UiccSendAuthenticateApdu: GBA not supported (card type: 0x%x, ss: 0x%x)\n", cardType, serviceStatus );
  6035 TFLOGSTRING3("TSY: CMmCustomMessHandler::UiccSendAuthenticateApdu: GBA not supported (card type: 0x%x, ss: 0x%x)\n", cardType, serviceStatus );
  6039 OstTraceExt2( TRACE_NORMAL, DUP3_CMMCUSTOMMESSHANDLER_UICCSENDAUTHENTICATEAPDU, "CMmCustomMessHandler::UiccSendAuthenticateApdu: GBA not supported (card type: 0x%x, ss: 0x%x)", cardType, serviceStatus );
  6036 OstTraceExt2( TRACE_NORMAL,  DUP3_CMMCUSTOMMESSHANDLER_UICCSENDAUTHENTICATEAPDU_TD, "CMmCustomMessHandler::UiccSendAuthenticateApdu: GBA not supported (card type: 0x%x, ss: 0x%x)", cardType, serviceStatus );
  6040                 ret = KErrGeneral;
  6037                 ret = KErrGeneral;
  6041                 }
  6038                 }
  6042             break;
  6039             break;
  6043             }
  6040             }
  6044         case RMmCustomAPI::TSimAuthenticationBase::EMgvMskUpdate:
  6041         case RMmCustomAPI::TSimAuthenticationBase::EMgvMskUpdate:
  6053                 }
  6050                 }
  6054             else
  6051             else
  6055                 {
  6052                 {
  6056                 // MBMS not supported if card type is ICC or MBMS not supported in EFust
  6053                 // MBMS not supported if card type is ICC or MBMS not supported in EFust
  6057 TFLOGSTRING3("TSY: CMmCustomMessHandler::UiccSendAuthenticateApdu: MBMS security not supported (card type: 0x%x, ss: 0x%x)\n", cardType, serviceStatus );
  6054 TFLOGSTRING3("TSY: CMmCustomMessHandler::UiccSendAuthenticateApdu: MBMS security not supported (card type: 0x%x, ss: 0x%x)\n", cardType, serviceStatus );
  6058 OstTraceExt2( TRACE_NORMAL, DUP4_CMMCUSTOMMESSHANDLER_UICCSENDAUTHENTICATEAPDU, "CMmCustomMessHandler::UiccSendAuthenticateApdu: MBMS security not supported (card type: 0x%x, ss: 0x%x)", cardType, serviceStatus );
  6055 OstTraceExt2( TRACE_NORMAL,  DUP4_CMMCUSTOMMESSHANDLER_UICCSENDAUTHENTICATEAPDU_TD, "CMmCustomMessHandler::UiccSendAuthenticateApdu: MBMS security not supported (card type: 0x%x, ss: 0x%x)", cardType, serviceStatus );
  6059                 ret = KErrGeneral;
  6056                 ret = KErrGeneral;
  6060                 }
  6057                 }
  6061             break;
  6058             break;
  6062             }
  6059             }
  6063         case RMmCustomAPI::TSimAuthenticationBase::EMgvMtkGeneration:
  6060         case RMmCustomAPI::TSimAuthenticationBase::EMgvMtkGeneration:
  6072                 }
  6069                 }
  6073             else
  6070             else
  6074                 {
  6071                 {
  6075                 // MBMS not supported if card type is ICC or MBMS not supported in EFust
  6072                 // MBMS not supported if card type is ICC or MBMS not supported in EFust
  6076 TFLOGSTRING3("TSY: CMmCustomMessHandler::UiccSendAuthenticateApdu: MBMS security not supported (card type: 0x%x, ss: 0x%x)\n", cardType, serviceStatus );
  6073 TFLOGSTRING3("TSY: CMmCustomMessHandler::UiccSendAuthenticateApdu: MBMS security not supported (card type: 0x%x, ss: 0x%x)\n", cardType, serviceStatus );
  6077 OstTraceExt2( TRACE_NORMAL, DUP5_CMMCUSTOMMESSHANDLER_UICCSENDAUTHENTICATEAPDU, "CMmCustomMessHandler::UiccSendAuthenticateApdu: MBMS security not supported (card type: 0x%x, ss: 0x%x)", cardType, serviceStatus );
  6074 OstTraceExt2( TRACE_NORMAL,  DUP5_CMMCUSTOMMESSHANDLER_UICCSENDAUTHENTICATEAPDU_TD, "CMmCustomMessHandler::UiccSendAuthenticateApdu: MBMS security not supported (card type: 0x%x, ss: 0x%x)", cardType, serviceStatus );
  6078                 ret = KErrGeneral;
  6075                 ret = KErrGeneral;
  6079                 }
  6076                 }
  6080             break;
  6077             break;
  6081             }
  6078             }
  6082         case RMmCustomAPI::TSimAuthenticationBase::EMgvMskDeletion:
  6079         case RMmCustomAPI::TSimAuthenticationBase::EMgvMskDeletion:
  6091                 }
  6088                 }
  6092             else
  6089             else
  6093                 {
  6090                 {
  6094                 // MBMS not supported if card type is ICC or MBMS not supported in EFust
  6091                 // MBMS not supported if card type is ICC or MBMS not supported in EFust
  6095 TFLOGSTRING3("TSY: CMmCustomMessHandler::UiccSendAuthenticateApdu: MBMS security not supported (card type: 0x%x, ss: 0x%x)\n", cardType, serviceStatus );
  6092 TFLOGSTRING3("TSY: CMmCustomMessHandler::UiccSendAuthenticateApdu: MBMS security not supported (card type: 0x%x, ss: 0x%x)\n", cardType, serviceStatus );
  6096 OstTraceExt2( TRACE_NORMAL, DUP6_CMMCUSTOMMESSHANDLER_UICCSENDAUTHENTICATEAPDU, "CMmCustomMessHandler::UiccSendAuthenticateApdu: MBMS security not supported (card type: 0x%x, ss: 0x%x)", cardType, serviceStatus );
  6093 OstTraceExt2( TRACE_NORMAL,  DUP6_CMMCUSTOMMESSHANDLER_UICCSENDAUTHENTICATEAPDU_TD, "CMmCustomMessHandler::UiccSendAuthenticateApdu: MBMS security not supported (card type: 0x%x, ss: 0x%x)", cardType, serviceStatus );
  6097                 ret = KErrGeneral;
  6094                 ret = KErrGeneral;
  6098                 }
  6095                 }
  6099             break;
  6096             break;
  6100             }
  6097             }
  6101         default:
  6098         default:
  6102             {
  6099             {
  6103 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccSendAuthenticateApdu: Unknown APDU\n" );
  6100 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccSendAuthenticateApdu: Unknown APDU\n" );
  6104 OstTrace0( TRACE_NORMAL, DUP7_CMMCUSTOMMESSHANDLER_UICCSENDAUTHENTICATEAPDU, "CMmCustomMessHandler::UiccSendAuthenticateApdu: Unknown APDU" );
  6101 OstTrace0( TRACE_NORMAL,  DUP7_CMMCUSTOMMESSHANDLER_UICCSENDAUTHENTICATEAPDU_TD, "CMmCustomMessHandler::UiccSendAuthenticateApdu: Unknown APDU" );
  6105             break;
  6102             break;
  6106             }
  6103             }
  6107         }
  6104         }
  6108 
  6105 
  6109     if( EFalse != apduSendNeeded )
  6106     if( EFalse != apduSendNeeded )
  6112         ret = iMmUiccMessHandler->CreateUiccApplCmdReq( params );
  6109         ret = iMmUiccMessHandler->CreateUiccApplCmdReq( params );
  6113         }
  6110         }
  6114     else
  6111     else
  6115         {
  6112         {
  6116 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccSendAuthenticateApdu: APDU not sent\n" );
  6113 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccSendAuthenticateApdu: APDU not sent\n" );
  6117 OstTrace0( TRACE_NORMAL, DUP8_CMMCUSTOMMESSHANDLER_UICCSENDAUTHENTICATEAPDU, "CMmCustomMessHandler::UiccSendAuthenticateApduu: APDU not sent" );
  6114 OstTrace0( TRACE_NORMAL,  DUP8_CMMCUSTOMMESSHANDLER_UICCSENDAUTHENTICATEAPDU_TD, "CMmCustomMessHandler::UiccSendAuthenticateApduu: APDU not sent" );
  6118         }
  6115         }
  6119     return ret;
  6116     return ret;
  6120     }
  6117     }
  6121 
  6118 
  6122 
  6119 
  6129     TUiccSendApdu& aParams,
  6126     TUiccSendApdu& aParams,
  6130     const TDesC8& aRand,
  6127     const TDesC8& aRand,
  6131     TUiccTrId aTraId )
  6128     TUiccTrId aTraId )
  6132     {
  6129     {
  6133 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccCreateRunGsmAlgorithmApdu.\n" );
  6130 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccCreateRunGsmAlgorithmApdu.\n" );
  6134 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCCREATERUNGSMALGORITHMAPDU, "CMmCustomMessHandler::UiccCreateRunGsmAlgorithmApdu" );
  6131 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCCREATERUNGSMALGORITHMAPDU_TD, "CMmCustomMessHandler::UiccCreateRunGsmAlgorithmApdu" );
  6135 
  6132 
  6136     aParams.trId = aTraId;
  6133     aParams.trId = aTraId;
  6137     aParams.apdu.Append( KClaIcc );              // CLA
  6134     aParams.apdu.Append( KClaIcc );              // CLA
  6138     aParams.apdu.Append( KEvenInstructionCode ); // INS
  6135     aParams.apdu.Append( KEvenInstructionCode ); // INS
  6139     aParams.apdu.Append( 0 ); // P1 is set to 0 in case of RUN GSM ALGORITH
  6136     aParams.apdu.Append( 0 ); // P1 is set to 0 in case of RUN GSM ALGORITH
  6153     TInt aTraId,
  6150     TInt aTraId,
  6154     TInt aStatus,
  6151     TInt aStatus,
  6155     const TDesC8& aFileData )
  6152     const TDesC8& aFileData )
  6156     {
  6153     {
  6157 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccRunGsmAlgorithmApduResp.\n" );
  6154 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccRunGsmAlgorithmApduResp.\n" );
  6158 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCRUNGSMALGORITHMAPDURESP, "CMmCustomMessHandler::UiccRunGsmAlgorithmApduResp" );
  6155 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCRUNGSMALGORITHMAPDURESP_TD, "CMmCustomMessHandler::UiccRunGsmAlgorithmApduResp" );
  6159 
  6156 
  6160     TInt ret( KErrNone );
  6157     TInt ret( KErrNone );
  6161     TInt ipc( ETrIdRunGsmAlgorithmIms == aTraId ? EMobilePhoneIMSAuthenticate : ECustomGetSimAuthenticationDataIPC );
  6158     TInt ipc( ETrIdRunGsmAlgorithmIms == aTraId ? EMobilePhoneIMSAuthenticate : ECustomGetSimAuthenticationDataIPC );
  6162     RMmCustomAPI::TSimAuthenticationEapSim eapSim;
  6159     RMmCustomAPI::TSimAuthenticationEapSim eapSim;
  6163     RMmCustomAPI::TSimAuthenticationEapAka eapAka;
  6160     RMmCustomAPI::TSimAuthenticationEapAka eapAka;
  6211                     }
  6208                     }
  6212                 }
  6209                 }
  6213             else
  6210             else
  6214                 {
  6211                 {
  6215 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccRunGsmAlgorithmApduResp. APDU validation fails\n" );
  6212 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccRunGsmAlgorithmApduResp. APDU validation fails\n" );
  6216 OstTrace0( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_UICCRUNGSMALGORITHMAPDURESP, "CMmCustomMessHandler::UiccRunGsmAlgorithmApduResp. APDU validation fails" );
  6213 OstTrace0( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_UICCRUNGSMALGORITHMAPDURESP_TD, "CMmCustomMessHandler::UiccRunGsmAlgorithmApduResp. APDU validation fails" );
  6217                 ret = KErrMMEtelAuthenticateFailed;
  6214                 ret = KErrMMEtelAuthenticateFailed;
  6218                 }
  6215                 }
  6219             }
  6216             }
  6220         else if( KCmdNotAllowedSecurityStatusNotSatisfied == result )
  6217         else if( KCmdNotAllowedSecurityStatusNotSatisfied == result )
  6221             {
  6218             {
  6222 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccRunGsmAlgorithmApduResp: Security conditions not satisfied\n" );
  6219 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccRunGsmAlgorithmApduResp: Security conditions not satisfied\n" );
  6223 OstTrace0( TRACE_NORMAL, DUP2_CMMCUSTOMMESSHANDLER_UICCRUNGSMALGORITHMAPDURESP, "CMmCustomMessHandler::UiccRunGsmAlgorithmApduResp: Security conditions not satisfied" );
  6220 OstTrace0( TRACE_NORMAL,  DUP2_CMMCUSTOMMESSHANDLER_UICCRUNGSMALGORITHMAPDURESP_TD, "CMmCustomMessHandler::UiccRunGsmAlgorithmApduResp: Security conditions not satisfied" );
  6224             ret = CMmStaticUtility::EpocErrorCode(
  6221             ret = CMmStaticUtility::EpocErrorCode(
  6225                 KErrAccessDenied,
  6222                 KErrAccessDenied,
  6226                 KErrGsm0707SimPin1Required );
  6223                 KErrGsm0707SimPin1Required );
  6227             }
  6224             }
  6228         else
  6225         else
  6229             {
  6226             {
  6230 TFLOGSTRING2("TSY: CMmCustomMessHandler::UiccRunGsmAlgorithmApduResp. unknown result: 0x%X\n", result );
  6227 TFLOGSTRING2("TSY: CMmCustomMessHandler::UiccRunGsmAlgorithmApduResp. unknown result: 0x%X\n", result );
  6231 OstTrace1( TRACE_NORMAL, DUP3_CMMCUSTOMMESSHANDLER_UICCRUNGSMALGORITHMAPDURESP, "CMmCustomMessHandler::UiccRunGsmAlgorithmApduResp. unknown result: 0x%x", result );
  6228 OstTrace1( TRACE_NORMAL,  DUP3_CMMCUSTOMMESSHANDLER_UICCRUNGSMALGORITHMAPDURESP_TD, "CMmCustomMessHandler::UiccRunGsmAlgorithmApduResp. unknown result: 0x%x", result );
  6232             ret = KErrMMEtelAuthenticateFailed;
  6229             ret = KErrMMEtelAuthenticateFailed;
  6233             }
  6230             }
  6234         }
  6231         }
  6235     else
  6232     else
  6236         {
  6233         {
  6237 TFLOGSTRING2("TSY: CMmCustomMessHandler::UiccRunGsmAlgorithmApduResp: UICC status not ok: 0x%x\n", aStatus );
  6234 TFLOGSTRING2("TSY: CMmCustomMessHandler::UiccRunGsmAlgorithmApduResp: UICC status not ok: 0x%x\n", aStatus );
  6238 OstTrace1( TRACE_NORMAL, DUP4_CMMCUSTOMMESSHANDLER_UICCRUNGSMALGORITHMAPDURESP, "CMmCustomMessHandler::UiccRunGsmAlgorithmApduResp: UICC status not ok: 0x%x", aStatus );
  6235 OstTrace1( TRACE_NORMAL,  DUP4_CMMCUSTOMMESSHANDLER_UICCRUNGSMALGORITHMAPDURESP_TD, "CMmCustomMessHandler::UiccRunGsmAlgorithmApduResp: UICC status not ok: 0x%x", aStatus );
  6239         ret = KErrMMEtelAuthenticateFailed;
  6236         ret = KErrMMEtelAuthenticateFailed;
  6240         }
  6237         }
  6241 
  6238 
  6242     if( KErrNone != ret )
  6239     if( KErrNone != ret )
  6243         {
  6240         {
  6276 void CMmCustomMessHandler::UiccCreateGsmSecurityContextApdu(
  6273 void CMmCustomMessHandler::UiccCreateGsmSecurityContextApdu(
  6277     TUiccSendApdu& params,
  6274     TUiccSendApdu& params,
  6278     const CMmDataPackage& aDataPackage )
  6275     const CMmDataPackage& aDataPackage )
  6279     {
  6276     {
  6280 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccCreateGsmSecurityContextApdu.\n" );
  6277 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccCreateGsmSecurityContextApdu.\n" );
  6281 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCCREATEGSMSECURITYCONTEXTAPDU, "CMmCustomMessHandler::UiccCreateGsmSecurityContextApdu" );
  6278 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCCREATEGSMSECURITYCONTEXTAPDU_TD, "CMmCustomMessHandler::UiccCreateGsmSecurityContextApdu" );
  6282 
  6279 
  6283     RMmCustomAPI::TSimAuthenticationEapSim eapSim;
  6280     RMmCustomAPI::TSimAuthenticationEapSim eapSim;
  6284     aDataPackage.UnPackData( eapSim );
  6281     aDataPackage.UnPackData( eapSim );
  6285 
  6282 
  6286     params.trId = ETrIdEEapSimAuthenticate;
  6283     params.trId = ETrIdEEapSimAuthenticate;
  6303     TInt aTraId,
  6300     TInt aTraId,
  6304     TInt aStatus,
  6301     TInt aStatus,
  6305     const TDesC8& aFileData )
  6302     const TDesC8& aFileData )
  6306     {
  6303     {
  6307 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccGsmSecurityContextApduResp.\n" );
  6304 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccGsmSecurityContextApduResp.\n" );
  6308 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCGSMSECURITYCONTEXTAPDURESP, "CMmCustomMessHandler::UiccGsmSecurityContextApduResp" );
  6305 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCGSMSECURITYCONTEXTAPDURESP_TD, "CMmCustomMessHandler::UiccGsmSecurityContextApduResp" );
  6309 
  6306 
  6310     TInt ret( KErrNone );
  6307     TInt ret( KErrNone );
  6311     RMmCustomAPI::TSimAuthenticationEapSim eapSim;
  6308     RMmCustomAPI::TSimAuthenticationEapSim eapSim;
  6312 
  6309 
  6313     if( UICC_STATUS_OK == aStatus )
  6310     if( UICC_STATUS_OK == aStatus )
  6333                 eapSim.iKC.Copy( aFileData.Mid( index , len ) );
  6330                 eapSim.iKC.Copy( aFileData.Mid( index , len ) );
  6334                 }
  6331                 }
  6335             else
  6332             else
  6336                 {
  6333                 {
  6337 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccGsmSecurityContextApduResp: APDU validation failed\n" );
  6334 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccGsmSecurityContextApduResp: APDU validation failed\n" );
  6338 OstTrace0( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_UICCGSMSECURITYCONTEXTAPDURESP, "CMmCustomMessHandler::UiccGsmSecurityContextApduResp: APDU validation failed" );
  6335 OstTrace0( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_UICCGSMSECURITYCONTEXTAPDURESP_TD, "CMmCustomMessHandler::UiccGsmSecurityContextApduResp: APDU validation failed" );
  6339                 ret = KErrMMEtelAuthenticateFailed;
  6336                 ret = KErrMMEtelAuthenticateFailed;
  6340                 }
  6337                 }
  6341             }
  6338             }
  6342         else
  6339         else
  6343             {
  6340             {
  6344 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccGsmSecurityContextApduResp: unknown result\n" );
  6341 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccGsmSecurityContextApduResp: unknown result\n" );
  6345 OstTrace0( TRACE_NORMAL, DUP2_CMMCUSTOMMESSHANDLER_UICCGSMSECURITYCONTEXTAPDURESP, "CMmCustomMessHandler::UiccGsmSecurityContextApduResp: unknown result" );
  6342 OstTrace0( TRACE_NORMAL,  DUP2_CMMCUSTOMMESSHANDLER_UICCGSMSECURITYCONTEXTAPDURESP_TD, "CMmCustomMessHandler::UiccGsmSecurityContextApduResp: unknown result" );
  6346             ret = KErrMMEtelAuthenticateFailed;
  6343             ret = KErrMMEtelAuthenticateFailed;
  6347             }
  6344             }
  6348         }
  6345         }
  6349     else
  6346     else
  6350         {
  6347         {
  6351 TFLOGSTRING2("TSY: CMmCustomMessHandler::UiccGsmSecurityContextApduResp: UICC status not ok: 0x%x\n", aStatus );
  6348 TFLOGSTRING2("TSY: CMmCustomMessHandler::UiccGsmSecurityContextApduResp: UICC status not ok: 0x%x\n", aStatus );
  6352 OstTrace1( TRACE_NORMAL, DUP3_CMMCUSTOMMESSHANDLER_UICCGSMSECURITYCONTEXTAPDURESP, "CMmCustomMessHandler::UiccGsmSecurityContextApduResp: UICC status not ok: 0x%x", aStatus );
  6349 OstTrace1( TRACE_NORMAL,  DUP3_CMMCUSTOMMESSHANDLER_UICCGSMSECURITYCONTEXTAPDURESP_TD, "CMmCustomMessHandler::UiccGsmSecurityContextApduResp: UICC status not ok: 0x%x", aStatus );
  6353         ret = KErrMMEtelAuthenticateFailed;
  6350         ret = KErrMMEtelAuthenticateFailed;
  6354         }
  6351         }
  6355 
  6352 
  6356     if( KErrNone != ret )
  6353     if( KErrNone != ret )
  6357         {
  6354         {
  6381     const TDesC8& aRand,
  6378     const TDesC8& aRand,
  6382     const TDesC8& aAuth,
  6379     const TDesC8& aAuth,
  6383     TUiccTrId aTraId )
  6380     TUiccTrId aTraId )
  6384     {
  6381     {
  6385 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccCreate3GSecurityContextApdu.\n" );
  6382 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccCreate3GSecurityContextApdu.\n" );
  6386 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCCREATE3GSECURITYCONTEXTAPDU, "CMmCustomMessHandler::UiccCreate3GSecurityContextApdu" );
  6383 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCCREATE3GSECURITYCONTEXTAPDU_TD, "CMmCustomMessHandler::UiccCreate3GSecurityContextApdu" );
  6387 
  6384 
  6388     // len of data is sizeof RAND + sizeof AUTN + two length fields
  6385     // len of data is sizeof RAND + sizeof AUTN + two length fields
  6389     // (one for RAND len and one for AUTN len)
  6386     // (one for RAND len and one for AUTN len)
  6390     TUint8 lc( aRand.Size() + aAuth.Size() + 2 );
  6387     TUint8 lc( aRand.Size() + aAuth.Size() + 2 );
  6391 
  6388 
  6411          TInt aTraId,
  6408          TInt aTraId,
  6412          TInt aStatus,
  6409          TInt aStatus,
  6413          const TDesC8& aFileData )
  6410          const TDesC8& aFileData )
  6414     {
  6411     {
  6415 TFLOGSTRING("TSY: CMmCustomMessHandler::Uicc3GSecurityContextApduResp.\n" );
  6412 TFLOGSTRING("TSY: CMmCustomMessHandler::Uicc3GSecurityContextApduResp.\n" );
  6416 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICC3GSECURITYCONTEXTAPDURESP, "CMmCustomMessHandler::Uicc3GSecurityContextApduResp" );
  6413 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICC3GSECURITYCONTEXTAPDURESP_TD, "CMmCustomMessHandler::Uicc3GSecurityContextApduResp" );
  6417 
  6414 
  6418     TInt ret( KErrNone );
  6415     TInt ret( KErrNone );
  6419     TInt ipc( ETrIdEEapAkaAuthenticateIms == aTraId ? EMobilePhoneIMSAuthenticate : ECustomGetSimAuthenticationDataIPC );
  6416     TInt ipc( ETrIdEEapAkaAuthenticateIms == aTraId ? EMobilePhoneIMSAuthenticate : ECustomGetSimAuthenticationDataIPC );
  6420     RMmCustomAPI::TSimAuthenticationEapAka eapAka;
  6417     RMmCustomAPI::TSimAuthenticationEapAka eapAka;
  6421     RMobilePhone::TImsAuthenticateDataV5 ims;
  6418     RMobilePhone::TImsAuthenticateDataV5 ims;
  6497                     }
  6494                     }
  6498                 }
  6495                 }
  6499             else
  6496             else
  6500                 {
  6497                 {
  6501 TFLOGSTRING("TSY: CMmCustomMessHandler::Uicc3GSecurityContextApduResp: APDU validation failed\n" );
  6498 TFLOGSTRING("TSY: CMmCustomMessHandler::Uicc3GSecurityContextApduResp: APDU validation failed\n" );
  6502 OstTrace0( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_UICC3GSECURITYCONTEXTAPDURESP, "CMmCustomMessHandler::Uicc3GSecurityContextApduResp: APDU validation failed" );
  6499 OstTrace0( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_UICC3GSECURITYCONTEXTAPDURESP_TD, "CMmCustomMessHandler::Uicc3GSecurityContextApduResp: APDU validation failed" );
  6503                 ret = KErrMMEtelAuthenticateFailed;
  6500                 ret = KErrMMEtelAuthenticateFailed;
  6504                 }
  6501                 }
  6505             }
  6502             }
  6506         else if( KAppAuthErrorIncorrectMac == result )
  6503         else if( KAppAuthErrorIncorrectMac == result )
  6507             {
  6504             {
  6508 TFLOGSTRING("TSY: CMmCustomMessHandler::Uicc3GSecurityContextApduResp: incorrect MAC\n" );
  6505 TFLOGSTRING("TSY: CMmCustomMessHandler::Uicc3GSecurityContextApduResp: incorrect MAC\n" );
  6509 OstTrace0( TRACE_NORMAL, DUP2_CMMCUSTOMMESSHANDLER_UICC3GSECURITYCONTEXTAPDURESP, "CMmCustomMessHandler::Uicc3GSecurityContextApduResp: incorrect MAC" );
  6506 OstTrace0( TRACE_NORMAL,  DUP2_CMMCUSTOMMESSHANDLER_UICC3GSECURITYCONTEXTAPDURESP_TD, "CMmCustomMessHandler::Uicc3GSecurityContextApduResp: incorrect MAC" );
  6510             // no parameters in this case
  6507             // no parameters in this case
  6511             ret = KErrMMEtelMacVerificationFailed;
  6508             ret = KErrMMEtelMacVerificationFailed;
  6512             }
  6509             }
  6513         else if( KCmdNotAllowedSecurityStatusNotSatisfied == result )
  6510         else if( KCmdNotAllowedSecurityStatusNotSatisfied == result )
  6514             {
  6511             {
  6515 TFLOGSTRING("TSY: CMmCustomMessHandler::Uicc3GSecurityContextApduResp: Security conditions not satisfied\n" );
  6512 TFLOGSTRING("TSY: CMmCustomMessHandler::Uicc3GSecurityContextApduResp: Security conditions not satisfied\n" );
  6516 OstTrace0( TRACE_NORMAL, DUP3_CMMCUSTOMMESSHANDLER_UICC3GSECURITYCONTEXTAPDURESP, "CMmCustomMessHandler::Uicc3GSecurityContextApduResp: Security conditions not satisfied" );
  6513 OstTrace0( TRACE_NORMAL,  DUP3_CMMCUSTOMMESSHANDLER_UICC3GSECURITYCONTEXTAPDURESP_TD, "CMmCustomMessHandler::Uicc3GSecurityContextApduResp: Security conditions not satisfied" );
  6517             ret = CMmStaticUtility::EpocErrorCode(
  6514             ret = CMmStaticUtility::EpocErrorCode(
  6518                 KErrAccessDenied,
  6515                 KErrAccessDenied,
  6519                 KErrGsm0707SimPin1Required );
  6516                 KErrGsm0707SimPin1Required );
  6520             }
  6517             }
  6521         else
  6518         else
  6522             {
  6519             {
  6523 TFLOGSTRING("TSY: CMmCustomMessHandler::Uicc3GSecurityContextApduResp: unknown result\n" );
  6520 TFLOGSTRING("TSY: CMmCustomMessHandler::Uicc3GSecurityContextApduResp: unknown result\n" );
  6524 OstTrace0( TRACE_NORMAL, DUP4_CMMCUSTOMMESSHANDLER_UICC3GSECURITYCONTEXTAPDURESP, "CMmCustomMessHandler::Uicc3GSecurityContextApduResp: unknown result" );
  6521 OstTrace0( TRACE_NORMAL,  DUP4_CMMCUSTOMMESSHANDLER_UICC3GSECURITYCONTEXTAPDURESP_TD, "CMmCustomMessHandler::Uicc3GSecurityContextApduResp: unknown result" );
  6525             ret = KErrMMEtelAuthenticateFailed;
  6522             ret = KErrMMEtelAuthenticateFailed;
  6526             }
  6523             }
  6527         }
  6524         }
  6528     else
  6525     else
  6529         {
  6526         {
  6530 TFLOGSTRING2("TSY: CMmCustomMessHandler::Uicc3GSecurityContextApduResp: UICC status not ok: 0x%x\n", aStatus );
  6527 TFLOGSTRING2("TSY: CMmCustomMessHandler::Uicc3GSecurityContextApduResp: UICC status not ok: 0x%x\n", aStatus );
  6531 OstTrace1( TRACE_NORMAL, DUP5_CMMCUSTOMMESSHANDLER_UICC3GSECURITYCONTEXTAPDURESP, "CMmCustomMessHandler::Uicc3GSecurityContextApduResp: UICC status not ok: 0x%x", aStatus );
  6528 OstTrace1( TRACE_NORMAL,  DUP5_CMMCUSTOMMESSHANDLER_UICC3GSECURITYCONTEXTAPDURESP_TD, "CMmCustomMessHandler::Uicc3GSecurityContextApduResp: UICC status not ok: 0x%x", aStatus );
  6532         ret = ETrIdEEapAkaAuthenticateIms == aTraId ? KErrGeneral : KErrMMEtelAuthenticateFailed;
  6529         ret = ETrIdEEapAkaAuthenticateIms == aTraId ? KErrGeneral : KErrMMEtelAuthenticateFailed;
  6533         }
  6530         }
  6534 
  6531 
  6535     if( KErrNone == ret ||
  6532     if( KErrNone == ret ||
  6536         KErrMMEtelSqnVerificationFailed == ret ||
  6533         KErrMMEtelSqnVerificationFailed == ret ||
  6569 void CMmCustomMessHandler::UiccCreateGBABootstrappingApdu(
  6566 void CMmCustomMessHandler::UiccCreateGBABootstrappingApdu(
  6570     TUiccSendApdu& aParams,
  6567     TUiccSendApdu& aParams,
  6571     const CMmDataPackage& aDataPackage )
  6568     const CMmDataPackage& aDataPackage )
  6572     {
  6569     {
  6573 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccCreateGBABootstrappingApdu.\n" );
  6570 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccCreateGBABootstrappingApdu.\n" );
  6574 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCCREATEGBABOOTSTRAPPINGAPDU, "CMmCustomMessHandler::UiccCreateGBABootstrappingApdu" );
  6571 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCCREATEGBABOOTSTRAPPINGAPDU_TD, "CMmCustomMessHandler::UiccCreateGBABootstrappingApdu" );
  6575 
  6572 
  6576     RMmCustomAPI::TSimAuthenticationGbaBootstrap gbaBootstrap;
  6573     RMmCustomAPI::TSimAuthenticationGbaBootstrap gbaBootstrap;
  6577     aDataPackage.UnPackData( gbaBootstrap );
  6574     aDataPackage.UnPackData( gbaBootstrap );
  6578 
  6575 
  6579     // len of data is GBA bootstrapping mode tag (1 byte) + sizeof RAND
  6576     // len of data is GBA bootstrapping mode tag (1 byte) + sizeof RAND
  6604     TInt aTraId,
  6601     TInt aTraId,
  6605     TInt aStatus,
  6602     TInt aStatus,
  6606      const TDesC8& aFileData )
  6603      const TDesC8& aFileData )
  6607     {
  6604     {
  6608 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccGBABootstrappingApduResp.\n" );
  6605 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccGBABootstrappingApduResp.\n" );
  6609 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCGBABOOTSTRAPPINGAPDURESP, "CMmCustomMessHandler::UiccGBABootstrappingApduResp" );
  6606 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCGBABOOTSTRAPPINGAPDURESP_TD, "CMmCustomMessHandler::UiccGBABootstrappingApduResp" );
  6610 
  6607 
  6611     TInt ret( KErrNone );
  6608     TInt ret( KErrNone );
  6612     RMmCustomAPI::TSimAuthenticationGbaBootstrap gbaBootstrap;
  6609     RMmCustomAPI::TSimAuthenticationGbaBootstrap gbaBootstrap;
  6613 
  6610 
  6614     if( UICC_STATUS_OK == aStatus )
  6611     if( UICC_STATUS_OK == aStatus )
  6646                     }
  6643                     }
  6647                 }
  6644                 }
  6648             else
  6645             else
  6649                 {
  6646                 {
  6650 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccGBABootstrappingApduResp: APDU validation failed\n" );
  6647 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccGBABootstrappingApduResp: APDU validation failed\n" );
  6651 OstTrace0( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_UICCGBABOOTSTRAPPINGAPDURESP, "CMmCustomMessHandler::UiccGBABootstrappingApduResp: APDU validation failed" );
  6648 OstTrace0( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_UICCGBABOOTSTRAPPINGAPDURESP_TD, "CMmCustomMessHandler::UiccGBABootstrappingApduResp: APDU validation failed" );
  6652                 ret = KErrGeneral;
  6649                 ret = KErrGeneral;
  6653                 }
  6650                 }
  6654             }
  6651             }
  6655         else if( KAppAuthErrorIncorrectMac == result )
  6652         else if( KAppAuthErrorIncorrectMac == result )
  6656             {
  6653             {
  6657 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccGBABootstrappingApduResp: incorrect MAC\n" );
  6654 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccGBABootstrappingApduResp: incorrect MAC\n" );
  6658 OstTrace0( TRACE_NORMAL, DUP2_CMMCUSTOMMESSHANDLER_UICCGBABOOTSTRAPPINGAPDURESP, "CMmCustomMessHandler::UiccGBABootstrappingApduResp: incorrect MAC" );
  6655 OstTrace0( TRACE_NORMAL,  DUP2_CMMCUSTOMMESSHANDLER_UICCGBABOOTSTRAPPINGAPDURESP_TD, "CMmCustomMessHandler::UiccGBABootstrappingApduResp: incorrect MAC" );
  6659             // no parameters in this case
  6656             // no parameters in this case
  6660             ret = KErrMMEtelMacVerificationFailed;
  6657             ret = KErrMMEtelMacVerificationFailed;
  6661             }
  6658             }
  6662         else
  6659         else
  6663             {
  6660             {
  6664 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccGBABootstrappingApduResp: unknown result\n" );
  6661 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccGBABootstrappingApduResp: unknown result\n" );
  6665 OstTrace0( TRACE_NORMAL, DUP3_CMMCUSTOMMESSHANDLER_UICCGBABOOTSTRAPPINGAPDURESP, "CMmCustomMessHandler::UiccGBABootstrappingApduResp: unknown result" );
  6662 OstTrace0( TRACE_NORMAL,  DUP3_CMMCUSTOMMESSHANDLER_UICCGBABOOTSTRAPPINGAPDURESP_TD, "CMmCustomMessHandler::UiccGBABootstrappingApduResp: unknown result" );
  6666             ret = KErrGeneral;
  6663             ret = KErrGeneral;
  6667             }
  6664             }
  6668         }
  6665         }
  6669     else
  6666     else
  6670         {
  6667         {
  6671 TFLOGSTRING2("TSY: CMmCustomMessHandler::UiccGBABootstrappingApduResp: UICC status not ok: 0x%x\n", aStatus );
  6668 TFLOGSTRING2("TSY: CMmCustomMessHandler::UiccGBABootstrappingApduResp: UICC status not ok: 0x%x\n", aStatus );
  6672 OstTrace1( TRACE_NORMAL, DUP4_CMMCUSTOMMESSHANDLER_UICCGBABOOTSTRAPPINGAPDURESP, "CMmCustomMessHandler::UiccGBABootstrappingApduResp: UICC status not ok: 0x%x", aStatus );
  6669 OstTrace1( TRACE_NORMAL,  DUP4_CMMCUSTOMMESSHANDLER_UICCGBABOOTSTRAPPINGAPDURESP_TD, "CMmCustomMessHandler::UiccGBABootstrappingApduResp: UICC status not ok: 0x%x", aStatus );
  6673         ret = KErrMMEtelAuthenticateFailed;
  6670         ret = KErrMMEtelAuthenticateFailed;
  6674         }
  6671         }
  6675 
  6672 
  6676     if( KErrNone == ret ||
  6673     if( KErrNone == ret ||
  6677         KErrMMEtelSqnVerificationFailed == ret ||
  6674         KErrMMEtelSqnVerificationFailed == ret ||
  6701 //
  6698 //
  6702 void CMmCustomMessHandler::UiccGBABootstrapUpdate(
  6699 void CMmCustomMessHandler::UiccGBABootstrapUpdate(
  6703     const CMmDataPackage& aDataPackage )
  6700     const CMmDataPackage& aDataPackage )
  6704     {
  6701     {
  6705 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccGBABootstrapUpdate.\n" );
  6702 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccGBABootstrapUpdate.\n" );
  6706 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCGBABOOTSTRAPUPDATE, "CMmCustomMessHandler::UiccGBABootstrapUpdate" );
  6703 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCGBABOOTSTRAPUPDATE_TD, "CMmCustomMessHandler::UiccGBABootstrapUpdate" );
  6707 
  6704 
  6708     // GBA bootstrap update is done by first reading of elementary file EFgba.
  6705     // GBA bootstrap update is done by first reading of elementary file EFgba.
  6709     // After that RAND is stored temporarily and B-Tid and keylifetime is written
  6706     // After that RAND is stored temporarily and B-Tid and keylifetime is written
  6710     // to EFgba. After write operation, RAND is completed to the client.
  6707     // to EFgba. After write operation, RAND is completed to the client.
  6711 
  6708 
  6748 void CMmCustomMessHandler::UiccGBABootstrapReadResp(
  6745 void CMmCustomMessHandler::UiccGBABootstrapReadResp(
  6749     TInt aStatus,
  6746     TInt aStatus,
  6750     const TDesC8& aFileData )
  6747     const TDesC8& aFileData )
  6751     {
  6748     {
  6752 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccGBABootstrapReadResp.\n" );
  6749 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccGBABootstrapReadResp.\n" );
  6753 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCGBABOOTSTRAPREADRESP, "CMmCustomMessHandler::UiccGBABootstrapReadResp" );
  6750 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCGBABOOTSTRAPREADRESP_TD, "CMmCustomMessHandler::UiccGBABootstrapReadResp" );
  6754 
  6751 
  6755     iRandBuf.Zero();
  6752     iRandBuf.Zero();
  6756 
  6753 
  6757     if( UICC_STATUS_OK == aStatus)
  6754     if( UICC_STATUS_OK == aStatus)
  6758         {
  6755         {
  6792             iMmUiccMessHandler->CreateUiccApplCmdReq( params );
  6789             iMmUiccMessHandler->CreateUiccApplCmdReq( params );
  6793             }
  6790             }
  6794         else
  6791         else
  6795             {
  6792             {
  6796 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccGBABootstrapReadResp. File too small for update\n" );
  6793 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccGBABootstrapReadResp. File too small for update\n" );
  6797 OstTrace0( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_UICCGBABOOTSTRAPREADRESP, "CMmCustomMessHandler::UiccGBABootstrapReadResp. File too small for update" );
  6794 OstTrace0( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_UICCGBABOOTSTRAPREADRESP_TD, "CMmCustomMessHandler::UiccGBABootstrapReadResp. File too small for update" );
  6798             iMessageRouter->Complete(
  6795             iMessageRouter->Complete(
  6799                 ECustomGetSimAuthenticationDataIPC,
  6796                 ECustomGetSimAuthenticationDataIPC,
  6800                 KErrArgument );
  6797                 KErrArgument );
  6801             }
  6798             }
  6802         }
  6799         }
  6803     else
  6800     else
  6804         {
  6801         {
  6805 TFLOGSTRING2("TSY: CMmCustomMessHandler::UiccGBABootstrapReadResp. EFgba reading failed (0x%x)\n", aStatus );
  6802 TFLOGSTRING2("TSY: CMmCustomMessHandler::UiccGBABootstrapReadResp. EFgba reading failed (0x%x)\n", aStatus );
  6806 OstTrace1( TRACE_NORMAL, DUP2_CMMCUSTOMMESSHANDLER_UICCGBABOOTSTRAPREADRESP, "CMmCustomMessHandler::UiccGBABootstrapReadResp. EFgba reading failed (%x)", aStatus );
  6803 OstTrace1( TRACE_NORMAL,  DUP2_CMMCUSTOMMESSHANDLER_UICCGBABOOTSTRAPREADRESP_TD, "CMmCustomMessHandler::UiccGBABootstrapReadResp. EFgba reading failed (%x)", aStatus );
  6807         iMessageRouter->Complete(
  6804         iMessageRouter->Complete(
  6808             ECustomGetSimAuthenticationDataIPC,
  6805             ECustomGetSimAuthenticationDataIPC,
  6809             KErrMMEtelAuthenticateFailed );
  6806             KErrMMEtelAuthenticateFailed );
  6810         }
  6807         }
  6811     }
  6808     }
  6817 // -----------------------------------------------------------------------------
  6814 // -----------------------------------------------------------------------------
  6818 //
  6815 //
  6819 void CMmCustomMessHandler::UiccGBABootstrapUpdateResp( TInt aStatus )
  6816 void CMmCustomMessHandler::UiccGBABootstrapUpdateResp( TInt aStatus )
  6820     {
  6817     {
  6821 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccGBABootstrapUpdateResp.\n" );
  6818 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccGBABootstrapUpdateResp.\n" );
  6822 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCGBABOOTSTRAPUPDATERESP, "CMmCustomMessHandler::UiccGBABootstrapUpdateResp" );
  6819 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCGBABOOTSTRAPUPDATERESP_TD, "CMmCustomMessHandler::UiccGBABootstrapUpdateResp" );
  6823 
  6820 
  6824     TInt ret( KErrGeneral );
  6821     TInt ret( KErrGeneral );
  6825     RMmCustomAPI::TSimAuthenticationGbaBootstrapUpdate gbaBootstrapUpdate;
  6822     RMmCustomAPI::TSimAuthenticationGbaBootstrapUpdate gbaBootstrapUpdate;
  6826 
  6823 
  6827     if( UICC_STATUS_OK == aStatus )
  6824     if( UICC_STATUS_OK == aStatus )
  6859 void CMmCustomMessHandler::UiccCreateGBABootstrapNafDerivationApdu(
  6856 void CMmCustomMessHandler::UiccCreateGBABootstrapNafDerivationApdu(
  6860     TUiccSendApdu& aParams,
  6857     TUiccSendApdu& aParams,
  6861     const CMmDataPackage& aDataPackage )
  6858     const CMmDataPackage& aDataPackage )
  6862     {
  6859     {
  6863 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccCreateGBABootstrapNafDerivationApdu.\n" );
  6860 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccCreateGBABootstrapNafDerivationApdu.\n" );
  6864 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCCREATEGBABOOTSTRAPNAFDERIVATIONAPDU, "CMmCustomMessHandler::UiccCreateGBABootstrapNafDerivationApdu" );
  6861 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCCREATEGBABOOTSTRAPNAFDERIVATIONAPDU_TD, "CMmCustomMessHandler::UiccCreateGBABootstrapNafDerivationApdu" );
  6865 
  6862 
  6866     RMmCustomAPI::TSimAuthenticationGbaNafDerivation gbaBootstrapNafDerivation;
  6863     RMmCustomAPI::TSimAuthenticationGbaNafDerivation gbaBootstrapNafDerivation;
  6867     aDataPackage.UnPackData( gbaBootstrapNafDerivation );
  6864     aDataPackage.UnPackData( gbaBootstrapNafDerivation );
  6868 
  6865 
  6869     // len of data is GBA NAF derivation mode tag (1 byte) + sizeof NAFId
  6866     // len of data is GBA NAF derivation mode tag (1 byte) + sizeof NAFId
  6898     TInt aTraId,
  6895     TInt aTraId,
  6899     TInt aStatus,
  6896     TInt aStatus,
  6900     const TDesC8& aFileData )
  6897     const TDesC8& aFileData )
  6901     {
  6898     {
  6902 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccGBABootstrapNafDerivationApduResp.\n" );
  6899 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccGBABootstrapNafDerivationApduResp.\n" );
  6903 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCGBANAFDERIVATIONAPDURESP, "CMmCustomMessHandler::UiccGBANafDerivationApduResp" );
  6900 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCGBANAFDERIVATIONAPDURESP_TD, "CMmCustomMessHandler::UiccGBANafDerivationApduResp" );
  6904 
  6901 
  6905     TInt ret( KErrNone );
  6902     TInt ret( KErrNone );
  6906     RMmCustomAPI::TSimAuthenticationGbaNafDerivation gbaNafDerivation;
  6903     RMmCustomAPI::TSimAuthenticationGbaNafDerivation gbaNafDerivation;
  6907 
  6904 
  6908     if( UICC_STATUS_OK == aStatus )
  6905     if( UICC_STATUS_OK == aStatus )
  6926                 gbaNafDerivation.iKsExtNaf.Copy( aFileData.Mid( index, len ) );
  6923                 gbaNafDerivation.iKsExtNaf.Copy( aFileData.Mid( index, len ) );
  6927                 }
  6924                 }
  6928             else
  6925             else
  6929                 {
  6926                 {
  6930 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccGBABootstrapNafDerivationApduResp: APDU validation failed\n" );
  6927 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccGBABootstrapNafDerivationApduResp: APDU validation failed\n" );
  6931 OstTrace0( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_UICCGBANAFDERIVATIONAPDURESP, "CMmCustomMessHandler::UiccGBANafDerivationApduResp: APDU validation failed" );
  6928 OstTrace0( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_UICCGBANAFDERIVATIONAPDURESP_TD, "CMmCustomMessHandler::UiccGBANafDerivationApduResp: APDU validation failed" );
  6932                 ret = KErrGeneral;
  6929                 ret = KErrGeneral;
  6933                 }
  6930                 }
  6934             }
  6931             }
  6935         else if( KCmdNotAllowedConditionsNotSatisfied == result )
  6932         else if( KCmdNotAllowedConditionsNotSatisfied == result )
  6936             {
  6933             {
  6937             ret = KErrNotSupported;
  6934             ret = KErrNotSupported;
  6938             }
  6935             }
  6939         else
  6936         else
  6940             {
  6937             {
  6941 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccGBABootstrapNafDerivationApduResp: unknown result\n" );
  6938 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccGBABootstrapNafDerivationApduResp: unknown result\n" );
  6942 OstTrace0( TRACE_NORMAL, DUP2_CMMCUSTOMMESSHANDLER_UICCGBANAFDERIVATIONAPDURESP, "CMmCustomMessHandler::UiccGBANafDerivationApduResp: unknown result" );
  6939 OstTrace0( TRACE_NORMAL,  DUP2_CMMCUSTOMMESSHANDLER_UICCGBANAFDERIVATIONAPDURESP_TD, "CMmCustomMessHandler::UiccGBANafDerivationApduResp: unknown result" );
  6943             ret = KErrGeneral;
  6940             ret = KErrGeneral;
  6944             }
  6941             }
  6945         }
  6942         }
  6946     else
  6943     else
  6947         {
  6944         {
  6948 TFLOGSTRING2("TSY: CMmCustomMessHandler::UiccGBABootstrapNafDerivationApduResp: UICC status not ok: 0x%x\n", aStatus );
  6945 TFLOGSTRING2("TSY: CMmCustomMessHandler::UiccGBABootstrapNafDerivationApduResp: UICC status not ok: 0x%x\n", aStatus );
  6949 OstTrace1( TRACE_NORMAL, DUP3_CMMCUSTOMMESSHANDLER_UICCGBANAFDERIVATIONAPDURESP, "CMmCustomMessHandler::UiccGBANafDerivationApduResp: UICC status not ok: 0x%x", aStatus );
  6946 OstTrace1( TRACE_NORMAL,  DUP3_CMMCUSTOMMESSHANDLER_UICCGBANAFDERIVATIONAPDURESP_TD, "CMmCustomMessHandler::UiccGBANafDerivationApduResp: UICC status not ok: 0x%x", aStatus );
  6950         ret = KErrMMEtelAuthenticateFailed;
  6947         ret = KErrMMEtelAuthenticateFailed;
  6951         }
  6948         }
  6952 
  6949 
  6953     if( KErrNone == ret )
  6950     if( KErrNone == ret )
  6954         {
  6951         {
  6977 void CMmCustomMessHandler::UiccCreateMbmsMskUpdateApdu(
  6974 void CMmCustomMessHandler::UiccCreateMbmsMskUpdateApdu(
  6978     TUiccSendApdu& params,
  6975     TUiccSendApdu& params,
  6979     const CMmDataPackage& aDataPackage )
  6976     const CMmDataPackage& aDataPackage )
  6980     {
  6977     {
  6981 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccCreateMbmsMskUpdateApdu.\n" );
  6978 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccCreateMbmsMskUpdateApdu.\n" );
  6982 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCCREATEMBMSMSKUPDATEAPDU, "CMmCustomMessHandler::UiccCreateMbmsMskUpdateApdu" );
  6979 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCCREATEMBMSMSKUPDATEAPDU_TD, "CMmCustomMessHandler::UiccCreateMbmsMskUpdateApdu" );
  6983 
  6980 
  6984     // Note. MBMS functionality is not tested in real hardware and in real environmen
  6981     // Note. MBMS functionality is not tested in real hardware and in real environmen
  6985     //  because of there is no users for this authentication type. So this is implemented
  6982     //  because of there is no users for this authentication type. So this is implemented
  6986     // with the best knowledge at the moment and it can contain some bugs which
  6983     // with the best knowledge at the moment and it can contain some bugs which
  6987     // can be found when this is tested in real environment.
  6984     // can be found when this is tested in real environment.
  7016 void CMmCustomMessHandler::UiccMbmsMskUpdateApduResp(
  7013 void CMmCustomMessHandler::UiccMbmsMskUpdateApduResp(
  7017     TInt aStatus,
  7014     TInt aStatus,
  7018     const TDesC8& aFileData )
  7015     const TDesC8& aFileData )
  7019     {
  7016     {
  7020 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccMbmsMskUpdateApduResp.\n" );
  7017 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccMbmsMskUpdateApduResp.\n" );
  7021 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCMBMSMSKUPDATEAPDURESP, "CMmCustomMessHandler::UiccMbmsMskUpdateApduResp" );
  7018 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCMBMSMSKUPDATEAPDURESP_TD, "CMmCustomMessHandler::UiccMbmsMskUpdateApduResp" );
  7022 
  7019 
  7023     // Note. MBMS functionality is not tested in real hardware and in real environment
  7020     // Note. MBMS functionality is not tested in real hardware and in real environment
  7024     // because of at the moment there is no users for this authentication type.
  7021     // because of at the moment there is no users for this authentication type.
  7025     // So this is implemented with the best knowledge at the moment and it can contain
  7022     // So this is implemented with the best knowledge at the moment and it can contain
  7026     // some bugs which can be found when this is tested in real environment.
  7023     // some bugs which can be found when this is tested in real environment.
  7099             }
  7096             }
  7100         }
  7097         }
  7101     else
  7098     else
  7102         {
  7099         {
  7103 TFLOGSTRING2("TSY: CMmCustomMessHandler::UiccMbmsMskUpdateApduResp: UICC status not ok: 0x%x\n", aStatus );
  7100 TFLOGSTRING2("TSY: CMmCustomMessHandler::UiccMbmsMskUpdateApduResp: UICC status not ok: 0x%x\n", aStatus );
  7104 OstTrace1( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_UICCMBMSMSKUPDATEAPDURESP, "CMmCustomMessHandler::UiccMbmsMskUpdateApduResp: UICC status not ok: 0x%x", aStatus );
  7101 OstTrace1( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_UICCMBMSMSKUPDATEAPDURESP_TD, "CMmCustomMessHandler::UiccMbmsMskUpdateApduResp: UICC status not ok: 0x%x", aStatus );
  7105         ret = KErrMMEtelAuthenticateFailed;
  7102         ret = KErrMMEtelAuthenticateFailed;
  7106         }
  7103         }
  7107 
  7104 
  7108     if( completeNeeded )
  7105     if( completeNeeded )
  7109         {
  7106         {
  7135 void CMmCustomMessHandler::UiccMskUpdateHandleMbmsOperationData(
  7132 void CMmCustomMessHandler::UiccMskUpdateHandleMbmsOperationData(
  7136     RMmCustomAPI::TSimAuthenticationMgvMskUpdate& aMskUpdate,
  7133     RMmCustomAPI::TSimAuthenticationMgvMskUpdate& aMskUpdate,
  7137     TDesC8& aMbmsData )
  7134     TDesC8& aMbmsData )
  7138     {
  7135     {
  7139 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccMskUpdateHandleMbmsOperationData.\n" );
  7136 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccMskUpdateHandleMbmsOperationData.\n" );
  7140 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCMSKUPDATEHANDLEMBMSOPERATIONDATA, "CMmCustomMessHandler::UiccMskUpdateHandleMbmsOperationData" );
  7137 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCMSKUPDATEHANDLEMBMSOPERATIONDATA_TD, "CMmCustomMessHandler::UiccMskUpdateHandleMbmsOperationData" );
  7141 
  7138 
  7142     TUint8 index( 0 );
  7139     TUint8 index( 0 );
  7143     TUint32 objLen( aMbmsData.Length() );
  7140     TUint32 objLen( aMbmsData.Length() );
  7144 
  7141 
  7145     if( KSuccessfullMbmsOperationTag == aMbmsData[index] &&
  7142     if( KSuccessfullMbmsOperationTag == aMbmsData[index] &&
  7168 void CMmCustomMessHandler::UiccMskUpdateHandleOMABcastOperationData(
  7165 void CMmCustomMessHandler::UiccMskUpdateHandleOMABcastOperationData(
  7169                 RMmCustomAPI::TSimAuthenticationMgvMskUpdate& aMskUpdate,
  7166                 RMmCustomAPI::TSimAuthenticationMgvMskUpdate& aMskUpdate,
  7170                 TDesC8& aMbmsData )
  7167                 TDesC8& aMbmsData )
  7171     {
  7168     {
  7172 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccMskUpdateHandleOMABcastOperationData.\n" );
  7169 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccMskUpdateHandleOMABcastOperationData.\n" );
  7173 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCMSKUPDATEHANDLEOMABCASTOPERATIONDATA, "CMmCustomMessHandler::UiccMskUpdateHandleOMABcastOperationData" );
  7170 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCMSKUPDATEHANDLEOMABCASTOPERATIONDATA_TD, "CMmCustomMessHandler::UiccMskUpdateHandleOMABcastOperationData" );
  7174 
  7171 
  7175     TBuf8<KMaxApduSize> omaBcastData;
  7172     TBuf8<KMaxApduSize> omaBcastData;
  7176 
  7173 
  7177     if( FindTlvObject( KOMABcastOperationResponseTag, aMbmsData, omaBcastData ) )
  7174     if( FindTlvObject( KOMABcastOperationResponseTag, aMbmsData, omaBcastData ) )
  7178         {
  7175         {
  7210 void CMmCustomMessHandler::UiccCreateMbmsMtkGenerationApdu(
  7207 void CMmCustomMessHandler::UiccCreateMbmsMtkGenerationApdu(
  7211     TUiccSendApdu& params,
  7208     TUiccSendApdu& params,
  7212     const CMmDataPackage& aDataPackage )
  7209     const CMmDataPackage& aDataPackage )
  7213     {
  7210     {
  7214 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccCreateMbmsMtkGenerationApdu.\n" );
  7211 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccCreateMbmsMtkGenerationApdu.\n" );
  7215 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCCREATEMBMSMTKGENERATIONAPDU, "CMmCustomMessHandler::UiccCreateMbmsMtkGenerationApdu" );
  7212 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCCREATEMBMSMTKGENERATIONAPDU_TD, "CMmCustomMessHandler::UiccCreateMbmsMtkGenerationApdu" );
  7216 
  7213 
  7217     // Note. MBMS functionality is not tested in real hardware and in real environment
  7214     // Note. MBMS functionality is not tested in real hardware and in real environment
  7218     // because of at the moment there is no users for this authentication type.
  7215     // because of at the moment there is no users for this authentication type.
  7219     // So this is implemented with the best knowledge at the moment and it can contain
  7216     // So this is implemented with the best knowledge at the moment and it can contain
  7220     // some bugs which can be found when this is tested in real environment.
  7217     // some bugs which can be found when this is tested in real environment.
  7249 void CMmCustomMessHandler::UiccMbmsMtkGenerationApduResp(
  7246 void CMmCustomMessHandler::UiccMbmsMtkGenerationApduResp(
  7250     TInt aStatus,
  7247     TInt aStatus,
  7251     const TDesC8& aFileData )
  7248     const TDesC8& aFileData )
  7252     {
  7249     {
  7253 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccMbmsMtkGenerationApduResp.\n" );
  7250 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccMbmsMtkGenerationApduResp.\n" );
  7254 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCMBMSMTKGENERATIONAPDURESP, "CMmCustomMessHandler::UiccMbmsMtkGenerationApduResp" );
  7251 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCMBMSMTKGENERATIONAPDURESP_TD, "CMmCustomMessHandler::UiccMbmsMtkGenerationApduResp" );
  7255 
  7252 
  7256     // Note. MBMS functionality is not tested in real hardware and in real environment
  7253     // Note. MBMS functionality is not tested in real hardware and in real environment
  7257     // because of at the moment there is no users for this authentication type.
  7254     // because of at the moment there is no users for this authentication type.
  7258     // So this is implemented with the best knowledge at the moment and it can contain
  7255     // So this is implemented with the best knowledge at the moment and it can contain
  7259     // some bugs which can be found when this is tested in real environment.
  7256     // some bugs which can be found when this is tested in real environment.
  7326             }
  7323             }
  7327         }
  7324         }
  7328     else
  7325     else
  7329         {
  7326         {
  7330 TFLOGSTRING2("TSY: CMmCustomMessHandler::UiccMbmsMtkGenerationApduResp: UICC status not ok: 0x%x\n", aStatus );
  7327 TFLOGSTRING2("TSY: CMmCustomMessHandler::UiccMbmsMtkGenerationApduResp: UICC status not ok: 0x%x\n", aStatus );
  7331 OstTrace1( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_UICCMBMSMTKGENERATIONAPDURESP, "CMmCustomMessHandler::UiccMbmsMtkGenerationApduResp: UICC status not ok: 0x%x", aStatus );
  7328 OstTrace1( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_UICCMBMSMTKGENERATIONAPDURESP_TD, "CMmCustomMessHandler::UiccMbmsMtkGenerationApduResp: UICC status not ok: 0x%x", aStatus );
  7332         ret = KErrMMEtelAuthenticateFailed;
  7329         ret = KErrMMEtelAuthenticateFailed;
  7333         }
  7330         }
  7334 
  7331 
  7335     if( completeNeeded )
  7332     if( completeNeeded )
  7336         {
  7333         {
  7362 void CMmCustomMessHandler::UiccMtkGenHandleMbmsOperationData(
  7359 void CMmCustomMessHandler::UiccMtkGenHandleMbmsOperationData(
  7363     RMmCustomAPI::TSimAuthenticationMgvMtkGeneration& aMtkGen,
  7360     RMmCustomAPI::TSimAuthenticationMgvMtkGeneration& aMtkGen,
  7364     TDesC8& aMbmsData )
  7361     TDesC8& aMbmsData )
  7365     {
  7362     {
  7366 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccMtkGenHandleMbmsOperationData.\n" );
  7363 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccMtkGenHandleMbmsOperationData.\n" );
  7367 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCMTKGENHANDLEMBMSOPERATIONDATA, "CMmCustomMessHandler::UiccMtkGenHandleMbmsOperationData" );
  7364 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCMTKGENHANDLEMBMSOPERATIONDATA_TD, "CMmCustomMessHandler::UiccMtkGenHandleMbmsOperationData" );
  7368 
  7365 
  7369     TUint8 index( 0 );
  7366     TUint8 index( 0 );
  7370     TUint32 objLen( aMbmsData.Length() );
  7367     TUint32 objLen( aMbmsData.Length() );
  7371 
  7368 
  7372     if( KSuccessfullMbmsOperationTag == aMbmsData[index] &&
  7369     if( KSuccessfullMbmsOperationTag == aMbmsData[index] &&
  7395 void CMmCustomMessHandler::UiccMtkGenHandleOMABcastOperationData(
  7392 void CMmCustomMessHandler::UiccMtkGenHandleOMABcastOperationData(
  7396          RMmCustomAPI::TSimAuthenticationMgvMtkGeneration& aMtkGen,
  7393          RMmCustomAPI::TSimAuthenticationMgvMtkGeneration& aMtkGen,
  7397          TDesC8& aMbmsData )
  7394          TDesC8& aMbmsData )
  7398     {
  7395     {
  7399 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccMtkGenHandleOMABcastOperationData.\n" );
  7396 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccMtkGenHandleOMABcastOperationData.\n" );
  7400 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCMTKGENHANDLEOMABCASTOPERATIONDATA, "CMmCustomMessHandler::UiccMtkGenHandleOMABcastOperationData" );
  7397 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCMTKGENHANDLEOMABCASTOPERATIONDATA_TD, "CMmCustomMessHandler::UiccMtkGenHandleOMABcastOperationData" );
  7401 
  7398 
  7402     TBuf8<KMaxApduSize> omaBcastData;
  7399     TBuf8<KMaxApduSize> omaBcastData;
  7403 
  7400 
  7404     if( FindTlvObject( KOMABcastOperationResponseTag, aMbmsData, omaBcastData ) )
  7401     if( FindTlvObject( KOMABcastOperationResponseTag, aMbmsData, omaBcastData ) )
  7405         {
  7402         {
  7441 void CMmCustomMessHandler::UiccCreateMbmsMskDeletionApdu(
  7438 void CMmCustomMessHandler::UiccCreateMbmsMskDeletionApdu(
  7442     TUiccSendApdu& params,
  7439     TUiccSendApdu& params,
  7443     const CMmDataPackage& aDataPackage )
  7440     const CMmDataPackage& aDataPackage )
  7444     {
  7441     {
  7445 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccCreateMbmsMskDeletionApdu.\n" );
  7442 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccCreateMbmsMskDeletionApdu.\n" );
  7446 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCCREATEMBMSMSKDELETIONAPDU, "CMmCustomMessHandler::UiccCreateMbmsMskDeletionApdu" );
  7443 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCCREATEMBMSMSKDELETIONAPDU_TD, "CMmCustomMessHandler::UiccCreateMbmsMskDeletionApdu" );
  7447 
  7444 
  7448     // Note. MBMS functionality is not tested in real hardware and in real environment
  7445     // Note. MBMS functionality is not tested in real hardware and in real environment
  7449     // because of at the moment there is no users for this authentication type.
  7446     // because of at the moment there is no users for this authentication type.
  7450     // So this is implemented with the best knowledge at the moment and it can contain
  7447     // So this is implemented with the best knowledge at the moment and it can contain
  7451     // some bugs which can be found when this is tested in real environment.
  7448     // some bugs which can be found when this is tested in real environment.
  7493 void CMmCustomMessHandler::UiccMbmsMskDeletionApduResp(
  7490 void CMmCustomMessHandler::UiccMbmsMskDeletionApduResp(
  7494     TInt aStatus,
  7491     TInt aStatus,
  7495     const TDesC8& aFileData )
  7492     const TDesC8& aFileData )
  7496     {
  7493     {
  7497 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccMbmsMskDeletionApduResp.\n" );
  7494 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccMbmsMskDeletionApduResp.\n" );
  7498 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCMBMSMSKDELETIONAPDURESP, "CMmCustomMessHandler::UiccMbmsMskDeletionApduResp" );
  7495 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCMBMSMSKDELETIONAPDURESP_TD, "CMmCustomMessHandler::UiccMbmsMskDeletionApduResp" );
  7499 
  7496 
  7500     // Note. MBMS functionality is not tested in real hardware and in real environment
  7497     // Note. MBMS functionality is not tested in real hardware and in real environment
  7501     // because of at the moment there is no users for this authentication type.
  7498     // because of at the moment there is no users for this authentication type.
  7502     // So this is implemented with the best knowledge at the moment and it can contain
  7499     // So this is implemented with the best knowledge at the moment and it can contain
  7503     // some bugs which can be found when this is tested in real environment.
  7500     // some bugs which can be found when this is tested in real environment.
  7548             }
  7545             }
  7549         }
  7546         }
  7550     else
  7547     else
  7551         {
  7548         {
  7552 TFLOGSTRING2("TSY: CMmCustomMessHandler::UiccMbmsMskDeletionApduResp: UICC status not ok: 0x%x\n", aStatus );
  7549 TFLOGSTRING2("TSY: CMmCustomMessHandler::UiccMbmsMskDeletionApduResp: UICC status not ok: 0x%x\n", aStatus );
  7553 OstTrace1( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_UICCMBMSMSKDELETIONAPDURESP, "CMmCustomMessHandler::UiccMbmsMskDeletionApduResp: UICC status not ok: 0x%x", aStatus );
  7550 OstTrace1( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_UICCMBMSMSKDELETIONAPDURESP_TD, "CMmCustomMessHandler::UiccMbmsMskDeletionApduResp: UICC status not ok: 0x%x", aStatus );
  7554         ret = KErrMMEtelAuthenticateFailed;
  7551         ret = KErrMMEtelAuthenticateFailed;
  7555         }
  7552         }
  7556 
  7553 
  7557     if( completeNeeded )
  7554     if( completeNeeded )
  7558         {
  7555         {
  7582 // -----------------------------------------------------------------------------
  7579 // -----------------------------------------------------------------------------
  7583 //
  7580 //
  7584 void CMmCustomMessHandler::UiccCreateFirstBlockOfAuthRespApdu( TUiccTrId aTrId )
  7581 void CMmCustomMessHandler::UiccCreateFirstBlockOfAuthRespApdu( TUiccTrId aTrId )
  7585     {
  7582     {
  7586 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccCreateFirstBlockOfAuthRespApdu.\n" );
  7583 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccCreateFirstBlockOfAuthRespApdu.\n" );
  7587 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCCREATEFIRSTBLOCKOFAUTHRESPAPDU, "CMmCustomMessHandler::UiccCreateFirstBlockOfAuthRespApdu" );
  7584 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCCREATEFIRSTBLOCKOFAUTHRESPAPDU_TD, "CMmCustomMessHandler::UiccCreateFirstBlockOfAuthRespApdu" );
  7588 
  7585 
  7589     // Fill parameters to instance created from TUiccSendApdu
  7586     // Fill parameters to instance created from TUiccSendApdu
  7590     // needed for APDU sending
  7587     // needed for APDU sending
  7591     TUiccSendApdu params;
  7588     TUiccSendApdu params;
  7592     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  7589     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  7614 // -----------------------------------------------------------------------------
  7611 // -----------------------------------------------------------------------------
  7615 //
  7612 //
  7616 TUint8 CMmCustomMessHandler::MapSw1Sw2ToAuthenticateResult( TUint8 sw1, TUint8 sw2 )
  7613 TUint8 CMmCustomMessHandler::MapSw1Sw2ToAuthenticateResult( TUint8 sw1, TUint8 sw2 )
  7617     {
  7614     {
  7618 TFLOGSTRING3("TSY: CMmCustomMessHandler::MapSw1Sw2ToAuthenticateResult. sw1: 0x%x sw2: 0x%x\n", sw1, sw2 );
  7615 TFLOGSTRING3("TSY: CMmCustomMessHandler::MapSw1Sw2ToAuthenticateResult. sw1: 0x%x sw2: 0x%x\n", sw1, sw2 );
  7619 OstTraceExt2( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_MAPSW1SW2TOAUTHENTICATERESULT, "CMmCustomMessHandler::MapSw1Sw2ToAuthenticateResult. sw1: 0x%x sw2: 0x%x", sw1, sw2 );
  7616 OstTraceExt2( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_MAPSW1SW2TOAUTHENTICATERESULT_TD, "CMmCustomMessHandler::MapSw1Sw2ToAuthenticateResult. sw1: 0x%x sw2: 0x%x", sw1, sw2 );
  7620 
  7617 
  7621     TUint8 ret( KUnknownCommandEnding );
  7618     TUint8 ret( KUnknownCommandEnding );
  7622 
  7619 
  7623     switch( sw1 )
  7620     switch( sw1 )
  7624         {
  7621         {
  7744             break;
  7741             break;
  7745             }
  7742             }
  7746         default:
  7743         default:
  7747             {
  7744             {
  7748 TFLOGSTRING("TSY: CMmCustomMessHandler::ValidateReceivedAuthenticateApdu: unknown APDU\n" );
  7745 TFLOGSTRING("TSY: CMmCustomMessHandler::ValidateReceivedAuthenticateApdu: unknown APDU\n" );
  7749 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_VALIDATERECEIVEDAUTHENTICATEAPDU, "CMmCustomMessHandler::ValidateReceivedAuthenticateApdu: unknown APDU" );
  7746 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_VALIDATERECEIVEDAUTHENTICATEAPDU_TD, "CMmCustomMessHandler::ValidateReceivedAuthenticateApdu: unknown APDU" );
  7750             ret = KApduNok;
  7747             ret = KApduNok;
  7751             break;
  7748             break;
  7752             }
  7749             }
  7753         }
  7750         }
  7754     return ret;
  7751     return ret;
  7760 // -----------------------------------------------------------------------------
  7757 // -----------------------------------------------------------------------------
  7761 //
  7758 //
  7762 TUint8 CMmCustomMessHandler::ValidateGsmSecurityContextApduResp( const TDesC8& aApdu )
  7759 TUint8 CMmCustomMessHandler::ValidateGsmSecurityContextApduResp( const TDesC8& aApdu )
  7763     {
  7760     {
  7764 TFLOGSTRING("TSY: CMmCustomMessHandler::ValidateGsmSecurityContextApduResp.\n" );
  7761 TFLOGSTRING("TSY: CMmCustomMessHandler::ValidateGsmSecurityContextApduResp.\n" );
  7765 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_VALIDATEGSMSECURITYCONTEXTAPDURESP, "CMmCustomMessHandler::ValidateGsmSecurityContextApduResp" );
  7762 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_VALIDATEGSMSECURITYCONTEXTAPDURESP_TD, "CMmCustomMessHandler::ValidateGsmSecurityContextApduResp" );
  7766     TUint8 ret( KApduNok );
  7763     TUint8 ret( KApduNok );
  7767 
  7764 
  7768     // apdu len is len of aApdu - 2 (because of
  7765     // apdu len is len of aApdu - 2 (because of
  7769     // aApdu contains sw1 and sw2)
  7766     // aApdu contains sw1 and sw2)
  7770     TUint apduLen( aApdu.Length() - 2 );
  7767     TUint apduLen( aApdu.Length() - 2 );
  7787 // -----------------------------------------------------------------------------
  7784 // -----------------------------------------------------------------------------
  7788 //
  7785 //
  7789 TUint8 CMmCustomMessHandler::Validate3GSecurityContextApduResp( const TDesC8& aApdu )
  7786 TUint8 CMmCustomMessHandler::Validate3GSecurityContextApduResp( const TDesC8& aApdu )
  7790     {
  7787     {
  7791 TFLOGSTRING("TSY: CMmCustomMessHandler::Validate3GSecurityContextApduResp.\n" );
  7788 TFLOGSTRING("TSY: CMmCustomMessHandler::Validate3GSecurityContextApduResp.\n" );
  7792 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_VALIDATE3GSECURITYCONTEXTAPDURESP, "CMmCustomMessHandler::Validate3GSecurityContextApduResp" );
  7789 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_VALIDATE3GSECURITYCONTEXTAPDURESP_TD, "CMmCustomMessHandler::Validate3GSecurityContextApduResp" );
  7793 
  7790 
  7794     TUint8 ret( KApduOk );
  7791     TUint8 ret( KApduOk );
  7795 
  7792 
  7796     // Let's calculate total APDU data len in aApdu. Length is
  7793     // Let's calculate total APDU data len in aApdu. Length is
  7797     // decremented by 2 because of aApdu contains also sw1 and sw2
  7794     // decremented by 2 because of aApdu contains also sw1 and sw2
  7804         {
  7801         {
  7805         // check the len of RES
  7802         // check the len of RES
  7806         if( KMinLenOfRes > aApdu[index] || KMaxLenOfRes < aApdu[index] )
  7803         if( KMinLenOfRes > aApdu[index] || KMaxLenOfRes < aApdu[index] )
  7807             {
  7804             {
  7808 TFLOGSTRING("TSY: CMmCustomMessHandler::Validate3GSecurityContextApduResp: invalid RES\n" );
  7805 TFLOGSTRING("TSY: CMmCustomMessHandler::Validate3GSecurityContextApduResp: invalid RES\n" );
  7809 OstTrace0( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_VALIDATE3GSECURITYCONTEXTAPDURESP, "CMmCustomMessHandler::Validate3GSecurityContextApduResp: invalid RES" );
  7806 OstTrace0( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_VALIDATE3GSECURITYCONTEXTAPDURESP_TD, "CMmCustomMessHandler::Validate3GSecurityContextApduResp: invalid RES" );
  7810             ret = KApduNok;
  7807             ret = KApduNok;
  7811             }
  7808             }
  7812         else
  7809         else
  7813             {
  7810             {
  7814             // move pointer to field length of CK
  7811             // move pointer to field length of CK
  7820             KLenOfCk != aApdu[index] )
  7817             KLenOfCk != aApdu[index] )
  7821             {
  7818             {
  7822             if( KApduNok != ret )
  7819             if( KApduNok != ret )
  7823                 {
  7820                 {
  7824 TFLOGSTRING("TSY: CMmCustomMessHandler::Validate3GSecurityContextApduResp: invalid CK\n" );
  7821 TFLOGSTRING("TSY: CMmCustomMessHandler::Validate3GSecurityContextApduResp: invalid CK\n" );
  7825 OstTrace0( TRACE_NORMAL, DUP2_CMMCUSTOMMESSHANDLER_VALIDATE3GSECURITYCONTEXTAPDURESP, "CMmCustomMessHandler::Validate3GSecurityContextApduResp: invalid CK" );
  7822 OstTrace0( TRACE_NORMAL,  DUP2_CMMCUSTOMMESSHANDLER_VALIDATE3GSECURITYCONTEXTAPDURESP_TD, "CMmCustomMessHandler::Validate3GSecurityContextApduResp: invalid CK" );
  7826                 ret = KApduNok;
  7823                 ret = KApduNok;
  7827                 }
  7824                 }
  7828             }
  7825             }
  7829         else
  7826         else
  7830             {
  7827             {
  7837             KLenOfIk != aApdu[index] )
  7834             KLenOfIk != aApdu[index] )
  7838             {
  7835             {
  7839             if( KApduNok != ret )
  7836             if( KApduNok != ret )
  7840                 {
  7837                 {
  7841 TFLOGSTRING("TSY: CMmCustomMessHandler::Validate3GSecurityContextApduResp: invalid IK\n" );
  7838 TFLOGSTRING("TSY: CMmCustomMessHandler::Validate3GSecurityContextApduResp: invalid IK\n" );
  7842 OstTrace0( TRACE_NORMAL, DUP3_CMMCUSTOMMESSHANDLER_VALIDATE3GSECURITYCONTEXTAPDURESP, "CMmCustomMessHandler::Validate3GSecurityContextApduResp: invalid IK" );
  7839 OstTrace0( TRACE_NORMAL,  DUP3_CMMCUSTOMMESSHANDLER_VALIDATE3GSECURITYCONTEXTAPDURESP_TD, "CMmCustomMessHandler::Validate3GSecurityContextApduResp: invalid IK" );
  7843                 ret = KApduNok;
  7840                 ret = KApduNok;
  7844                 }
  7841                 }
  7845             }
  7842             }
  7846         else
  7843         else
  7847             {
  7844             {
  7859 
  7856 
  7860             // check the len of Kc
  7857             // check the len of Kc
  7861             if( KLenOfKc != aApdu[index] )
  7858             if( KLenOfKc != aApdu[index] )
  7862                 {
  7859                 {
  7863 TFLOGSTRING("TSY: CMmCustomMessHandler::Validate3GSecurityContextApduResp: invalid Kc\n" );
  7860 TFLOGSTRING("TSY: CMmCustomMessHandler::Validate3GSecurityContextApduResp: invalid Kc\n" );
  7864 OstTrace0( TRACE_NORMAL, DUP4_CMMCUSTOMMESSHANDLER_VALIDATE3GSECURITYCONTEXTAPDURESP, "CMmCustomMessHandler::Validate3GSecurityContextApduResp: invalid Kc" );
  7861 OstTrace0( TRACE_NORMAL,  DUP4_CMMCUSTOMMESSHANDLER_VALIDATE3GSECURITYCONTEXTAPDURESP_TD, "CMmCustomMessHandler::Validate3GSecurityContextApduResp: invalid Kc" );
  7865                 ret = KApduNok;
  7862                 ret = KApduNok;
  7866                 }
  7863                 }
  7867             else
  7864             else
  7868                 {
  7865                 {
  7869                 // move pointer to end of Kc
  7866                 // move pointer to end of Kc
  7874         // let's check that pointer doesn't go over
  7871         // let's check that pointer doesn't go over
  7875         // aApdu's limits.
  7872         // aApdu's limits.
  7876         if( KApduOk == ret && index > apduLen - 1 )
  7873         if( KApduOk == ret && index > apduLen - 1 )
  7877             {
  7874             {
  7878 TFLOGSTRING("TSY: CMmCustomMessHandler::Validate3GSecurityContextApduResp: error, APDU buffer overflow\n" );
  7875 TFLOGSTRING("TSY: CMmCustomMessHandler::Validate3GSecurityContextApduResp: error, APDU buffer overflow\n" );
  7879 OstTrace0( TRACE_NORMAL, DUP5_CMMCUSTOMMESSHANDLER_VALIDATE3GSECURITYCONTEXTAPDURESP, "CMmCustomMessHandler::Validate3GSecurityContextApduResp: error, APDU buffer overflow" );
  7876 OstTrace0( TRACE_NORMAL,  DUP5_CMMCUSTOMMESSHANDLER_VALIDATE3GSECURITYCONTEXTAPDURESP_TD, "CMmCustomMessHandler::Validate3GSecurityContextApduResp: error, APDU buffer overflow" );
  7880             ret = KApduNok;
  7877             ret = KApduNok;
  7881             }
  7878             }
  7882         }
  7879         }
  7883 
  7880 
  7884     else if(KSyncFailureTag == tag)
  7881     else if(KSyncFailureTag == tag)
  7885         {
  7882         {
  7886         // check the len of AUTS
  7883         // check the len of AUTS
  7887         if( KLenOfAuts != aApdu[index])
  7884         if( KLenOfAuts != aApdu[index])
  7888             {
  7885             {
  7889 TFLOGSTRING("TSY: CMmCustomMessHandler::Validate3GSecurityContextApduResp: invalid AUTS\n" );
  7886 TFLOGSTRING("TSY: CMmCustomMessHandler::Validate3GSecurityContextApduResp: invalid AUTS\n" );
  7890 OstTrace0( TRACE_NORMAL, DUP6_CMMCUSTOMMESSHANDLER_VALIDATE3GSECURITYCONTEXTAPDURESP, "CMmCustomMessHandler::Validate3GSecurityContextApduResp: invalid AUTS" );
  7887 OstTrace0( TRACE_NORMAL,  DUP6_CMMCUSTOMMESSHANDLER_VALIDATE3GSECURITYCONTEXTAPDURESP_TD, "CMmCustomMessHandler::Validate3GSecurityContextApduResp: invalid AUTS" );
  7891             ret = KApduNok;
  7888             ret = KApduNok;
  7892             }
  7889             }
  7893         else
  7890         else
  7894             {
  7891             {
  7895             // move pointer to end of AUTS
  7892             // move pointer to end of AUTS
  7899         // let's check that pointer doesn't go over
  7896         // let's check that pointer doesn't go over
  7900         // aApdu's limits.
  7897         // aApdu's limits.
  7901         if( KApduOk == ret && index > apduLen - 1 )
  7898         if( KApduOk == ret && index > apduLen - 1 )
  7902             {
  7899             {
  7903 TFLOGSTRING("TSY: CMmCustomMessHandler::Validate3GSecurityContextApduResp: error, APDU buffer overflow\n" );
  7900 TFLOGSTRING("TSY: CMmCustomMessHandler::Validate3GSecurityContextApduResp: error, APDU buffer overflow\n" );
  7904 OstTrace0( TRACE_NORMAL, DUP7_CMMCUSTOMMESSHANDLER_VALIDATE3GSECURITYCONTEXTAPDURESP, "CMmCustomMessHandler::Validate3GSecurityContextApduResp: error, APDU buffer overflow" );
  7901 OstTrace0( TRACE_NORMAL,  DUP7_CMMCUSTOMMESSHANDLER_VALIDATE3GSECURITYCONTEXTAPDURESP_TD, "CMmCustomMessHandler::Validate3GSecurityContextApduResp: error, APDU buffer overflow" );
  7905             ret = KApduNok;
  7902             ret = KApduNok;
  7906             }
  7903             }
  7907         }
  7904         }
  7908     else
  7905     else
  7909         {
  7906         {
  7910 TFLOGSTRING("TSY: CMmCustomMessHandler::Validate3GSecurityContextApduResp: error, unknown tag\n" );
  7907 TFLOGSTRING("TSY: CMmCustomMessHandler::Validate3GSecurityContextApduResp: error, unknown tag\n" );
  7911 OstTrace0( TRACE_NORMAL, DUP8_CMMCUSTOMMESSHANDLER_VALIDATE3GSECURITYCONTEXTAPDURESP, "CMmCustomMessHandler::Validate3GSecurityContextApduResp: error, unknown tag" );
  7908 OstTrace0( TRACE_NORMAL,  DUP8_CMMCUSTOMMESSHANDLER_VALIDATE3GSECURITYCONTEXTAPDURESP_TD, "CMmCustomMessHandler::Validate3GSecurityContextApduResp: error, unknown tag" );
  7912         ret = KApduNok;
  7909         ret = KApduNok;
  7913         }
  7910         }
  7914 
  7911 
  7915     return ret;
  7912     return ret;
  7916     }
  7913     }
  7921 // -----------------------------------------------------------------------------
  7918 // -----------------------------------------------------------------------------
  7922 //
  7919 //
  7923 TUint8 CMmCustomMessHandler::ValidateGBABootstrappingApduResp( const TDesC8& aApdu )
  7920 TUint8 CMmCustomMessHandler::ValidateGBABootstrappingApduResp( const TDesC8& aApdu )
  7924     {
  7921     {
  7925 TFLOGSTRING("TSY: CMmCustomMessHandler::ValidateGBABootstrappingApduResp.\n" );
  7922 TFLOGSTRING("TSY: CMmCustomMessHandler::ValidateGBABootstrappingApduResp.\n" );
  7926 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_VALIDATEGBABOOTSTRAPPINGAPDURESP, "CMmCustomMessHandler::ValidateGBABootstrappingApduResp" );
  7923 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_VALIDATEGBABOOTSTRAPPINGAPDURESP_TD, "CMmCustomMessHandler::ValidateGBABootstrappingApduResp" );
  7927 
  7924 
  7928     TUint8 ret( KApduNok );
  7925     TUint8 ret( KApduNok );
  7929 
  7926 
  7930     // Let's calculate total APDU data len in aApdu. Length is
  7927     // Let's calculate total APDU data len in aApdu. Length is
  7931     // decremented by 2 because of aApdu contains also sw1 and sw2
  7928     // decremented by 2 because of aApdu contains also sw1 and sw2
  7955 // -----------------------------------------------------------------------------
  7952 // -----------------------------------------------------------------------------
  7956 //
  7953 //
  7957 TUint8 CMmCustomMessHandler::ValidateGBANafDerivationApduResp( const TDesC8& aApdu )
  7954 TUint8 CMmCustomMessHandler::ValidateGBANafDerivationApduResp( const TDesC8& aApdu )
  7958     {
  7955     {
  7959 TFLOGSTRING("TSY: CMmCustomMessHandler::ValidateGBANafDerivationApduResp.\n" );
  7956 TFLOGSTRING("TSY: CMmCustomMessHandler::ValidateGBANafDerivationApduResp.\n" );
  7960 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_VALIDATEGBANAFDERIVATIONAPDURESP, "CMmCustomMessHandler::ValidateGBANafDerivationApduResp" );
  7957 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_VALIDATEGBANAFDERIVATIONAPDURESP_TD, "CMmCustomMessHandler::ValidateGBANafDerivationApduResp" );
  7961 
  7958 
  7962     TUint8 ret = KApduNok;
  7959     TUint8 ret = KApduNok;
  7963 
  7960 
  7964     // Let's calculate total APDU data len in aApdu. Length is
  7961     // Let's calculate total APDU data len in aApdu. Length is
  7965     // decremented by 2 because of aApdu contains also sw1 and sw2
  7962     // decremented by 2 because of aApdu contains also sw1 and sw2
  7992 // -----------------------------------------------------------------------------
  7989 // -----------------------------------------------------------------------------
  7993 //
  7990 //
  7994 TUint8 CMmCustomMessHandler::ValidateRunGsmAlgorithmApduResp( const TDesC8& aApdu )
  7991 TUint8 CMmCustomMessHandler::ValidateRunGsmAlgorithmApduResp( const TDesC8& aApdu )
  7995     {
  7992     {
  7996 TFLOGSTRING("TSY: CMmCustomMessHandler::ValidateRunGsmAlgorithmApduResp.\n" );
  7993 TFLOGSTRING("TSY: CMmCustomMessHandler::ValidateRunGsmAlgorithmApduResp.\n" );
  7997 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_VALIDATERUNGSMALGORITHMAPDURESP, "CMmCustomMessHandler::ValidateRunGsmAlgorithmApduResp" );
  7994 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_VALIDATERUNGSMALGORITHMAPDURESP_TD, "CMmCustomMessHandler::ValidateRunGsmAlgorithmApduResp" );
  7998 
  7995 
  7999     TUint8 ret( KApduNok );
  7996     TUint8 ret( KApduNok );
  8000 
  7997 
  8001     if( aApdu.Length() == KRunGsmAlgorithmRespLen + 2 )
  7998     if( aApdu.Length() == KRunGsmAlgorithmRespLen + 2 )
  8002         {
  7999         {
  8015     TUint8 aTlvTag,
  8012     TUint8 aTlvTag,
  8016     const TDesC8& aBerTlv,
  8013     const TDesC8& aBerTlv,
  8017     TDes8& aTlvObject )
  8014     TDes8& aTlvObject )
  8018     {
  8015     {
  8019 TFLOGSTRING2("TSY: CMmCustomMessHandler::FindTlvObject (tag: 0x%x)\n", aTlvTag );
  8016 TFLOGSTRING2("TSY: CMmCustomMessHandler::FindTlvObject (tag: 0x%x)\n", aTlvTag );
  8020 OstTrace1( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_FINDTLVOBJECT, "CMmCustomMessHandler::FindTlvObject (tag: 0x%x)", aTlvTag );
  8017 OstTrace1( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_FINDTLVOBJECT_TD, "CMmCustomMessHandler::FindTlvObject (tag: 0x%x)", aTlvTag );
  8021 
  8018 
  8022     TBool ret( EFalse );
  8019     TBool ret( EFalse );
  8023     TUint32 index( 0 );
  8020     TUint32 index( 0 );
  8024     TUint8 tag( 0 );
  8021     TUint8 tag( 0 );
  8025     TUint32 tlvLength( 0 );
  8022     TUint32 tlvLength( 0 );
  8052                 {
  8049                 {
  8053                 if( tlvLength <= aTlvObject.MaxSize() )
  8050                 if( tlvLength <= aTlvObject.MaxSize() )
  8054                     {
  8051                     {
  8055                     // tlv object found
  8052                     // tlv object found
  8056 TFLOGSTRING2("TSY: CMmCustomMessHandler::FindTlvObject: tag: 0x%x found\n", aTlvTag );
  8053 TFLOGSTRING2("TSY: CMmCustomMessHandler::FindTlvObject: tag: 0x%x found\n", aTlvTag );
  8057 OstTrace1( TRACE_NORMAL, DUP1_CMMCUSTOMMESSHANDLER_FINDTLVOBJECT, "CMmCustomMessHandler::FindTlvObject: tag: 0x%x found", aTlvTag );
  8054 OstTrace1( TRACE_NORMAL,  DUP1_CMMCUSTOMMESSHANDLER_FINDTLVOBJECT_TD, "CMmCustomMessHandler::FindTlvObject: tag: 0x%x found", aTlvTag );
  8058                     aTlvObject.Copy( aBerTlv.Mid( index , tlvLength ) );
  8055                     aTlvObject.Copy( aBerTlv.Mid( index , tlvLength ) );
  8059                     ret = ETrue;
  8056                     ret = ETrue;
  8060                     }
  8057                     }
  8061                 else
  8058                 else
  8062                     {
  8059                     {
  8063 TFLOGSTRING3("TSY: CMmCustomMessHandler::FindTlvObject: length of aTlvObject is not enough, needed: %d max size: %d \n", tlvLength, aTlvObject.MaxSize() );
  8060 TFLOGSTRING3("TSY: CMmCustomMessHandler::FindTlvObject: length of aTlvObject is not enough, needed: %d max size: %d \n", tlvLength, aTlvObject.MaxSize() );
  8064 OstTrace0( TRACE_NORMAL, DUP2_CMMCUSTOMMESSHANDLER_FINDTLVOBJECT, "CMmCustomMessHandler::FindTlvObject: length of aTlvObject is not enough" );
  8061 OstTrace0( TRACE_NORMAL,  DUP2_CMMCUSTOMMESSHANDLER_FINDTLVOBJECT_TD, "CMmCustomMessHandler::FindTlvObject: length of aTlvObject is not enough" );
  8065 OstTrace1( TRACE_NORMAL, DUP3_CMMCUSTOMMESSHANDLER_FINDTLVOBJECT, "CMmCustomMessHandler::FindTlvObject: needed: %d", tlvLength );
  8062 OstTrace1( TRACE_NORMAL,  DUP3_CMMCUSTOMMESSHANDLER_FINDTLVOBJECT_TD, "CMmCustomMessHandler::FindTlvObject: needed: %d", tlvLength );
  8066 OstTrace1( TRACE_NORMAL, DUP4_CMMCUSTOMMESSHANDLER_FINDTLVOBJECT, "CMmCustomMessHandler::FindTlvObject: max size: %d", aTlvObject.MaxSize() );
  8063 OstTrace1( TRACE_NORMAL,  DUP4_CMMCUSTOMMESSHANDLER_FINDTLVOBJECT_TD, "CMmCustomMessHandler::FindTlvObject: max size: %d", aTlvObject.MaxSize() );
  8067                     }
  8064                     }
  8068                 }
  8065                 }
  8069             else
  8066             else
  8070                 {
  8067                 {
  8071 TFLOGSTRING("TSY: CMmCustomMessHandler::FindTlvObject: buffer overflow \n" );
  8068 TFLOGSTRING("TSY: CMmCustomMessHandler::FindTlvObject: buffer overflow \n" );
  8072 OstTrace0( TRACE_NORMAL, DUP5_CMMCUSTOMMESSHANDLER_FINDTLVOBJECT, "CMmCustomMessHandler::FindTlvObject: buffer overflow" );
  8069 OstTrace0( TRACE_NORMAL,  DUP5_CMMCUSTOMMESSHANDLER_FINDTLVOBJECT_TD, "CMmCustomMessHandler::FindTlvObject: buffer overflow" );
  8073                 }
  8070                 }
  8074             break;
  8071             break;
  8075             }
  8072             }
  8076         else
  8073         else
  8077             {
  8074             {
  8091 void CMmCustomMessHandler::DeriveCkFromKc(
  8088 void CMmCustomMessHandler::DeriveCkFromKc(
  8092     TDes8& aCk,
  8089     TDes8& aCk,
  8093     const TDesC8& aKc )
  8090     const TDesC8& aKc )
  8094     {
  8091     {
  8095 TFLOGSTRING("TSY: CMmCustomMessHandler::DeriveCkFromKc.\n" );
  8092 TFLOGSTRING("TSY: CMmCustomMessHandler::DeriveCkFromKc.\n" );
  8096 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_DERIVECKFROMKC, "CMmCustomMessHandler::DeriveCkFromKc" );
  8093 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_DERIVECKFROMKC_TD, "CMmCustomMessHandler::DeriveCkFromKc" );
  8097 
  8094 
  8098     /* This operation calculates the UMTS Ciphering Key (CK) from the GSM
  8095     /* This operation calculates the UMTS Ciphering Key (CK) from the GSM
  8099        Ciphering Key (Kc). This is done by using the c4 algorithm defined in
  8096        Ciphering Key (Kc). This is done by using the c4 algorithm defined in
  8100        3GPP TS 33.102 v3.8.0 (Release 1999).
  8097        3GPP TS 33.102 v3.8.0 (Release 1999).
  8101 
  8098 
  8119 void CMmCustomMessHandler::DeriveIkFromKc(
  8116 void CMmCustomMessHandler::DeriveIkFromKc(
  8120     TDes8& aIk,
  8117     TDes8& aIk,
  8121     const TDesC8& aKc )
  8118     const TDesC8& aKc )
  8122     {
  8119     {
  8123 TFLOGSTRING("TSY: CMmCustomMessHandler::DeriveIkFromKc.\n" );
  8120 TFLOGSTRING("TSY: CMmCustomMessHandler::DeriveIkFromKc.\n" );
  8124 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_DERIVEIKFROMKC, "CMmCustomMessHandler::DeriveIkFromKc" );
  8121 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_DERIVEIKFROMKC_TD, "CMmCustomMessHandler::DeriveIkFromKc" );
  8125 
  8122 
  8126     /* This operation derives the UMTS Integrity Key (IK) from the GSM
  8123     /* This operation derives the UMTS Integrity Key (IK) from the GSM
  8127        Ciphering Key (Kc). This is done by using the c5 algorithm defined in
  8124        Ciphering Key (Kc). This is done by using the c5 algorithm defined in
  8128        3GPP TS 33.102 v3.8.0 (release 1999).
  8125        3GPP TS 33.102 v3.8.0 (release 1999).
  8129 
  8126 
  8171 //
  8168 //
  8172 TInt CMmCustomMessHandler::UiccHandleImsAuthentication(
  8169 TInt CMmCustomMessHandler::UiccHandleImsAuthentication(
  8173     const CMmDataPackage& aDataPackage )
  8170     const CMmDataPackage& aDataPackage )
  8174     {
  8171     {
  8175 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccHandleImsAuthentication.\n" );
  8172 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccHandleImsAuthentication.\n" );
  8176 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCHANDLEIMSAUTHENTICATION, "CMmCustomMessHandler::UiccHandleImsAuthentication" );
  8173 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCHANDLEIMSAUTHENTICATION_TD, "CMmCustomMessHandler::UiccHandleImsAuthentication" );
  8177     TInt ret( KErrNone );
  8174     TInt ret( KErrNone );
  8178 
  8175 
  8179     // IMS authentication:
  8176     // IMS authentication:
  8180     // If card type is ICC, we just send the RUN GSM ALGORITHM to the ICC
  8177     // If card type is ICC, we just send the RUN GSM ALGORITHM to the ICC
  8181     // If card type is UICC, we check is ISIM application activated:
  8178     // If card type is UICC, we check is ISIM application activated:
  8276 // -----------------------------------------------------------------------------
  8273 // -----------------------------------------------------------------------------
  8277 //
  8274 //
  8278 void CMmCustomMessHandler::UiccHandleIsimActivationResp( TInt aStatus )
  8275 void CMmCustomMessHandler::UiccHandleIsimActivationResp( TInt aStatus )
  8279     {
  8276     {
  8280 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccHandleIsimActivationResp.\n" );
  8277 TFLOGSTRING("TSY: CMmCustomMessHandler::UiccHandleIsimActivationResp.\n" );
  8281 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_UICCHANDLEISIMACTIVATIONRESP, "CMmCustomMessHandler::UiccHandleIsimActivationResp" );
  8278 OstTrace0( TRACE_NORMAL,  CMMCUSTOMMESSHANDLER_UICCHANDLEISIMACTIVATIONRESP_TD, "CMmCustomMessHandler::UiccHandleIsimActivationResp" );
  8282 
  8279 
  8283     TUiccSendApdu params;
  8280     TUiccSendApdu params;
  8284     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  8281     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  8285     params.serviceType = UICC_APPL_APDU_SEND;
  8282     params.serviceType = UICC_APPL_APDU_SEND;
  8286     params.fileId = UICC_EF_ID_NOT_PRESENT;
  8283     params.fileId = UICC_EF_ID_NOT_PRESENT;
  8309         // to the USim application
  8306         // to the USim application
  8310         iMmUiccMessHandler->CreateUiccApplCmdReq( params );
  8307         iMmUiccMessHandler->CreateUiccApplCmdReq( params );
  8311         }
  8308         }
  8312     }
  8309     }
  8313 
  8310 
       
  8311 // -----------------------------------------------------------------------------
       
  8312 // CMmCustomMessHandler::CollectCbTopicIdsL
       
  8313 // Collects cellbroadcast topic IDs into array. Leaves if nothig found
       
  8314 // -----------------------------------------------------------------------------
       
  8315 //
       
  8316 CArrayFixFlat<RMmCustomAPI::TSimCbTopic>* CMmCustomMessHandler::CollectCbTopicIdsL(
       
  8317         const TDesC16& aTopicIds ) const
       
  8318     {
       
  8319 TFLOGSTRING("TSY: CMmCustomMessHandler::CollectCbTopicIdsL");
       
  8320 OstTrace0( TRACE_NORMAL, CMMCUSTOMMESSHANDLER_COLLECTCBTOPICIDSL, "CMmCustomMessHandler::CollectCbTopicIdsL" );
       
  8321 
       
  8322     CArrayFixFlat<RMmCustomAPI::TSimCbTopic>* simCbTopics =
       
  8323         new ( ELeave ) CArrayFixFlat<RMmCustomAPI::TSimCbTopic> (
       
  8324         aTopicIds.Length() );
       
  8325     CleanupStack::PushL( simCbTopics );
       
  8326     for ( TInt i = 0; i < aTopicIds.Length(); i++ )
       
  8327         {
       
  8328         TUint16 cbId =
       
  8329         ( aTopicIds[i] >> 8 ) | ( aTopicIds[i] << 8 );
       
  8330         if ( KUnusedCbMsgId != cbId )
       
  8331             {
       
  8332             RMmCustomAPI::TSimCbTopic simCbTopic;
       
  8333             // CB ID
       
  8334             simCbTopic.iNumber = cbId;
       
  8335             // Topic names are not stored on the SIM
       
  8336             simCbTopic.iName.Zero();
       
  8337             // Add CB topic to array
       
  8338             simCbTopics->AppendL( simCbTopic );
       
  8339             }
       
  8340         }
       
  8341     simCbTopics->Compress();
       
  8342     // handle this like error case
       
  8343     __ASSERT_ALWAYS(
       
  8344         0 < simCbTopics->Count(), User::Leave( KErrNotFound ) );
       
  8345     CleanupStack::Pop( simCbTopics );
       
  8346 
       
  8347     return simCbTopics;
       
  8348     }
       
  8349 
  8314 // ========================== OTHER EXPORTED FUNCTIONS =========================
  8350 // ========================== OTHER EXPORTED FUNCTIONS =========================
  8315     //None
  8351     //None
  8316 
  8352 
  8317 // End of File
  8353 // End of File