telephonyserverplugins/common_tsy/commontsy/src/mmtsy/CMmMessageRouterProxy.cpp
changeset 0 3553901f7fa8
child 8 3f227a47ad75
equal deleted inserted replaced
-1:000000000000 0:3553901f7fa8
       
     1 // Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 //
       
    15 
       
    16 
       
    17 
       
    18 //  INCLUDE FILES
       
    19 #include "cmmmessagerouterproxy.h"
       
    20 #include "cmmvoicecalltsy.h"
       
    21 #include "cmmdatacalltsy.h"
       
    22 #include "cmmcallextinterface.h"
       
    23 #include "cmmconferencecalltsy.h"
       
    24 #include "cmmconferencecallextinterface.h"
       
    25 #include "cmmphonetsy.h"
       
    26 #include "cmmlinetsy.h"
       
    27 #include "cmmnettsy.h"
       
    28 #include <ctsy/serviceapi/mmtsy_ipcdefs.h>
       
    29 #include "cmmonstoretsy.h"
       
    30 #include "cmmenstoretsy.h"
       
    31 #include "cmmphonebookstoretsy.h"
       
    32 #include "cmmphoneextinterface.h"
       
    33 #include "cmmdtmftsy.h"
       
    34 #include "cmmlinelist.h"
       
    35 #include "cmmcalllist.h"
       
    36 #include "cmmpblist.h"
       
    37 #include "cmmsupplservtsy.h"
       
    38 #include "Cmmpacketservicetsy.h"
       
    39 #include "cmmpacketservicegsmwcdmaext.h"
       
    40 #include "cmmpacketqosgsmwcdmaext.h"
       
    41 #include "Cmmpacketcontextlist.h"
       
    42 #include "cmmmbmscontextlist.h"
       
    43 #include "cmmmbmscontexttsy.h"
       
    44 #include "CMmCustomTsy.h"
       
    45 #include "CMmCustomGsmExt.h"
       
    46 #include "cmmussdtsy.h"
       
    47 #include "cmmbroadcasttsy.h"
       
    48 #include "CMmSimLockTsy.h"
       
    49 #include "CMmWimTsy.h"
       
    50 #include "CMmSIMTsy.h"
       
    51 #include "cmmsecuritytsy.h"
       
    52 #include "cmmsmstsy.h"
       
    53 #include "cmmsmsstoragetsy.h"
       
    54 #include "CMmCustomSecurityTsy.h"
       
    55 #include "ctsydelegates.h"
       
    56 #include <satcs.h>
       
    57 
       
    58 
       
    59 CMmMessageRouterProxy::CMmMessageRouterProxy()
       
    60     {
       
    61     }
       
    62     
       
    63  CMmMessageRouterProxy* CMmMessageRouterProxy::NewL( 
       
    64     CTsyDelegates& aTsyDelegates )
       
    65     {
       
    66 TFLOGSTRING("TSY: CMmMessageRouterProxy::NewL." );    
       
    67     CMmMessageRouterProxy* const routerproxy =
       
    68         new ( ELeave ) CMmMessageRouterProxy();
       
    69     CleanupStack::PushL( routerproxy );
       
    70 	routerproxy->iTsyDelegates = &aTsyDelegates;
       
    71     routerproxy->ConstructL();
       
    72     CleanupStack::Pop();
       
    73     return routerproxy;	
       
    74     }
       
    75     
       
    76 CMmMessageRouterProxy::~CMmMessageRouterProxy()
       
    77 	{	
       
    78 	}
       
    79 	
       
    80 void CMmMessageRouterProxy::ConstructL()
       
    81     {
       
    82     }
       
    83 
       
    84 // ---------------------------------------------------------------------------
       
    85 // CMmMessageRouterProxy::Complete 
       
    86 // Complete with a data package
       
    87 // (other items were commented in a header).
       
    88 // ---------------------------------------------------------------------------
       
    89 //
       
    90 void CMmMessageRouterProxy::Complete( 
       
    91     TInt aIpc, 
       
    92     CMmDataPackage* aData, 
       
    93     TInt aResult )
       
    94 	{
       
    95 TFLOGSTRING3("TSY: CMmMessageRouterProxy::Complete. IPC = %d, result: %d", aIpc, aResult);
       
    96 	RouteCompletion( aIpc, aData, aResult ); 
       
    97 	}
       
    98 	
       
    99 // ---------------------------------------------------------------------------
       
   100 // CMmMessageRouterProxy::Complete 
       
   101 // Complete without a data package
       
   102 // (other items were commented in a header).
       
   103 // ---------------------------------------------------------------------------
       
   104 //
       
   105 void CMmMessageRouterProxy::Complete( TInt aIpc, TInt aResult )
       
   106 	{    
       
   107     CMmDataPackage emptyDataPackage;
       
   108 	Complete( aIpc, &emptyDataPackage, aResult );
       
   109 	}
       
   110 	
       
   111 // ---------------------------------------------------------------------------
       
   112 // CMmMessageRouterProxy::RouteCompletion
       
   113 // Completes a request or notification via the specific Tsy object, based on
       
   114 // IPC number and data package
       
   115 // (other items were commented in a header).
       
   116 // ---------------------------------------------------------------------------
       
   117 //
       
   118 EXPORT_C void CMmMessageRouterProxy::RouteCompletion(
       
   119     TInt aIpc,
       
   120     CMmDataPackage* aDataPackage,
       
   121     TInt aResult )
       
   122     {
       
   123     TRAP_IGNORE( RouteCompletionL( aIpc, aDataPackage, aResult ) );
       
   124     }
       
   125 
       
   126 // ---------------------------------------------------------------------------
       
   127 // CMmMessageRouterProxy::RouteCompletionL
       
   128 // Completes a request or notification via the specific Tsy object, based on
       
   129 // IPC number and data package
       
   130 // (other items were commented in a header).
       
   131 // ---------------------------------------------------------------------------
       
   132 //
       
   133 void CMmMessageRouterProxy::RouteCompletionL(
       
   134     TInt aIpc,
       
   135     CMmDataPackage* aDataPackage,
       
   136     TInt aResult )
       
   137     {
       
   138     //Literals used in routing
       
   139     _LIT( KStringExternal,  "External"  );
       
   140     _LIT( KStringExternal2, "External2" );
       
   141     
       
   142     //Object to complete
       
   143     CBase* mmObject = NULL;
       
   144       
       
   145      //Get mmObject to complete to
       
   146      switch ( aIpc )
       
   147         {
       
   148         // Call Functionality
       
   149         case EMobileCallHold:
       
   150         case EEtelCallDial:
       
   151         case EEtelCallAnswer:
       
   152         case EEtelCallHangUp:
       
   153         case EMobileCallResume:
       
   154         case EMobileCallSwap:
       
   155         case EMobileCallTransfer:
       
   156         case EMobileCallGoOneToOne:
       
   157         case EMobileCallNotifyMobileCallStatusChange:
       
   158         case EMobileCallGetMobileCallInfo:
       
   159         case EMobileCallNotifyCallEvent:
       
   160         case EMobileConferenceCallGetMobileCallInfo:
       
   161         case EMobileCallDialISV:
       
   162         case EMobileCallAnswerISV:
       
   163         case EMobileCallDialEmergencyCall:
       
   164         case EMobileCallReceiveUUI:
       
   165         case EMobileCallDialNoFdnCheck: 
       
   166         // CSD functionality
       
   167         case EMobileCallSetDynamicHscsdParams:
       
   168         case EMobileCallNotifyMobileDataCallCapsChange:
       
   169         case EMobileCallNotifyHscsdInfoChange:
       
   170         case EEtelCallGetCallParams:
       
   171         case EEtelCallGetBearerServiceInfo:
       
   172         	{
       
   173         	TInt callId( -1 );
       
   174 	        RMobilePhone::TMobileService callMode( 
       
   175 	            RMobilePhone::EVoiceService );
       
   176 
       
   177 	        const CCallDataPackage* callData = REINTERPRET_CAST( 
       
   178 	            const CCallDataPackage*, aDataPackage );
       
   179 
       
   180 	        callData->GetCallIdAndMode( callId, callMode );
       
   181 
       
   182 	        //call object can be usually reasoned by Call ID
       
   183 	        mmObject = REINTERPRET_CAST( CBase*, 
       
   184                 iMmPhone->CallList()->GetMmCallById( callId ) );	
       
   185         	}
       
   186             break;
       
   187             
       
   188 		// Line Functionality
       
   189         case EEtelLineNotifyCallAdded:
       
   190         case EEtelLineNotifyIncomingCall:
       
   191         	{
       
   192         	TInt callId( -1 );
       
   193 	        RMobilePhone::TMobileService callMode( 
       
   194 	            RMobilePhone::EVoiceService );
       
   195 	            
       
   196 	        const CCallDataPackage* callData = REINTERPRET_CAST( 
       
   197 	            const CCallDataPackage*, aDataPackage );
       
   198 	            
       
   199 	        callData->GetCallIdAndMode( callId, callMode );
       
   200 
       
   201             //correct line object is determined using the call mode
       
   202             mmObject = REINTERPRET_CAST( CBase*,
       
   203                 iMmPhone->LineList()->GetMmLineByMode( callMode ) );
       
   204         	}
       
   205             break;
       
   206 
       
   207         // Conference call functionality
       
   208         case EMobileConferenceCallCreateConference:
       
   209         case EMobileConferenceCallAddCall:
       
   210         case EMobileConferenceCallSwap:
       
   211         case EMobileConferenceCallHangUp:
       
   212         case EMobileConferenceCallNotifyConferenceStatusChange:
       
   213         case EMobileConferenceCallNotifyConferenceEvent:
       
   214 
       
   215         // case EMobileConferenceCallGetCaps:
       
   216         // case EMobileConferenceCallNotifyCapsChange:
       
   217         // case EMobileConferenceCallEnumerateCalls:
       
   218         // case EMobileConferenceCallGetConferenceStatus:
       
   219 
       
   220         // case EMobileConferenceCallNotifyCapsChangeCancel:
       
   221         // case EMobileConferenceCallCreateConferenceCancel:
       
   222         // case EMobileConferenceCallAddCallCancel:
       
   223         // case EMobileConferenceCallSwapCancel:
       
   224         // case EMobileConferenceCallHangUpCancel:
       
   225         // case EMobileConferenceCallNotifyConferenceStatusChangeCancel:
       
   226         // case EMobileConferenceCallNotifyConferenceEventCancel:
       
   227         	mmObject = iTsyDelegates->
       
   228                 GetTsyObject( CMmMessageManagerBase::EConferenceCallTsy );
       
   229             break;
       
   230             
       
   231 		// Phonebook functionality
       
   232         // case EMobilePhoneReadDTMFTones:       not supported
       
   233         // case EMobilePhoneReadDTMFTonesCancel: not supported
       
   234         // case EMobilePhoneStartDTMFTone:                no completion
       
   235         // case EMobilePhoneContinueDTMFStringSending:    no completion
       
   236         // case EMobilePhoneGetDTMFCaps:                  no DOS call required
       
   237         // case EMobilePhoneNotifyDTMFCapsChange:         no DOS call required
       
   238         // case EMobilePhoneNotifyDTMFCapsChangeCancel:   no DOS call required
       
   239         // case EMobilePhoneNotifyStopInDTMFStringCancel: no DOS call required
       
   240         // case EMobilePhoneNotifyDTMFEventCancel: 		  no DOS call required
       
   241         case EMobilePhoneNotifyDTMFEvent:
       
   242          	mmObject = iTsyDelegates->GetTsyObject( CMmMessageManagerBase::EDtmfTsy );
       
   243 			break;
       
   244 			
       
   245         case EMmTsyPhoneBookStoreInitIPC:
       
   246         case EMmTsyPhoneBookStoreCacheIPC:
       
   247         case EMmTsyPhoneBookStoreReadIPC:
       
   248         case EMmTsyPhoneBookStoreWriteIPC:
       
   249         case EMmTsyPhoneBookStoreGetInfoIPC:
       
   250         case EMmTsyPhoneBookStoreDeleteIPC:
       
   251         case EMmTsyPhoneBookStoreDeleteAllIPC:
       
   252         case EMmTsyPhoneBookStoreResetCacheIPC:
       
   253         	{
       
   254         	const CPhoneBookDataPackage* phonebookData = REINTERPRET_CAST( 
       
   255         	    const CPhoneBookDataPackage*, aDataPackage );
       
   256 
       
   257 	        TName phoneBookName;
       
   258 	        phonebookData->GetPhoneBookName( phoneBookName );
       
   259 TFLOGSTRING2("TSY: CMmMessageRouterProxy::RouteCompletion: PB Name: %S", &phoneBookName);   
       
   260 
       
   261 	        for( TInt i = 0; i < iMmPhone->PBList()->GetNumberOfObjects(); i++ )
       
   262 	            {
       
   263 	            CMmPhoneBookStoreTsy* pbStore = iMmPhone->PBList()->
       
   264 	                GetMmPBByIndex( i );
       
   265 
       
   266 	            if ( 0 == pbStore->PhoneBookName()->CompareF( phoneBookName ) )
       
   267 	                {
       
   268 	                mmObject = static_cast<CBase*>( pbStore );
       
   269 	                }
       
   270 	            }
       
   271 	        if ( NULL == mmObject )
       
   272 	            {
       
   273 TFLOGSTRING("TSY: CMmMessageRouterProxy::RouteCompletion: PB object not found!");
       
   274 				iMmPhone->SetPBInitActiveStatus( EFalse );
       
   275 	            }
       
   276         	}
       
   277             break;
       
   278 		// ENStore functionality
       
   279         case EMmTsyENStoreGetInfoIPC:
       
   280         case EMmTsyENStoreReadIPC:
       
   281         case EMmTsyENStoreReadAllPhase1IPC:
       
   282         	mmObject = iTsyDelegates->
       
   283                 GetTsyObject( CMmMessageManagerBase::EENStoreTsy  );
       
   284             break;
       
   285             
       
   286 		// ONStore functionality
       
   287         case EMmTsyONStoreGetInfoIPC:
       
   288         case EMmTsyONStoreReadIPC:
       
   289         case EMmTsyONStoreWriteIPC:
       
   290         case EMmTsyONStoreDeleteIPC:
       
   291         case EMmTsyONStoreDeleteAllIPC:
       
   292         case EMmTsyONStoreReadAllPhase1IPC:
       
   293         case EMmTsyONStoreStoreAllIPC:
       
   294 		case EMmTsyONStoreReadEntryIPC:
       
   295 		case EMmTsyONStoreReadSizeIPC:
       
   296 		case EMmTsyONStoreWriteSizeIPC:
       
   297 		case EMmTsyONStoreWriteEntryIPC:
       
   298         	mmObject = iTsyDelegates->GetTsyObject( 
       
   299         	    CMmMessageManagerBase::EONStoreTsy  );
       
   300             break;
       
   301 		
       
   302 		//Packet data functionality
       
   303         case EPacketAttach:
       
   304         case EPacketDetach:
       
   305         case EPacketGetNtwkRegStatus:
       
   306         case EPacketSetAttachMode:
       
   307         case EPacketRejectActivationRequest:
       
   308         case EPacketGetAttachMode:
       
   309         case EPacketSetDefaultContextParams:
       
   310         case EPacketNotifyContextAdded:
       
   311         case EPacketNotifyStatusChange:
       
   312         case EPacketNotifyDynamicCapsChange:
       
   313         case EPacketNotifyMSClassChange:
       
   314         case EPacketSetPrefBearer:
       
   315         case EPacketNotifyChangeOfNtwkRegStatus:
       
   316         case EMmTsyNotifyEGprsInfoChangeIPC: // dummy internal IPC
       
   317         case EPacketNotifyAttachModeChange:
       
   318         case EPacketNotifyContextActivationRequested:
       
   319         case EPacketContextInitialiseContext:
       
   320         case EPacketQoSSetProfileParams:
       
   321         case EPacketQoSNotifyProfileChanged:
       
   322         case EPacketNotifyReleaseModeChange:
       
   323         case EPacketContextSetConfig:
       
   324         case EPacketContextDelete:
       
   325         case EPacketContextNotifyDataTransferred:
       
   326         case EPacketContextActivate:
       
   327         case EPacketContextNotifyConfigChanged:
       
   328         case EPacketContextNotifyConnectionSpeedChange:
       
   329         case EPacketContextNotifyStatusChange:
       
   330         case EPacketContextDeactivate:
       
   331         case EPacketContextGetDataVolumeTransferred:
       
   332         case EPacketContextModifyActiveContext:
       
   333         case ECustomSetAlwaysOnMode:
       
   334         case EPacketNotifyTransferCapsIPC:
       
   335         case EPacketEnumerateMbmsActiveServiceList:
       
   336         case EPacketNotifyMbmsServiceAvailabilityChange:
       
   337         case EPacketUpdateMbmsMonitorServiceList:
       
   338         case EPacketGetMbmsNetworkServiceStatus:
       
   339         case EPacketNotifyMbmsNetworkServiceStatusChange:
       
   340         case EPacketContextUpdateMbmsSessionList:
       
   341         case EPacketGetStaticCaps:
       
   342         case EPacketEnumerateMbmsMonitorServiceList:
       
   343         case ECtsyPacketMbmsInitialiseContextComp:
       
   344         case ECtsyPacketMbmsContextNotifyConfigChanged:
       
   345 #ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
       
   346         case EPacketContextNotifyConnectionInfoChange: 
       
   347 #endif // SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
       
   348         	mmObject = REINTERPRET_CAST( 
       
   349                 CBase*, iMmPhone->PacketDataSession() );
       
   350             break;
       
   351 
       
   352         // USSD functionality
       
   353         case EMobileUssdMessagingSendRelease:
       
   354         case EMobileUssdMessagingSendMessage:
       
   355         case EMobileUssdMessagingSendMessageNoFdnCheck:
       
   356         case EMobileUssdMessagingReceiveMessage:
       
   357         case EMobileUssdMessagingNotifyNetworkRelease:
       
   358         	mmObject = iTsyDelegates->GetTsyObject( 
       
   359         	    CMmMessageManagerBase::EUssdMessagingTsy );
       
   360             break;
       
   361             
       
   362 		// Broadcast functionality
       
   363         case EMmTsyGsmBroadcastNotifyMessageReceived:
       
   364         case EMmTsyWcdmaBroadcastNotifyMessageReceived:
       
   365         case EMobileBroadcastMessagingReceiveMessage:
       
   366         case EMobileBroadcastMessagingReceiveMessageCancel:
       
   367         case EMobileBroadcastMessagingSetFilterSetting:
       
   368         case EMobileBroadcastMessagingSetLanguageFilter:
       
   369         case EMobileBroadcastMessagingStoreIdList:
       
   370         	mmObject = iTsyDelegates->GetTsyObject(  
       
   371         	    CMmMessageManagerBase::EBroadcastMessagingTsy );
       
   372 			break;
       
   373 			
       
   374 		// SMS functionality
       
   375         case EMobileSmsMessagingGetMessageStoreInfo:
       
   376         case EMmTsyActivateSmsRouting:
       
   377         case EMmTsyDeactivateSmsRouting:
       
   378         case EMobileSmsMessagingReceiveMessage:
       
   379         case EMobileSmsMessagingSendMessage:
       
   380         case EMobileSmsMessagingSendMessageNoFdnCheck: 
       
   381         case EMmTsySmsSendSatMessage:
       
   382         case EMobileSmsMessagingResumeSmsReception:
       
   383         case EMobileSmsMessagingGetSmspListPhase1:
       
   384         case EMobileSmsMessagingStoreSmspList:
       
   385         case EMobileSmsMessagingAckSmsStored:
       
   386         case EMobileSmsMessagingNackSmsStored:
       
   387         case EMobileSmsMessagingSetMoSmsBearer:
       
   388         	mmObject = iTsyDelegates->GetTsyObject(  
       
   389         	    CMmMessageManagerBase::ESmsMessagingTsy );
       
   390             break;
       
   391             
       
   392 		// Storage functionality
       
   393         case EMobilePhoneStoreGetInfo:
       
   394         case EMobilePhoneStoreDelete:
       
   395         case EMobilePhoneStoreDeleteAll:
       
   396         case EMobilePhoneStoreRead:
       
   397         case EMobilePhoneStoreWrite:
       
   398         case EMobilePhoneStoreReadAllPhase1:
       
   399         	mmObject = iTsyDelegates->GetTsyObject(  
       
   400         	    CMmMessageManagerBase::EPhoneStoreTsy );
       
   401             break;
       
   402 
       
   403         // Custom Tsy functionality
       
   404         case ECustomCancelUssdSessionIPC:
       
   405         case ECustomSsAdditionalInfoNotificationIPC:
       
   406         case ECustomNotifySsNetworkEventIPC:
       
   407         case ECustomNotifySsRequestCompleteIPC:
       
   408         case ECustomNotifyDtmfEventIPC:
       
   409         case ECustomGetDiagnosticOctetsIPC:
       
   410         case ECustomGetRemoteAlertingToneStatusIPC:
       
   411         case ECustomClearCallBlackListIPC:
       
   412         case ECustomCheckEmergencyNumberIPC:
       
   413         case ECustomGetLifeTimeIPC:
       
   414         case ECustomTerminateCallIPC:
       
   415         case ECustomGetAlsBlockedIPC:
       
   416         case ECustomSetAlsBlockedIPC:
       
   417         case ECustomCheckAlsPpSupportIPC:
       
   418         case ECustomCheckTwoDigitDialSupportIPC:
       
   419         case ECustomGetCipheringInfoIPC:
       
   420         case ECustomNotifyCipheringInfoChangeIPC:
       
   421         case ECustomNotifyNSPSStatusIPC:
       
   422         case ECustomNetWakeupIPC:
       
   423         case ECustomGetOperatorNameIPC:
       
   424         case ECustomResetNetServerIPC:
       
   425         case ECustomNotifyNetworkConnectionFailureIPC:
       
   426         case ECustomGetSystemNetworkModesIPC:
       
   427         case ECustomSetSystemNetworkModeIPC:
       
   428         case ECustomGetNetworkProviderNameIPC:
       
   429         case ECustomGetCurrentSystemNetworkModesIPC:
       
   430         case ECustomSatRefreshCompleteNotificationIPC:
       
   431         case ECustomReadSimFileIPC:
       
   432         case ECustomSimLockActivateIPC:
       
   433         case ECustomSimLockDeActivateIPC:
       
   434         case ECustomSendAPDUReqIPC:
       
   435         case ECustomSimWarmResetIPC:
       
   436         case ECustomGetATRIPC:
       
   437         case ECustomSendAPDUReqV2IPC:
       
   438         case ECustomGetSimCardReaderStatusIPC:
       
   439         case ECustomNotifySimCardStatusIPC:
       
   440         case ECustomPowerSimOnIPC:
       
   441         case ECustomPowerSimOffIPC:
       
   442         case ECustomStartSimCbTopicBrowsingIPC:
       
   443         case ECustomDeleteSimCbTopicIPC:
       
   444         case EReadViagHomeZoneParamsIPC:
       
   445         case EReadViagHomeZoneCacheIPC:
       
   446         case EWriteViagHomeZoneUHZIUESettingsIPC:
       
   447         case EWriteViagHomeZoneCacheIPC:
       
   448         case ECustomGetSimAuthenticationDataIPC:
       
   449         case ECustomSetDriveModeIPC:
       
   450         case ECustomNotifyRauEventIPC:
       
   451         case ECustomReadHSxPAStatusIPC:
       
   452         case ECustomWriteHSxPAStatusIPC:
       
   453         case ECustomNotifyHSxPAStatusIPC:
       
   454         case ECustomGetIccCallForwardingStatusIPC:
       
   455         case ECustomNotifyIccCallForwardingStatusChangeIPC:
       
   456         case ECustomGetCellInfoIPC:
       
   457         case ECustomNotifyCellInfoChangeIPC:
       
   458         case ECustomGetBandSelectionIPC:
       
   459         case ECustomSetBandSelectionIPC:
       
   460         case ECustomNotifyRemoteAlertingToneStatusChangeIPC:
       
   461         case ECustomGetServiceTableSupportbyApplicationIPC:
       
   462         case ECustomGetProgrammableOperatorLogoIPC:
       
   463         	mmObject = iTsyDelegates->GetTsyObject( 
       
   464         	    CMmMessageManagerBase::ECustomTsy );
       
   465             break;
       
   466 
       
   467         // Security (Custom) functionality
       
   468         case ECustomIsBlockedIPC:
       
   469         case ECustomCheckSecurityCodeIPC:
       
   470         //case ECustomCheckEmergencyNumberIPC:
       
   471         //case ECustomSatRefreshCompleteNotificationIPC:
       
   472         case ECustomDisablePhoneLockIPC:
       
   473         case ECustomCheckSecurityCodeCancelIPC:
       
   474         case EMmTsySecurityGetSimActivePinStateIPC:
       
   475         	mmObject = iTsyDelegates->GetTsyObject( 
       
   476         	    CMmMessageManagerBase::ESecurityTsy );
       
   477             break;
       
   478         // This is a special case
       
   479         case EMobileCallNotifyPrivacyConfirmation:
       
   480             break; 
       
   481         default:
       
   482         	mmObject = iTsyDelegates->GetTsyObject( 
       
   483         	    CMmMessageManagerBase::EPhoneTsy );
       
   484             break;
       
   485         }
       
   486         
       
   487 	// Route completion to right TSY 	
       
   488     if ( NULL != mmObject )
       
   489         {
       
   490         switch ( aIpc )
       
   491             {
       
   492             case EMobileCallHold:                
       
   493                 static_cast<CMmVoiceCallTsy*>( mmObject )->
       
   494                     CompleteHold( aResult );
       
   495                 break;
       
   496             case EMobileCallDialNoFdnCheck:
       
   497             	static_cast<CMmCallTsy*>( mmObject )->
       
   498                 	CompleteDialNoFdn( aResult );
       
   499             	break;
       
   500             case EEtelCallDial:
       
   501             case EMobileCallDialISV:                
       
   502                 static_cast<CMmCallTsy*>( mmObject )->
       
   503                     CompleteDial( aResult );
       
   504                 break;                
       
   505             case EEtelCallAnswer:
       
   506             case EMobileCallAnswerISV:                
       
   507                 static_cast<CMmCallTsy*>( mmObject )->
       
   508                     CompleteAnswerIncomingCall( aResult );
       
   509                 break;                
       
   510             case EEtelCallHangUp:                
       
   511                 static_cast<CMmCallTsy*>( mmObject )->
       
   512                     CompleteHangUp( aResult );
       
   513                 break;                
       
   514             case EMobileCallResume:                
       
   515                 static_cast<CMmVoiceCallTsy*>( mmObject )->
       
   516                     CompleteResume( aResult );
       
   517                 break;                
       
   518             case EMobileCallSwap:                
       
   519                 static_cast<CMmVoiceCallTsy*>( mmObject )->
       
   520                     CompleteSwap( aResult );
       
   521                 break;                
       
   522             case EMobileCallTransfer:                
       
   523                 static_cast<CMmVoiceCallTsy*>( mmObject )->
       
   524                     CompleteTransfer( aResult );
       
   525                 break;                
       
   526             case EMobileCallGoOneToOne:                
       
   527                 static_cast<CMmVoiceCallTsy*>( mmObject )->
       
   528                     CompleteGoOneToOne( aResult );
       
   529                 break;                
       
   530             case EMobileCallNotifyMobileCallStatusChange:                
       
   531                 static_cast<CMmCallTsy*>( mmObject )->
       
   532                     CompleteNotifyStatusChange( aResult, aDataPackage );
       
   533                 // phone idicator status may change
       
   534                 iMmPhone->CompleteNotifyIndicatorChange();
       
   535                 break;                
       
   536             case EMobileCallGetMobileCallInfo:                
       
   537                 static_cast<CMmCallTsy*>( mmObject )->
       
   538                     CompleteNotifyMobileCallInfoChange( aDataPackage );
       
   539                 break;                
       
   540             case EMobileCallNotifyCallEvent:                
       
   541                 static_cast<CMmCallTsy*>( mmObject )->
       
   542                     CompleteNotifyRemoteCallEvent( aDataPackage );
       
   543                 break;
       
   544             case EMobileCallReceiveUUI:                
       
   545                 static_cast<CMmVoiceCallTsy*>( mmObject )->
       
   546                     CompleteReceiveUUI( aDataPackage, aResult );
       
   547                 break;
       
   548             case EMobileConferenceCallGetMobileCallInfo:                
       
   549                 static_cast<CMmCallTsy*>( mmObject )->
       
   550                     CompleteNotifyMobileCallInfoChange( aDataPackage );
       
   551                 break;                
       
   552             case EEtelLineNotifyCallAdded:                
       
   553                 static_cast<CMmLineTsy*>( mmObject )->
       
   554                     CompleteNotifyAddBypassingCall( aDataPackage );
       
   555                 break;                
       
   556             case EEtelLineNotifyIncomingCall:                
       
   557                 static_cast<CMmLineTsy*>( mmObject )->
       
   558                     CompleteNotifyIncomingCall( aDataPackage );
       
   559                 break;                
       
   560             case EMobilePhoneSetNetworkSelectionSetting:                
       
   561                 static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
       
   562                     CompleteSetNetworkSelectionSetting( aResult );
       
   563                 break;                
       
   564             case EMobilePhoneNotifyNetworkRegistrationStatusChange:                
       
   565                 static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
       
   566                     CompleteNotifyNetworkRegistrationStatusChange( 
       
   567                     aDataPackage, aResult );
       
   568                 // phone indicator status may change
       
   569                 iMmPhone->CompleteNotifyIndicatorChange();
       
   570                 break;                
       
   571             case EMobilePhoneNotifyModeChange:                
       
   572                 static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
       
   573                     CompleteNotifyModeChange( aDataPackage, aResult );
       
   574                 break;                
       
   575             case EMobilePhoneNotifyCurrentNetworkChange:                
       
   576                 static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
       
   577                     CompleteNotifyCurrentNetworkChange( 
       
   578                     aDataPackage, aResult );
       
   579                 break;                
       
   580             case EMobilePhoneNotifyNetworkSelectionSettingChange:                
       
   581                 static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
       
   582                     CompleteNotifyNetworkSelectionSettingChange( 
       
   583                                                           aDataPackage );
       
   584                 break;                
       
   585             case EMobilePhoneSelectNetwork:                
       
   586                 static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
       
   587                     CompleteSelectNetwork( aResult );
       
   588                 break;                
       
   589             case EMobilePhoneGetDetectedNetworksV2Phase1:
       
   590                 {
       
   591                 CMmNetTsy* netTsy = 
       
   592                     static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy();
       
   593 
       
   594                 netTsy->ProcessGetDetectedNetworksPhase1L(  
       
   595                     aDataPackage, aResult );
       
   596                 break;
       
   597                 }
       
   598             case EMobilePhoneAuthorizationInfoPhase1:
       
   599                 {
       
   600                 CMmNetTsy* netTsy = 
       
   601                     static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy();                
       
   602                 netTsy->ProcessGetAuthorizationInfoPhase1L(
       
   603                     aDataPackage, aResult );
       
   604                 break;
       
   605                 }
       
   606             case EMobilePhoneGetHomeNetwork:
       
   607                 {
       
   608                 CMmPhoneTsy* phoneTsy = 
       
   609                     static_cast<CMmPhoneTsy*>( mmObject );
       
   610                 static_cast<CMmPhoneExtInterface*>( phoneTsy->
       
   611                     PhoneExtInterface() )->CompleteGetHomeNetwork( 
       
   612                     aDataPackage );
       
   613                 break;
       
   614                 }
       
   615 			case EMmTsySimRefreshRegisterIPC:
       
   616             	{
       
   617             	CMmPhoneTsy* phoneTsy =
       
   618                 	static_cast<CMmPhoneTsy*>( mmObject );
       
   619             	phoneTsy->CompleteSimRefreshRegister( aResult );
       
   620             	break;
       
   621             	}
       
   622             case EMobilePhoneGetDetectedNetworksCancel:
       
   623                 static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
       
   624                     CompleteGetDetectedNetworksCancel( aResult );
       
   625                 break;
       
   626             case EMobilePhoneSelectNetworkCancel:
       
   627                 static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
       
   628                     CompleteSelectNetworkCancel( aResult );
       
   629                 break;
       
   630             case EMobilePhoneNotifySignalStrengthChange:
       
   631                 static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
       
   632                     CompleteNotifySignalStrengthChange( aDataPackage );
       
   633                 break;
       
   634             case EMobilePhoneNotifyNITZInfoChange:
       
   635                 static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
       
   636                     CompleteNotifyNITZInfoChange( aDataPackage );
       
   637                 break;
       
   638             case ECtsyPhoneCellInfoComp:
       
   639                 static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
       
   640                     CompleteCellInfoReq( aDataPackage, aResult );
       
   641                 break;            	            	
       
   642             case ECtsyPhoneCellInfoIndComp:
       
   643                 static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
       
   644                 	CompleteCellInfoIndReq( aDataPackage, aResult );
       
   645                 break;            	
       
   646             case EMobilePhoneGetNetworkRegistrationStatus:
       
   647                 static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
       
   648                     CompleteGetNetworkRegistrationStatus( aResult );
       
   649                 break;
       
   650             case EMobilePhoneGetCipheringIndicatorStatus:
       
   651                 static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
       
   652                     CompleteGetCipheringIndicatorStatus( 
       
   653                     aDataPackage, aResult );
       
   654                 break;
       
   655             case EMobilePhoneNotifyNetworkSecurityLevelChange:
       
   656                 static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
       
   657                     CompleteNotifyNetworkSecurityLevelChange( 
       
   658                     aDataPackage );
       
   659                 break;
       
   660             
       
   661       		case EMobilePhoneGetCurrentActiveUSimApplication:
       
   662                 static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
       
   663                     CompleteGetCurrentActiveUSimApplication( 
       
   664                     aDataPackage, aResult );
       
   665                 break;                                
       
   666 #ifdef USING_CTSY_DISPATCHER
       
   667     		case ECtsyUpdateLifeTimeComp:
       
   668             	{
       
   669             	CMmPhoneTsy* phoneTsy =
       
   670                 	static_cast<CMmPhoneTsy*>( mmObject );
       
   671             	phoneTsy->CompleteUpdateLifeTimer( aResult );
       
   672             	break;
       
   673             	}
       
   674 #else
       
   675 				case EMmTsyUpdateLifeTimeIPC:
       
   676             	{
       
   677             	CMmPhoneTsy* phoneTsy =
       
   678                 	static_cast<CMmPhoneTsy*>( mmObject );
       
   679             	phoneTsy->CompleteUpdateLifeTimer( aResult );
       
   680             	break;
       
   681             	}                                 
       
   682 #endif //USING_CTSY_DISPATCHER
       
   683       		case ECtsyPhoneTerminateAllCallsComp:
       
   684       			static_cast<CMmPhoneTsy*>( mmObject )->
       
   685       				CompleteTerminateAllCallsReq( aResult );
       
   686       			break;
       
   687       			
       
   688             // Conference call functionality
       
   689             case EMobileConferenceCallCreateConference:                
       
   690                 static_cast<CMmConferenceCallTsy*>( mmObject )->
       
   691                     CompleteCreateConference( aResult );
       
   692                 break;                
       
   693             case EMobileConferenceCallAddCall:                
       
   694                 static_cast<CMmConferenceCallTsy*>( mmObject )->
       
   695                     CompleteAddCall( aResult );
       
   696                 break;                
       
   697             case EMobileConferenceCallSwap:                
       
   698                 static_cast<CMmConferenceCallTsy*>( mmObject )->
       
   699                     CompleteSwap( aResult );
       
   700                 break;                
       
   701             case EMobileConferenceCallHangUp:                
       
   702                 static_cast<CMmConferenceCallTsy*>( mmObject )->
       
   703                     CompleteHangUp( aResult );
       
   704                 break;                
       
   705             case EMobileConferenceCallNotifyConferenceStatusChange:                
       
   706                 static_cast<CMmConferenceCallTsy*>( mmObject )->
       
   707                     CompleteNotifyConferenceStatusChange();
       
   708                 break;                
       
   709             case EMobileConferenceCallNotifyConferenceEvent:
       
   710                 static_cast<CMmConferenceCallTsy*>( mmObject )->
       
   711                     GetActiveConferenceCallExtension()->
       
   712                     CompleteNotifyConferenceEvent( aDataPackage );
       
   713                 break;
       
   714             // case EMobileConferenceCallGetCaps:
       
   715             // case EMobileConferenceCallNotifyCapsChange:
       
   716             // case EMobileConferenceCallEnumerateCalls:
       
   717             // case EMobileConferenceCallGetConferenceStatus:
       
   718 
       
   719             // case EMobileConferenceCallNotifyCapsChangeCancel:
       
   720             // case EMobileConferenceCallCreateConferenceCancel:
       
   721             // case EMobileConferenceCallAddCallCancel:
       
   722             // case EMobileConferenceCallSwapCancel:
       
   723             // case EMobileConferenceCallHangUpCancel:
       
   724             // case EMobileConferenceCallNotifyConferenceStatusChangeCancel:
       
   725             // case EMobileConferenceCallNotifyConferenceEventCancel:
       
   726 
       
   727             // DTMF functionality
       
   728             case EMobilePhoneSendDTMFTones:                
       
   729                 static_cast<CMmPhoneTsy*>( mmObject )->GetDtmfTsy()->
       
   730                     CompleteSendDTMFTones( aResult );
       
   731                 break;
       
   732 #ifdef USING_CTSY_DISPATCHER
       
   733             case EMobilePhoneStartDTMFTone:
       
   734             	static_cast<CMmPhoneTsy*>( mmObject )->GetDtmfTsy()->
       
   735             		CompleteStartDTMFTone( aResult );
       
   736             	break;
       
   737             case EMobilePhoneStopDTMFTone:
       
   738             	static_cast<CMmPhoneTsy*>( mmObject )->GetDtmfTsy()->
       
   739             		CompleteStopDTMFTone( aResult );
       
   740             	break;
       
   741 #else
       
   742             case EMobilePhoneStopDTMFTone:
       
   743 #endif //USING_CTSY_DISPATCHER             	
       
   744             case EMobilePhoneSendDTMFTonesCancel:                
       
   745                 static_cast<CMmPhoneTsy*>( mmObject )->GetDtmfTsy()->
       
   746                     CompleteSendDTMFTonesCancel( aResult );
       
   747                 break;                
       
   748             case EMobilePhoneNotifyStopInDTMFString:
       
   749                 static_cast<CMmPhoneTsy*>( mmObject )->GetDtmfTsy()->
       
   750                     CompleteNotifyStopInDTMFString( aDataPackage );
       
   751                 break;
       
   752 
       
   753             // case EMobilePhoneReadDTMFTones:       not supported
       
   754             // case EMobilePhoneReadDTMFTonesCancel: not supported
       
   755             // case EMobilePhoneStartDTMFTone:                no completion
       
   756             // case EMobilePhoneContinueDTMFStringSending:    no completion
       
   757             // case EMobilePhoneGetDTMFCaps:                  no DOS call required
       
   758             // case EMobilePhoneNotifyDTMFCapsChange:         no DOS call required
       
   759             // case EMobilePhoneNotifyDTMFCapsChangeCancel:   no DOS call required
       
   760             // case EMobilePhoneNotifyDTMFEventCancel:		  no DOS call required
       
   761             // case EMobilePhoneNotifyStopInDTMFStringCancel: no DOS call required
       
   762 
       
   763             case EMobilePhoneNotifyDTMFEvent: 				//no DOS call required
       
   764 	           	// unpack result: a RMobilePhone::TMobilePhoneDTMFEvent
       
   765 				TInt dtmfInfo;
       
   766 				aDataPackage->UnPackData( dtmfInfo );
       
   767 				static_cast<CMmDtmfTsy*>( mmObject )->CompleteNotifyDTMFEvent( dtmfInfo );
       
   768 				break;
       
   769             case EMmTsyPhoneBookStoreInitIPC:                
       
   770                 {
       
   771                 static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
       
   772                     CompletePBStoreInitializationL( 
       
   773                     aResult, aDataPackage );
       
   774                     TBool done = EFalse;
       
   775                     
       
   776                     for( TInt i = 0; i < iMmPhone->PBList()->GetNumberOfObjects(); i++ )
       
   777         	            {
       
   778 TFLOGSTRING("TSY: CMmMessageRouterProxy::RouteCompletion:EMmTsyPhoneBookStoreInitIPC for loop, check init statuses ");
       
   779         	            CMmPhoneBookStoreTsy* pbStore = iMmPhone->PBList()->
       
   780         	                GetMmPBByIndex( i );
       
   781                         done = pbStore->IsPBInitDone();
       
   782 TFLOGSTRING3("TSY: CMmMessageRouterProxy::RouteCompletion: active: %i, done: %i",iMmPhone->IsPBInitActive(), done);
       
   783         	            if ( iMmPhone->IsPBInitActive() && !done ) 
       
   784         	                {
       
   785 TFLOGSTRING2("TSY: CMmMessageRouterProxy::RouteCompletion: complete also to: %S",pbStore->PhoneBookName());
       
   786         	                mmObject = static_cast<CBase*>( pbStore );
       
   787         	                static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
       
   788                                 CompletePBStoreInitializationL( 
       
   789                                     aResult, aDataPackage );
       
   790         	                }
       
   791         	            }
       
   792                 iMmPhone->SetPBInitActiveStatus( EFalse );    
       
   793                 }
       
   794                 break;                
       
   795             case EMmTsyPhoneBookStoreCacheIPC:                
       
   796                 static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
       
   797                     CompleteCachingL( aResult, aDataPackage );
       
   798                 break;                
       
   799             case EMmTsyPhoneBookStoreReadIPC:                
       
   800                 static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
       
   801                     CompleteReadL( aResult, aDataPackage );
       
   802                 break;                
       
   803             case EMmTsyPhoneBookStoreWriteIPC:                
       
   804                 static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
       
   805                     CompleteWriteL( aResult, aDataPackage );
       
   806                 break;                
       
   807             case EMmTsyPhoneBookStoreGetInfoIPC:                
       
   808                 static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
       
   809                     CompleteCountEntries( aResult, aDataPackage );
       
   810                 break;                
       
   811             case EMmTsyPhoneBookStoreDeleteIPC:                
       
   812                 static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
       
   813                     CompleteDeleteL( aResult, aDataPackage );
       
   814                 break;                
       
   815             case EMmTsyPhoneBookStoreDeleteAllIPC:                
       
   816                 static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
       
   817                     CompleteDeleteAll( aResult, aDataPackage );
       
   818                 break;                
       
   819             case EMmTsyPhoneBookStoreResetCacheIPC:                
       
   820                 static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
       
   821                     ResetCacheReady();
       
   822                 static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
       
   823                     ResetCache();
       
   824                 break;                
       
   825             
       
   826             // CSD functionality
       
   827             case EEtelPhoneNotifyModemDetected:
       
   828                 {
       
   829                 RPhone::TStatus* modemStatus = NULL;
       
   830                 //unpack the data
       
   831                 aDataPackage->UnPackData( &modemStatus );
       
   832                 static_cast<CMmPhoneTsy*>( mmObject )->
       
   833                     CompleteNotifyModemDetected( *modemStatus );
       
   834                 break;
       
   835                 }
       
   836             case EMobileCallSetDynamicHscsdParams:                
       
   837                 static_cast<CMmDataCallTsy*>( mmObject )->
       
   838                     CompleteSetDynamicHscsdParams( aResult );
       
   839                 break;                
       
   840             case EMobileCallNotifyMobileDataCallCapsChange:                
       
   841                 static_cast<CMmDataCallTsy*>( mmObject )->
       
   842                     ActiveCallExtension()->
       
   843                     ReceivedMobileDataCallCaps( aDataPackage );
       
   844                 break;                
       
   845             case EMobileCallNotifyHscsdInfoChange:                
       
   846                 static_cast<CMmDataCallTsy*>( mmObject )->
       
   847                     ActiveCallExtension()->ReceivedHscsdInfo( 
       
   848                     aDataPackage );
       
   849                 break;                
       
   850             case EEtelCallGetCallParams:                
       
   851                 static_cast<CMmCallTsy*>( mmObject )->
       
   852                 ActiveCallExtension()->ReceivedCallParams( aDataPackage );
       
   853                 break;                
       
   854             case EEtelCallGetBearerServiceInfo:
       
   855                 {
       
   856                 RCall::TBearerService* bearerService = NULL;
       
   857                 aDataPackage->UnPackData( &bearerService );
       
   858                 static_cast<CMmCallTsy*>( mmObject )->
       
   859                     ActiveCallExtension()->ReceivedBearerServiceInfo( 
       
   860                     *bearerService );
       
   861                 break;
       
   862                 }
       
   863             case EMmTsyENStoreGetInfoIPC:                
       
   864                 static_cast<CMmENStoreTsy*>( mmObject )->CompleteGetInfo(
       
   865                     aResult, aDataPackage );
       
   866                 break;                
       
   867             case EMmTsyENStoreReadIPC:                
       
   868                 static_cast<CMmENStoreTsy*>( mmObject )->CompleteRead(
       
   869                     aResult, aDataPackage );
       
   870                 break;                
       
   871             case EMmTsyENStoreReadAllPhase1IPC:                
       
   872                 static_cast<CMmENStoreTsy*>( mmObject )->
       
   873                         CompleteReadAllPhase1L( aResult, aDataPackage );
       
   874                 break;                
       
   875             case EMmTsyONStoreGetInfoIPC:                
       
   876                 static_cast<CMmONStoreTsy*>( mmObject )->CompleteGetInfo(
       
   877                     aResult, aDataPackage );
       
   878                 break;                
       
   879             case EMmTsyONStoreReadIPC:                
       
   880                 static_cast<CMmONStoreTsy*>( mmObject )->CompleteRead(
       
   881                     aResult, aDataPackage );
       
   882                 break;                
       
   883             case EMmTsyONStoreWriteIPC:                
       
   884                 static_cast<CMmONStoreTsy*>( mmObject )->CompleteWrite(
       
   885                     aResult, aDataPackage );
       
   886                 break;                
       
   887             case EMmTsyONStoreDeleteIPC:                
       
   888                 static_cast<CMmONStoreTsy*>( mmObject )->CompleteDelete(
       
   889                     aResult );
       
   890                 break;                
       
   891             case EMmTsyONStoreDeleteAllIPC:                
       
   892                 static_cast<CMmONStoreTsy*>( mmObject )->
       
   893                     CompleteDeleteAll( aResult );
       
   894                 break;
       
   895             case EMmTsyONStoreReadAllPhase1IPC:
       
   896                 static_cast<CMmONStoreTsy*>( mmObject )->
       
   897                     CompleteReadAllPhase1L();
       
   898                 break;
       
   899             case EMmTsyONStoreReadEntryIPC:
       
   900    				STATIC_CAST( CMmONStoreTsy*, mmObject )->
       
   901                     InternalRetrieveONListReadEntryL( 
       
   902                     aResult, aDataPackage );
       
   903                 break;
       
   904             case EMmTsyONStoreReadSizeIPC:
       
   905                 STATIC_CAST( CMmONStoreTsy*, mmObject )->
       
   906                     InternalRetrieveONListReadSizeL( 
       
   907                     aResult, aDataPackage );
       
   908                 break;
       
   909             case EMmTsyONStoreWriteSizeIPC:
       
   910                 STATIC_CAST( CMmONStoreTsy*, mmObject )->
       
   911                     InternalStoreAllGetSizeL( aResult, aDataPackage );
       
   912                 break;
       
   913             case EMmTsyONStoreWriteEntryIPC:
       
   914    				STATIC_CAST( CMmONStoreTsy*, mmObject )->
       
   915                     InternalStoreAllWriteEntryL( aResult );
       
   916                 break;
       
   917             case EPacketAttach:	            
       
   918 	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
       
   919 	                ActivePacketServiceExtension()->CompleteAttach( 
       
   920                     aResult );
       
   921 	            break;	            
       
   922 	        case EPacketDetach:	            
       
   923 	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
       
   924 	                ActivePacketServiceExtension()->CompleteDetachL( 
       
   925                     aResult );
       
   926 	            break;	            
       
   927 	        case EPacketGetNtwkRegStatus:	            
       
   928 	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
       
   929 	                ActivePacketServiceExtension()->
       
   930                     CompleteGetNtwkRegStatus( aDataPackage, aResult );
       
   931 	            break;	            
       
   932 	            
       
   933 	        case ECustomSetAlwaysOnMode:
       
   934             	STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
       
   935                     CompleteSetAlwaysOn( aResult );
       
   936             	break;	            
       
   937 	        case EPacketSetAttachMode:	            
       
   938 	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
       
   939 	                ActivePacketServiceExtension()->CompleteSetAttachMode( 
       
   940 	                aResult );
       
   941 	            break;	            
       
   942 	        case EPacketRejectActivationRequest:	            
       
   943 	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
       
   944 	                CompleteRejectActivationRequest();
       
   945 	            break;	            
       
   946 	        case EPacketGetAttachMode:	            
       
   947 	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
       
   948 	                ActivePacketServiceExtension()->CompleteGetAttachMode(
       
   949 	                aDataPackage, aResult );
       
   950 	            break;	            
       
   951 	        case EPacketSetDefaultContextParams:	            
       
   952 	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
       
   953 	                ActivePacketServiceExtension()->
       
   954 	                CompleteSetDefaultContextParams( aResult );
       
   955 	            break;	            
       
   956 	        case EPacketNotifyContextAdded:	            
       
   957 	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
       
   958 	                CompleteNotifyContextAdded( aDataPackage);
       
   959 	            break;	            
       
   960 	        case EPacketNotifyStatusChange:	            
       
   961 	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
       
   962 	                CompletePacketStatusChanged( aDataPackage, aResult );
       
   963 	            break;	            
       
   964 	        case EPacketNotifyDynamicCapsChange:	            
       
   965 	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
       
   966 	                ActivePacketServiceExtension()->
       
   967                     CompleteDynamicCapsChange( aDataPackage );
       
   968 	            break;	            
       
   969             case EPacketNotifyTransferCapsIPC:                  
       
   970                 STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
       
   971                     ActivePacketServiceExtension()->
       
   972                     CompleteTransferCapsChange( aDataPackage );
       
   973 	            break;   	                	            
       
   974 	        case EPacketNotifyMSClassChange:	          
       
   975 	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
       
   976 	                CompleteNotifyMSClassChange( aDataPackage );
       
   977 	            break;	            
       
   978 	        case EPacketSetPrefBearer:	            
       
   979 	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
       
   980 	                ActivePacketServiceExtension()->
       
   981                     CompleteSetPreferredBearer( aResult );
       
   982 	            break;	            
       
   983 	        case EPacketNotifyChangeOfNtwkRegStatus:	            
       
   984 	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
       
   985 	                CompleteNotifyChangeOfNtwkRegStatus( aDataPackage, aResult );
       
   986 	            break;	            
       
   987 	        case EMmTsyNotifyEGprsInfoChangeIPC:	            
       
   988 	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
       
   989 	                CompleteNotifyEGprsInfoChange( aDataPackage );
       
   990 	            break;	            
       
   991 	        case EPacketNotifyAttachModeChange:	            
       
   992 	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
       
   993 	                PreferredBearerChanged( aDataPackage );
       
   994 	            break;	            
       
   995 	        case EPacketNotifyContextActivationRequested:	            
       
   996 	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
       
   997 	                CompleteNotifyContextActivationRequested( 
       
   998                         aDataPackage );
       
   999 	            break;	            
       
  1000             case EPacketNotifyMbmsNetworkServiceStatusChange:
       
  1001             	static_cast<CMmPacketServiceTsy*>(mmObject)->
       
  1002             	CompleteNotifyMbmsNetworkServiceStatusChange(aDataPackage, aResult);
       
  1003             	break;
       
  1004             case EPacketNotifyMbmsServiceAvailabilityChange:
       
  1005             	static_cast<CMmPacketServiceTsy*>(mmObject)->
       
  1006             	CompleteNotifyMbmsServiceAvailabilityChangeL(aDataPackage, aResult);
       
  1007             	break;
       
  1008             case EPacketGetMbmsNetworkServiceStatus:
       
  1009             	static_cast<CMmPacketServiceTsy*>(mmObject)->
       
  1010             	CompleteGetMbmsNetworkServiceStatus(aDataPackage, aResult);
       
  1011             	break;
       
  1012             case EPacketGetStaticCaps:
       
  1013             	static_cast<CMmPacketServiceTsy*>(mmObject)->
       
  1014             	ActivePacketServiceExtension()->CompleteGetStaticCaps(aDataPackage, aResult);
       
  1015             	break;
       
  1016             case EPacketEnumerateMbmsMonitorServiceList:
       
  1017             	{
       
  1018             	if (KErrNone == aResult)
       
  1019                     { 
       
  1020                     TInt maxMonitorValue;
       
  1021                     aDataPackage->UnPackData( maxMonitorValue );
       
  1022                     static_cast<CMmPacketServiceTsy*>(mmObject)->CompleteMaxMonitoredServicesChange( maxMonitorValue );
       
  1023                     }	
       
  1024             	}
       
  1025             	break;	
       
  1026             case EPacketUpdateMbmsMonitorServiceList: 
       
  1027 	            static_cast<CMmPacketServiceTsy*> ( mmObject )
       
  1028 	                ->CompleteUpdateMbmsMonitorServiceList( aDataPackage, 
       
  1029 	                    aResult );	            
       
  1030                 break;
       
  1031 	        case EPacketContextInitialiseContext:
       
  1032 	            {
       
  1033 	            TInfoName* contextName = NULL;
       
  1034 #ifdef USING_CTSY_DISPATCHER
       
  1035 	            TDesC* channelId = NULL;
       
  1036 	            aDataPackage->UnPackData(&contextName, &channelId);
       
  1037 	            __ASSERT_DEBUG(contextName,User::Invariant());
       
  1038 	            __ASSERT_DEBUG(channelId,User::Invariant());
       
  1039 #else
       
  1040 	            aDataPackage->UnPackData( &contextName);
       
  1041 #endif //USING_CTSY_DISPATCHER	            
       
  1042 	            
       
  1043 	            CMmPacketServiceTsy* serviceTsy = static_cast<CMmPacketServiceTsy*> (mmObject);
       
  1044 	                
       
  1045 	            CMmPacketContextTsy* mmPacketContextTsy = 
       
  1046 	                serviceTsy->ContextTsy( *contextName );
       
  1047                     	            
       
  1048 	            if( NULL != mmPacketContextTsy && 
       
  1049 	            	mmPacketContextTsy->ContextType( ) == 
       
  1050 	            	CMmPacketContextTsy::EContextTypePacketContext )
       
  1051 	                {
       
  1052 	                CMmPacketContextGsmWcdmaExt* mmPacketContextExt =
       
  1053 	                    mmPacketContextTsy->PacketContextGsmWcdmaExt();
       
  1054 	                if( NULL != mmPacketContextExt )
       
  1055 	                    {
       
  1056 #ifdef USING_CTSY_DISPATCHER	                    
       
  1057                         mmPacketContextExt->CompleteInitialiseContext(*channelId, aResult);
       
  1058 #else	                    
       
  1059                             // The initialise context API will return the context name as the channelId.
       
  1060                             mmPacketContextExt->CompleteInitialiseContext(aResult);
       
  1061 #endif //USING_CTSY_DISPATCHER                       
       
  1062 	                    }
       
  1063 	                }
       
  1064 	            break;
       
  1065 	            }
       
  1066 	            
       
  1067 	        case ECtsyPacketMbmsInitialiseContextComp:
       
  1068 	        	{
       
  1069 	        	TInfoName* contextName = NULL;
       
  1070 	        	RPacketContext::TDataChannelV2* dataChannelV2 = NULL;
       
  1071 	        	aDataPackage->UnPackData( &contextName, &dataChannelV2 );
       
  1072 	            CMmPacketServiceTsy* serviceTsy = static_cast<CMmPacketServiceTsy*> (mmObject);
       
  1073 
       
  1074 	            CMmPacketContextTsy* mmPacketContextTsy = serviceTsy->ContextTsy( *contextName );
       
  1075 	        	
       
  1076 	        	CMmMBMSContextTsy* context = static_cast<CMmMBMSContextTsy*>  ( mmPacketContextTsy );
       
  1077 	        	
       
  1078 	        	if( NULL != context )
       
  1079 	        	   {
       
  1080 	        	   context->CompleteInitialiseContext( aResult, dataChannelV2 );	                    
       
  1081 	        	   }        		        
       
  1082 	        	break;
       
  1083 	        	}
       
  1084 	        	
       
  1085 	        case EPacketQoSSetProfileParams:
       
  1086 	            {
       
  1087 	            TInfoName mmPacketContextName;
       
  1088 	            aDataPackage->UnPackData( mmPacketContextName );
       
  1089 
       
  1090 	            CMmPacketQoSTsy* mmPacketQosTsy = STATIC_CAST( 
       
  1091 	                CMmPacketServiceTsy*, mmObject )->QosTsy( 
       
  1092 	                mmPacketContextName );
       
  1093 
       
  1094 	                if ( NULL != mmPacketQosTsy )
       
  1095 	                    {
       
  1096 	                    mmPacketQosTsy->
       
  1097                             CompleteSetProfileParameters( aResult );
       
  1098 	                    }
       
  1099 	            break;
       
  1100 	            }
       
  1101 	        case EPacketQoSNotifyProfileChanged:
       
  1102 	            {
       
  1103 	            TInfoName mmPacketContextName;
       
  1104 
       
  1105 	            aDataPackage->UnPackData( mmPacketContextName );
       
  1106 
       
  1107 	            CMmPacketQoSTsy* mmPacketQosTsy = STATIC_CAST( 
       
  1108 	                CMmPacketServiceTsy*, mmObject )->QosTsy( 
       
  1109 	                mmPacketContextName );
       
  1110 
       
  1111 	            if ( NULL != mmPacketQosTsy )
       
  1112                     {
       
  1113                     mmPacketQosTsy->PacketQoSGsmWcdmaExt()->
       
  1114                         CompleteNotifyProfileChanged( aDataPackage );
       
  1115                     }
       
  1116 	            break;
       
  1117 	            }
       
  1118 	        case EPacketNotifyReleaseModeChange:            
       
  1119 	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
       
  1120 	                CompleteNetworkModeChange( aDataPackage );
       
  1121 	            break;            
       
  1122 	        case EPacketContextSetConfig:
       
  1123 	            {
       
  1124 	            TInfoName* contextName = NULL;
       
  1125 	            aDataPackage->UnPackData( &contextName );
       
  1126 	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
       
  1127 	                CMmPacketServiceTsy*, mmObject )->
       
  1128                     ContextTsy( *contextName );
       
  1129                     
       
  1130 	            if( NULL != mmPacketContextTsy && 
       
  1131 	            	mmPacketContextTsy->ContextType( ) == 
       
  1132 	            	CMmPacketContextTsy::EContextTypePacketContext )
       
  1133 	                {
       
  1134     	            if( NULL != mmPacketContextTsy )
       
  1135     	                {
       
  1136     	                CMmPacketContextGsmWcdmaExt* mmPacketContextGsmWcdma =
       
  1137     	                    mmPacketContextTsy->PacketContextGsmWcdmaExt();
       
  1138 
       
  1139     	                if( NULL != mmPacketContextGsmWcdma )
       
  1140     	                    {
       
  1141     	                    mmPacketContextGsmWcdma->
       
  1142                                 CompleteSetConfig( aResult);
       
  1143     	                    }
       
  1144     	                }
       
  1145 	                }
       
  1146 	            else
       
  1147 	                {	                
       
  1148 	                CMmMBMSContextTsy* context = static_cast<CMmMBMSContextTsy*> ( mmPacketContextTsy );
       
  1149 	                if( NULL != context )
       
  1150 	                    {
       
  1151                         context->CompleteSetConfig( 
       
  1152                         aResult );
       
  1153                         }	                    	                
       
  1154 	                }
       
  1155 	            break;
       
  1156 	            }
       
  1157             case EPacketEnumerateMbmsActiveServiceList:
       
  1158                 { 
       
  1159                 static_cast<CMmPacketServiceTsy*> ( mmObject )->
       
  1160 	                    CompleteEnumerateMbmsActiveServiceList( 
       
  1161 	                        aDataPackage, aResult );
       
  1162                 break;
       
  1163                 }
       
  1164 	            
       
  1165             case EPacketContextUpdateMbmsSessionList:
       
  1166                 {
       
  1167 	            TInfoName* contextName = NULL;
       
  1168 	            aDataPackage->UnPackData( &contextName );
       
  1169 	            
       
  1170 	            CMmPacketContextTsy* mmPacketContextTsy = static_cast<CMmPacketServiceTsy*> ( mmObject )->
       
  1171                     ContextTsy( *contextName );
       
  1172                     
       
  1173 	            if( NULL != mmPacketContextTsy && 
       
  1174 	            		mmPacketContextTsy->ContextType( ) == 
       
  1175 	            		CMmPacketContextTsy::EContextTypeMBMS )
       
  1176 	                {
       
  1177 	                static_cast<CMmMBMSContextTsy*> 
       
  1178 	                    ( mmPacketContextTsy )->CompleteUpdateMbmsSessionList( aResult );
       
  1179 	                }
       
  1180                 break;
       
  1181                 }    
       
  1182 	        case EPacketContextDelete:
       
  1183 	            {
       
  1184 	            TInfoName* contextName = NULL;
       
  1185 	            aDataPackage->UnPackData( &contextName );
       
  1186 	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
       
  1187 	                CMmPacketServiceTsy*, mmObject )->
       
  1188                     ContextTsy( *contextName );
       
  1189 	            
       
  1190 	            if( NULL != mmPacketContextTsy && 
       
  1191 	            	mmPacketContextTsy->ContextType( ) == 
       
  1192 	            	CMmPacketContextTsy::EContextTypePacketContext )
       
  1193 	                {
       
  1194 	                CMmPacketContextGsmWcdmaExt* mmPacketContextGsmWcdma =
       
  1195 	                    mmPacketContextTsy->PacketContextGsmWcdmaExt();
       
  1196 
       
  1197 	                if( NULL != mmPacketContextGsmWcdma )
       
  1198 	                    {
       
  1199 	                    mmPacketContextGsmWcdma->CompleteDelete( aResult );
       
  1200 	                    }
       
  1201 	                }
       
  1202 	            else
       
  1203 	                {
       
  1204 	                CMmMBMSContextTsy* context = static_cast< 
       
  1205 	                    CMmMBMSContextTsy*>( mmPacketContextTsy );
       
  1206 	                if( NULL != context )
       
  1207 	                    {
       
  1208                         context->CompleteDelete( 
       
  1209                         aResult );
       
  1210                         }	                	                
       
  1211 	                }
       
  1212 	            break;
       
  1213 	            }
       
  1214 	        case EPacketContextNotifyDataTransferred:
       
  1215 	            {
       
  1216 	            TInfoName* contextName = NULL;
       
  1217 	            RPacketContext::TDataVolume* dataVolume;
       
  1218 	            aDataPackage->UnPackData( &contextName, &dataVolume );
       
  1219 	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
       
  1220 	                CMmPacketServiceTsy*, mmObject )->
       
  1221                     ContextTsy( *contextName );
       
  1222 	            if( NULL == mmPacketContextTsy && 
       
  1223 	                ( 0 == ( *contextName ).Compare( KStringExternal ) || 
       
  1224 	                0 == ( *contextName ).Compare( KStringExternal2 ) ) )
       
  1225 	                {
       
  1226 	                mmPacketContextTsy = STATIC_CAST(
       
  1227 	                    CMmPacketServiceTsy*, mmObject )->DialUpContext( 
       
  1228 	                    *contextName );
       
  1229 	                }
       
  1230 	            if( NULL != mmPacketContextTsy )
       
  1231 	                {
       
  1232 	                mmPacketContextTsy->
       
  1233                         SetDataVolume( aResult, *dataVolume );
       
  1234 	                }
       
  1235 	            break;
       
  1236 	            }
       
  1237 	        case EPacketContextActivate:
       
  1238 	            {
       
  1239 	            TInfoName* contextName = NULL;
       
  1240 	            aDataPackage->UnPackData( &contextName);
       
  1241 	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
       
  1242 	                CMmPacketServiceTsy*, mmObject )->
       
  1243                                                 ContextTsy( *contextName );
       
  1244                                                     	            
       
  1245 	            if( NULL == mmPacketContextTsy && 
       
  1246 	                ( 0 == (*contextName).Compare(KStringExternal) || 
       
  1247 	                0 == (*contextName).Compare(KStringExternal2) ) )
       
  1248 	                {
       
  1249 	                mmPacketContextTsy = STATIC_CAST(
       
  1250 	                    CMmPacketServiceTsy*, mmObject )->DialUpContext(
       
  1251                         *contextName );
       
  1252 	                }
       
  1253 	            if( (mmPacketContextTsy != NULL) && (mmPacketContextTsy->ContextType( ) == 
       
  1254 	            	CMmPacketContextTsy::EContextTypePacketContext ))
       
  1255 	                {
       
  1256 	                CMmPacketContextGsmWcdmaExt* mmPacketContextGsmWcdma =
       
  1257     	                    mmPacketContextTsy->PacketContextGsmWcdmaExt();
       
  1258 	                if( NULL != mmPacketContextGsmWcdma )
       
  1259 	                	{
       
  1260 	                	mmPacketContextGsmWcdma->CompleteActivate(aDataPackage, aResult );
       
  1261 	                	}
       
  1262 	                }
       
  1263 	            else if( (mmPacketContextTsy != NULL) && ( mmPacketContextTsy->ContextType( ) == 
       
  1264 	                			CMmPacketContextTsy::EContextTypeMBMS ))
       
  1265 	                    {	                    
       
  1266     	                CMmMBMSContextTsy* mbmsContext = static_cast<
       
  1267     	                    CMmMBMSContextTsy*>( mmPacketContextTsy );
       
  1268     	                mbmsContext->CompleteActivate( aResult );	            	                    	                    
       
  1269 	                    }	                    
       
  1270 	            break;
       
  1271 	            }
       
  1272 	        case ECtsyPacketMbmsContextNotifyConfigChanged:
       
  1273 	        	{
       
  1274 	        	TInfoName* contextName = NULL;
       
  1275 	            aDataPackage->UnPackData( &contextName );
       
  1276 
       
  1277 	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
       
  1278 	                CMmPacketServiceTsy*, mmObject )->
       
  1279                                               ContextTsy( *contextName );                                              	                	                
       
  1280 	            if( (mmPacketContextTsy != NULL) && ( mmPacketContextTsy->ContextType( ) == 
       
  1281 	            	CMmPacketContextTsy::EContextTypeMBMS ) )
       
  1282 	            	{
       
  1283 	            	CMmMBMSContextTsy* mbmsContext = static_cast<CMmMBMSContextTsy*>( mmPacketContextTsy );
       
  1284 	            	mbmsContext->CompleteNotifyConfigChanged(aDataPackage,aResult);
       
  1285 	            	}
       
  1286 	            
       
  1287 	            break;
       
  1288 	           	}
       
  1289 	        
       
  1290 	        case EPacketContextNotifyConfigChanged:
       
  1291 	            {
       
  1292 	            TInfoName* contextName = NULL;
       
  1293 	            aDataPackage->UnPackData( &contextName );
       
  1294 
       
  1295 	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
       
  1296 	                CMmPacketServiceTsy*, mmObject )->
       
  1297                                               ContextTsy( *contextName );                                              	                	                
       
  1298 	            if( NULL == mmPacketContextTsy )
       
  1299 	                {
       
  1300 	                mmPacketContextTsy = STATIC_CAST(
       
  1301 	                    CMmPacketServiceTsy*, mmObject )->DialUpContext( 
       
  1302 	                    *contextName );
       
  1303 	                }
       
  1304 	            if( ( NULL != mmPacketContextTsy ) &&(mmPacketContextTsy->ContextType() == 
       
  1305 	            	CMmPacketContextTsy::EContextTypePacketContext ))
       
  1306 	                {
       
  1307 	                CMmPacketContextGsmWcdmaExt* mmPacketContextGsmWcdma = mmPacketContextTsy->PacketContextGsmWcdmaExt();
       
  1308 	                if( NULL != mmPacketContextGsmWcdma )
       
  1309 	                	{
       
  1310 	                	mmPacketContextGsmWcdma->CompleteActivatePhase2(
       
  1311 	                			aDataPackage, aResult );
       
  1312 	                	}
       
  1313 	                }
       
  1314 	            break;
       
  1315 	            }
       
  1316 	        case EPacketContextNotifyConnectionSpeedChange:
       
  1317 	            {
       
  1318 	            TInfoName* contextName = NULL;
       
  1319 	            TInt* connectionSpeed = NULL;
       
  1320 	            aDataPackage->UnPackData( &contextName, &connectionSpeed );
       
  1321 
       
  1322 	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
       
  1323 	                CMmPacketServiceTsy*, mmObject )->
       
  1324                     ContextTsy( *contextName );
       
  1325 	            
       
  1326 	            if( NULL == mmPacketContextTsy )
       
  1327 	                {
       
  1328 	                mmPacketContextTsy = STATIC_CAST(
       
  1329 	                    CMmPacketServiceTsy*, mmObject )->DialUpContext(
       
  1330                         *contextName );
       
  1331 	                }
       
  1332 	            if( NULL != mmPacketContextTsy )
       
  1333 	                {
       
  1334                     mmPacketContextTsy->
       
  1335                         CompleteNotifyConnectionSpeedChange(
       
  1336                         *connectionSpeed );
       
  1337 	                }
       
  1338 	            break;
       
  1339 	            }
       
  1340 	        case EPacketContextNotifyStatusChange:
       
  1341 	            {
       
  1342 	            TInfoName* contextName = NULL;
       
  1343 	            aDataPackage->UnPackData( &contextName );
       
  1344 	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
       
  1345                     CMmPacketServiceTsy*, mmObject )->
       
  1346                     ContextTsy( *contextName );
       
  1347 	                
       
  1348 	            if( NULL == mmPacketContextTsy && 
       
  1349 	                ( 0 == ( *contextName ).Compare( KStringExternal ) || 
       
  1350 	                0 == ( *contextName ).Compare( KStringExternal2 ) ) )
       
  1351 	                {
       
  1352 	                mmPacketContextTsy = STATIC_CAST(
       
  1353 	                    CMmPacketServiceTsy*, mmObject )->DialUpContext(
       
  1354                         *contextName );
       
  1355 	                }
       
  1356 	     
       
  1357 	            if( NULL != mmPacketContextTsy )
       
  1358 	                {
       
  1359 	                // pdp context
       
  1360     	            if( mmPacketContextTsy->ContextType( ) == 
       
  1361     	            	CMmPacketContextTsy::EContextTypePacketContext )
       
  1362     	                { 	                
       
  1363     	                CMmPacketContextGsmWcdmaExt* mmPacketContextGsmWcdma =
       
  1364     	                    mmPacketContextTsy->PacketContextGsmWcdmaExt();
       
  1365 
       
  1366     	                if( NULL != mmPacketContextGsmWcdma )
       
  1367     	                    {
       
  1368                           mmPacketContextGsmWcdma->CompleteNotifyStatusChange(
       
  1369                                 aDataPackage, aResult );
       
  1370     	                    }
       
  1371     	                }
       
  1372     	            // mbms context
       
  1373     	            else if( (mmPacketContextTsy != NULL) && (mmPacketContextTsy->ContextType( ) == 
       
  1374     	            			CMmPacketContextTsy::EContextTypeMBMS ))
       
  1375     	                    {	                    
       
  1376     	                CMmMBMSContextTsy* mbmsContext = static_cast<
       
  1377     	                    CMmMBMSContextTsy*>( mmPacketContextTsy );
       
  1378     	                mbmsContext->CompleteNotifyStatusChange(
       
  1379                                 aDataPackage, aResult );            	                    	                    
       
  1380 	                    } 
       
  1381 	                }
       
  1382 	            break;
       
  1383 	            }
       
  1384 	        case EPacketContextDeactivate:
       
  1385 	            {
       
  1386             	TInfoName* contextName = NULL;
       
  1387             	
       
  1388             	// only packed for MBMS in a particular fail scenario
       
  1389             	RPacketMbmsContext::CMbmsSession* session = NULL;
       
  1390          
       
  1391 	            if(aResult == KErrMbmsImpreciseServiceEntries)
       
  1392 	            	{
       
  1393 	            	// definitely an MBMS session
       
  1394 	            	aDataPackage->UnPackData( &contextName, &session );
       
  1395 	            	}
       
  1396 	            else
       
  1397 	            	{
       
  1398 	            	aDataPackage->UnPackData( &contextName );
       
  1399 	            	}
       
  1400 	            
       
  1401 	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
       
  1402 	                CMmPacketServiceTsy*, mmObject )->
       
  1403                                                 ContextTsy( *contextName );
       
  1404                                              
       
  1405 	            if( NULL == mmPacketContextTsy )
       
  1406 	                {
       
  1407 	                mmPacketContextTsy = STATIC_CAST(
       
  1408 	                    CMmPacketServiceTsy*, mmObject )->DialUpContext(
       
  1409                         *contextName );
       
  1410 	                }
       
  1411 	            if( (mmPacketContextTsy != NULL) &&(mmPacketContextTsy->ContextType() == 
       
  1412 	            	CMmPacketContextTsy::EContextTypePacketContext ))
       
  1413 	                {		            
       
  1414 
       
  1415     	            if( NULL != mmPacketContextTsy )
       
  1416     	                {
       
  1417     	                CMmPacketContextGsmWcdmaExt* mmPacketContextGsmWcdma =
       
  1418     	                    mmPacketContextTsy->PacketContextGsmWcdmaExt();
       
  1419 
       
  1420     	                if( NULL != mmPacketContextGsmWcdma )
       
  1421     	                    {
       
  1422     	                    mmPacketContextGsmWcdma->
       
  1423                                 CompleteDeactivate(aResult);
       
  1424     	                    }
       
  1425     	                }
       
  1426 	                }
       
  1427 	                else if((mmPacketContextTsy != NULL) && (mmPacketContextTsy->ContextType( ) == 
       
  1428 	                	CMmPacketContextTsy::EContextTypeMBMS ))
       
  1429 	                    {
       
  1430     	                CMmMBMSContextTsy* mbmsContext = static_cast<
       
  1431     	                    CMmMBMSContextTsy*>( mmPacketContextTsy );
       
  1432     	                mbmsContext->CompleteDeactivate(aDataPackage, aResult);	            	                    	                    
       
  1433 	                    }	                
       
  1434 	            break;
       
  1435 	            }
       
  1436 	        case EPacketContextGetDataVolumeTransferred:
       
  1437 	            {
       
  1438 	            TInfoName* contextName = NULL;
       
  1439 	            aDataPackage->UnPackData( &contextName );
       
  1440 	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
       
  1441 	                CMmPacketServiceTsy*, mmObject )->
       
  1442                     ContextTsy( *contextName );
       
  1443 
       
  1444 	            if( NULL == mmPacketContextTsy )
       
  1445 	                {
       
  1446 	                mmPacketContextTsy = STATIC_CAST(
       
  1447 	                    CMmPacketServiceTsy*, mmObject )->DialUpContext(
       
  1448                         *contextName );
       
  1449 	                }
       
  1450 
       
  1451 	            if( NULL != mmPacketContextTsy )
       
  1452 	                {
       
  1453 	                CMmPacketContextGsmWcdmaExt* mmPacketContextGsmWcdma =
       
  1454 	                    mmPacketContextTsy->PacketContextGsmWcdmaExt();
       
  1455 
       
  1456 	                if( NULL != mmPacketContextGsmWcdma )
       
  1457 	                    {
       
  1458                         mmPacketContextGsmWcdma->
       
  1459                             CompleteGetDataVolumeTransferred( aDataPackage,
       
  1460                             aResult );
       
  1461 	                    }
       
  1462 	                }
       
  1463 	            break;
       
  1464 	            }
       
  1465 	        case EPacketContextModifyActiveContext:
       
  1466 	            {
       
  1467 	            TInfoName* contextName = NULL;
       
  1468 	            aDataPackage->UnPackData( &contextName );
       
  1469 	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
       
  1470 	                CMmPacketServiceTsy*, mmObject )->
       
  1471                     ContextTsy( *contextName );
       
  1472 	            
       
  1473 	            if( NULL != mmPacketContextTsy )
       
  1474 	                {
       
  1475 	                CMmPacketContextGsmWcdmaExt* mmPacketContextGsmWcdma =
       
  1476 	                    mmPacketContextTsy->PacketContextGsmWcdmaExt();
       
  1477 
       
  1478 	                if( NULL != mmPacketContextGsmWcdma )
       
  1479 	                    {
       
  1480 	                    mmPacketContextGsmWcdma->
       
  1481                         CompleteModifyActiveContext( 
       
  1482                         aDataPackage, aResult );
       
  1483 	                    }
       
  1484 	                }
       
  1485 	            break;
       
  1486 	            }	            
       
  1487 #ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
       
  1488 	        case EPacketContextNotifyConnectionInfoChange:
       
  1489 	            {
       
  1490 	            TInfoName* contextName = NULL;
       
  1491 	            TConnectionInfoBase* infoBase = NULL;
       
  1492 	            aDataPackage->UnPackData( &contextName, &infoBase );
       
  1493 
       
  1494 	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
       
  1495 	                CMmPacketServiceTsy*, mmObject )->
       
  1496                     ContextTsy( *contextName );
       
  1497 	            
       
  1498 	            if( NULL != mmPacketContextTsy )
       
  1499 	                {
       
  1500                     mmPacketContextTsy->
       
  1501                         CompleteNotifyConnectionInfoChange( infoBase );
       
  1502 	                }
       
  1503 	            break;
       
  1504 	            }
       
  1505 #endif // SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
       
  1506 	            	            	            
       
  1507             //USSD
       
  1508             case EMobileUssdMessagingSendMessage:                
       
  1509                 static_cast<CMmUssdTsy*>( mmObject )->
       
  1510                     CompleteSendMessage( aResult );
       
  1511                 break;                
       
  1512             case EMobileUssdMessagingSendMessageNoFdnCheck:                
       
  1513                 static_cast<CMmUssdTsy*>( mmObject )->
       
  1514                     CompleteSendMessageNoFdnCheck( aResult );
       
  1515                 break;                                
       
  1516             case EMobileUssdMessagingReceiveMessage:                
       
  1517                 static_cast<CMmUssdTsy*>( mmObject )->
       
  1518                     CompleteReceiveMessage( aResult, aDataPackage );
       
  1519                 break;                
       
  1520             case EMobileUssdMessagingSendRelease:                
       
  1521                 static_cast<CMmUssdTsy*>( mmObject )->
       
  1522                     CompleteSendRelease( aResult, aDataPackage );
       
  1523                 break; 
       
  1524             case EMobileUssdMessagingNotifyNetworkRelease:                
       
  1525                 static_cast<CMmUssdTsy*>( mmObject )->
       
  1526                     CompleteNotifyNetworkRelease( aResult, aDataPackage );
       
  1527                 break;                
       
  1528             case EMmTsyGsmBroadcastNotifyMessageReceived:                
       
  1529                 static_cast<CMmBroadcastTsy*>( mmObject )->
       
  1530                     CompleteReceiveMessageGsmCbs( aResult, aDataPackage );
       
  1531                 break;                
       
  1532             case EMmTsyWcdmaBroadcastNotifyMessageReceived:                
       
  1533                 static_cast<CMmBroadcastTsy*>( mmObject )->
       
  1534                   CompleteReceiveMessageWcdmaCbs( aResult, aDataPackage );
       
  1535                 break;                
       
  1536             case EMobileBroadcastMessagingReceiveMessage:                
       
  1537                 static_cast<CMmBroadcastTsy*>( mmObject )->
       
  1538                     InternalCompleteCbRoutingRequest( aResult );
       
  1539                 break;                
       
  1540             case EMobileBroadcastMessagingReceiveMessageCancel:                
       
  1541                 static_cast<CMmBroadcastTsy*>( mmObject )->
       
  1542                     CompleteReceiveMessageCancel( aResult );
       
  1543                 break;                
       
  1544             case EMobileBroadcastMessagingSetFilterSetting:                
       
  1545                 static_cast<CMmBroadcastTsy*>( mmObject )->
       
  1546                     CompleteSetFilterSetting( aResult );
       
  1547                 break;                
       
  1548             case EMobileSmsMessagingGetMessageStoreInfo:                
       
  1549                 static_cast<CMmSmsTsy*>( mmObject )->
       
  1550                     CompleteGetMessageStoreInfo( aResult, aDataPackage );
       
  1551                 break;                
       
  1552             case EMmTsyActivateSmsRouting:
       
  1553             case EMmTsyDeactivateSmsRouting:                
       
  1554                 static_cast<CMmSmsTsy*>( mmObject )->
       
  1555                     CompleteActivateSmsRouting( aResult, aDataPackage );
       
  1556                 break;                
       
  1557             case EMobileSmsMessagingReceiveMessage:                
       
  1558                 static_cast<CMmSmsTsy*>( mmObject )->
       
  1559                     CompleteReceiveMessage( aResult, aDataPackage );
       
  1560                 break;                
       
  1561             case EMobileSmsMessagingSendMessage:                
       
  1562                 static_cast<CMmSmsTsy*>( mmObject )->
       
  1563                     CompleteSendMessage( aResult, aDataPackage );
       
  1564                 break;                
       
  1565             case EMobileSmsMessagingSendMessageNoFdnCheck:                
       
  1566                 static_cast<CMmSmsTsy*>( mmObject )->
       
  1567                     CompleteSendMessageNoFdnCheck( aResult, aDataPackage );
       
  1568                 break;                
       
  1569             case EMmTsySmsSendSatMessage:                
       
  1570                 static_cast<CMmSmsTsy*>( mmObject )->
       
  1571                     CompleteSendSatMessage( aResult );
       
  1572                 break;                
       
  1573             case EMobileSmsMessagingResumeSmsReception:                
       
  1574                 static_cast<CMmSmsTsy*>( mmObject )->
       
  1575                     CompleteResumeSmsReception( aResult );
       
  1576                 break;                
       
  1577             case EMobileSmsMessagingGetSmspListPhase1:                
       
  1578                 static_cast<CMmSmsTsy*>( mmObject )->
       
  1579                     CompleteReadAllSmspPhase1( aResult, aDataPackage );
       
  1580                 break;                
       
  1581             case EMobileSmsMessagingStoreSmspList:                
       
  1582                 static_cast<CMmSmsTsy*>( mmObject )->
       
  1583                     InternalStoreSmspList( aResult );
       
  1584                 break;                
       
  1585             case EMobileSmsMessagingAckSmsStored:                
       
  1586                 static_cast<CMmSmsTsy*>( mmObject )->
       
  1587                     CompleteAckSmsStored( aResult );
       
  1588                 break;                
       
  1589             case EMobileSmsMessagingNackSmsStored:                
       
  1590                 static_cast<CMmSmsTsy*>( mmObject )->
       
  1591                     CompleteNackSmsStored( aResult );
       
  1592                 break;                
       
  1593             case EMobileSmsMessagingSetMoSmsBearer:
       
  1594                 static_cast<CMmSmsTsy*>( mmObject )->
       
  1595                     CompleteSetMoSmsBearer( aResult );
       
  1596                 break;
       
  1597             case EMobilePhoneStoreGetInfo:                
       
  1598                 static_cast<CMmSmsStorageTsy*>( mmObject )->
       
  1599                     CompleteGetInfo( aResult, aDataPackage );
       
  1600                 break;                
       
  1601             case EMobilePhoneStoreDelete:                
       
  1602                 static_cast<CMmSmsStorageTsy*>( mmObject )->
       
  1603                     CompleteDeleteSms( aResult );
       
  1604                 break;                
       
  1605             case EMobilePhoneStoreDeleteAll:                
       
  1606                 static_cast<CMmSmsStorageTsy*>( mmObject )->
       
  1607                     CompleteDeleteAllSms( aResult );
       
  1608                 break;                
       
  1609             case EMobilePhoneStoreRead:               
       
  1610                 static_cast<CMmSmsStorageTsy*>( mmObject )->
       
  1611             		CompleteReadSms( aResult, aDataPackage );
       
  1612                 break;                
       
  1613             case EMobilePhoneStoreWrite:                
       
  1614                 static_cast<CMmSmsStorageTsy*>( mmObject )->
       
  1615                     CompleteWriteSms( aResult, aDataPackage );
       
  1616                 break;                
       
  1617             case EMobilePhoneStoreReadAllPhase1:
       
  1618                 {
       
  1619                 if ( iMmPhone->GetSmsTsy()->GetSmsStorageTsy() )
       
  1620                     {
       
  1621                     static_cast<CMmSmsStorageTsy*>( mmObject )->
       
  1622                         RetrieveSmsListReadSmsL( aResult, aDataPackage );
       
  1623                     }
       
  1624                 break;
       
  1625                 }
       
  1626             
       
  1627             // Supplementary Services functionality
       
  1628             // Call Forwarding
       
  1629             case EMobilePhoneGetCallForwardingStatusPhase1:
       
  1630                 {
       
  1631                 // unpack result: a CMobilePhoneCFList
       
  1632                 CMobilePhoneCFList* cfResults;
       
  1633                 aDataPackage->UnPackData( &cfResults );
       
  1634                 static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
       
  1635                     CompleteGetCallForwardingStatusPhase1L( 
       
  1636                     cfResults, aResult );
       
  1637                 break;
       
  1638                 }
       
  1639             case EMobilePhoneNotifyCallServiceCapsChange:                
       
  1640                 {
       
  1641                 // unpack result: a RMobilePhone::TMobilePhoneCallServiceCaps
       
  1642                 RMobilePhone::TMobilePhoneCallServiceCaps callServiceCaps;
       
  1643                 aDataPackage->UnPackData( callServiceCaps );
       
  1644                 static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
       
  1645                   CompleteNotifyCallServiceCapsChange( callServiceCaps );
       
  1646                 break;
       
  1647                 }
       
  1648             case EMobilePhoneSetCallForwardingStatus:                
       
  1649                 static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
       
  1650                     CompleteSetCallForwardingStatus( aResult );
       
  1651                 break;                
       
  1652             case EMobilePhoneNotifyCallForwardingStatusChange:
       
  1653                 {
       
  1654                 // unpack result: a RMobilePhone::TMobilePhoneCFCondition
       
  1655                 RMobilePhone::TMobilePhoneCFCondition cfCondition;
       
  1656                 aDataPackage->UnPackData( cfCondition );
       
  1657                 static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
       
  1658                   CompleteNotifyCallForwardingStatusChange( cfCondition );
       
  1659                 break;
       
  1660                 }
       
  1661             case EMobilePhoneNotifyCallForwardingActive:
       
  1662                 {
       
  1663                 // unpack results: a RMobilePhone::TMobileService
       
  1664                 // and a RMobilePhone::TMobilePhoneCFActive
       
  1665                 RMobilePhone::TMobileService serviceGroup;
       
  1666                 RMobilePhone::TMobilePhoneCFActive activeType;
       
  1667                 aDataPackage->UnPackData( serviceGroup, activeType );
       
  1668                 static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
       
  1669                     CompleteNotifyCallForwardingActive( 
       
  1670                     serviceGroup, activeType );
       
  1671                 break;
       
  1672                 }
       
  1673             // Call Barring
       
  1674             case EMobilePhoneGetBarringStatusPhase1:
       
  1675                 {
       
  1676                 // unpack result: a CMobilePhoneCBList
       
  1677                 CMobilePhoneCBList* cbResults;
       
  1678                 aDataPackage->UnPackData( &cbResults );
       
  1679                 static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
       
  1680                 CompleteGetCallBarringStatusPhase1L( cbResults, aResult );
       
  1681                 break;
       
  1682                 }
       
  1683             case EMobilePhoneSetCallBarringStatus:                
       
  1684                 static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
       
  1685                     CompleteSetCallBarringStatus( aResult );
       
  1686                 break;                
       
  1687             case EMobilePhoneNotifyCallBarringStatusChange:
       
  1688                 {
       
  1689                 // unpack result: a RMobilePhone::TMobilePhoneCBCondition
       
  1690                 RMobilePhone::TMobilePhoneCBCondition cbCondition;
       
  1691                 aDataPackage->UnPackData( cbCondition );
       
  1692                 static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
       
  1693                     CompleteNotifyCallBarringStatusChange( cbCondition );
       
  1694                 break;
       
  1695                 }
       
  1696             // Supplementary Services password change
       
  1697             case EMobilePhoneSetSSPassword:                
       
  1698                 static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
       
  1699                     CompleteSetSSPassword( aResult );
       
  1700                 break;                
       
  1701             // Call Waiting
       
  1702             case EMobilePhoneGetWaitingStatusPhase1:
       
  1703                 {
       
  1704                 // unpack result: a CMobilePhoneCWList
       
  1705                 CMobilePhoneCWList* cwResults;
       
  1706                 aDataPackage->UnPackData( &cwResults );
       
  1707                 static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
       
  1708                 CompleteGetCallWaitingStatusPhase1L( cwResults, aResult );
       
  1709                 break;
       
  1710                 }
       
  1711             case EMobilePhoneSetCallWaitingStatus:                
       
  1712                 static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
       
  1713                     CompleteSetCallWaitingStatus( aResult );
       
  1714                 break;                
       
  1715             case EMobilePhoneNotifyCallWaitingStatusChange:
       
  1716                 {
       
  1717                 // unpack result: RMobilePhone::TMobilePhoneCWInfoEntryV1
       
  1718                 RMobilePhone::TMobilePhoneCWInfoEntryV1* cwStatus;
       
  1719                 aDataPackage->UnPackData( &cwStatus );
       
  1720                 static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
       
  1721                     CompleteNotifyCallWaitingStatusChange( cwStatus );
       
  1722                 break;
       
  1723                 }
       
  1724             // Identity EMobilePhoneGetIdentityServiceStatus
       
  1725             case EMobilePhoneGetIdentityServiceStatus:
       
  1726                 {
       
  1727                 // if no error, then unpack result: a
       
  1728                 // RMobilePhone::TMobilePhoneIdServiceStatus
       
  1729                 RMobilePhone::TMobilePhoneIdServiceStatus status =
       
  1730                     RMobilePhone::EIdServiceUnknown;
       
  1731                 if ( KErrNone == aResult )
       
  1732                     {
       
  1733                     aDataPackage->UnPackData( status );
       
  1734                     }
       
  1735                 static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
       
  1736                     CompleteGetIdentityServiceStatus( status, aResult );
       
  1737                 break;
       
  1738                 }
       
  1739             // User's Access to Network Services
       
  1740             case EMobilePhoneSendNetworkServiceRequest:                
       
  1741                 static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
       
  1742                     CompleteSendNetworkServiceRequest( aResult );
       
  1743                 break;  
       
  1744             case EMobilePhoneSendNetworkServiceRequestNoFdnCheck:
       
  1745             	static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
       
  1746                     CompleteSendNetworkServiceRequestNoFdnCheck( aResult );
       
  1747                 break;
       
  1748             // Notify for Send Network Service Request
       
  1749             case ECtsyPhoneSendNetworkServiceRequestInd:
       
  1750             	static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
       
  1751             		CompleteSendNetworkServiceRequestInd( aResult,aDataPackage);
       
  1752             	break;
       
  1753             // Notify for All Send Network Service Request
       
  1754             case EMobilePhoneNotifyAllSendNetworkServiceRequest:
       
  1755                 static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
       
  1756                 CompleteNotifyAllSendNetworkServiceRequest( aResult,
       
  1757                     aDataPackage );
       
  1758                 break;
       
  1759             // Get ICC message waiting indicators
       
  1760             case EMobilePhoneGetIccMessageWaitingIndicators:
       
  1761                 {
       
  1762                 // packed param: RMobilePhone::TMobilePhoneMessageWaitingV1
       
  1763                 RMobilePhone::TMobilePhoneMessageWaitingV1* mmWaiting;
       
  1764                 aDataPackage->UnPackData( &mmWaiting );
       
  1765                 static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
       
  1766                     CompleteGetIccMessageWaitingIndicators( mmWaiting,
       
  1767                     aResult );
       
  1768                 }
       
  1769                 break;
       
  1770                 
       
  1771             // Set ICC message waiting indicators
       
  1772             case EMobilePhoneSetIccMessageWaitingIndicators:                    
       
  1773                 static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
       
  1774                     CompleteSetIccMessageWaitingIndicators( aResult );
       
  1775                 break;
       
  1776                     
       
  1777             // Notify ICC message waiting indicators change
       
  1778             case EMobilePhoneNotifyIccMessageWaitingIndicatorsChange:
       
  1779                 // packed param: RMobilePhone::TMobilePhoneMessageWaitingV1
       
  1780                 RMobilePhone::TMobilePhoneMessageWaitingV1* mmWaiting;
       
  1781                 aDataPackage->UnPackData( &mmWaiting );
       
  1782                 static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
       
  1783                     CompleteNotifyIccMessageWaitingIndicatorChange(
       
  1784                     mmWaiting, aResult );
       
  1785                 break;    
       
  1786 
       
  1787             // case EMobilePhoneGetCallForwardingStatusPhase2:          no DOS call required
       
  1788             // case EMobilePhoneGetCallForwardingStatusCancel:          no DOS call required
       
  1789             // case EMobilePhoneSetCallForwardingStatusCancel:          no DOS call required
       
  1790             // case EMobilePhoneNotifyCallForwardingStatusChangeCancel: no DOS call required
       
  1791             // case EMobilePhoneNotifyCallForwardingActiveCancel:       no DOS call required
       
  1792             // case EMobilePhoneGetCallForwardingIndicator:             not supported
       
  1793             // case EMobilePhoneGetCallForwardingIndicatorCancel:       not supported
       
  1794 
       
  1795             // Custom Tsy functionality
       
  1796             case ECustomSsAdditionalInfoNotificationIPC:
       
  1797                 {
       
  1798                 // unpack pointer to RMmCustomAPI::TSsAdditionalInfo
       
  1799                 RMmCustomAPI::TSsAdditionalInfo* addInfo;
       
  1800                 aDataPackage->UnPackData( addInfo );
       
  1801 
       
  1802                 static_cast<CMmCustomTsy*>( mmObject )->
       
  1803                 CompleteSsAdditionalInfoNotification( addInfo, aResult );
       
  1804                 break;
       
  1805                 }
       
  1806             case ECustomNotifySsNetworkEventIPC:
       
  1807                 {
       
  1808                 // unpack result: a RMmCustomAPI::TSsTypeAndMode and
       
  1809                 // a RMmCustomAPI::TSsInfo
       
  1810                 RMmCustomAPI::TSsTypeAndMode ssTypeAndMode;
       
  1811                 RMmCustomAPI::TSsInfo ssInfo;
       
  1812                 aDataPackage->UnPackData( ssTypeAndMode, ssInfo );
       
  1813                 static_cast<CMmCustomTsy*>( mmObject )->
       
  1814                     CompleteNotifySsNetworkEvent( ssTypeAndMode, ssInfo, 
       
  1815                     aResult );
       
  1816                 break;
       
  1817                 }
       
  1818             case ECustomNotifySsRequestCompleteIPC:
       
  1819                 {
       
  1820                 // unpack result: a TInt with SS status
       
  1821                 TInt ssStatus;
       
  1822                 aDataPackage->UnPackData( ssStatus );
       
  1823                 static_cast<CMmCustomTsy*>( mmObject )->
       
  1824                     CompleteSsRequestCompleteNotification( 
       
  1825                     ssStatus, aResult );
       
  1826                 break;
       
  1827                 }
       
  1828             case ECustomNotifyDtmfEventIPC:
       
  1829                 {
       
  1830                 // unpack result: a RMmCustomAPI::TDtmfInfo
       
  1831                 RMmCustomAPI::TDtmfInfo dtmfInfo;
       
  1832                 aDataPackage->UnPackData( dtmfInfo );
       
  1833                 static_cast<CMmCustomTsy*>( mmObject )->
       
  1834                     CompleteNotifyDtmfEvent( dtmfInfo, aResult );
       
  1835                 break;
       
  1836                 }
       
  1837          	case ECustomNotifyRauEventIPC:
       
  1838                 {
       
  1839                 // unpack result
       
  1840                 RMmCustomAPI::TRauEventStatus rauEventStatus;
       
  1841                 aDataPackage->UnPackData( rauEventStatus );
       
  1842                 static_cast<CMmCustomTsy*>( mmObject )->
       
  1843                     CompleteNotifyRauEvent( rauEventStatus, aResult );
       
  1844                 break;
       
  1845                 }
       
  1846             case ECustomGetDiagnosticOctetsIPC:
       
  1847                 {
       
  1848                 // unpack result: TInt (call ID) and TUint8 (diagnostics)
       
  1849                 TInt callId( -1 );
       
  1850                 TUint8 diags;
       
  1851                 aDataPackage->UnPackData( callId, diags );
       
  1852                 static_cast<CMmCustomTsy*>( mmObject )->
       
  1853                     CompleteGetDiagnosticOctects( callId, diags );
       
  1854                 break;
       
  1855                 }
       
  1856             case ECustomGetRemoteAlertingToneStatusIPC:
       
  1857                 {
       
  1858                 // unpack result: a TBool playRemoteAlertToneLocally
       
  1859                 TBool playRemoteAlertToneLocally;
       
  1860                 aDataPackage->UnPackData( playRemoteAlertToneLocally );
       
  1861                 // not completed by Custom Tsy, but by the GSM extension
       
  1862                 CMmCustomGsmExt* customGsmExt = 
       
  1863                     static_cast<CMmCustomGsmExt*>(
       
  1864                     static_cast<CMmCustomTsy*>( mmObject )->
       
  1865                     GetActiveExtensionPtr() );
       
  1866                 
       
  1867                 if ( customGsmExt )
       
  1868                     {
       
  1869                     customGsmExt->SetLocalRemoteAlertToneRequired(
       
  1870                         playRemoteAlertToneLocally );
       
  1871                     }
       
  1872                 break;
       
  1873                 }
       
  1874             case ECustomClearCallBlackListIPC:                
       
  1875                 // no packed parameters
       
  1876                 static_cast<CMmCustomTsy*>( mmObject )->
       
  1877                     CompleteClearCallBlackList( aResult );
       
  1878                 break;                
       
  1879             case ECustomCheckEmergencyNumberIPC:
       
  1880                 {
       
  1881                 // packed parameter: a ptr to TMobileTelNumber
       
  1882                 RMmCustomAPI::TMobileTelNumber* telNumber;
       
  1883                 aDataPackage->UnPackData( telNumber );
       
  1884                 static_cast<CMmCustomTsy*>( mmObject )->
       
  1885                     CompleteCheckEmergencyNumber( telNumber, aResult );
       
  1886                 break;
       
  1887                 }
       
  1888             case ECustomGetLifeTimeIPC:
       
  1889                 {
       
  1890                 // packed parameter: a RMmCustomAPI::TLifeTimeData
       
  1891                 RMmCustomAPI::TLifeTimeData lifeTime;
       
  1892                 aDataPackage->UnPackData( lifeTime );
       
  1893                 static_cast<CMmCustomTsy*>( mmObject )->
       
  1894                     CompleteGetLifeTime( lifeTime, aResult );
       
  1895                 break;
       
  1896                 }
       
  1897             case ECustomTerminateCallIPC:                
       
  1898                 // no packed parameters
       
  1899                 static_cast<CMmCustomTsy*>( mmObject )->
       
  1900                     CompleteTerminateCall( aResult );
       
  1901                 break;                
       
  1902             case ECustomGetAlsBlockedIPC:
       
  1903                 {
       
  1904                 // packed parameter: TGetAlsBlockStatus (block status)
       
  1905                 RMmCustomAPI::TGetAlsBlockStatus blockStatus;
       
  1906                 aDataPackage->UnPackData( blockStatus );
       
  1907                 static_cast<CMmCustomTsy*>( mmObject )->
       
  1908                     CompleteGetAlsBlocked( blockStatus, aResult );
       
  1909                 break;
       
  1910                 }
       
  1911             case ECustomSetAlsBlockedIPC:                
       
  1912                 // no packed parameters
       
  1913                 static_cast<CMmCustomTsy*>( mmObject )->
       
  1914                     CompleteSetAlsBlocked( aResult );
       
  1915                 break;                
       
  1916             case ECustomCheckAlsPpSupportIPC:
       
  1917                 {
       
  1918                 // packed parameter: RMmCustomAPI::TAlsSupport
       
  1919                 RMmCustomAPI::TAlsSupport alsSupport;
       
  1920                 aDataPackage->UnPackData( alsSupport );
       
  1921                 static_cast<CMmCustomTsy*>( mmObject )->
       
  1922                     CompleteGetAlsPpSupport( alsSupport, aResult );
       
  1923                 break;
       
  1924                 }
       
  1925             case ECustomCheckTwoDigitDialSupportIPC:
       
  1926                 {
       
  1927                 // packed parameter: RMmCustomAPI::TTwoDigitDialSupport
       
  1928                 RMmCustomAPI::TTwoDigitDialSupport twoDigitDialSupport;
       
  1929                 aDataPackage->UnPackData( twoDigitDialSupport );
       
  1930                 static_cast<CMmCustomTsy*>( mmObject )->
       
  1931                     CompleteCheckTwoDigitDialSupport( twoDigitDialSupport,
       
  1932                     aResult );
       
  1933                 break;
       
  1934                 }
       
  1935             case ECustomGetCipheringInfoIPC:
       
  1936                 {
       
  1937                 // packed parameter:
       
  1938                 // TBool (ciphering indicator required/not required)
       
  1939                 TBool indReq;
       
  1940                 aDataPackage->UnPackData( indReq );
       
  1941                 static_cast<CMmCustomTsy*>( mmObject )->
       
  1942                     CompleteGetCipheringInfo( indReq, aResult );
       
  1943                 break;
       
  1944                 }
       
  1945             case ECustomNotifyCipheringInfoChangeIPC:
       
  1946                 {
       
  1947                 // packed parameters:
       
  1948                 // TBool (ciphering indicator required/not required)
       
  1949                 // TBool (ciphering on/off)
       
  1950                 TBool indReq;
       
  1951                 TBool ciStatus;
       
  1952                 aDataPackage->UnPackData( indReq, ciStatus );
       
  1953                 static_cast<CMmCustomTsy*>( mmObject )->
       
  1954                     CompleteNotifyCipheringInfoChange( indReq, ciStatus, 
       
  1955                     aResult );
       
  1956                 break;
       
  1957                 }
       
  1958             case ECustomNotifyNSPSStatusIPC:
       
  1959                 {
       
  1960                 // packed parameter: TBool nspsIsOn
       
  1961                 TBool nspsIsOn;
       
  1962                 aDataPackage->UnPackData( nspsIsOn );
       
  1963                 static_cast<CMmCustomTsy*>( mmObject )->
       
  1964                     CompleteNotifyNSPSStatus( nspsIsOn );
       
  1965                 break;
       
  1966                 }
       
  1967             case ECustomNetWakeupIPC:                
       
  1968                 // no packed parameters
       
  1969                 static_cast<CMmCustomTsy*>( mmObject )->
       
  1970                     CompleteNetWakeup( aResult );
       
  1971                 break;                
       
  1972             case ECustomGetOperatorNameIPC:
       
  1973                 {
       
  1974                 // packed parameter: a RMmCustomAPI::TOperatorNameInfo
       
  1975                 RMmCustomAPI::TOperatorNameInfo operNameInfo;
       
  1976                 aDataPackage->UnPackData( operNameInfo );
       
  1977                 static_cast<CMmCustomTsy*>( mmObject )->
       
  1978                     CompleteGetOperatorName( operNameInfo, aResult );
       
  1979                 break;
       
  1980                 }
       
  1981             case EMobilePhoneIMSAuthenticate:                
       
  1982                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  1983                     CompleteImsAuthentication( aDataPackage, aResult );
       
  1984                 break;                
       
  1985             case ECustomGetSimAuthenticationDataIPC:                
       
  1986                 static_cast<CMmCustomTsy*>( mmObject )->
       
  1987                     CompleteSimAuthentication( aDataPackage, aResult );
       
  1988                 break;                
       
  1989             case ECustomResetNetServerIPC:                
       
  1990                 // no packed parameters
       
  1991                 static_cast<CMmCustomTsy*>( mmObject )->
       
  1992                     CompleteResetNetServer( aResult );
       
  1993                 break;                
       
  1994             case ECustomNotifyNetworkConnectionFailureIPC:                
       
  1995                 // no packed parameters
       
  1996                 static_cast<CMmCustomTsy*>( mmObject )->
       
  1997                     CompleteNotifyNetworkConnectionFailure();
       
  1998                 break;                
       
  1999             case ECustomGetSystemNetworkModesIPC:
       
  2000                 {
       
  2001                 // packed parameters TUint32 (systemNetworkModes)
       
  2002                 TUint32 systemNetworkModes;
       
  2003                 aDataPackage->UnPackData( systemNetworkModes );
       
  2004                 static_cast<CMmCustomTsy*>( mmObject )->
       
  2005                     CompleteGetSystemOrCurrentNetworkModes( 
       
  2006                     systemNetworkModes, aResult );
       
  2007                 break;
       
  2008                 }
       
  2009             case ECustomSetSystemNetworkModeIPC:                
       
  2010                 // no packed parameters)
       
  2011                 static_cast<CMmCustomTsy*>( mmObject )->
       
  2012                     CompleteSetSystemNetworkMode( aResult );
       
  2013                 break;                
       
  2014             case ECustomGetNetworkProviderNameIPC:
       
  2015                 {
       
  2016                 // packed parameter: TDes* (network provider name)
       
  2017                 TDes* name;
       
  2018                 aDataPackage->UnPackData( name );
       
  2019                 static_cast<CMmCustomTsy*>( mmObject )->
       
  2020                     CompleteGetNetworkOperatorName( name, aResult );
       
  2021                 break;
       
  2022                 }
       
  2023             case ECustomGetCurrentSystemNetworkModesIPC:
       
  2024                 {
       
  2025                 TUint32 currentNetworkModes;
       
  2026                 aDataPackage->UnPackData( currentNetworkModes );
       
  2027                 static_cast<CMmCustomTsy*>( mmObject )->
       
  2028                     CompleteGetCurrentSystemNetworkMode( 
       
  2029                     currentNetworkModes, aResult );
       
  2030                 break;
       
  2031                 }
       
  2032             case ECustomGetBandSelectionIPC:
       
  2033                 {
       
  2034                 // Packed parameters TBandSelection (systemNetworkBand). 
       
  2035                 // Initialize parameters. In otherwise compiler gives warning.
       
  2036                 // CompleteGetSystemNetworkBand does not handle parameters if 
       
  2037                 // aResult is not KErrNone.
       
  2038                 RMmCustomAPI::TBandSelection systemNetworkBand
       
  2039                     = RMmCustomAPI::ENetworkBandAny;
       
  2040                 RMmCustomAPI::TNetworkModeCaps systemNetworkMode
       
  2041                     = RMmCustomAPI::KCapsNetworkModeDual;
       
  2042                 if (KErrNone == aResult)
       
  2043                 	{
       
  2044                 aDataPackage->UnPackData( systemNetworkBand,
       
  2045                     systemNetworkMode );
       
  2046                 	}
       
  2047                 static_cast<CMmCustomTsy*>( mmObject )->
       
  2048                     CompleteGetSystemNetworkBand( 
       
  2049                     systemNetworkBand, systemNetworkMode, aResult );
       
  2050                 break;
       
  2051                 }
       
  2052             case ECustomSetBandSelectionIPC:                
       
  2053                 // no packed parameters)
       
  2054                 static_cast<CMmCustomTsy*>( mmObject )->
       
  2055                     CompleteSetSystemNetworkBand( aResult );
       
  2056                 break;
       
  2057             
       
  2058             case ECustomSatRefreshCompleteNotificationIPC:                
       
  2059                 // no packed parameters
       
  2060                 static_cast<CMmCustomTsy*>( mmObject )->
       
  2061                     CompleteSatRefreshCompleteNotification();
       
  2062                 break;                
       
  2063             case ECustomReadSimFileIPC:
       
  2064                 {
       
  2065                 // packed parameter: pointer to TDesC8 (SIM data)
       
  2066                 TDesC8* simData;
       
  2067                 aDataPackage->UnPackData( simData );
       
  2068                 static_cast<CMmCustomTsy*>( mmObject )->
       
  2069                     CompleteGetSimFileInfo( simData, aResult );
       
  2070                 break;
       
  2071                 }
       
  2072             case ECustomSimLockActivateIPC:
       
  2073                 {
       
  2074                 // no packed parameters
       
  2075                 CMmSimLockTsy* simLockTsy = static_cast<CMmSimLockTsy*>(
       
  2076                     static_cast<CMmCustomTsy*>( mmObject )->
       
  2077                     GetSimLockTsyPtr() );
       
  2078                 simLockTsy->CompleteActivateSimLock( aResult );
       
  2079                 break;
       
  2080                 }
       
  2081             case ECustomSimLockDeActivateIPC:
       
  2082                 {
       
  2083                 // no packed parameters
       
  2084                 CMmSimLockTsy* simLockTsy = static_cast<CMmSimLockTsy*>(
       
  2085                     static_cast<CMmCustomTsy*>( mmObject )->
       
  2086                     GetSimLockTsyPtr() );
       
  2087                 simLockTsy->CompleteDeActivateSimLock( aResult );
       
  2088                 break;
       
  2089                 }
       
  2090             case ECustomSendAPDUReqIPC:
       
  2091                 {
       
  2092                 CMmWimTsy* wimTsy = static_cast<CMmWimTsy*>(
       
  2093                     static_cast<CMmCustomTsy*>( mmObject )->
       
  2094                     GetWimTsyPtr() );
       
  2095                 wimTsy->CompleteSendAPDUReq( aDataPackage, aResult );
       
  2096                 break;
       
  2097                 }
       
  2098             case ECustomSimWarmResetIPC:
       
  2099                 {
       
  2100                 // no packed parameters
       
  2101                 CMmWimTsy* wimTsy = static_cast<CMmWimTsy*>(
       
  2102                     static_cast<CMmCustomTsy*>( mmObject )->
       
  2103                     GetWimTsyPtr() );
       
  2104                 wimTsy->CompleteSimWarmReset( aResult );
       
  2105                 break;
       
  2106                 }
       
  2107             case ECustomGetATRIPC:
       
  2108                 {
       
  2109                 // packed parameter: TPtrC8* atr
       
  2110                 TPtrC8* atr;
       
  2111                 aDataPackage->UnPackData( &atr );
       
  2112                 CMmWimTsy* wimTsy = static_cast<CMmWimTsy*>(
       
  2113                     static_cast<CMmCustomTsy*>( mmObject )->
       
  2114                     GetWimTsyPtr() );
       
  2115                 wimTsy->CompleteGetATR( *atr, aResult );
       
  2116                 break;
       
  2117                 }
       
  2118             case ECustomGetSimCardReaderStatusIPC:
       
  2119                 {
       
  2120                 // packed parameter: TPtrC8* status
       
  2121                 TPtrC8* status;
       
  2122                 aDataPackage->UnPackData( &status );
       
  2123                 CMmWimTsy* wimTsy = static_cast<CMmWimTsy*>(
       
  2124                     static_cast<CMmCustomTsy*>( mmObject )->
       
  2125                     GetWimTsyPtr() );
       
  2126                 wimTsy->CompleteGetSimCardReaderStatus( 
       
  2127                     *status, aResult );
       
  2128                 break;
       
  2129                 }
       
  2130             case ECustomNotifySimCardStatusIPC:
       
  2131                 {
       
  2132                 // packed param: RMmCustomAPI::TSIMCardStatus returnStatus
       
  2133                 RMmCustomAPI::TSIMCardStatus returnStatus;
       
  2134                 aDataPackage->UnPackData( returnStatus );
       
  2135                 CMmWimTsy* wimTsy = static_cast<CMmWimTsy*>(
       
  2136                     static_cast<CMmCustomTsy*>( mmObject )->
       
  2137                     GetWimTsyPtr() );
       
  2138                 wimTsy->CompleteNotifySimCardStatus( returnStatus );
       
  2139                 break;
       
  2140                 }
       
  2141             case ECustomSendAPDUReqV2IPC:
       
  2142                 {
       
  2143                 // packed parameter: TPtrC8* data
       
  2144                 TPtrC8* data;
       
  2145                 aDataPackage->UnPackData( &data );
       
  2146                 CMmWimTsy* wimTsy = static_cast<CMmWimTsy*>(
       
  2147                     static_cast<CMmCustomTsy*>( mmObject )->
       
  2148                     GetWimTsyPtr() );
       
  2149                 wimTsy->CompleteSendAPDUReqV2( *data, aResult );
       
  2150                 break;
       
  2151                 }
       
  2152             case ECustomPowerSimOnIPC:
       
  2153                 {
       
  2154                 // no packed parameters
       
  2155                 CMmWimTsy* wimTsy = static_cast<CMmWimTsy*>(
       
  2156                     static_cast<CMmCustomTsy*>( mmObject )->
       
  2157                     GetWimTsyPtr() );
       
  2158                 wimTsy->CompletePowerSimOn( aResult );
       
  2159                 break;
       
  2160                 }
       
  2161             case ECustomPowerSimOffIPC:
       
  2162                 {
       
  2163                 // no packed parameters
       
  2164                 CMmWimTsy* wimTsy = static_cast<CMmWimTsy*>(
       
  2165                     static_cast<CMmCustomTsy*>( mmObject )->
       
  2166                     GetWimTsyPtr() );
       
  2167                 wimTsy->CompletePowerSimOff( aResult );
       
  2168                 break;
       
  2169                 }
       
  2170             case ECustomStartSimCbTopicBrowsingIPC:
       
  2171                 {
       
  2172                 // packed parameter: pointer to array with CB topics
       
  2173                 CArrayFixFlat<RMmCustomAPI::TSimCbTopic>* 
       
  2174                     cimCbTopics = NULL;
       
  2175                 if ( KErrNone == aResult )
       
  2176                     {
       
  2177                     // only unpack data in successful case
       
  2178                     aDataPackage->UnPackData( cimCbTopics );
       
  2179                     }
       
  2180                 CMmSIMTsy* simTsy = static_cast<CMmSIMTsy*>(
       
  2181                     static_cast<CMmCustomTsy*>( mmObject )->
       
  2182                     GetSIMTsyPtr() );
       
  2183                 simTsy->CompleteStartSimCbTopicBrowsing( 
       
  2184                     cimCbTopics, aResult );
       
  2185                 break;
       
  2186                 }
       
  2187             case ECustomDeleteSimCbTopicIPC:
       
  2188                 {
       
  2189                 // no packed parameters
       
  2190                 CMmSIMTsy* simTsy = static_cast<CMmSIMTsy*>(
       
  2191                     static_cast<CMmCustomTsy*>( mmObject )->
       
  2192                     GetSIMTsyPtr() );
       
  2193                 simTsy->CompleteDeleteSimCbTopic( aResult );
       
  2194                 break;
       
  2195                 }
       
  2196                 
       
  2197             case ECustomGetServiceTableSupportbyApplicationIPC:
       
  2198             	{
       
  2199                 static_cast<CMmCustomTsy*>( mmObject )->
       
  2200                     CompleteGetUSIMServiceSupport(aDataPackage, aResult );
       
  2201                 break;
       
  2202             	
       
  2203             	}
       
  2204             	
       
  2205             case EReadViagHomeZoneParamsIPC:
       
  2206                 {
       
  2207                 // packed parameter: RMmCustomAPI::TViagParams, pointer to 
       
  2208                 // RMmCustomAPI::TViagElements
       
  2209                 RMmCustomAPI::TViagParams viagParams;
       
  2210                 RMmCustomAPI::TViagElements* viagElems = NULL;
       
  2211                 if ( KErrNone == aResult )
       
  2212                     {
       
  2213                     // only unpack data in successful case
       
  2214                     aDataPackage->UnPackData( viagParams, viagElems );
       
  2215                     }
       
  2216                 CMmSIMTsy* simTsy = static_cast<CMmSIMTsy*>(
       
  2217                     static_cast<CMmCustomTsy*>( mmObject )->
       
  2218                                                         GetSIMTsyPtr() );
       
  2219                 simTsy->CompleteReadViagHomeZoneParamsResp( &viagParams, 
       
  2220                     viagElems, aResult );
       
  2221                 break;
       
  2222                 }
       
  2223             case EReadViagHomeZoneCacheIPC:
       
  2224                 {
       
  2225                 // packed parameter: RMmCustomAPI::TViagCacheRecordContent
       
  2226                 RMmCustomAPI::TViagCacheRecordContent viagRecordContent;
       
  2227                 aDataPackage->UnPackData( viagRecordContent );
       
  2228                 CMmSIMTsy* simTsy = static_cast<CMmSIMTsy*>(
       
  2229                     static_cast<CMmCustomTsy*>( mmObject )->
       
  2230                     GetSIMTsyPtr() );
       
  2231                 simTsy->CompleteReadViagHomeZoneCacheRespL( 
       
  2232                     &viagRecordContent, aResult );
       
  2233                 break;
       
  2234                 }
       
  2235             case EWriteViagHomeZoneCacheIPC:
       
  2236                 {
       
  2237                 // no packed parameters
       
  2238                 CMmSIMTsy* simTsy = static_cast<CMmSIMTsy*>(
       
  2239                     static_cast<CMmCustomTsy*>( mmObject )->
       
  2240                     GetSIMTsyPtr() );
       
  2241                 simTsy->CompleteWriteViagHomeZoneCacheResp( aResult );
       
  2242                 break;
       
  2243                 }
       
  2244             case EWriteViagHomeZoneUHZIUESettingsIPC:
       
  2245                 {
       
  2246                 // no packed parameters
       
  2247                 CMmSIMTsy* simTsy = static_cast<CMmSIMTsy*>(
       
  2248                     static_cast<CMmCustomTsy*>( mmObject )->
       
  2249                     GetSIMTsyPtr() );
       
  2250                 simTsy->CompleteWriteViagHomeZoneUHZIUESettingsResp( 
       
  2251                     aResult );
       
  2252                 break;
       
  2253                 }
       
  2254             case ECustomSetDriveModeIPC:                
       
  2255                 // no packed parameters
       
  2256                 static_cast<CMmCustomTsy*>( mmObject )->
       
  2257                     CompleteSetDriveMode( aResult );
       
  2258                 break;                
       
  2259             
       
  2260             // Security (Custom) functionality
       
  2261             case ECustomIsBlockedIPC:
       
  2262                 {
       
  2263                 TBool isBlocked;
       
  2264                 aDataPackage->UnPackData ( isBlocked );
       
  2265                 static_cast<CMmCustomSecurityTsy*>( mmObject )->
       
  2266                     CompleteIsBlocked( aResult, isBlocked );
       
  2267                 break;
       
  2268                 }
       
  2269             case ECustomCheckSecurityCodeIPC:                
       
  2270                 static_cast<CMmCustomSecurityTsy*>( mmObject )->
       
  2271                     CompleteCheckSecurityCode( aResult );
       
  2272                 break;                
       
  2273             //case ECustomCheckEmergencyNumberIPC:
       
  2274             //case ECustomSatRefreshCompleteNotificationIPC:
       
  2275             case ECustomDisablePhoneLockIPC:                
       
  2276                 static_cast<CMmCustomSecurityTsy*>( mmObject )->
       
  2277                     CompleteDisablePhoneLock( aResult);
       
  2278                 break;                
       
  2279             case ECustomCheckSecurityCodeCancelIPC:                
       
  2280                 static_cast<CMmCustomSecurityTsy*>( mmObject )->
       
  2281                     CompleteCheckSecurityCodeCancel();
       
  2282                 break;                
       
  2283             case ECustomReadHSxPAStatusIPC:
       
  2284                 static_cast<CMmCustomTsy*>( mmObject )->
       
  2285                     CompleteReadHSxPAStatus( aDataPackage, aResult );
       
  2286                 break;
       
  2287             case ECustomWriteHSxPAStatusIPC:
       
  2288                 static_cast<CMmCustomTsy*>( mmObject )->
       
  2289                     CompleteWriteHSxPAStatus( aResult );
       
  2290                 break;
       
  2291             case ECustomNotifyHSxPAStatusIPC:
       
  2292                 static_cast<CMmCustomTsy*>( mmObject )->
       
  2293                     CompleteNotifyHSxPAStatus( aDataPackage, aResult );
       
  2294                 break;
       
  2295             case ECustomGetIccCallForwardingStatusIPC:
       
  2296             	static_cast<CMmCustomTsy*>( mmObject )->
       
  2297                     CompleteGetIccCallForwardingStatus( aDataPackage, aResult );
       
  2298                 break;
       
  2299             case ECustomNotifyIccCallForwardingStatusChangeIPC:
       
  2300             	static_cast<CMmCustomTsy*>( mmObject )->
       
  2301                     CompleteNotifyIccCallForwardingStatusChange( aDataPackage, aResult );
       
  2302                 break;
       
  2303             case ECustomGetCellInfoIPC:
       
  2304                 {
       
  2305                 //unpack the data
       
  2306                 RMmCustomAPI::TMmCellInfo* cellInfo;
       
  2307                 aDataPackage->UnPackData( &cellInfo );
       
  2308                 static_cast<CMmCustomTsy*>( mmObject )->
       
  2309                     CompleteGetCellInfo( cellInfo, aResult );
       
  2310                 break;
       
  2311                 }
       
  2312             case ECustomNotifyCellInfoChangeIPC:
       
  2313             	{
       
  2314                 //unpack the data
       
  2315                 RMmCustomAPI::TMmCellInfo* cellInfoChange;
       
  2316                 aDataPackage->UnPackData( &cellInfoChange );
       
  2317                 static_cast<CMmCustomTsy*>( mmObject )->
       
  2318                     CompleteNotifyCellInfoChange( cellInfoChange, aResult );
       
  2319                 break;
       
  2320                 }
       
  2321         	case ECustomNotifyRemoteAlertingToneStatusChangeIPC:
       
  2322                 {
       
  2323                 // unpack result
       
  2324                 RMmCustomAPI::TRemoteAlertingToneStatus remoteAlertingToneStatus;
       
  2325                 aDataPackage->UnPackData( remoteAlertingToneStatus );
       
  2326                 static_cast<CMmCustomTsy*>( mmObject )->
       
  2327                     CompleteNotifyRemoteAlertingToneStatusChange( 
       
  2328                     remoteAlertingToneStatus, aResult );
       
  2329                 break;
       
  2330                 }
       
  2331                 
       
  2332             case ECustomGetProgrammableOperatorLogoIPC:
       
  2333             	{
       
  2334             	RMmCustomAPI::TOperatorId* operatorId;
       
  2335             	RMmCustomAPI::TOperatorLogo* operatorLogo;
       
  2336             	aDataPackage->UnPackData(&operatorId, &operatorLogo);
       
  2337 				static_cast<CMmCustomTsy*>( mmObject )->CompleteGetProgrammableOperatorLogo(operatorId, operatorLogo, aResult);
       
  2338 				break;
       
  2339             	}
       
  2340                 
       
  2341                 
       
  2342         	// Security cases
       
  2343             case EMobilePhoneGetLockInfo:                
       
  2344                 static_cast<CMmPhoneTsy*>( mmObject )->GetSecurityTsy()->
       
  2345                     CompleteGetLockInfo( aDataPackage, aResult );
       
  2346                 break;                
       
  2347             case EMobilePhoneChangeSecurityCode:                
       
  2348                 static_cast<CMmPhoneTsy*>( mmObject )->GetSecurityTsy()->
       
  2349                     CompleteChangeSecurityCode( aResult );
       
  2350                 break;                
       
  2351             case EMobilePhoneAbortSecurityCode:                
       
  2352                 static_cast<CMmPhoneTsy*>( mmObject )->GetSecurityTsy()->
       
  2353                     CompleteAbortSecurityCode( aResult );
       
  2354                 break;                
       
  2355             case EMobilePhoneVerifySecurityCode:                
       
  2356                 static_cast<CMmPhoneTsy*>( mmObject )->GetSecurityTsy()->
       
  2357                     CompleteVerifySecurityCodeL( aResult );
       
  2358                 break;                
       
  2359             case EMobilePhoneSetLockSetting:
       
  2360                 {
       
  2361                 //unpack the data
       
  2362                 RMobilePhone::TMobilePhoneLockStatus* status = NULL;
       
  2363                 RMobilePhone::TMobilePhoneLockSetting* setting = NULL;
       
  2364                 aDataPackage->UnPackData( &status, &setting );
       
  2365                 static_cast<CMmPhoneTsy*>( mmObject )->GetSecurityTsy()->
       
  2366                     CompleteSetLockSetting( aResult,*status, *setting );
       
  2367                 break;
       
  2368                 }
       
  2369             case EMobilePhoneNotifySecurityEvent:
       
  2370                 {
       
  2371                 RMobilePhone::TMobilePhoneSecurityEvent* event = NULL;
       
  2372                 //unpack the data
       
  2373                 aDataPackage->UnPackData( &event );
       
  2374                 static_cast<CMmPhoneTsy*>( mmObject )->GetSecurityTsy()->
       
  2375                     CompleteNotifySecurityEventL( *event, aResult );
       
  2376                 break;
       
  2377                 }
       
  2378             case EMobilePhoneNotifyLockInfoChange:                
       
  2379                 static_cast<CMmPhoneTsy*>( mmObject )->GetSecurityTsy()->
       
  2380                     CompleteNotifyLockInfoChange( aDataPackage, aResult);
       
  2381                 break;                
       
  2382             case EMmTsySecurityGetSimActivePinStateIPC:                
       
  2383                 static_cast<CMmCustomSecurityTsy*>(
       
  2384                     mmObject )->SetActivePin( aDataPackage );
       
  2385                 break;                
       
  2386             case EMmTsySimGetICCType:                
       
  2387                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  2388                   PhoneExtInterface()->CompleteGetICCType( aDataPackage );
       
  2389                 break;                
       
  2390             case EMmTsyBootNotifySimStatusReadyIPC: 
       
  2391                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  2392                     CompleteNotifySimStatusReadyL();
       
  2393                 break;                
       
  2394             case EMmTsyBootNotifyModemStatusReadyIPC:                
       
  2395                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  2396                     CompleteNotifyModemStatusReady();
       
  2397                 break;                
       
  2398             case EMmTsyBootNotifySecurityReadyIPC:                
       
  2399                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  2400                     CompleteNotifySecurityReady();
       
  2401                 break;   
       
  2402             case EMobilePhoneNotifyIccAccessCapsChange:                
       
  2403                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  2404                     CompleteNotifyIccAccessCapsChange();
       
  2405                 break;              
       
  2406             case EMmTsyBootGetRFStatusIPC:
       
  2407                 {
       
  2408                 TRfStateInfo* rfInfo = NULL;
       
  2409                 aDataPackage->UnPackData ( &rfInfo );
       
  2410                 CMmPhoneTsy* phoneTsy = 
       
  2411                                   static_cast<CMmPhoneTsy*>( mmObject );
       
  2412                 phoneTsy->SetRfStateInfo( *rfInfo );
       
  2413                 // inform also SMS Tsy about RF state
       
  2414                 CMmSmsTsy* smsTsy = phoneTsy->SmsSession();
       
  2415                 if ( smsTsy )
       
  2416                     {
       
  2417                     if ( ERfsStateInfoInactive == *rfInfo )
       
  2418                         {
       
  2419                         smsTsy->SetOffline( ETrue );
       
  2420                         }
       
  2421                     else
       
  2422                         {
       
  2423                         smsTsy->SetOffline( EFalse );
       
  2424                         }
       
  2425                     }
       
  2426                 break;
       
  2427                 }
       
  2428             case EMobilePhoneGetMailboxNumbers:
       
  2429             	iMmPhone->CompleteGetMailboxNumbers( aDataPackage, aResult );
       
  2430                 break;            
       
  2431             // Miscellaneous Phone functionality
       
  2432 
       
  2433             // case EMobilePhoneGetBatteryInfo: // handled in CommonTSY
       
  2434             case EMobilePhoneNotifyBatteryInfoChange:
       
  2435                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  2436                   CompleteNotifyBatteryInfoChange(aDataPackage, aResult );
       
  2437                 //  phone indicator status may change
       
  2438                 iMmPhone->CompleteNotifyIndicatorChange();
       
  2439                 break;
       
  2440 
       
  2441             case EMobilePhoneGetPhoneId:
       
  2442                 {
       
  2443                 // packed parameter: TDes8 with serial number
       
  2444                 TBuf8<KSerialNumberLength> serialNumber;
       
  2445                 aDataPackage->UnPackData( serialNumber );
       
  2446                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  2447                     CompleteGetPhoneId( serialNumber, aResult );
       
  2448                 break;
       
  2449                 }
       
  2450 
       
  2451 #ifdef USING_CTSY_DISPATCHER               
       
  2452             case ECtsyGetPhoneIdV2Comp: 
       
  2453                 {
       
  2454                 // Ltsy returns packed parameter of RMobilePhone::TMobilePhoneIdentityV1
       
  2455                 RMobilePhone::TMobilePhoneIdentityV1* phoneId = NULL;
       
  2456                 aDataPackage->UnPackData(&phoneId);
       
  2457                 __ASSERT_DEBUG(phoneId, User::Invariant());
       
  2458 
       
  2459                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  2460                     CompleteGetPhoneId(*phoneId, aResult);
       
  2461                 break;
       
  2462                 }
       
  2463 #endif //USING_CTSY_DISPATCHER
       
  2464              
       
  2465             case EMobilePhoneGetSubscriberId:
       
  2466                 {
       
  2467                 // packed param: TBuf8<RMobilePhone::KIMSISize> with IMSI
       
  2468                 TBuf8<RMobilePhone::KIMSISize> imsi;
       
  2469                 aDataPackage->UnPackData( imsi );
       
  2470                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  2471                     CompleteGetSubscriberIdL( imsi, aResult );
       
  2472                 break;
       
  2473                 }
       
  2474             case EMobilePhoneGetALSLine:
       
  2475                 {
       
  2476                 // packed parameter: RMobilePhone::TMobilePhoneALSLine
       
  2477                 RMobilePhone::TMobilePhoneALSLine alsStatus;
       
  2478                 aDataPackage->UnPackData ( alsStatus );
       
  2479 
       
  2480                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  2481                     CompleteGetAlsLine ( alsStatus, aResult );
       
  2482                 break;
       
  2483                 }
       
  2484             case EMobilePhoneSetALSLine:                
       
  2485                 // no packed parameters
       
  2486                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  2487                     CompleteSetAlsLine ( aResult );
       
  2488                 break;                
       
  2489             case EMobilePhoneGetCustomerServiceProfile:
       
  2490                 {
       
  2491                 // packed parameter: RMobilePhone::TMobilePhoneCspFileV1
       
  2492                 RMobilePhone::TMobilePhoneCspFileV1 cspFile;
       
  2493                 aDataPackage->UnPackData( cspFile );
       
  2494                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  2495                     CompleteGetCustomerServiceProfile( cspFile, aResult );
       
  2496                 break;
       
  2497                 }
       
  2498             case EMobilePhoneGetPhoneStoreInfo:
       
  2499                 {
       
  2500                 //packed param: RMobilePhoneStore::TMobilePhoneStoreInfoV1
       
  2501                 RMobilePhoneStore::TMobilePhoneStoreInfoV1 phoneStoreInfo;
       
  2502                 aDataPackage->UnPackData( phoneStoreInfo );
       
  2503                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  2504                     CompleteGetPhoneStoreInfo( phoneStoreInfo, aResult );
       
  2505                 break;
       
  2506                 }
       
  2507             case EMobilePhoneGetServiceTable:
       
  2508                 {
       
  2509                 //packed param: RMobilePhone::TMobilePhoneServiceTableV1
       
  2510                 RMobilePhone::TMobilePhoneServiceTableV1 table;
       
  2511                 aDataPackage->UnPackData( table );
       
  2512                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  2513                     CompleteGetServiceTableL ( table, aResult );
       
  2514                 break;
       
  2515                 }
       
  2516             case EMmTsyPhoneGetPin1DisableSupportedIPC:
       
  2517                 {
       
  2518                 // packed parameter: TBool (supported or not)
       
  2519                 TBool supported = EFalse;
       
  2520                 aDataPackage->UnPackData( supported );
       
  2521                 if ( !supported )
       
  2522                     {
       
  2523                     static_cast<CMmPhoneTsy*>( mmObject )->
       
  2524                           GetSecurityTsy()->SetPin1DisableNotSupported();
       
  2525                     }
       
  2526                 break;
       
  2527                 }
       
  2528             case EMobilePhoneSetFdnSetting :                
       
  2529                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  2530                     CompleteSetFdnSettingL( aResult );
       
  2531                 break;                
       
  2532             case EMobilePhoneGetFdnStatus:                
       
  2533                 static_cast<CMmPhoneTsy*>( mmObject )-> 
       
  2534                     CompleteGetFdnStatus( aDataPackage, aResult );
       
  2535                 break;                
       
  2536             case EMobilePhoneGetServiceProviderName:                
       
  2537                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  2538                   CompleteGetServiceProviderName( aDataPackage, aResult );
       
  2539                 break;                
       
  2540             case EMmTsySimRefreshNowIPC:
       
  2541                 {
       
  2542                 //packed param: TUint16(list of SIM files to be refreshed)
       
  2543                 TUint16 filesToRefresh = 0;
       
  2544                 aDataPackage->UnPackData( filesToRefresh );
       
  2545                 // Refresh notification received, start refresh
       
  2546                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  2547                     CompleteSimRefreshNowL( filesToRefresh );
       
  2548                 break;
       
  2549                 }
       
  2550             case EMmTsyGetCallForwardingNumberIPC:
       
  2551                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  2552                     CompleteGetCallForwardingNumber( 
       
  2553                     aResult, aDataPackage );
       
  2554                 break;
       
  2555 
       
  2556             // Access point control list (ACL)
       
  2557             case EMobilePhoneEnumerateAPNEntries:
       
  2558                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  2559                     CompleteEnumerateAPNEntries( aDataPackage, aResult );
       
  2560                 break;
       
  2561             case EMobilePhoneGetAPNname:
       
  2562                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  2563                     CompleteGetAPNname( aDataPackage, aResult );
       
  2564                 break;
       
  2565             case EMobilePhoneAppendAPNName:
       
  2566                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  2567                     CompleteAppendAPNName( aResult );
       
  2568                 break;
       
  2569             case EMobilePhoneDeleteAPNName:
       
  2570                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  2571                     CompleteDeleteAPNName( aResult );
       
  2572                 break;
       
  2573             case EMobilePhoneSetAPNControlListServiceStatus:
       
  2574                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  2575                     CompleteSetAPNControlListServiceStatus( aResult );
       
  2576                 break;
       
  2577             case EMobilePhoneGetAPNControlListServiceStatus:
       
  2578                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  2579                     CompleteGetAPNControlListServiceStatus( aDataPackage, 
       
  2580                     aResult );
       
  2581                 break;
       
  2582             case EMobilePhoneNotifyAPNListChanged:
       
  2583                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  2584                     CompleteNotifyAPNListChanged( aResult );
       
  2585                 break;
       
  2586             case EMobilePhoneNotifyAPNControlListServiceStatusChange:
       
  2587                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  2588                     CompleteNotifyAPNControlListServiceStatusChange( 
       
  2589                     aDataPackage, aResult );
       
  2590                 break;
       
  2591             case EMobilePhoneGetSecurityCodeInfo:
       
  2592                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  2593                     GetSecurityTsy()->CompleteGetSecurityCodeInfo( 
       
  2594                     aDataPackage, aResult );
       
  2595                 break;
       
  2596             case EMobilePhoneNotifySecurityCodeInfoChange:
       
  2597                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  2598                     GetSecurityTsy()->CompleteNotifySecurityCodeInfoChange( 
       
  2599                     aDataPackage, aResult );
       
  2600                 break;
       
  2601             case EMmTsyPhoneBookStoreFdnInfoIPC:
       
  2602 TFLOGSTRING("TSY: CMmMessageRouterProxy::RouteCompletion: route to phonetsy EMmTsyPhoneBookStoreFdnInfoIPC");               
       
  2603                 static_cast<CMmPhoneTsy*>( mmObject )->
       
  2604                     SaveFdnInfoDetails( aResult, aDataPackage );
       
  2605                 break;
       
  2606             default:
       
  2607                 break;
       
  2608             }
       
  2609 
       
  2610         }
       
  2611     else //special cases goes here
       
  2612         {
       
  2613         switch ( aIpc )
       
  2614             {
       
  2615             //this IPC has to be routed to
       
  2616             //the NetTsy object as is an special case. 
       
  2617             //We Force the routing.
       
  2618             case EMobileCallNotifyPrivacyConfirmation:
       
  2619                 {
       
  2620                 mmObject =iTsyDelegates-> 
       
  2621                       GetTsyObject(  CMmMessageManagerBase::EPhoneTsy );
       
  2622                 static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
       
  2623                     ReceivedCallPrivacyInformation( aDataPackage );
       
  2624                 break;
       
  2625                 }
       
  2626             case EMobileCallGetMobileCallInfo:
       
  2627                 {
       
  2628                 // If call object is not found, this call object has just 
       
  2629                 // been initiated. Inform Line object instead.
       
  2630                 // (Get mobile call information is always completed before 
       
  2631                 // call status change)
       
  2632                 TInt callId( -1 );
       
  2633                 RMobilePhone::TMobileService callMode( 
       
  2634                     RMobilePhone::EVoiceService );
       
  2635 
       
  2636                 const CCallDataPackage* callData = 
       
  2637                   reinterpret_cast<const CCallDataPackage*>(aDataPackage);
       
  2638                 callData->GetCallIdAndMode( callId, callMode );
       
  2639 
       
  2640                 mmObject = REINTERPRET_CAST( CBase*, 
       
  2641                       iMmPhone->LineList()->GetMmLineByMode( callMode ) );
       
  2642                 
       
  2643                 if ( NULL == mmObject )
       
  2644                     {
       
  2645 TFLOGSTRING("TSY: CMmMessageRouterProxy::RouteCompletion: Call object not found for mobile Call Info!");
       
  2646                     }
       
  2647                 else
       
  2648                     {
       
  2649                     // complete call added notification directly from here
       
  2650                     static_cast<CMmLineTsy*>( mmObject )->
       
  2651                         CompleteNotifyDiallingStatus( aDataPackage );
       
  2652                     }
       
  2653                 break;
       
  2654                 }
       
  2655             case EEtelCallDial:
       
  2656             case EMobileCallDialISV:
       
  2657             case EMobileCallDialNoFdnCheck:
       
  2658                 {
       
  2659                 //If data/video call creation fails (e.g when dialled 
       
  2660                 //number has not been in the FDN list), dial is completed 
       
  2661                 //when this call object has just been initiated 
       
  2662                 //(and therefore not found).
       
  2663                 TInt callId( -1 );
       
  2664                 RMobilePhone::TMobileService callMode( 
       
  2665                     RMobilePhone::EServiceUnspecified );
       
  2666 
       
  2667                 const CCallDataPackage* callData = 
       
  2668                 reinterpret_cast<const CCallDataPackage*>( aDataPackage );
       
  2669                 callData->GetCallIdAndMode( callId, callMode );
       
  2670 
       
  2671                 if ( callId == 0 && ( 
       
  2672                     callMode == RMobilePhone::ECircuitDataService || 
       
  2673                     callMode == RMobilePhone::EVoiceService || 
       
  2674                     callMode == RMobilePhone::EAuxVoiceService ) )
       
  2675                     {
       
  2676                     //check if data call exists
       
  2677                     CMmDataCallTsy* mmCall = 
       
  2678                       reinterpret_cast<CMmDataCallTsy*>(
       
  2679                         iMmPhone->CallList()->
       
  2680                             GetMmCallByMode( callMode ) );
       
  2681 
       
  2682                     if ( NULL == mmCall )
       
  2683                         {
       
  2684 TFLOGSTRING("TSY: CMmMessageRouterProxy::RouteCompletion: Call object not found for Dial!");
       
  2685                         }
       
  2686                     else
       
  2687                         {
       
  2688                         //find object that requested dial
       
  2689                         if ( ( mmCall->IsServiceLocallyRequested( 
       
  2690                             CMmCallTsy::EMultimodeCallDial ) )
       
  2691                             || ( mmCall->IsServiceLocallyRequested( 
       
  2692                             CMmCallTsy::EMultimodeCallDialISV ) ) 
       
  2693                             || (mmCall->IsServiceLocallyRequested( 
       
  2694                             CMmCallTsy::EMultimodeMobileCallDialEmergencyCall ) ) 
       
  2695                             || ( mmCall->IsServiceLocallyRequested( 
       
  2696                             CMmCallTsy::
       
  2697                             EMultimodeCallDialNoFdnCheck ) ) )
       
  2698                             {
       
  2699                             for( TInt i = 0; i < iMmPhone->CallList()->
       
  2700                                 GetNumberOfObjects(); i++ )
       
  2701                                 {
       
  2702                                 mmCall = reinterpret_cast<CMmDataCallTsy*>(
       
  2703                                     iMmPhone->CallList()->
       
  2704                                                     GetMmCallByIndex(i) );
       
  2705                                                     
       
  2706                                 if ( ( mmCall->ServiceRequested( 
       
  2707                                     CMmCallTsy::EMultimodeCallDial ) 
       
  2708                                       && mmCall->CallMode() == callMode )
       
  2709                                       || ( mmCall->ServiceRequested( 
       
  2710                                       CMmCallTsy::EMultimodeCallDialISV ) 
       
  2711                                     && mmCall->CallMode() == callMode ) )
       
  2712                                     {
       
  2713 TFLOGSTRING("TSY: CMmMessageRouterProxy::RouteCompletion: Special case before CompleteDial");                                    
       
  2714                                     mmCall->CompleteDial( aResult );
       
  2715                                     break;
       
  2716                                     }
       
  2717                                     
       
  2718                                 if  ( mmCall->ServiceRequested( 
       
  2719                                     CMmCallTsy::EMultimodeCallDialNoFdnCheck ) 
       
  2720                                     && mmCall->CallMode() == callMode )
       
  2721                                     {
       
  2722 TFLOGSTRING("TSY: CMmMessageRouterProxy::RouteCompletion: Special case before CompleteDialNoFdn");                                          
       
  2723                                     mmCall->CompleteDialNoFdn( aResult );
       
  2724                                     break;
       
  2725                                     }
       
  2726                                 }
       
  2727                             }
       
  2728                         }
       
  2729                     }
       
  2730                 break;
       
  2731                 }
       
  2732             default:
       
  2733                 break;
       
  2734             }
       
  2735         }
       
  2736     }
       
  2737     
       
  2738 // ---------------------------------------------------------------------------
       
  2739 // CMmMessageRouterProxy::RegisterTsyObject
       
  2740 // Registers a Tsy object for request and notification completions
       
  2741 // (other items were commented in a header).
       
  2742 // ---------------------------------------------------------------------------
       
  2743 //  
       
  2744 void CMmMessageRouterProxy::SetPhoneTsy(
       
  2745     CMmPhoneTsy* aMmPhone )
       
  2746     {
       
  2747     iMmPhone = aMmPhone;
       
  2748     }
       
  2749 
       
  2750 //  End of File