telephonyserverplugins/common_tsy/commontsy/src/mmtsy/CMmMessageRouterProxy.cpp
branchopencode
changeset 24 6638e7f4bd8f
parent 23 6b1d113cdff3
child 77 930a53cdc2d3
--- a/telephonyserverplugins/common_tsy/commontsy/src/mmtsy/CMmMessageRouterProxy.cpp	Mon May 03 13:37:20 2010 +0300
+++ b/telephonyserverplugins/common_tsy/commontsy/src/mmtsy/CMmMessageRouterProxy.cpp	Thu May 06 15:10:38 2010 +0100
@@ -1,2757 +1,2757 @@
-// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-
-
-//  INCLUDE FILES
-#include "cmmmessagerouterproxy.h"
-#include "cmmvoicecalltsy.h"
-#include "cmmdatacalltsy.h"
-#include "cmmcallextinterface.h"
-#include "cmmconferencecalltsy.h"
-#include "cmmconferencecallextinterface.h"
-#include "cmmphonetsy.h"
-#include "cmmlinetsy.h"
-#include "cmmnettsy.h"
-#include <ctsy/serviceapi/mmtsy_ipcdefs.h>
-#include "cmmonstoretsy.h"
-#include "cmmenstoretsy.h"
-#include "cmmphonebookstoretsy.h"
-#include "cmmphoneextinterface.h"
-#include "cmmdtmftsy.h"
-#include "cmmlinelist.h"
-#include "cmmcalllist.h"
-#include "cmmpblist.h"
-#include "cmmsupplservtsy.h"
-#include "Cmmpacketservicetsy.h"
-#include "cmmpacketservicegsmwcdmaext.h"
-#include "cmmpacketqosgsmwcdmaext.h"
-#include "Cmmpacketcontextlist.h"
-#include "cmmmbmscontextlist.h"
-#include "cmmmbmscontexttsy.h"
-#include "CMmCustomTsy.h"
-#include "CMmCustomGsmExt.h"
-#include "cmmussdtsy.h"
-#include "cmmbroadcasttsy.h"
-#include "CMmSimLockTsy.h"
-#include "CMmWimTsy.h"
-#include "CMmSIMTsy.h"
-#include "cmmsecuritytsy.h"
-#include "cmmsmstsy.h"
-#include "cmmsmsstoragetsy.h"
-#include "CMmCustomSecurityTsy.h"
-#include "ctsydelegates.h"
-#include <satcs.h>
-
-
-CMmMessageRouterProxy::CMmMessageRouterProxy()
-    {
-    }
-    
- CMmMessageRouterProxy* CMmMessageRouterProxy::NewL( 
-    CTsyDelegates& aTsyDelegates )
-    {
-TFLOGSTRING("TSY: CMmMessageRouterProxy::NewL." );    
-    CMmMessageRouterProxy* const routerproxy =
-        new ( ELeave ) CMmMessageRouterProxy();
-    CleanupStack::PushL( routerproxy );
-	routerproxy->iTsyDelegates = &aTsyDelegates;
-    routerproxy->ConstructL();
-    CleanupStack::Pop();
-    return routerproxy;	
-    }
-    
-CMmMessageRouterProxy::~CMmMessageRouterProxy()
-	{	
-	}
-	
-void CMmMessageRouterProxy::ConstructL()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CMmMessageRouterProxy::Complete 
-// Complete with a data package
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-void CMmMessageRouterProxy::Complete( 
-    TInt aIpc, 
-    CMmDataPackage* aData, 
-    TInt aResult )
-	{
-TFLOGSTRING3("TSY: CMmMessageRouterProxy::Complete. IPC = %d, result: %d", aIpc, aResult);
-	RouteCompletion( aIpc, aData, aResult ); 
-	}
-	
-// ---------------------------------------------------------------------------
-// CMmMessageRouterProxy::Complete 
-// Complete without a data package
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-void CMmMessageRouterProxy::Complete( TInt aIpc, TInt aResult )
-	{    
-    CMmDataPackage emptyDataPackage;
-	Complete( aIpc, &emptyDataPackage, aResult );
-	}
-	
-// ---------------------------------------------------------------------------
-// CMmMessageRouterProxy::RouteCompletion
-// Completes a request or notification via the specific Tsy object, based on
-// IPC number and data package
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CMmMessageRouterProxy::RouteCompletion(
-    TInt aIpc,
-    CMmDataPackage* aDataPackage,
-    TInt aResult )
-    {
-    TRAP_IGNORE( RouteCompletionL( aIpc, aDataPackage, aResult ) );
-    }
-
-// ---------------------------------------------------------------------------
-// CMmMessageRouterProxy::RouteCompletionL
-// Completes a request or notification via the specific Tsy object, based on
-// IPC number and data package
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-void CMmMessageRouterProxy::RouteCompletionL(
-    TInt aIpc,
-    CMmDataPackage* aDataPackage,
-    TInt aResult )
-    {
-    //Literals used in routing
-    _LIT( KStringExternal,  "External"  );
-    _LIT( KStringExternal2, "External2" );
-    
-    //Object to complete
-    CBase* mmObject = NULL;
-      
-     //Get mmObject to complete to
-     switch ( aIpc )
-        {
-        // Call Functionality
-        case EMobileCallHold:
-        case EEtelCallDial:
-        case EEtelCallAnswer:
-        case EEtelCallHangUp:
-        case EMobileCallResume:
-        case EMobileCallSwap:
-        case EMobileCallTransfer:
-        case EMobileCallGoOneToOne:
-        case EMobileCallNotifyMobileCallStatusChange:
-        case EMobileCallGetMobileCallInfo:
-        case EMobileCallNotifyCallEvent:
-        case EMobileConferenceCallGetMobileCallInfo:
-        case EMobileCallDialISV:
-        case EMobileCallAnswerISV:
-        case EMobileCallDialEmergencyCall:
-        case EMobileCallReceiveUUI:
-        case EMobileCallDialNoFdnCheck: 
-        // CSD functionality
-        case EMobileCallSetDynamicHscsdParams:
-        case EMobileCallNotifyMobileDataCallCapsChange:
-        case EMobileCallNotifyHscsdInfoChange:
-        case EEtelCallGetCallParams:
-        case EEtelCallGetBearerServiceInfo:
-        	{
-        	TInt callId( -1 );
-	        RMobilePhone::TMobileService callMode( 
-	            RMobilePhone::EVoiceService );
-
-	        const CCallDataPackage* callData = REINTERPRET_CAST( 
-	            const CCallDataPackage*, aDataPackage );
-
-	        callData->GetCallIdAndMode( callId, callMode );
-
-	        //call object can be usually reasoned by Call ID
-	        mmObject = REINTERPRET_CAST( CBase*, 
-                iMmPhone->CallList()->GetMmCallById( callId ) );	
-        	}
-            break;
-            
-		// Line Functionality
-        case EEtelLineNotifyCallAdded:
-        case EEtelLineNotifyIncomingCall:
-        	{
-        	TInt callId( -1 );
-	        RMobilePhone::TMobileService callMode( 
-	            RMobilePhone::EVoiceService );
-	            
-	        const CCallDataPackage* callData = REINTERPRET_CAST( 
-	            const CCallDataPackage*, aDataPackage );
-	            
-	        callData->GetCallIdAndMode( callId, callMode );
-
-            //correct line object is determined using the call mode
-            mmObject = REINTERPRET_CAST( CBase*,
-                iMmPhone->LineList()->GetMmLineByMode( callMode ) );
-        	}
-            break;
-
-        // Conference call functionality
-        case EMobileConferenceCallCreateConference:
-        case EMobileConferenceCallAddCall:
-        case EMobileConferenceCallSwap:
-        case EMobileConferenceCallHangUp:
-        case EMobileConferenceCallNotifyConferenceStatusChange:
-        case EMobileConferenceCallNotifyConferenceEvent:
-
-        // case EMobileConferenceCallGetCaps:
-        // case EMobileConferenceCallNotifyCapsChange:
-        // case EMobileConferenceCallEnumerateCalls:
-        // case EMobileConferenceCallGetConferenceStatus:
-
-        // case EMobileConferenceCallNotifyCapsChangeCancel:
-        // case EMobileConferenceCallCreateConferenceCancel:
-        // case EMobileConferenceCallAddCallCancel:
-        // case EMobileConferenceCallSwapCancel:
-        // case EMobileConferenceCallHangUpCancel:
-        // case EMobileConferenceCallNotifyConferenceStatusChangeCancel:
-        // case EMobileConferenceCallNotifyConferenceEventCancel:
-        	mmObject = iTsyDelegates->
-                GetTsyObject( CMmMessageManagerBase::EConferenceCallTsy );
-            break;
-            
-		// Phonebook functionality
-        // case EMobilePhoneReadDTMFTones:       not supported
-        // case EMobilePhoneReadDTMFTonesCancel: not supported
-        // case EMobilePhoneStartDTMFTone:                no completion
-        // case EMobilePhoneContinueDTMFStringSending:    no completion
-        // case EMobilePhoneGetDTMFCaps:                  no DOS call required
-        // case EMobilePhoneNotifyDTMFCapsChange:         no DOS call required
-        // case EMobilePhoneNotifyDTMFCapsChangeCancel:   no DOS call required
-        // case EMobilePhoneNotifyStopInDTMFStringCancel: no DOS call required
-        // case EMobilePhoneNotifyDTMFEventCancel: 		  no DOS call required
-        case EMobilePhoneNotifyDTMFEvent:
-         	mmObject = iTsyDelegates->GetTsyObject( CMmMessageManagerBase::EDtmfTsy );
-			break;
-			
-        case EMmTsyPhoneBookStoreInitIPC:
-        case EMmTsyPhoneBookStoreCacheIPC:
-        case EMmTsyPhoneBookStoreReadIPC:
-        case EMmTsyPhoneBookStoreWriteIPC:
-        case EMmTsyPhoneBookStoreGetInfoIPC:
-        case EMmTsyPhoneBookStoreDeleteIPC:
-        case EMmTsyPhoneBookStoreDeleteAllIPC:
-        case EMmTsyPhoneBookStoreResetCacheIPC:
-        	{
-        	const CPhoneBookDataPackage* phonebookData = REINTERPRET_CAST( 
-        	    const CPhoneBookDataPackage*, aDataPackage );
-
-	        TName phoneBookName;
-	        phonebookData->GetPhoneBookName( phoneBookName );
-TFLOGSTRING2("TSY: CMmMessageRouterProxy::RouteCompletion: PB Name: %S", &phoneBookName);   
-
-	        for( TInt i = 0; i < iMmPhone->PBList()->GetNumberOfObjects(); i++ )
-	            {
-	            CMmPhoneBookStoreTsy* pbStore = iMmPhone->PBList()->
-	                GetMmPBByIndex( i );
-
-	            if ( 0 == pbStore->PhoneBookName()->CompareF( phoneBookName ) )
-	                {
-	                mmObject = static_cast<CBase*>( pbStore );
-	                }
-	            }
-	        if ( NULL == mmObject )
-	            {
-TFLOGSTRING("TSY: CMmMessageRouterProxy::RouteCompletion: PB object not found!");
-				iMmPhone->SetPBInitActiveStatus( EFalse );
-	            }
-        	}
-            break;
-		// ENStore functionality
-        case EMmTsyENStoreGetInfoIPC:
-        case EMmTsyENStoreReadIPC:
-        case EMmTsyENStoreReadAllPhase1IPC:
-        	mmObject = iTsyDelegates->
-                GetTsyObject( CMmMessageManagerBase::EENStoreTsy  );
-            break;
-            
-		// ONStore functionality
-        case EMmTsyONStoreGetInfoIPC:
-        case EMmTsyONStoreReadIPC:
-        case EMmTsyONStoreWriteIPC:
-        case EMmTsyONStoreDeleteIPC:
-        case EMmTsyONStoreDeleteAllIPC:
-        case EMmTsyONStoreReadAllPhase1IPC:
-        case EMmTsyONStoreStoreAllIPC:
-		case EMmTsyONStoreReadEntryIPC:
-		case EMmTsyONStoreReadSizeIPC:
-		case EMmTsyONStoreWriteSizeIPC:
-		case EMmTsyONStoreWriteEntryIPC:
-        	mmObject = iTsyDelegates->GetTsyObject( 
-        	    CMmMessageManagerBase::EONStoreTsy  );
-            break;
-		
-		//Packet data functionality
-        case EPacketAttach:
-        case EPacketDetach:
-        case EPacketGetNtwkRegStatus:
-        case EPacketSetAttachMode:
-        case EPacketRejectActivationRequest:
-        case EPacketGetAttachMode:
-        case EPacketSetDefaultContextParams:
-        case EPacketNotifyContextAdded:
-        case EPacketNotifyStatusChange:
-        case EPacketNotifyDynamicCapsChange:
-        case EPacketNotifyMSClassChange:
-        case EPacketSetPrefBearer:
-        case EPacketNotifyChangeOfNtwkRegStatus:
-        case EMmTsyNotifyEGprsInfoChangeIPC: // dummy internal IPC
-        case EPacketNotifyAttachModeChange:
-        case EPacketNotifyContextActivationRequested:
-        case EPacketContextInitialiseContext:
-        case EPacketQoSSetProfileParams:
-        case EPacketQoSNotifyProfileChanged:
-        case EPacketNotifyReleaseModeChange:
-        case EPacketContextSetConfig:
-        case EPacketContextDelete:
-        case EPacketContextNotifyDataTransferred:
-        case EPacketContextActivate:
-        case EPacketContextNotifyConfigChanged:
-        case EPacketContextNotifyConnectionSpeedChange:
-        case EPacketContextNotifyStatusChange:
-        case EPacketContextDeactivate:
-        case EPacketContextGetDataVolumeTransferred:
-        case EPacketContextModifyActiveContext:
-        case ECustomSetAlwaysOnMode:
-        case EPacketNotifyTransferCapsIPC:
-        case EPacketEnumerateMbmsActiveServiceList:
-        case EPacketNotifyMbmsServiceAvailabilityChange:
-        case EPacketUpdateMbmsMonitorServiceList:
-        case EPacketGetMbmsNetworkServiceStatus:
-        case EPacketNotifyMbmsNetworkServiceStatusChange:
-        case EPacketContextUpdateMbmsSessionList:
-        case EPacketGetStaticCaps:
-        case EPacketEnumerateMbmsMonitorServiceList:
-        case ECtsyPacketMbmsInitialiseContextComp:
-        case ECtsyPacketMbmsContextNotifyConfigChanged:
-#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
-        case EPacketContextNotifyConnectionInfoChange: 
-#endif // SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
-        	mmObject = REINTERPRET_CAST( 
-                CBase*, iMmPhone->PacketDataSession() );
-            break;
-
-        // USSD functionality
-        case EMobileUssdMessagingSendRelease:
-        case EMobileUssdMessagingSendMessage:
-        case EMobileUssdMessagingSendMessageNoFdnCheck:
-        case EMobileUssdMessagingReceiveMessage:
-        case EMobileUssdMessagingNotifyNetworkRelease:
-        	mmObject = iTsyDelegates->GetTsyObject( 
-        	    CMmMessageManagerBase::EUssdMessagingTsy );
-            break;
-            
-		// Broadcast functionality
-        case EMmTsyGsmBroadcastNotifyMessageReceived:
-        case EMmTsyWcdmaBroadcastNotifyMessageReceived:
-        case EMobileBroadcastMessagingReceiveMessage:
-        case EMobileBroadcastMessagingReceiveMessageCancel:
-        case EMobileBroadcastMessagingSetFilterSetting:
-        case EMobileBroadcastMessagingSetLanguageFilter:
-        case EMobileBroadcastMessagingStoreIdList:
-        	mmObject = iTsyDelegates->GetTsyObject(  
-        	    CMmMessageManagerBase::EBroadcastMessagingTsy );
-			break;
-			
-		// SMS functionality
-        case EMobileSmsMessagingGetMessageStoreInfo:
-        case EMmTsyActivateSmsRouting:
-        case EMmTsyDeactivateSmsRouting:
-        case EMobileSmsMessagingReceiveMessage:
-        case EMobileSmsMessagingSendMessage:
-        case EMobileSmsMessagingSendMessageNoFdnCheck: 
-        case EMmTsySmsSendSatMessage:
-        case EMobileSmsMessagingResumeSmsReception:
-        case EMobileSmsMessagingGetSmspListPhase1:
-        case EMobileSmsMessagingStoreSmspList:
-        case EMobileSmsMessagingAckSmsStored:
-        case EMobileSmsMessagingNackSmsStored:
-        case EMobileSmsMessagingSetMoSmsBearer:
-        	mmObject = iTsyDelegates->GetTsyObject(  
-        	    CMmMessageManagerBase::ESmsMessagingTsy );
-            break;
-            
-		// Storage functionality
-        case EMobilePhoneStoreGetInfo:
-        case EMobilePhoneStoreDelete:
-        case EMobilePhoneStoreDeleteAll:
-        case EMobilePhoneStoreRead:
-        case EMobilePhoneStoreWrite:
-        case EMobilePhoneStoreReadAllPhase1:
-        	mmObject = iTsyDelegates->GetTsyObject(  
-        	    CMmMessageManagerBase::EPhoneStoreTsy );
-            break;
-
-        // Custom Tsy functionality
-        case ECustomCancelUssdSessionIPC:
-        case ECustomSsAdditionalInfoNotificationIPC:
-        case ECustomNotifySsNetworkEventIPC:
-        case ECustomNotifySsRequestCompleteIPC:
-        case ECustomNotifyDtmfEventIPC:
-        case ECustomGetDiagnosticOctetsIPC:
-        case ECustomGetRemoteAlertingToneStatusIPC:
-        case ECustomClearCallBlackListIPC:
-        case ECustomCheckEmergencyNumberIPC:
-        case ECustomGetLifeTimeIPC:
-        case ECustomTerminateCallIPC:
-        case ECustomGetAlsBlockedIPC:
-        case ECustomSetAlsBlockedIPC:
-        case ECustomCheckAlsPpSupportIPC:
-        case ECustomCheckTwoDigitDialSupportIPC:
-        case ECustomGetCipheringInfoIPC:
-        case ECustomNotifyCipheringInfoChangeIPC:
-        case ECustomNotifyNSPSStatusIPC:
-        case ECustomNetWakeupIPC:
-        case ECustomGetOperatorNameIPC:
-        case ECustomResetNetServerIPC:
-        case ECustomNotifyNetworkConnectionFailureIPC:
-        case ECustomGetSystemNetworkModesIPC:
-        case ECustomSetSystemNetworkModeIPC:
-        case ECustomGetNetworkProviderNameIPC:
-        case ECustomGetCurrentSystemNetworkModesIPC:
-        case ECustomSatRefreshCompleteNotificationIPC:
-        case ECustomReadSimFileIPC:
-        case ECustomSimLockActivateIPC:
-        case ECustomSimLockDeActivateIPC:
-        case ECustomSendAPDUReqIPC:
-        case ECustomSimWarmResetIPC:
-        case ECustomGetATRIPC:
-        case ECustomSendAPDUReqV2IPC:
-        case ECustomGetSimCardReaderStatusIPC:
-        case ECustomNotifySimCardStatusIPC:
-        case ECustomPowerSimOnIPC:
-        case ECustomPowerSimOffIPC:
-        case ECustomStartSimCbTopicBrowsingIPC:
-        case ECustomDeleteSimCbTopicIPC:
-        case EReadViagHomeZoneParamsIPC:
-        case EReadViagHomeZoneCacheIPC:
-        case EWriteViagHomeZoneUHZIUESettingsIPC:
-        case EWriteViagHomeZoneCacheIPC:
-        case ECustomGetSimAuthenticationDataIPC:
-        case ECustomSetDriveModeIPC:
-        case ECustomNotifyRauEventIPC:
-        case ECustomReadHSxPAStatusIPC:
-        case ECustomWriteHSxPAStatusIPC:
-        case ECustomNotifyHSxPAStatusIPC:
-        case ECustomGetIccCallForwardingStatusIPC:
-        case ECustomNotifyIccCallForwardingStatusChangeIPC:
-        case ECustomGetCellInfoIPC:
-        case ECustomNotifyCellInfoChangeIPC:
-        case ECustomGetBandSelectionIPC:
-        case ECustomSetBandSelectionIPC:
-        case ECustomNotifyRemoteAlertingToneStatusChangeIPC:
-        case ECustomGetServiceTableSupportbyApplicationIPC:
-        case ECustomGetProgrammableOperatorLogoIPC:
-        	mmObject = iTsyDelegates->GetTsyObject( 
-        	    CMmMessageManagerBase::ECustomTsy );
-            break;
-
-        // Security (Custom) functionality
-        case ECustomIsBlockedIPC:
-        case ECustomCheckSecurityCodeIPC:
-        //case ECustomCheckEmergencyNumberIPC:
-        //case ECustomSatRefreshCompleteNotificationIPC:
-        case ECustomDisablePhoneLockIPC:
-        case ECustomCheckSecurityCodeCancelIPC:
-        case EMmTsySecurityGetSimActivePinStateIPC:
-        	mmObject = iTsyDelegates->GetTsyObject( 
-        	    CMmMessageManagerBase::ESecurityTsy );
-            break;
-        // This is a special case
-        case EMobileCallNotifyPrivacyConfirmation:
-            break; 
-        default:
-        	mmObject = iTsyDelegates->GetTsyObject( 
-        	    CMmMessageManagerBase::EPhoneTsy );
-            break;
-        }
-        
-	// Route completion to right TSY 	
-    if ( NULL != mmObject )
-        {
-        switch ( aIpc )
-            {
-            case EMobileCallHold:                
-                static_cast<CMmVoiceCallTsy*>( mmObject )->
-                    CompleteHold( aResult );
-                break;
-            case EMobileCallDialNoFdnCheck:
-            	static_cast<CMmCallTsy*>( mmObject )->
-                	CompleteDialNoFdn( aResult );
-            	break;
-            case EEtelCallDial:
-            case EMobileCallDialISV:                
-                static_cast<CMmCallTsy*>( mmObject )->
-                    CompleteDial( aResult );
-                break;                
-            case EEtelCallAnswer:
-            case EMobileCallAnswerISV:                
-                static_cast<CMmCallTsy*>( mmObject )->
-                    CompleteAnswerIncomingCall( aResult );
-                break;                
-            case EEtelCallHangUp:                
-                static_cast<CMmCallTsy*>( mmObject )->
-                    CompleteHangUp( aResult );
-                break;                
-            case EMobileCallResume:                
-                static_cast<CMmVoiceCallTsy*>( mmObject )->
-                    CompleteResume( aResult );
-                break;                
-            case EMobileCallSwap:                
-                static_cast<CMmVoiceCallTsy*>( mmObject )->
-                    CompleteSwap( aResult );
-                break;                
-            case EMobileCallTransfer:                
-                static_cast<CMmVoiceCallTsy*>( mmObject )->
-                    CompleteTransfer( aResult );
-                break;                
-            case EMobileCallGoOneToOne:                
-                static_cast<CMmVoiceCallTsy*>( mmObject )->
-                    CompleteGoOneToOne( aResult );
-                break;                
-            case EMobileCallNotifyMobileCallStatusChange:                
-                static_cast<CMmCallTsy*>( mmObject )->
-                    CompleteNotifyStatusChange( aResult, aDataPackage );
-                // phone idicator status may change
-                iMmPhone->CompleteNotifyIndicatorChange();
-                break;                
-            case EMobileCallGetMobileCallInfo:                
-                static_cast<CMmCallTsy*>( mmObject )->
-                    CompleteNotifyMobileCallInfoChange( aDataPackage );
-                break;                
-            case EMobileCallNotifyCallEvent:                
-                static_cast<CMmCallTsy*>( mmObject )->
-                    CompleteNotifyRemoteCallEvent( aDataPackage );
-                break;
-            case EMobileCallReceiveUUI:                
-                static_cast<CMmVoiceCallTsy*>( mmObject )->
-                    CompleteReceiveUUI( aDataPackage, aResult );
-                break;
-            case EMobileConferenceCallGetMobileCallInfo:                
-                static_cast<CMmCallTsy*>( mmObject )->
-                    CompleteNotifyMobileCallInfoChange( aDataPackage );
-                break;                
-            case EEtelLineNotifyCallAdded:                
-                static_cast<CMmLineTsy*>( mmObject )->
-                    CompleteNotifyAddBypassingCall( aDataPackage );
-                break;                
-            case EEtelLineNotifyIncomingCall:                
-                static_cast<CMmLineTsy*>( mmObject )->
-                    CompleteNotifyIncomingCall( aDataPackage );
-                break;                
-            case EMobilePhoneSetNetworkSelectionSetting:                
-                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
-                    CompleteSetNetworkSelectionSetting( aResult );
-                break;                
-            case EMobilePhoneNotifyNetworkRegistrationStatusChange:                
-                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
-                    CompleteNotifyNetworkRegistrationStatusChange( 
-                    aDataPackage, aResult );
-                // phone indicator status may change
-                iMmPhone->CompleteNotifyIndicatorChange();
-                break;                
-            case EMobilePhoneNotifyModeChange:                
-                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
-                    CompleteNotifyModeChange( aDataPackage, aResult );
-                break;                
-            case EMobilePhoneNotifyCurrentNetworkChange:                
-                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
-                    CompleteNotifyCurrentNetworkChange( 
-                    aDataPackage, aResult );
-                break;                
-            case EMobilePhoneNotifyNetworkSelectionSettingChange:                
-                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
-                    CompleteNotifyNetworkSelectionSettingChange( 
-                                                          aDataPackage );
-                break;                
-            case EMobilePhoneSelectNetwork:                
-                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
-                    CompleteSelectNetwork( aResult );
-                break;                
-            case EMobilePhoneGetDetectedNetworksV2Phase1:
-                {
-                CMmNetTsy* netTsy = 
-                    static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy();
-
-                netTsy->ProcessGetDetectedNetworksPhase1L(  
-                    aDataPackage, aResult );
-                break;
-                }
-            case EMobilePhoneAuthorizationInfoPhase1:
-                {
-                CMmNetTsy* netTsy = 
-                    static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy();                
-                netTsy->ProcessGetAuthorizationInfoPhase1L(
-                    aDataPackage, aResult );
-                break;
-                }
-            case EMobilePhoneGetHomeNetwork:
-                {
-                CMmPhoneTsy* phoneTsy = 
-                    static_cast<CMmPhoneTsy*>( mmObject );
-                static_cast<CMmPhoneExtInterface*>( phoneTsy->
-                    PhoneExtInterface() )->CompleteGetHomeNetwork( 
-                    aDataPackage );
-                break;
-                }
-			case EMmTsySimRefreshRegisterIPC:
-            	{
-            	CMmPhoneTsy* phoneTsy =
-                	static_cast<CMmPhoneTsy*>( mmObject );
-            	phoneTsy->CompleteSimRefreshRegister( aResult );
-            	break;
-            	}
-            case EMobilePhoneGetDetectedNetworksCancel:
-                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
-                    CompleteGetDetectedNetworksCancel( aResult );
-                break;
-            case EMobilePhoneSelectNetworkCancel:
-                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
-                    CompleteSelectNetworkCancel( aResult );
-                break;
-            case EMobilePhoneNotifySignalStrengthChange:
-                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
-                    CompleteNotifySignalStrengthChange( aDataPackage );
-                break;
-            case EMobilePhoneNotifyNITZInfoChange:
-                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
-                    CompleteNotifyNITZInfoChange( aDataPackage );
-                break;
-            case ECtsyPhoneCellInfoComp:
-                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
-                    CompleteCellInfoReq( aDataPackage, aResult );
-                break;            	            	
-            case ECtsyPhoneCellInfoIndComp:
-                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
-                	CompleteCellInfoIndReq( aDataPackage, aResult );
-                break;            	
-            case EMobilePhoneGetNetworkRegistrationStatus:
-                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
-                    CompleteGetNetworkRegistrationStatus( aResult );
-                break;
-            case EMobilePhoneGetCipheringIndicatorStatus:
-                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
-                    CompleteGetCipheringIndicatorStatus( 
-                    aDataPackage, aResult );
-                break;
-            case EMobilePhoneNotifyNetworkSecurityLevelChange:
-                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
-                    CompleteNotifyNetworkSecurityLevelChange( 
-                    aDataPackage );
-                break;
-            
-      		case EMobilePhoneGetCurrentActiveUSimApplication:
-                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
-                    CompleteGetCurrentActiveUSimApplication( 
-                    aDataPackage, aResult );
-                break;                                
-#ifdef USING_CTSY_DISPATCHER
-    		case ECtsyUpdateLifeTimeComp:
-            	{
-            	CMmPhoneTsy* phoneTsy =
-                	static_cast<CMmPhoneTsy*>( mmObject );
-            	phoneTsy->CompleteUpdateLifeTimer( aResult );
-            	break;
-            	}
-#else
-				case EMmTsyUpdateLifeTimeIPC:
-            	{
-            	CMmPhoneTsy* phoneTsy =
-                	static_cast<CMmPhoneTsy*>( mmObject );
-            	phoneTsy->CompleteUpdateLifeTimer( aResult );
-            	break;
-            	}                                 
-#endif //USING_CTSY_DISPATCHER
-      		case ECtsyPhoneTerminateAllCallsComp:
-      			static_cast<CMmPhoneTsy*>( mmObject )->
-      				CompleteTerminateAllCallsReq( aResult );
-      			break;
-            case ECtsyPhoneTerminateActiveCallsComp:
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                    CompleteTerminateActiveCallsReq( aResult );
-                break;
-                
-            // Conference call functionality
-            case EMobileConferenceCallCreateConference:                
-                static_cast<CMmConferenceCallTsy*>( mmObject )->
-                    CompleteCreateConference( aResult );
-                break;                
-            case EMobileConferenceCallAddCall:                
-                static_cast<CMmConferenceCallTsy*>( mmObject )->
-                    CompleteAddCall( aResult );
-                break;                
-            case EMobileConferenceCallSwap:                
-                static_cast<CMmConferenceCallTsy*>( mmObject )->
-                    CompleteSwap( aResult );
-                break;                
-            case EMobileConferenceCallHangUp:                
-                static_cast<CMmConferenceCallTsy*>( mmObject )->
-                    CompleteHangUp( aResult );
-                break;                
-            case EMobileConferenceCallNotifyConferenceStatusChange:                
-                static_cast<CMmConferenceCallTsy*>( mmObject )->
-                    CompleteNotifyConferenceStatusChange();
-                break;                
-            case EMobileConferenceCallNotifyConferenceEvent:
-                static_cast<CMmConferenceCallTsy*>( mmObject )->
-                    GetActiveConferenceCallExtension()->
-                    CompleteNotifyConferenceEvent( aDataPackage );
-                break;
-            // case EMobileConferenceCallGetCaps:
-            // case EMobileConferenceCallNotifyCapsChange:
-            // case EMobileConferenceCallEnumerateCalls:
-            // case EMobileConferenceCallGetConferenceStatus:
-
-            // case EMobileConferenceCallNotifyCapsChangeCancel:
-            // case EMobileConferenceCallCreateConferenceCancel:
-            // case EMobileConferenceCallAddCallCancel:
-            // case EMobileConferenceCallSwapCancel:
-            // case EMobileConferenceCallHangUpCancel:
-            // case EMobileConferenceCallNotifyConferenceStatusChangeCancel:
-            // case EMobileConferenceCallNotifyConferenceEventCancel:
-
-            // DTMF functionality
-            case EMobilePhoneSendDTMFTones:                
-                static_cast<CMmPhoneTsy*>( mmObject )->GetDtmfTsy()->
-                    CompleteSendDTMFTones( aResult );
-                break;
-#ifdef USING_CTSY_DISPATCHER
-            case EMobilePhoneStartDTMFTone:
-            	static_cast<CMmPhoneTsy*>( mmObject )->GetDtmfTsy()->
-            		CompleteStartDTMFTone( aResult );
-            	break;
-            case EMobilePhoneStopDTMFTone:
-            	static_cast<CMmPhoneTsy*>( mmObject )->GetDtmfTsy()->
-            		CompleteStopDTMFTone( aResult );
-            	break;
-#else
-            case EMobilePhoneStopDTMFTone:
-#endif //USING_CTSY_DISPATCHER             	
-            case EMobilePhoneSendDTMFTonesCancel:                
-                static_cast<CMmPhoneTsy*>( mmObject )->GetDtmfTsy()->
-                    CompleteSendDTMFTonesCancel( aResult );
-                break;                
-            case EMobilePhoneNotifyStopInDTMFString:
-                static_cast<CMmPhoneTsy*>( mmObject )->GetDtmfTsy()->
-                    CompleteNotifyStopInDTMFString( aDataPackage );
-                break;
-
-            // case EMobilePhoneReadDTMFTones:       not supported
-            // case EMobilePhoneReadDTMFTonesCancel: not supported
-            // case EMobilePhoneStartDTMFTone:                no completion
-            // case EMobilePhoneContinueDTMFStringSending:    no completion
-            // case EMobilePhoneGetDTMFCaps:                  no DOS call required
-            // case EMobilePhoneNotifyDTMFCapsChange:         no DOS call required
-            // case EMobilePhoneNotifyDTMFCapsChangeCancel:   no DOS call required
-            // case EMobilePhoneNotifyDTMFEventCancel:		  no DOS call required
-            // case EMobilePhoneNotifyStopInDTMFStringCancel: no DOS call required
-
-            case EMobilePhoneNotifyDTMFEvent: 				//no DOS call required
-	           	// unpack result: a RMobilePhone::TMobilePhoneDTMFEvent
-				TInt dtmfInfo;
-				aDataPackage->UnPackData( dtmfInfo );
-				static_cast<CMmDtmfTsy*>( mmObject )->CompleteNotifyDTMFEvent( dtmfInfo );
-				break;
-            case EMmTsyPhoneBookStoreInitIPC:                
-                {
-                static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
-                    CompletePBStoreInitializationL( 
-                    aResult, aDataPackage );
-                    TBool done = EFalse;
-                    
-                    // NOTE: The statement above is redundant, as the loop below calls CompletePBStoreInitializationL
-                    // on every phonebook store. However, we need to be certain that changing the order in which
-                    // phonebook stores are initialised won't introduce side effects. (One future improvement)
-                    for( TInt i = 0; i < iMmPhone->PBList()->GetNumberOfObjects(); i++ )
-        	            {
-TFLOGSTRING("TSY: CMmMessageRouterProxy::RouteCompletion:EMmTsyPhoneBookStoreInitIPC for loop, check init statuses ");
-        	            CMmPhoneBookStoreTsy* pbStore = iMmPhone->PBList()->
-        	                GetMmPBByIndex( i );
-                        done = pbStore->IsPBInitDone();
-TFLOGSTRING3("TSY: CMmMessageRouterProxy::RouteCompletion: active: %i, done: %i",iMmPhone->IsPBInitActive(), done);
-        	            if ( iMmPhone->IsPBInitActive() && !done ) 
-        	                {
-TFLOGSTRING2("TSY: CMmMessageRouterProxy::RouteCompletion: complete also to: %S",pbStore->PhoneBookName());
-        	                mmObject = static_cast<CBase*>( pbStore );
-        	                static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
-                                CompletePBStoreInitializationL( 
-                                    aResult, aDataPackage );
-        	                }
-        	            }
-                iMmPhone->SetPBInitActiveStatus( EFalse );    
-                }
-                break;                
-            case EMmTsyPhoneBookStoreCacheIPC:                
-                static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
-                    CompleteCachingL( aResult, aDataPackage );
-                break;                
-            case EMmTsyPhoneBookStoreReadIPC:                
-                static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
-                    CompleteReadL( aResult, aDataPackage );
-                break;                
-            case EMmTsyPhoneBookStoreWriteIPC:                
-                static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
-                    CompleteWriteL( aResult, aDataPackage );
-                break;                
-            case EMmTsyPhoneBookStoreGetInfoIPC:                
-                static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
-                    CompleteCountEntries( aResult, aDataPackage );
-                break;                
-            case EMmTsyPhoneBookStoreDeleteIPC:                
-                static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
-                    CompleteDeleteL( aResult, aDataPackage );
-                break;                
-            case EMmTsyPhoneBookStoreDeleteAllIPC:                
-                static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
-                    CompleteDeleteAll( aResult, aDataPackage );
-                break;                
-            case EMmTsyPhoneBookStoreResetCacheIPC:                
-                static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
-                    ResetCacheReady();
-                static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
-                    ResetCache();
-                break;                
-            
-            // CSD functionality
-            case EEtelPhoneNotifyModemDetected:
-                {
-                RPhone::TStatus* modemStatus = NULL;
-                //unpack the data
-                aDataPackage->UnPackData( &modemStatus );
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                    CompleteNotifyModemDetected( *modemStatus );
-                break;
-                }
-            case EMobileCallSetDynamicHscsdParams:                
-                static_cast<CMmDataCallTsy*>( mmObject )->
-                    CompleteSetDynamicHscsdParams( aResult );
-                break;                
-            case EMobileCallNotifyMobileDataCallCapsChange:                
-                static_cast<CMmDataCallTsy*>( mmObject )->
-                    ActiveCallExtension()->
-                    ReceivedMobileDataCallCaps( aDataPackage );
-                break;                
-            case EMobileCallNotifyHscsdInfoChange:                
-                static_cast<CMmDataCallTsy*>( mmObject )->
-                    ActiveCallExtension()->ReceivedHscsdInfo( 
-                    aDataPackage );
-                break;                
-            case EEtelCallGetCallParams:                
-                static_cast<CMmCallTsy*>( mmObject )->
-                ActiveCallExtension()->ReceivedCallParams( aDataPackage );
-                break;                
-            case EEtelCallGetBearerServiceInfo:
-                {
-                RCall::TBearerService* bearerService = NULL;
-                aDataPackage->UnPackData( &bearerService );
-                static_cast<CMmCallTsy*>( mmObject )->
-                    ActiveCallExtension()->ReceivedBearerServiceInfo( 
-                    *bearerService );
-                break;
-                }
-            case EMmTsyENStoreGetInfoIPC:                
-                static_cast<CMmENStoreTsy*>( mmObject )->CompleteGetInfo(
-                    aResult, aDataPackage );
-                break;                
-            case EMmTsyENStoreReadIPC:                
-                static_cast<CMmENStoreTsy*>( mmObject )->CompleteRead(
-                    aResult, aDataPackage );
-                break;                
-            case EMmTsyENStoreReadAllPhase1IPC:                
-                static_cast<CMmENStoreTsy*>( mmObject )->
-                        CompleteReadAllPhase1L( aResult, aDataPackage );
-                break;                
-            case EMmTsyONStoreGetInfoIPC:                
-                static_cast<CMmONStoreTsy*>( mmObject )->CompleteGetInfo(
-                    aResult, aDataPackage );
-                break;                
-            case EMmTsyONStoreReadIPC:                
-                static_cast<CMmONStoreTsy*>( mmObject )->CompleteRead(
-                    aResult, aDataPackage );
-                break;                
-            case EMmTsyONStoreWriteIPC:                
-                static_cast<CMmONStoreTsy*>( mmObject )->CompleteWrite(
-                    aResult, aDataPackage );
-                break;                
-            case EMmTsyONStoreDeleteIPC:                
-                static_cast<CMmONStoreTsy*>( mmObject )->CompleteDelete(
-                    aResult );
-                break;                
-            case EMmTsyONStoreDeleteAllIPC:                
-                static_cast<CMmONStoreTsy*>( mmObject )->
-                    CompleteDeleteAll( aResult );
-                break;
-            case EMmTsyONStoreReadAllPhase1IPC:
-                static_cast<CMmONStoreTsy*>( mmObject )->
-                    CompleteReadAllPhase1L();
-                break;
-            case EMmTsyONStoreReadEntryIPC:
-   				STATIC_CAST( CMmONStoreTsy*, mmObject )->
-                    InternalRetrieveONListReadEntryL( 
-                    aResult, aDataPackage );
-                break;
-            case EMmTsyONStoreReadSizeIPC:
-                STATIC_CAST( CMmONStoreTsy*, mmObject )->
-                    InternalRetrieveONListReadSizeL( 
-                    aResult, aDataPackage );
-                break;
-            case EMmTsyONStoreWriteSizeIPC:
-                STATIC_CAST( CMmONStoreTsy*, mmObject )->
-                    InternalStoreAllGetSizeL( aResult, aDataPackage );
-                break;
-            case EMmTsyONStoreWriteEntryIPC:
-   				STATIC_CAST( CMmONStoreTsy*, mmObject )->
-                    InternalStoreAllWriteEntryL( aResult );
-                break;
-            case EPacketAttach:	            
-	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
-	                ActivePacketServiceExtension()->CompleteAttach( 
-                    aResult );
-	            break;	            
-	        case EPacketDetach:	            
-	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
-	                ActivePacketServiceExtension()->CompleteDetachL( 
-                    aResult );
-	            break;	            
-	        case EPacketGetNtwkRegStatus:	            
-	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
-	                ActivePacketServiceExtension()->
-                    CompleteGetNtwkRegStatus( aDataPackage, aResult );
-	            break;	            
-	            
-	        case ECustomSetAlwaysOnMode:
-            	STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
-                    CompleteSetAlwaysOn( aResult );
-            	break;	            
-	        case EPacketSetAttachMode:	            
-	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
-	                ActivePacketServiceExtension()->CompleteSetAttachMode( 
-	                aResult );
-	            break;	            
-	        case EPacketRejectActivationRequest:	            
-	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
-	                CompleteRejectActivationRequest();
-	            break;	            
-	        case EPacketGetAttachMode:	            
-	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
-	                ActivePacketServiceExtension()->CompleteGetAttachMode(
-	                aDataPackage, aResult );
-	            break;	            
-	        case EPacketSetDefaultContextParams:	            
-	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
-	                ActivePacketServiceExtension()->
-	                CompleteSetDefaultContextParams( aResult );
-	            break;	            
-	        case EPacketNotifyContextAdded:	            
-	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
-	                CompleteNotifyContextAdded( aDataPackage);
-	            break;	            
-	        case EPacketNotifyStatusChange:	            
-	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
-	                CompletePacketStatusChanged( aDataPackage, aResult );
-	            break;	            
-	        case EPacketNotifyDynamicCapsChange:	            
-	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
-	                ActivePacketServiceExtension()->
-                    CompleteDynamicCapsChange( aDataPackage );
-	            break;	            
-            case EPacketNotifyTransferCapsIPC:                  
-                STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
-                    ActivePacketServiceExtension()->
-                    CompleteTransferCapsChange( aDataPackage );
-	            break;   	                	            
-	        case EPacketNotifyMSClassChange:	          
-	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
-	                CompleteNotifyMSClassChange( aDataPackage );
-	            break;	            
-	        case EPacketSetPrefBearer:	            
-	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
-	                ActivePacketServiceExtension()->
-                    CompleteSetPreferredBearer( aResult );
-	            break;	            
-	        case EPacketNotifyChangeOfNtwkRegStatus:	            
-	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
-	                CompleteNotifyChangeOfNtwkRegStatus( aDataPackage, aResult );
-	            break;	            
-	        case EMmTsyNotifyEGprsInfoChangeIPC:	            
-	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
-	                CompleteNotifyEGprsInfoChange( aDataPackage );
-	            break;	            
-	        case EPacketNotifyAttachModeChange:	            
-	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
-	                PreferredBearerChanged( aDataPackage );
-	            break;	            
-	        case EPacketNotifyContextActivationRequested:	            
-	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
-	                CompleteNotifyContextActivationRequested( 
-                        aDataPackage );
-	            break;	            
-            case EPacketNotifyMbmsNetworkServiceStatusChange:
-            	static_cast<CMmPacketServiceTsy*>(mmObject)->
-            	CompleteNotifyMbmsNetworkServiceStatusChange(aDataPackage, aResult);
-            	break;
-            case EPacketNotifyMbmsServiceAvailabilityChange:
-            	static_cast<CMmPacketServiceTsy*>(mmObject)->
-            	CompleteNotifyMbmsServiceAvailabilityChangeL(aDataPackage, aResult);
-            	break;
-            case EPacketGetMbmsNetworkServiceStatus:
-            	static_cast<CMmPacketServiceTsy*>(mmObject)->
-            	CompleteGetMbmsNetworkServiceStatus(aDataPackage, aResult);
-            	break;
-            case EPacketGetStaticCaps:
-            	static_cast<CMmPacketServiceTsy*>(mmObject)->
-            	ActivePacketServiceExtension()->CompleteGetStaticCaps(aDataPackage, aResult);
-            	break;
-            case EPacketEnumerateMbmsMonitorServiceList:
-            	{
-            	if (KErrNone == aResult)
-                    { 
-                    TInt maxMonitorValue;
-                    aDataPackage->UnPackData( maxMonitorValue );
-                    static_cast<CMmPacketServiceTsy*>(mmObject)->CompleteMaxMonitoredServicesChange( maxMonitorValue );
-                    }	
-            	}
-            	break;	
-            case EPacketUpdateMbmsMonitorServiceList: 
-	            static_cast<CMmPacketServiceTsy*> ( mmObject )
-	                ->CompleteUpdateMbmsMonitorServiceList( aDataPackage, 
-	                    aResult );	            
-                break;
-	        case EPacketContextInitialiseContext:
-	            {
-	            TInfoName* contextName = NULL;
-#ifdef USING_CTSY_DISPATCHER
-	            TDesC* channelId = NULL;
-	            aDataPackage->UnPackData(&contextName, &channelId);
-	            __ASSERT_DEBUG(contextName,User::Invariant());
-	            __ASSERT_DEBUG(channelId,User::Invariant());
-#else
-	            aDataPackage->UnPackData( &contextName);
-#endif //USING_CTSY_DISPATCHER	            
-	            
-	            CMmPacketServiceTsy* serviceTsy = static_cast<CMmPacketServiceTsy*> (mmObject);
-	                
-	            CMmPacketContextTsy* mmPacketContextTsy = 
-	                serviceTsy->ContextTsy( *contextName );
-                    	            
-	            if( NULL != mmPacketContextTsy && 
-	            	mmPacketContextTsy->ContextType( ) == 
-	            	CMmPacketContextTsy::EContextTypePacketContext )
-	                {
-	                CMmPacketContextGsmWcdmaExt* mmPacketContextExt =
-	                    mmPacketContextTsy->PacketContextGsmWcdmaExt();
-	                if( NULL != mmPacketContextExt )
-	                    {
-#ifdef USING_CTSY_DISPATCHER	                    
-                        mmPacketContextExt->CompleteInitialiseContext(*channelId, aResult);
-#else	                    
-                            // The initialise context API will return the context name as the channelId.
-                            mmPacketContextExt->CompleteInitialiseContext(aResult);
-#endif //USING_CTSY_DISPATCHER                       
-	                    }
-	                }
-	            break;
-	            }
-	            
-	        case ECtsyPacketMbmsInitialiseContextComp:
-	        	{
-	        	TInfoName* contextName = NULL;
-	        	RPacketContext::TDataChannelV2* dataChannelV2 = NULL;
-	        	aDataPackage->UnPackData( &contextName, &dataChannelV2 );
-	            CMmPacketServiceTsy* serviceTsy = static_cast<CMmPacketServiceTsy*> (mmObject);
-
-	            CMmPacketContextTsy* mmPacketContextTsy = serviceTsy->ContextTsy( *contextName );
-	        	
-	        	CMmMBMSContextTsy* context = static_cast<CMmMBMSContextTsy*>  ( mmPacketContextTsy );
-	        	
-	        	if( NULL != context )
-	        	   {
-	        	   context->CompleteInitialiseContext( aResult, dataChannelV2 );	                    
-	        	   }        		        
-	        	break;
-	        	}
-	        	
-	        case EPacketQoSSetProfileParams:
-	            {
-	            TInfoName mmPacketContextName;
-	            aDataPackage->UnPackData( mmPacketContextName );
-
-	            CMmPacketQoSTsy* mmPacketQosTsy = STATIC_CAST( 
-	                CMmPacketServiceTsy*, mmObject )->QosTsy( 
-	                mmPacketContextName );
-
-	                if ( NULL != mmPacketQosTsy )
-	                    {
-	                    mmPacketQosTsy->
-                            CompleteSetProfileParameters( aResult );
-	                    }
-	            break;
-	            }
-	        case EPacketQoSNotifyProfileChanged:
-	            {
-	            TInfoName mmPacketContextName;
-
-	            aDataPackage->UnPackData( mmPacketContextName );
-
-	            CMmPacketQoSTsy* mmPacketQosTsy = STATIC_CAST( 
-	                CMmPacketServiceTsy*, mmObject )->QosTsy( 
-	                mmPacketContextName );
-
-	            if ( NULL != mmPacketQosTsy )
-                    {
-                    mmPacketQosTsy->PacketQoSGsmWcdmaExt()->
-                        CompleteNotifyProfileChanged( aDataPackage );
-                    }
-	            break;
-	            }
-	        case EPacketNotifyReleaseModeChange:            
-	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
-	                CompleteNetworkModeChange( aDataPackage );
-	            break;            
-	        case EPacketContextSetConfig:
-	            {
-	            TInfoName* contextName = NULL;
-	            aDataPackage->UnPackData( &contextName );
-	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
-	                CMmPacketServiceTsy*, mmObject )->
-                    ContextTsy( *contextName );
-                    
-	            if( NULL != mmPacketContextTsy && 
-	            	mmPacketContextTsy->ContextType( ) == 
-	            	CMmPacketContextTsy::EContextTypePacketContext )
-	                {
-    	            if( NULL != mmPacketContextTsy )
-    	                {
-    	                CMmPacketContextGsmWcdmaExt* mmPacketContextGsmWcdma =
-    	                    mmPacketContextTsy->PacketContextGsmWcdmaExt();
-
-    	                if( NULL != mmPacketContextGsmWcdma )
-    	                    {
-    	                    mmPacketContextGsmWcdma->
-                                CompleteSetConfig( aResult);
-    	                    }
-    	                }
-	                }
-	            else
-	                {	                
-	                CMmMBMSContextTsy* context = static_cast<CMmMBMSContextTsy*> ( mmPacketContextTsy );
-	                if( NULL != context )
-	                    {
-                        context->CompleteSetConfig( 
-                        aResult );
-                        }	                    	                
-	                }
-	            break;
-	            }
-            case EPacketEnumerateMbmsActiveServiceList:
-                { 
-                static_cast<CMmPacketServiceTsy*> ( mmObject )->
-	                    CompleteEnumerateMbmsActiveServiceList( 
-	                        aDataPackage, aResult );
-                break;
-                }
-	            
-            case EPacketContextUpdateMbmsSessionList:
-                {
-	            TInfoName* contextName = NULL;
-	            aDataPackage->UnPackData( &contextName );
-	            
-	            CMmPacketContextTsy* mmPacketContextTsy = static_cast<CMmPacketServiceTsy*> ( mmObject )->
-                    ContextTsy( *contextName );
-                    
-	            if( NULL != mmPacketContextTsy && 
-	            		mmPacketContextTsy->ContextType( ) == 
-	            		CMmPacketContextTsy::EContextTypeMBMS )
-	                {
-	                static_cast<CMmMBMSContextTsy*> 
-	                    ( mmPacketContextTsy )->CompleteUpdateMbmsSessionList( aResult );
-	                }
-                break;
-                }    
-	        case EPacketContextDelete:
-	            {
-	            TInfoName* contextName = NULL;
-	            aDataPackage->UnPackData( &contextName );
-	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
-	                CMmPacketServiceTsy*, mmObject )->
-                    ContextTsy( *contextName );
-	            
-	            if( NULL != mmPacketContextTsy && 
-	            	mmPacketContextTsy->ContextType( ) == 
-	            	CMmPacketContextTsy::EContextTypePacketContext )
-	                {
-	                CMmPacketContextGsmWcdmaExt* mmPacketContextGsmWcdma =
-	                    mmPacketContextTsy->PacketContextGsmWcdmaExt();
-
-	                if( NULL != mmPacketContextGsmWcdma )
-	                    {
-	                    mmPacketContextGsmWcdma->CompleteDelete( aResult );
-	                    }
-	                }
-	            else
-	                {
-	                CMmMBMSContextTsy* context = static_cast< 
-	                    CMmMBMSContextTsy*>( mmPacketContextTsy );
-	                if( NULL != context )
-	                    {
-                        context->CompleteDelete( 
-                        aResult );
-                        }	                	                
-	                }
-	            break;
-	            }
-	        case EPacketContextNotifyDataTransferred:
-	            {
-	            TInfoName* contextName = NULL;
-	            RPacketContext::TDataVolume* dataVolume;
-	            aDataPackage->UnPackData( &contextName, &dataVolume );
-	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
-	                CMmPacketServiceTsy*, mmObject )->
-                    ContextTsy( *contextName );
-	            if( NULL == mmPacketContextTsy && 
-	                ( 0 == ( *contextName ).Compare( KStringExternal ) || 
-	                0 == ( *contextName ).Compare( KStringExternal2 ) ) )
-	                {
-	                mmPacketContextTsy = STATIC_CAST(
-	                    CMmPacketServiceTsy*, mmObject )->DialUpContext( 
-	                    *contextName );
-	                }
-	            if( NULL != mmPacketContextTsy )
-	                {
-	                mmPacketContextTsy->
-                        SetDataVolume( aResult, *dataVolume );
-	                }
-	            break;
-	            }
-	        case EPacketContextActivate:
-	            {
-	            TInfoName* contextName = NULL;
-	            aDataPackage->UnPackData( &contextName);
-	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
-	                CMmPacketServiceTsy*, mmObject )->
-                                                ContextTsy( *contextName );
-                                                    	            
-	            if( NULL == mmPacketContextTsy && 
-	                ( 0 == (*contextName).Compare(KStringExternal) || 
-	                0 == (*contextName).Compare(KStringExternal2) ) )
-	                {
-	                mmPacketContextTsy = STATIC_CAST(
-	                    CMmPacketServiceTsy*, mmObject )->DialUpContext(
-                        *contextName );
-	                }
-	            if( (mmPacketContextTsy != NULL) && (mmPacketContextTsy->ContextType( ) == 
-	            	CMmPacketContextTsy::EContextTypePacketContext ))
-	                {
-	                CMmPacketContextGsmWcdmaExt* mmPacketContextGsmWcdma =
-    	                    mmPacketContextTsy->PacketContextGsmWcdmaExt();
-	                if( NULL != mmPacketContextGsmWcdma )
-	                	{
-	                	mmPacketContextGsmWcdma->CompleteActivate(aDataPackage, aResult );
-	                	}
-	                }
-	            else if( (mmPacketContextTsy != NULL) && ( mmPacketContextTsy->ContextType( ) == 
-	                			CMmPacketContextTsy::EContextTypeMBMS ))
-	                    {	                    
-    	                CMmMBMSContextTsy* mbmsContext = static_cast<
-    	                    CMmMBMSContextTsy*>( mmPacketContextTsy );
-    	                mbmsContext->CompleteActivate( aResult );	            	                    	                    
-	                    }	                    
-	            break;
-	            }
-	        case ECtsyPacketMbmsContextNotifyConfigChanged:
-	        	{
-	        	TInfoName* contextName = NULL;
-	            aDataPackage->UnPackData( &contextName );
-
-	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
-	                CMmPacketServiceTsy*, mmObject )->
-                                              ContextTsy( *contextName );                                              	                	                
-	            if( (mmPacketContextTsy != NULL) && ( mmPacketContextTsy->ContextType( ) == 
-	            	CMmPacketContextTsy::EContextTypeMBMS ) )
-	            	{
-	            	CMmMBMSContextTsy* mbmsContext = static_cast<CMmMBMSContextTsy*>( mmPacketContextTsy );
-	            	mbmsContext->CompleteNotifyConfigChanged(aDataPackage,aResult);
-	            	}
-	            
-	            break;
-	           	}
-	        
-	        case EPacketContextNotifyConfigChanged:
-	            {
-	            TInfoName* contextName = NULL;
-	            aDataPackage->UnPackData( &contextName );
-
-	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
-	                CMmPacketServiceTsy*, mmObject )->
-                                              ContextTsy( *contextName );                                              	                	                
-	            if( NULL == mmPacketContextTsy )
-	                {
-	                mmPacketContextTsy = STATIC_CAST(
-	                    CMmPacketServiceTsy*, mmObject )->DialUpContext( 
-	                    *contextName );
-	                }
-	            if( ( NULL != mmPacketContextTsy ) &&(mmPacketContextTsy->ContextType() == 
-	            	CMmPacketContextTsy::EContextTypePacketContext ))
-	                {
-	                CMmPacketContextGsmWcdmaExt* mmPacketContextGsmWcdma = mmPacketContextTsy->PacketContextGsmWcdmaExt();
-	                if( NULL != mmPacketContextGsmWcdma )
-	                	{
-	                	mmPacketContextGsmWcdma->CompleteActivatePhase2(
-	                			aDataPackage, aResult );
-	                	}
-	                }
-	            break;
-	            }
-	        case EPacketContextNotifyConnectionSpeedChange:
-	            {
-	            TInfoName* contextName = NULL;
-	            TInt* connectionSpeed = NULL;
-	            aDataPackage->UnPackData( &contextName, &connectionSpeed );
-
-	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
-	                CMmPacketServiceTsy*, mmObject )->
-                    ContextTsy( *contextName );
-	            
-	            if( NULL == mmPacketContextTsy )
-	                {
-	                mmPacketContextTsy = STATIC_CAST(
-	                    CMmPacketServiceTsy*, mmObject )->DialUpContext(
-                        *contextName );
-	                }
-	            if( NULL != mmPacketContextTsy )
-	                {
-                    mmPacketContextTsy->
-                        CompleteNotifyConnectionSpeedChange(
-                        *connectionSpeed );
-	                }
-	            break;
-	            }
-	        case EPacketContextNotifyStatusChange:
-	            {
-	            TInfoName* contextName = NULL;
-	            aDataPackage->UnPackData( &contextName );
-	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
-                    CMmPacketServiceTsy*, mmObject )->
-                    ContextTsy( *contextName );
-	                
-	            if( NULL == mmPacketContextTsy && 
-	                ( 0 == ( *contextName ).Compare( KStringExternal ) || 
-	                0 == ( *contextName ).Compare( KStringExternal2 ) ) )
-	                {
-	                mmPacketContextTsy = STATIC_CAST(
-	                    CMmPacketServiceTsy*, mmObject )->DialUpContext(
-                        *contextName );
-	                }
-	     
-	            if( NULL != mmPacketContextTsy )
-	                {
-	                // pdp context
-    	            if( mmPacketContextTsy->ContextType( ) == 
-    	            	CMmPacketContextTsy::EContextTypePacketContext )
-    	                { 	                
-    	                CMmPacketContextGsmWcdmaExt* mmPacketContextGsmWcdma =
-    	                    mmPacketContextTsy->PacketContextGsmWcdmaExt();
-
-    	                if( NULL != mmPacketContextGsmWcdma )
-    	                    {
-                          mmPacketContextGsmWcdma->CompleteNotifyStatusChange(
-                                aDataPackage, aResult );
-    	                    }
-    	                }
-    	            // mbms context
-    	            else if( (mmPacketContextTsy != NULL) && (mmPacketContextTsy->ContextType( ) == 
-    	            			CMmPacketContextTsy::EContextTypeMBMS ))
-    	                    {	                    
-    	                CMmMBMSContextTsy* mbmsContext = static_cast<
-    	                    CMmMBMSContextTsy*>( mmPacketContextTsy );
-    	                mbmsContext->CompleteNotifyStatusChange(
-                                aDataPackage, aResult );            	                    	                    
-	                    } 
-	                }
-	            break;
-	            }
-	        case EPacketContextDeactivate:
-	            {
-            	TInfoName* contextName = NULL;
-            	
-            	// only packed for MBMS in a particular fail scenario
-            	RPacketMbmsContext::CMbmsSession* session = NULL;
-         
-	            if(aResult == KErrMbmsImpreciseServiceEntries)
-	            	{
-	            	// definitely an MBMS session
-	            	aDataPackage->UnPackData( &contextName, &session );
-	            	}
-	            else
-	            	{
-	            	aDataPackage->UnPackData( &contextName );
-	            	}
-	            
-	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
-	                CMmPacketServiceTsy*, mmObject )->
-                                                ContextTsy( *contextName );
-                                             
-	            if( NULL == mmPacketContextTsy )
-	                {
-	                mmPacketContextTsy = STATIC_CAST(
-	                    CMmPacketServiceTsy*, mmObject )->DialUpContext(
-                        *contextName );
-	                }
-	            if( (mmPacketContextTsy != NULL) &&(mmPacketContextTsy->ContextType() == 
-	            	CMmPacketContextTsy::EContextTypePacketContext ))
-	                {		            
-
-    	            if( NULL != mmPacketContextTsy )
-    	                {
-    	                CMmPacketContextGsmWcdmaExt* mmPacketContextGsmWcdma =
-    	                    mmPacketContextTsy->PacketContextGsmWcdmaExt();
-
-    	                if( NULL != mmPacketContextGsmWcdma )
-    	                    {
-    	                    mmPacketContextGsmWcdma->
-                                CompleteDeactivate(aResult);
-    	                    }
-    	                }
-	                }
-	                else if((mmPacketContextTsy != NULL) && (mmPacketContextTsy->ContextType( ) == 
-	                	CMmPacketContextTsy::EContextTypeMBMS ))
-	                    {
-    	                CMmMBMSContextTsy* mbmsContext = static_cast<
-    	                    CMmMBMSContextTsy*>( mmPacketContextTsy );
-    	                mbmsContext->CompleteDeactivate(aDataPackage, aResult);	            	                    	                    
-	                    }	                
-	            break;
-	            }
-	        case EPacketContextGetDataVolumeTransferred:
-	            {
-	            TInfoName* contextName = NULL;
-	            aDataPackage->UnPackData( &contextName );
-	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
-	                CMmPacketServiceTsy*, mmObject )->
-                    ContextTsy( *contextName );
-
-	            if( NULL == mmPacketContextTsy )
-	                {
-	                mmPacketContextTsy = STATIC_CAST(
-	                    CMmPacketServiceTsy*, mmObject )->DialUpContext(
-                        *contextName );
-	                }
-
-	            if( NULL != mmPacketContextTsy )
-	                {
-	                CMmPacketContextGsmWcdmaExt* mmPacketContextGsmWcdma =
-	                    mmPacketContextTsy->PacketContextGsmWcdmaExt();
-
-	                if( NULL != mmPacketContextGsmWcdma )
-	                    {
-                        mmPacketContextGsmWcdma->
-                            CompleteGetDataVolumeTransferred( aDataPackage,
-                            aResult );
-	                    }
-	                }
-	            break;
-	            }
-	        case EPacketContextModifyActiveContext:
-	            {
-	            TInfoName* contextName = NULL;
-	            aDataPackage->UnPackData( &contextName );
-	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
-	                CMmPacketServiceTsy*, mmObject )->
-                    ContextTsy( *contextName );
-	            
-	            if( NULL != mmPacketContextTsy )
-	                {
-	                CMmPacketContextGsmWcdmaExt* mmPacketContextGsmWcdma =
-	                    mmPacketContextTsy->PacketContextGsmWcdmaExt();
-
-	                if( NULL != mmPacketContextGsmWcdma )
-	                    {
-	                    mmPacketContextGsmWcdma->
-                        CompleteModifyActiveContext( 
-                        aDataPackage, aResult );
-	                    }
-	                }
-	            break;
-	            }	            
-#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
-	        case EPacketContextNotifyConnectionInfoChange:
-	            {
-	            TInfoName* contextName = NULL;
-	            TConnectionInfoBase* infoBase = NULL;
-	            aDataPackage->UnPackData( &contextName, &infoBase );
-
-	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
-	                CMmPacketServiceTsy*, mmObject )->
-                    ContextTsy( *contextName );
-	            
-	            if( NULL != mmPacketContextTsy )
-	                {
-                    mmPacketContextTsy->
-                        CompleteNotifyConnectionInfoChange( infoBase );
-	                }
-	            break;
-	            }
-#endif // SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
-	            	            	            
-            //USSD
-            case EMobileUssdMessagingSendMessage:                
-                static_cast<CMmUssdTsy*>( mmObject )->
-                    CompleteSendMessage( aResult );
-                break;                
-            case EMobileUssdMessagingSendMessageNoFdnCheck:                
-                static_cast<CMmUssdTsy*>( mmObject )->
-                    CompleteSendMessageNoFdnCheck( aResult );
-                break;                                
-            case EMobileUssdMessagingReceiveMessage:                
-                static_cast<CMmUssdTsy*>( mmObject )->
-                    CompleteReceiveMessage( aResult, aDataPackage );
-                break;                
-            case EMobileUssdMessagingSendRelease:                
-                static_cast<CMmUssdTsy*>( mmObject )->
-                    CompleteSendRelease( aResult, aDataPackage );
-                break; 
-            case EMobileUssdMessagingNotifyNetworkRelease:                
-                static_cast<CMmUssdTsy*>( mmObject )->
-                    CompleteNotifyNetworkRelease( aResult, aDataPackage );
-                break;                
-            case EMmTsyGsmBroadcastNotifyMessageReceived:                
-                static_cast<CMmBroadcastTsy*>( mmObject )->
-                    CompleteReceiveMessageGsmCbs( aResult, aDataPackage );
-                break;                
-            case EMmTsyWcdmaBroadcastNotifyMessageReceived:                
-                static_cast<CMmBroadcastTsy*>( mmObject )->
-                  CompleteReceiveMessageWcdmaCbs( aResult, aDataPackage );
-                break;                
-            case EMobileBroadcastMessagingReceiveMessage:                
-                static_cast<CMmBroadcastTsy*>( mmObject )->
-                    InternalCompleteCbRoutingRequest( aResult );
-                break;                
-            case EMobileBroadcastMessagingReceiveMessageCancel:                
-                static_cast<CMmBroadcastTsy*>( mmObject )->
-                    CompleteReceiveMessageCancel( aResult );
-                break;                
-            case EMobileBroadcastMessagingSetFilterSetting:                
-                static_cast<CMmBroadcastTsy*>( mmObject )->
-                    CompleteSetFilterSetting( aResult );
-                break;                
-            case EMobileSmsMessagingGetMessageStoreInfo:                
-                static_cast<CMmSmsTsy*>( mmObject )->
-                    CompleteGetMessageStoreInfo( aResult, aDataPackage );
-                break;                
-            case EMmTsyActivateSmsRouting:
-            case EMmTsyDeactivateSmsRouting:                
-                static_cast<CMmSmsTsy*>( mmObject )->
-                    CompleteActivateSmsRouting( aResult, aDataPackage );
-                break;                
-            case EMobileSmsMessagingReceiveMessage:                
-                static_cast<CMmSmsTsy*>( mmObject )->
-                    CompleteReceiveMessage( aResult, aDataPackage );
-                break;                
-            case EMobileSmsMessagingSendMessage:                
-                static_cast<CMmSmsTsy*>( mmObject )->
-                    CompleteSendMessage( aResult, aDataPackage );
-                break;                
-            case EMobileSmsMessagingSendMessageNoFdnCheck:                
-                static_cast<CMmSmsTsy*>( mmObject )->
-                    CompleteSendMessageNoFdnCheck( aResult, aDataPackage );
-                break;                
-            case EMmTsySmsSendSatMessage:                
-                static_cast<CMmSmsTsy*>( mmObject )->
-                    CompleteSendSatMessage( aResult );
-                break;                
-            case EMobileSmsMessagingResumeSmsReception:                
-                static_cast<CMmSmsTsy*>( mmObject )->
-                    CompleteResumeSmsReception( aResult );
-                break;                
-            case EMobileSmsMessagingGetSmspListPhase1:                
-                static_cast<CMmSmsTsy*>( mmObject )->
-                    CompleteReadAllSmspPhase1( aResult, aDataPackage );
-                break;                
-            case EMobileSmsMessagingStoreSmspList:                
-                static_cast<CMmSmsTsy*>( mmObject )->
-                    InternalStoreSmspList( aResult );
-                break;                
-            case EMobileSmsMessagingAckSmsStored:                
-                static_cast<CMmSmsTsy*>( mmObject )->
-                    CompleteAckSmsStored( aResult );
-                break;                
-            case EMobileSmsMessagingNackSmsStored:                
-                static_cast<CMmSmsTsy*>( mmObject )->
-                    CompleteNackSmsStored( aResult );
-                break;                
-            case EMobileSmsMessagingSetMoSmsBearer:
-                static_cast<CMmSmsTsy*>( mmObject )->
-                    CompleteSetMoSmsBearer( aResult );
-                break;
-            case EMobilePhoneStoreGetInfo:                
-                static_cast<CMmSmsStorageTsy*>( mmObject )->
-                    CompleteGetInfo( aResult, aDataPackage );
-                break;                
-            case EMobilePhoneStoreDelete:                
-                static_cast<CMmSmsStorageTsy*>( mmObject )->
-                    CompleteDeleteSms( aResult );
-                break;                
-            case EMobilePhoneStoreDeleteAll:                
-                static_cast<CMmSmsStorageTsy*>( mmObject )->
-                    CompleteDeleteAllSms( aResult );
-                break;                
-            case EMobilePhoneStoreRead:               
-                static_cast<CMmSmsStorageTsy*>( mmObject )->
-            		CompleteReadSms( aResult, aDataPackage );
-                break;                
-            case EMobilePhoneStoreWrite:                
-                static_cast<CMmSmsStorageTsy*>( mmObject )->
-                    CompleteWriteSms( aResult, aDataPackage );
-                break;                
-            case EMobilePhoneStoreReadAllPhase1:
-                {
-                if ( iMmPhone->GetSmsTsy()->GetSmsStorageTsy() )
-                    {
-                    static_cast<CMmSmsStorageTsy*>( mmObject )->
-                        RetrieveSmsListReadSmsL( aResult, aDataPackage );
-                    }
-                break;
-                }
-            
-            // Supplementary Services functionality
-            // Call Forwarding
-            case EMobilePhoneGetCallForwardingStatusPhase1:
-                {
-                // unpack result: a CMobilePhoneCFList
-                CMobilePhoneCFList* cfResults;
-                aDataPackage->UnPackData( &cfResults );
-                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
-                    CompleteGetCallForwardingStatusPhase1L( 
-                    cfResults, aResult );
-                break;
-                }
-            case EMobilePhoneNotifyCallServiceCapsChange:                
-                {
-                // unpack result: a RMobilePhone::TMobilePhoneCallServiceCaps
-                RMobilePhone::TMobilePhoneCallServiceCaps callServiceCaps;
-                aDataPackage->UnPackData( callServiceCaps );
-                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
-                  CompleteNotifyCallServiceCapsChange( callServiceCaps );
-                break;
-                }
-            case EMobilePhoneSetCallForwardingStatus:                
-                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
-                    CompleteSetCallForwardingStatus( aResult );
-                break;                
-            case EMobilePhoneNotifyCallForwardingStatusChange:
-                {
-                // unpack result: a RMobilePhone::TMobilePhoneCFCondition
-                RMobilePhone::TMobilePhoneCFCondition cfCondition;
-                aDataPackage->UnPackData( cfCondition );
-                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
-                  CompleteNotifyCallForwardingStatusChange( cfCondition );
-                break;
-                }
-            case EMobilePhoneNotifyCallForwardingActive:
-                {
-                // unpack results: a RMobilePhone::TMobileService
-                // and a RMobilePhone::TMobilePhoneCFActive
-                RMobilePhone::TMobileService serviceGroup;
-                RMobilePhone::TMobilePhoneCFActive activeType;
-                aDataPackage->UnPackData( serviceGroup, activeType );
-                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
-                    CompleteNotifyCallForwardingActive( 
-                    serviceGroup, activeType );
-                break;
-                }
-            // Call Barring
-            case EMobilePhoneGetBarringStatusPhase1:
-                {
-                // unpack result: a CMobilePhoneCBList
-                CMobilePhoneCBList* cbResults;
-                aDataPackage->UnPackData( &cbResults );
-                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
-                CompleteGetCallBarringStatusPhase1L( cbResults, aResult );
-                break;
-                }
-            case EMobilePhoneSetCallBarringStatus:                
-                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
-                    CompleteSetCallBarringStatus( aResult );
-                break;                
-            case EMobilePhoneNotifyCallBarringStatusChange:
-                {
-                // unpack result: a RMobilePhone::TMobilePhoneCBCondition
-                RMobilePhone::TMobilePhoneCBCondition cbCondition;
-                aDataPackage->UnPackData( cbCondition );
-                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
-                    CompleteNotifyCallBarringStatusChange( cbCondition );
-                break;
-                }
-            // Supplementary Services password change
-            case EMobilePhoneSetSSPassword:                
-                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
-                    CompleteSetSSPassword( aResult );
-                break;                
-            // Call Waiting
-            case EMobilePhoneGetWaitingStatusPhase1:
-                {
-                // unpack result: a CMobilePhoneCWList
-                CMobilePhoneCWList* cwResults;
-                aDataPackage->UnPackData( &cwResults );
-                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
-                CompleteGetCallWaitingStatusPhase1L( cwResults, aResult );
-                break;
-                }
-            case EMobilePhoneSetCallWaitingStatus:                
-                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
-                    CompleteSetCallWaitingStatus( aResult );
-                break;                
-            case EMobilePhoneNotifyCallWaitingStatusChange:
-                {
-                // unpack result: RMobilePhone::TMobilePhoneCWInfoEntryV1
-                RMobilePhone::TMobilePhoneCWInfoEntryV1* cwStatus;
-                aDataPackage->UnPackData( &cwStatus );
-                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
-                    CompleteNotifyCallWaitingStatusChange( cwStatus );
-                break;
-                }
-            // Identity EMobilePhoneGetIdentityServiceStatus
-            case EMobilePhoneGetIdentityServiceStatus:
-                {
-                // if no error, then unpack result: a
-                // RMobilePhone::TMobilePhoneIdServiceStatus
-                RMobilePhone::TMobilePhoneIdServiceStatus status =
-                    RMobilePhone::EIdServiceUnknown;
-                if ( KErrNone == aResult )
-                    {
-                    aDataPackage->UnPackData( status );
-                    }
-                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
-                    CompleteGetIdentityServiceStatus( status, aResult );
-                break;
-                }
-            // User's Access to Network Services
-            case EMobilePhoneSendNetworkServiceRequest:                
-                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
-                    CompleteSendNetworkServiceRequest( aResult );
-                break;  
-            case EMobilePhoneSendNetworkServiceRequestNoFdnCheck:
-            	static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
-                    CompleteSendNetworkServiceRequestNoFdnCheck( aResult );
-                break;
-            // Notify for Send Network Service Request
-            case ECtsyPhoneSendNetworkServiceRequestInd:
-            	static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
-            		CompleteSendNetworkServiceRequestInd( aResult,aDataPackage);
-            	break;
-            // Notify for All Send Network Service Request
-            case EMobilePhoneNotifyAllSendNetworkServiceRequest:
-                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
-                CompleteNotifyAllSendNetworkServiceRequest( aResult,
-                    aDataPackage );
-                break;
-            // Get ICC message waiting indicators
-            case EMobilePhoneGetIccMessageWaitingIndicators:
-                {
-                // packed param: RMobilePhone::TMobilePhoneMessageWaitingV1
-                RMobilePhone::TMobilePhoneMessageWaitingV1* mmWaiting;
-                aDataPackage->UnPackData( &mmWaiting );
-                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
-                    CompleteGetIccMessageWaitingIndicators( mmWaiting,
-                    aResult );
-                }
-                break;
-                
-            // Set ICC message waiting indicators
-            case EMobilePhoneSetIccMessageWaitingIndicators:                    
-                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
-                    CompleteSetIccMessageWaitingIndicators( aResult );
-                break;
-                    
-            // Notify ICC message waiting indicators change
-            case EMobilePhoneNotifyIccMessageWaitingIndicatorsChange:
-                // packed param: RMobilePhone::TMobilePhoneMessageWaitingV1
-                RMobilePhone::TMobilePhoneMessageWaitingV1* mmWaiting;
-                aDataPackage->UnPackData( &mmWaiting );
-                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
-                    CompleteNotifyIccMessageWaitingIndicatorChange(
-                    mmWaiting, aResult );
-                break;    
-
-            // case EMobilePhoneGetCallForwardingStatusPhase2:          no DOS call required
-            // case EMobilePhoneGetCallForwardingStatusCancel:          no DOS call required
-            // case EMobilePhoneSetCallForwardingStatusCancel:          no DOS call required
-            // case EMobilePhoneNotifyCallForwardingStatusChangeCancel: no DOS call required
-            // case EMobilePhoneNotifyCallForwardingActiveCancel:       no DOS call required
-            // case EMobilePhoneGetCallForwardingIndicator:             not supported
-            // case EMobilePhoneGetCallForwardingIndicatorCancel:       not supported
-
-            // Custom Tsy functionality
-            case ECustomSsAdditionalInfoNotificationIPC:
-                {
-                // unpack pointer to RMmCustomAPI::TSsAdditionalInfo
-                RMmCustomAPI::TSsAdditionalInfo* addInfo;
-                aDataPackage->UnPackData( addInfo );
-
-                static_cast<CMmCustomTsy*>( mmObject )->
-                CompleteSsAdditionalInfoNotification( addInfo, aResult );
-                break;
-                }
-            case ECustomNotifySsNetworkEventIPC:
-                {
-                // unpack result: a RMmCustomAPI::TSsTypeAndMode and
-                // a RMmCustomAPI::TSsInfo
-                RMmCustomAPI::TSsTypeAndMode ssTypeAndMode;
-                RMmCustomAPI::TSsInfo ssInfo;
-                aDataPackage->UnPackData( ssTypeAndMode, ssInfo );
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteNotifySsNetworkEvent( ssTypeAndMode, ssInfo, 
-                    aResult );
-                break;
-                }
-            case ECustomNotifySsRequestCompleteIPC:
-                {
-                // unpack result: a TInt with SS status
-                TInt ssStatus;
-                aDataPackage->UnPackData( ssStatus );
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteSsRequestCompleteNotification( 
-                    ssStatus, aResult );
-                break;
-                }
-            case ECustomNotifyDtmfEventIPC:
-                {
-                // unpack result: a RMmCustomAPI::TDtmfInfo
-                RMmCustomAPI::TDtmfInfo dtmfInfo;
-                aDataPackage->UnPackData( dtmfInfo );
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteNotifyDtmfEvent( dtmfInfo, aResult );
-                break;
-                }
-         	case ECustomNotifyRauEventIPC:
-                {
-                // unpack result
-                RMmCustomAPI::TRauEventStatus rauEventStatus;
-                aDataPackage->UnPackData( rauEventStatus );
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteNotifyRauEvent( rauEventStatus, aResult );
-                break;
-                }
-            case ECustomGetDiagnosticOctetsIPC:
-                {
-                // unpack result: TInt (call ID) and TUint8 (diagnostics)
-                TInt callId( -1 );
-                TUint8 diags;
-                aDataPackage->UnPackData( callId, diags );
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteGetDiagnosticOctects( callId, diags );
-                break;
-                }
-            case ECustomGetRemoteAlertingToneStatusIPC:
-                {
-                // unpack result: a TBool playRemoteAlertToneLocally
-                TBool playRemoteAlertToneLocally;
-                aDataPackage->UnPackData( playRemoteAlertToneLocally );
-                // not completed by Custom Tsy, but by the GSM extension
-                CMmCustomGsmExt* customGsmExt = 
-                    static_cast<CMmCustomGsmExt*>(
-                    static_cast<CMmCustomTsy*>( mmObject )->
-                    GetActiveExtensionPtr() );
-                
-                if ( customGsmExt )
-                    {
-                    customGsmExt->SetLocalRemoteAlertToneRequired(
-                        playRemoteAlertToneLocally );
-                    }
-                break;
-                }
-            case ECustomClearCallBlackListIPC:                
-                // no packed parameters
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteClearCallBlackList( aResult );
-                break;                
-            case ECustomCheckEmergencyNumberIPC:
-                {
-                // packed parameter: a ptr to TMobileTelNumber
-                RMmCustomAPI::TMobileTelNumber* telNumber;
-                aDataPackage->UnPackData( telNumber );
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteCheckEmergencyNumber( telNumber, aResult );
-                break;
-                }
-            case ECustomGetLifeTimeIPC:
-                {
-                // packed parameter: a RMmCustomAPI::TLifeTimeData
-                RMmCustomAPI::TLifeTimeData lifeTime;
-                aDataPackage->UnPackData( lifeTime );
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteGetLifeTime( lifeTime, aResult );
-                break;
-                }
-            case ECustomTerminateCallIPC:                
-                // no packed parameters
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteTerminateCall( aResult );
-                break;                
-            case ECustomGetAlsBlockedIPC:
-                {
-                // packed parameter: TGetAlsBlockStatus (block status)
-                RMmCustomAPI::TGetAlsBlockStatus blockStatus;
-                aDataPackage->UnPackData( blockStatus );
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteGetAlsBlocked( blockStatus, aResult );
-                break;
-                }
-            case ECustomSetAlsBlockedIPC:                
-                // no packed parameters
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteSetAlsBlocked( aResult );
-                break;                
-            case ECustomCheckAlsPpSupportIPC:
-                {
-                // packed parameter: RMmCustomAPI::TAlsSupport
-                RMmCustomAPI::TAlsSupport alsSupport;
-                aDataPackage->UnPackData( alsSupport );
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteGetAlsPpSupport( alsSupport, aResult );
-                break;
-                }
-            case ECustomCheckTwoDigitDialSupportIPC:
-                {
-                // packed parameter: RMmCustomAPI::TTwoDigitDialSupport
-                RMmCustomAPI::TTwoDigitDialSupport twoDigitDialSupport;
-                aDataPackage->UnPackData( twoDigitDialSupport );
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteCheckTwoDigitDialSupport( twoDigitDialSupport,
-                    aResult );
-                break;
-                }
-            case ECustomGetCipheringInfoIPC:
-                {
-                // packed parameter:
-                // TBool (ciphering indicator required/not required)
-                TBool indReq;
-                aDataPackage->UnPackData( indReq );
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteGetCipheringInfo( indReq, aResult );
-                break;
-                }
-            case ECustomNotifyCipheringInfoChangeIPC:
-                {
-                // packed parameters:
-                // TBool (ciphering indicator required/not required)
-                // TBool (ciphering on/off)
-                TBool indReq;
-                TBool ciStatus;
-                aDataPackage->UnPackData( indReq, ciStatus );
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteNotifyCipheringInfoChange( indReq, ciStatus, 
-                    aResult );
-                break;
-                }
-            case ECustomNotifyNSPSStatusIPC:
-                {
-                // packed parameter: TBool nspsIsOn
-                TBool nspsIsOn;
-                aDataPackage->UnPackData( nspsIsOn );
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteNotifyNSPSStatus( nspsIsOn );
-                break;
-                }
-            case ECustomNetWakeupIPC:                
-                // no packed parameters
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteNetWakeup( aResult );
-                break;                
-            case ECustomGetOperatorNameIPC:
-                {
-                // packed parameter: a RMmCustomAPI::TOperatorNameInfo
-                RMmCustomAPI::TOperatorNameInfo operNameInfo;
-                aDataPackage->UnPackData( operNameInfo );
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteGetOperatorName( operNameInfo, aResult );
-                break;
-                }
-            case EMobilePhoneIMSAuthenticate:                
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                    CompleteImsAuthentication( aDataPackage, aResult );
-                break;                
-            case ECustomGetSimAuthenticationDataIPC:                
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteSimAuthentication( aDataPackage, aResult );
-                break;                
-            case ECustomResetNetServerIPC:                
-                // no packed parameters
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteResetNetServer( aResult );
-                break;                
-            case ECustomNotifyNetworkConnectionFailureIPC:                
-                // no packed parameters
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteNotifyNetworkConnectionFailure();
-                break;                
-            case ECustomGetSystemNetworkModesIPC:
-                {
-                // packed parameters TUint32 (systemNetworkModes)
-                TUint32 systemNetworkModes;
-                aDataPackage->UnPackData( systemNetworkModes );
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteGetSystemOrCurrentNetworkModes( 
-                    systemNetworkModes, aResult );
-                break;
-                }
-            case ECustomSetSystemNetworkModeIPC:                
-                // no packed parameters)
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteSetSystemNetworkMode( aResult );
-                break;                
-            case ECustomGetNetworkProviderNameIPC:
-                {
-                // packed parameter: TDes* (network provider name)
-                TDes* name;
-                aDataPackage->UnPackData( name );
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteGetNetworkOperatorName( name, aResult );
-                break;
-                }
-            case ECustomGetCurrentSystemNetworkModesIPC:
-                {
-                TUint32 currentNetworkModes;
-                aDataPackage->UnPackData( currentNetworkModes );
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteGetCurrentSystemNetworkMode( 
-                    currentNetworkModes, aResult );
-                break;
-                }
-            case ECustomGetBandSelectionIPC:
-                {
-                // Packed parameters TBandSelection (systemNetworkBand). 
-                // Initialize parameters. In otherwise compiler gives warning.
-                // CompleteGetSystemNetworkBand does not handle parameters if 
-                // aResult is not KErrNone.
-                RMmCustomAPI::TBandSelection systemNetworkBand
-                    = RMmCustomAPI::ENetworkBandAny;
-                RMmCustomAPI::TNetworkModeCaps systemNetworkMode
-                    = RMmCustomAPI::KCapsNetworkModeDual;
-                if (KErrNone == aResult)
-                	{
-                aDataPackage->UnPackData( systemNetworkBand,
-                    systemNetworkMode );
-                	}
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteGetSystemNetworkBand( 
-                    systemNetworkBand, systemNetworkMode, aResult );
-                break;
-                }
-            case ECustomSetBandSelectionIPC:                
-                // no packed parameters)
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteSetSystemNetworkBand( aResult );
-                break;
-            
-            case ECustomSatRefreshCompleteNotificationIPC:                
-                // no packed parameters
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteSatRefreshCompleteNotification();
-                break;                
-            case ECustomReadSimFileIPC:
-                {
-                // packed parameter: pointer to TDesC8 (SIM data)
-                TDesC8* simData;
-                aDataPackage->UnPackData( simData );
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteGetSimFileInfo( simData, aResult );
-                break;
-                }
-            case ECustomSimLockActivateIPC:
-                {
-                // no packed parameters
-                CMmSimLockTsy* simLockTsy = static_cast<CMmSimLockTsy*>(
-                    static_cast<CMmCustomTsy*>( mmObject )->
-                    GetSimLockTsyPtr() );
-                simLockTsy->CompleteActivateSimLock( aResult );
-                break;
-                }
-            case ECustomSimLockDeActivateIPC:
-                {
-                // no packed parameters
-                CMmSimLockTsy* simLockTsy = static_cast<CMmSimLockTsy*>(
-                    static_cast<CMmCustomTsy*>( mmObject )->
-                    GetSimLockTsyPtr() );
-                simLockTsy->CompleteDeActivateSimLock( aResult );
-                break;
-                }
-            case ECustomSendAPDUReqIPC:
-                {
-                CMmWimTsy* wimTsy = static_cast<CMmWimTsy*>(
-                    static_cast<CMmCustomTsy*>( mmObject )->
-                    GetWimTsyPtr() );
-                wimTsy->CompleteSendAPDUReq( aDataPackage, aResult );
-                break;
-                }
-            case ECustomSimWarmResetIPC:
-                {
-                // no packed parameters
-                CMmWimTsy* wimTsy = static_cast<CMmWimTsy*>(
-                    static_cast<CMmCustomTsy*>( mmObject )->
-                    GetWimTsyPtr() );
-                wimTsy->CompleteSimWarmReset( aResult );
-                break;
-                }
-            case ECustomGetATRIPC:
-                {
-                // packed parameter: TPtrC8* atr
-                TPtrC8* atr;
-                aDataPackage->UnPackData( &atr );
-                CMmWimTsy* wimTsy = static_cast<CMmWimTsy*>(
-                    static_cast<CMmCustomTsy*>( mmObject )->
-                    GetWimTsyPtr() );
-                wimTsy->CompleteGetATR( *atr, aResult );
-                break;
-                }
-            case ECustomGetSimCardReaderStatusIPC:
-                {
-                // packed parameter: TPtrC8* status
-                TPtrC8* status;
-                aDataPackage->UnPackData( &status );
-                CMmWimTsy* wimTsy = static_cast<CMmWimTsy*>(
-                    static_cast<CMmCustomTsy*>( mmObject )->
-                    GetWimTsyPtr() );
-                wimTsy->CompleteGetSimCardReaderStatus( 
-                    *status, aResult );
-                break;
-                }
-            case ECustomNotifySimCardStatusIPC:
-                {
-                // packed param: RMmCustomAPI::TSIMCardStatus returnStatus
-                RMmCustomAPI::TSIMCardStatus returnStatus;
-                aDataPackage->UnPackData( returnStatus );
-                CMmWimTsy* wimTsy = static_cast<CMmWimTsy*>(
-                    static_cast<CMmCustomTsy*>( mmObject )->
-                    GetWimTsyPtr() );
-                wimTsy->CompleteNotifySimCardStatus( returnStatus );
-                break;
-                }
-            case ECustomSendAPDUReqV2IPC:
-                {
-                // packed parameter: TPtrC8* data
-                TPtrC8* data;
-                aDataPackage->UnPackData( &data );
-                CMmWimTsy* wimTsy = static_cast<CMmWimTsy*>(
-                    static_cast<CMmCustomTsy*>( mmObject )->
-                    GetWimTsyPtr() );
-                wimTsy->CompleteSendAPDUReqV2( *data, aResult );
-                break;
-                }
-            case ECustomPowerSimOnIPC:
-                {
-                // no packed parameters
-                CMmWimTsy* wimTsy = static_cast<CMmWimTsy*>(
-                    static_cast<CMmCustomTsy*>( mmObject )->
-                    GetWimTsyPtr() );
-                wimTsy->CompletePowerSimOn( aResult );
-                break;
-                }
-            case ECustomPowerSimOffIPC:
-                {
-                // no packed parameters
-                CMmWimTsy* wimTsy = static_cast<CMmWimTsy*>(
-                    static_cast<CMmCustomTsy*>( mmObject )->
-                    GetWimTsyPtr() );
-                wimTsy->CompletePowerSimOff( aResult );
-                break;
-                }
-            case ECustomStartSimCbTopicBrowsingIPC:
-                {
-                // packed parameter: pointer to array with CB topics
-                CArrayFixFlat<RMmCustomAPI::TSimCbTopic>* 
-                    cimCbTopics = NULL;
-                if ( KErrNone == aResult )
-                    {
-                    // only unpack data in successful case
-                    aDataPackage->UnPackData( cimCbTopics );
-                    }
-                CMmSIMTsy* simTsy = static_cast<CMmSIMTsy*>(
-                    static_cast<CMmCustomTsy*>( mmObject )->
-                    GetSIMTsyPtr() );
-                simTsy->CompleteStartSimCbTopicBrowsing( 
-                    cimCbTopics, aResult );
-                break;
-                }
-            case ECustomDeleteSimCbTopicIPC:
-                {
-                // no packed parameters
-                CMmSIMTsy* simTsy = static_cast<CMmSIMTsy*>(
-                    static_cast<CMmCustomTsy*>( mmObject )->
-                    GetSIMTsyPtr() );
-                simTsy->CompleteDeleteSimCbTopic( aResult );
-                break;
-                }
-                
-            case ECustomGetServiceTableSupportbyApplicationIPC:
-            	{
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteGetUSIMServiceSupport(aDataPackage, aResult );
-                break;
-            	
-            	}
-            	
-            case EReadViagHomeZoneParamsIPC:
-                {
-                // packed parameter: RMmCustomAPI::TViagParams, pointer to 
-                // RMmCustomAPI::TViagElements
-                RMmCustomAPI::TViagParams viagParams;
-                RMmCustomAPI::TViagElements* viagElems = NULL;
-                if ( KErrNone == aResult )
-                    {
-                    // only unpack data in successful case
-                    aDataPackage->UnPackData( viagParams, viagElems );
-                    }
-                CMmSIMTsy* simTsy = static_cast<CMmSIMTsy*>(
-                    static_cast<CMmCustomTsy*>( mmObject )->
-                                                        GetSIMTsyPtr() );
-                simTsy->CompleteReadViagHomeZoneParamsResp( &viagParams, 
-                    viagElems, aResult );
-                break;
-                }
-            case EReadViagHomeZoneCacheIPC:
-                {
-                // packed parameter: RMmCustomAPI::TViagCacheRecordContent
-                RMmCustomAPI::TViagCacheRecordContent viagRecordContent;
-                aDataPackage->UnPackData( viagRecordContent );
-                CMmSIMTsy* simTsy = static_cast<CMmSIMTsy*>(
-                    static_cast<CMmCustomTsy*>( mmObject )->
-                    GetSIMTsyPtr() );
-                simTsy->CompleteReadViagHomeZoneCacheRespL( 
-                    &viagRecordContent, aResult );
-                break;
-                }
-            case EWriteViagHomeZoneCacheIPC:
-                {
-                // no packed parameters
-                CMmSIMTsy* simTsy = static_cast<CMmSIMTsy*>(
-                    static_cast<CMmCustomTsy*>( mmObject )->
-                    GetSIMTsyPtr() );
-                simTsy->CompleteWriteViagHomeZoneCacheResp( aResult );
-                break;
-                }
-            case EWriteViagHomeZoneUHZIUESettingsIPC:
-                {
-                // no packed parameters
-                CMmSIMTsy* simTsy = static_cast<CMmSIMTsy*>(
-                    static_cast<CMmCustomTsy*>( mmObject )->
-                    GetSIMTsyPtr() );
-                simTsy->CompleteWriteViagHomeZoneUHZIUESettingsResp( 
-                    aResult );
-                break;
-                }
-            case ECustomSetDriveModeIPC:                
-                // no packed parameters
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteSetDriveMode( aResult );
-                break;                
-            
-            // Security (Custom) functionality
-            case ECustomIsBlockedIPC:
-                {
-                TBool isBlocked;
-                aDataPackage->UnPackData ( isBlocked );
-                static_cast<CMmCustomSecurityTsy*>( mmObject )->
-                    CompleteIsBlocked( aResult, isBlocked );
-                break;
-                }
-            case ECustomCheckSecurityCodeIPC:                
-                static_cast<CMmCustomSecurityTsy*>( mmObject )->
-                    CompleteCheckSecurityCode( aResult );
-                break;                
-            //case ECustomCheckEmergencyNumberIPC:
-            //case ECustomSatRefreshCompleteNotificationIPC:
-            case ECustomDisablePhoneLockIPC:                
-                static_cast<CMmCustomSecurityTsy*>( mmObject )->
-                    CompleteDisablePhoneLock( aResult);
-                break;                
-            case ECustomCheckSecurityCodeCancelIPC:                
-                static_cast<CMmCustomSecurityTsy*>( mmObject )->
-                    CompleteCheckSecurityCodeCancel();
-                break;                
-            case ECustomReadHSxPAStatusIPC:
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteReadHSxPAStatus( aDataPackage, aResult );
-                break;
-            case ECustomWriteHSxPAStatusIPC:
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteWriteHSxPAStatus( aResult );
-                break;
-            case ECustomNotifyHSxPAStatusIPC:
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteNotifyHSxPAStatus( aDataPackage, aResult );
-                break;
-            case ECustomGetIccCallForwardingStatusIPC:
-            	static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteGetIccCallForwardingStatus( aDataPackage, aResult );
-                break;
-            case ECustomNotifyIccCallForwardingStatusChangeIPC:
-            	static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteNotifyIccCallForwardingStatusChange( aDataPackage, aResult );
-                break;
-            case ECustomGetCellInfoIPC:
-                {
-                //unpack the data
-                RMmCustomAPI::TMmCellInfo* cellInfo;
-                aDataPackage->UnPackData( &cellInfo );
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteGetCellInfo( cellInfo, aResult );
-                break;
-                }
-            case ECustomNotifyCellInfoChangeIPC:
-            	{
-                //unpack the data
-                RMmCustomAPI::TMmCellInfo* cellInfoChange;
-                aDataPackage->UnPackData( &cellInfoChange );
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteNotifyCellInfoChange( cellInfoChange, aResult );
-                break;
-                }
-        	case ECustomNotifyRemoteAlertingToneStatusChangeIPC:
-                {
-                // unpack result
-                RMmCustomAPI::TRemoteAlertingToneStatus remoteAlertingToneStatus;
-                aDataPackage->UnPackData( remoteAlertingToneStatus );
-                static_cast<CMmCustomTsy*>( mmObject )->
-                    CompleteNotifyRemoteAlertingToneStatusChange( 
-                    remoteAlertingToneStatus, aResult );
-                break;
-                }
-                
-            case ECustomGetProgrammableOperatorLogoIPC:
-            	{
-            	RMmCustomAPI::TOperatorId* operatorId;
-            	RMmCustomAPI::TOperatorLogo* operatorLogo;
-            	aDataPackage->UnPackData(&operatorId, &operatorLogo);
-				static_cast<CMmCustomTsy*>( mmObject )->CompleteGetProgrammableOperatorLogo(operatorId, operatorLogo, aResult);
-				break;
-            	}
-                
-                
-        	// Security cases
-            case EMobilePhoneGetLockInfo:                
-                static_cast<CMmPhoneTsy*>( mmObject )->GetSecurityTsy()->
-                    CompleteGetLockInfo( aDataPackage, aResult );
-                break;                
-            case EMobilePhoneChangeSecurityCode:                
-                static_cast<CMmPhoneTsy*>( mmObject )->GetSecurityTsy()->
-                    CompleteChangeSecurityCode( aResult );
-                break;                
-            case EMobilePhoneAbortSecurityCode:                
-                static_cast<CMmPhoneTsy*>( mmObject )->GetSecurityTsy()->
-                    CompleteAbortSecurityCode( aResult );
-                break;                
-            case EMobilePhoneVerifySecurityCode:                
-                static_cast<CMmPhoneTsy*>( mmObject )->GetSecurityTsy()->
-                    CompleteVerifySecurityCodeL( aResult );
-                break;                
-            case EMobilePhoneSetLockSetting:
-                {
-                //unpack the data
-                RMobilePhone::TMobilePhoneLockStatus* status = NULL;
-                RMobilePhone::TMobilePhoneLockSetting* setting = NULL;
-                aDataPackage->UnPackData( &status, &setting );
-                static_cast<CMmPhoneTsy*>( mmObject )->GetSecurityTsy()->
-                    CompleteSetLockSetting( aResult,*status, *setting );
-                break;
-                }
-            case EMobilePhoneNotifySecurityEvent:
-                {
-                RMobilePhone::TMobilePhoneSecurityEvent* event = NULL;
-                //unpack the data
-                aDataPackage->UnPackData( &event );
-                static_cast<CMmPhoneTsy*>( mmObject )->GetSecurityTsy()->
-                    CompleteNotifySecurityEventL( *event, aResult );
-                break;
-                }
-            case EMobilePhoneNotifyLockInfoChange:                
-                static_cast<CMmPhoneTsy*>( mmObject )->GetSecurityTsy()->
-                    CompleteNotifyLockInfoChange( aDataPackage, aResult);
-                break;                
-            case EMmTsySecurityGetSimActivePinStateIPC:                
-                static_cast<CMmCustomSecurityTsy*>(
-                    mmObject )->SetActivePin( aDataPackage );
-                break;                
-            case EMmTsySimGetICCType:                
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                  PhoneExtInterface()->CompleteGetICCType( aDataPackage );
-                break;                
-            case EMmTsyBootNotifySimStatusReadyIPC: 
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                    CompleteNotifySimStatusReadyL();
-                break;                
-            case EMmTsyBootNotifyModemStatusReadyIPC:                
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                    CompleteNotifyModemStatusReady();
-                break;                
-            case EMmTsyBootNotifySecurityReadyIPC:                
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                    CompleteNotifySecurityReady();
-                break;   
-            case EMobilePhoneNotifyIccAccessCapsChange:                
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                    CompleteNotifyIccAccessCapsChange();
-                break;              
-            case EMmTsyBootGetRFStatusIPC:
-                {
-                TRfStateInfo* rfInfo = NULL;
-                aDataPackage->UnPackData ( &rfInfo );
-                CMmPhoneTsy* phoneTsy = 
-                                  static_cast<CMmPhoneTsy*>( mmObject );
-                phoneTsy->SetRfStateInfo( *rfInfo );
-                // inform also SMS Tsy about RF state
-                CMmSmsTsy* smsTsy = phoneTsy->SmsSession();
-                if ( smsTsy )
-                    {
-                    if ( ERfsStateInfoInactive == *rfInfo )
-                        {
-                        smsTsy->SetOffline( ETrue );
-                        }
-                    else
-                        {
-                        smsTsy->SetOffline( EFalse );
-                        }
-                    }
-                break;
-                }
-            case EMobilePhoneGetMailboxNumbers:
-            	iMmPhone->CompleteGetMailboxNumbers( aDataPackage, aResult );
-                break;            
-            // Miscellaneous Phone functionality
-
-            // case EMobilePhoneGetBatteryInfo: // handled in CommonTSY
-            case EMobilePhoneNotifyBatteryInfoChange:
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                  CompleteNotifyBatteryInfoChange(aDataPackage, aResult );
-                //  phone indicator status may change
-                iMmPhone->CompleteNotifyIndicatorChange();
-                break;
-
-            case EMobilePhoneGetPhoneId:
-                {
-                // packed parameter: TDes8 with serial number
-                TBuf8<KSerialNumberLength> serialNumber;
-                aDataPackage->UnPackData( serialNumber );
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                    CompleteGetPhoneId( serialNumber, aResult );
-                break;
-                }
-
-#ifdef USING_CTSY_DISPATCHER               
-            case ECtsyGetPhoneIdV2Comp: 
-                {
-                // Ltsy returns packed parameter of RMobilePhone::TMobilePhoneIdentityV1
-                RMobilePhone::TMobilePhoneIdentityV1* phoneId = NULL;
-                aDataPackage->UnPackData(&phoneId);
-                __ASSERT_DEBUG(phoneId, User::Invariant());
-
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                    CompleteGetPhoneId(*phoneId, aResult);
-                break;
-                }
-#endif //USING_CTSY_DISPATCHER
-             
-            case EMobilePhoneGetSubscriberId:
-                {
-                // packed param: TBuf8<RMobilePhone::KIMSISize> with IMSI
-                TBuf8<RMobilePhone::KIMSISize> imsi;
-                aDataPackage->UnPackData( imsi );
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                    CompleteGetSubscriberIdL( imsi, aResult );
-                break;
-                }
-            case EMobilePhoneGetALSLine:
-                {
-                // packed parameter: RMobilePhone::TMobilePhoneALSLine
-                RMobilePhone::TMobilePhoneALSLine alsStatus;
-                aDataPackage->UnPackData ( alsStatus );
-
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                    CompleteGetAlsLine ( alsStatus, aResult );
-                break;
-                }
-            case EMobilePhoneSetALSLine:                
-                // no packed parameters
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                    CompleteSetAlsLine ( aResult );
-                break;                
-            case EMobilePhoneGetCustomerServiceProfile:
-                {
-                // packed parameter: RMobilePhone::TMobilePhoneCspFileV1
-                RMobilePhone::TMobilePhoneCspFileV1 cspFile;
-                aDataPackage->UnPackData( cspFile );
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                    CompleteGetCustomerServiceProfile( cspFile, aResult );
-                break;
-                }
-            case EMobilePhoneGetPhoneStoreInfo:
-                {
-                //packed param: RMobilePhoneStore::TMobilePhoneStoreInfoV1
-                RMobilePhoneStore::TMobilePhoneStoreInfoV1 phoneStoreInfo;
-                aDataPackage->UnPackData( phoneStoreInfo );
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                    CompleteGetPhoneStoreInfo( phoneStoreInfo, aResult );
-                break;
-                }
-            case EMobilePhoneGetServiceTable:
-                {
-                //packed param: RMobilePhone::TMobilePhoneServiceTableV1
-                RMobilePhone::TMobilePhoneServiceTableV1 table;
-                aDataPackage->UnPackData( table );
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                    CompleteGetServiceTableL ( table, aResult );
-                break;
-                }
-            case EMmTsyPhoneGetPin1DisableSupportedIPC:
-                {
-                // packed parameter: TBool (supported or not)
-                TBool supported = EFalse;
-                aDataPackage->UnPackData( supported );
-                if ( !supported )
-                    {
-                    static_cast<CMmPhoneTsy*>( mmObject )->
-                          GetSecurityTsy()->SetPin1DisableNotSupported();
-                    }
-                break;
-                }
-            case EMobilePhoneSetFdnSetting :                
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                    CompleteSetFdnSettingL( aResult );
-                break;                
-            case EMobilePhoneGetFdnStatus:                
-                static_cast<CMmPhoneTsy*>( mmObject )-> 
-                    CompleteGetFdnStatus( aDataPackage, aResult );
-                break;                
-            case EMobilePhoneGetServiceProviderName:                
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                  CompleteGetServiceProviderName( aDataPackage, aResult );
-                break;                
-            case EMmTsySimRefreshNowIPC:
-                {
-                //packed param: TUint16(list of SIM files to be refreshed)
-                TUint16 filesToRefresh = 0;
-                aDataPackage->UnPackData( filesToRefresh );
-                // Refresh notification received, start refresh
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                    CompleteSimRefreshNowL( filesToRefresh );
-                break;
-                }
-            case EMmTsyGetCallForwardingNumberIPC:
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                    CompleteGetCallForwardingNumber( 
-                    aResult, aDataPackage );
-                break;
-
-            // Access point control list (ACL)
-            case EMobilePhoneEnumerateAPNEntries:
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                    CompleteEnumerateAPNEntries( aDataPackage, aResult );
-                break;
-            case EMobilePhoneGetAPNname:
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                    CompleteGetAPNname( aDataPackage, aResult );
-                break;
-            case EMobilePhoneAppendAPNName:
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                    CompleteAppendAPNName( aResult );
-                break;
-            case EMobilePhoneDeleteAPNName:
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                    CompleteDeleteAPNName( aResult );
-                break;
-            case EMobilePhoneSetAPNControlListServiceStatus:
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                    CompleteSetAPNControlListServiceStatus( aResult );
-                break;
-            case EMobilePhoneGetAPNControlListServiceStatus:
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                    CompleteGetAPNControlListServiceStatus( aDataPackage, 
-                    aResult );
-                break;
-            case EMobilePhoneNotifyAPNListChanged:
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                    CompleteNotifyAPNListChanged( aResult );
-                break;
-            case EMobilePhoneNotifyAPNControlListServiceStatusChange:
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                    CompleteNotifyAPNControlListServiceStatusChange( 
-                    aDataPackage, aResult );
-                break;
-            case EMobilePhoneGetSecurityCodeInfo:
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                    GetSecurityTsy()->CompleteGetSecurityCodeInfo( 
-                    aDataPackage, aResult );
-                break;
-            case EMobilePhoneNotifySecurityCodeInfoChange:
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                    GetSecurityTsy()->CompleteNotifySecurityCodeInfoChange( 
-                    aDataPackage, aResult );
-                break;
-            case EMmTsyPhoneBookStoreFdnInfoIPC:
-TFLOGSTRING("TSY: CMmMessageRouterProxy::RouteCompletion: route to phonetsy EMmTsyPhoneBookStoreFdnInfoIPC");               
-                static_cast<CMmPhoneTsy*>( mmObject )->
-                    SaveFdnInfoDetails( aResult, aDataPackage );
-                break;
-            default:
-                break;
-            }
-
-        }
-    else //special cases goes here
-        {
-        switch ( aIpc )
-            {
-            //this IPC has to be routed to
-            //the NetTsy object as is an special case. 
-            //We Force the routing.
-            case EMobileCallNotifyPrivacyConfirmation:
-                {
-                mmObject =iTsyDelegates-> 
-                      GetTsyObject(  CMmMessageManagerBase::EPhoneTsy );
-                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
-                    ReceivedCallPrivacyInformation( aDataPackage );
-                break;
-                }
-            case EMobileCallGetMobileCallInfo:
-                {
-                // If call object is not found, this call object has just 
-                // been initiated. Inform Line object instead.
-                // (Get mobile call information is always completed before 
-                // call status change)
-                TInt callId( -1 );
-                RMobilePhone::TMobileService callMode( 
-                    RMobilePhone::EVoiceService );
-
-                const CCallDataPackage* callData = 
-                  reinterpret_cast<const CCallDataPackage*>(aDataPackage);
-                callData->GetCallIdAndMode( callId, callMode );
-
-                mmObject = REINTERPRET_CAST( CBase*, 
-                      iMmPhone->LineList()->GetMmLineByMode( callMode ) );
-                
-                if ( NULL == mmObject )
-                    {
-TFLOGSTRING("TSY: CMmMessageRouterProxy::RouteCompletion: Call object not found for mobile Call Info!");
-                    }
-                else
-                    {
-                    // complete call added notification directly from here
-                    static_cast<CMmLineTsy*>( mmObject )->
-                        CompleteNotifyDiallingStatus( aDataPackage );
-                    }
-                break;
-                }
-            case EEtelCallDial:
-            case EMobileCallDialISV:
-            case EMobileCallDialNoFdnCheck:
-                {
-                //If data/video call creation fails (e.g when dialled 
-                //number has not been in the FDN list), dial is completed 
-                //when this call object has just been initiated 
-                //(and therefore not found).
-                TInt callId( -1 );
-                RMobilePhone::TMobileService callMode( 
-                    RMobilePhone::EServiceUnspecified );
-
-                const CCallDataPackage* callData = 
-                reinterpret_cast<const CCallDataPackage*>( aDataPackage );
-                callData->GetCallIdAndMode( callId, callMode );
-
-                if ( callId == 0 && ( 
-                    callMode == RMobilePhone::ECircuitDataService || 
-                    callMode == RMobilePhone::EVoiceService || 
-                    callMode == RMobilePhone::EAuxVoiceService ) )
-                    {
-                    //check if data call exists
-                    CMmDataCallTsy* mmCall = 
-                      reinterpret_cast<CMmDataCallTsy*>(
-                        iMmPhone->CallList()->
-                            GetMmCallByMode( callMode ) );
-
-                    if ( NULL == mmCall )
-                        {
-TFLOGSTRING("TSY: CMmMessageRouterProxy::RouteCompletion: Call object not found for Dial!");
-                        }
-                    else
-                        {
-                        //find object that requested dial
-                        if ( ( mmCall->IsServiceLocallyRequested( 
-                            CMmCallTsy::EMultimodeCallDial ) )
-                            || ( mmCall->IsServiceLocallyRequested( 
-                            CMmCallTsy::EMultimodeCallDialISV ) ) 
-                            || (mmCall->IsServiceLocallyRequested( 
-                            CMmCallTsy::EMultimodeMobileCallDialEmergencyCall ) ) 
-                            || ( mmCall->IsServiceLocallyRequested( 
-                            CMmCallTsy::
-                            EMultimodeCallDialNoFdnCheck ) ) )
-                            {
-                            for( TInt i = 0; i < iMmPhone->CallList()->
-                                GetNumberOfObjects(); i++ )
-                                {
-                                mmCall = reinterpret_cast<CMmDataCallTsy*>(
-                                    iMmPhone->CallList()->
-                                                    GetMmCallByIndex(i) );
-                                                    
-                                if ( ( mmCall->ServiceRequested( 
-                                    CMmCallTsy::EMultimodeCallDial ) 
-                                      && mmCall->CallMode() == callMode )
-                                      || ( mmCall->ServiceRequested( 
-                                      CMmCallTsy::EMultimodeCallDialISV ) 
-                                    && mmCall->CallMode() == callMode ) )
-                                    {
-TFLOGSTRING("TSY: CMmMessageRouterProxy::RouteCompletion: Special case before CompleteDial");                                    
-                                    mmCall->CompleteDial( aResult );
-                                    break;
-                                    }
-                                    
-                                if  ( mmCall->ServiceRequested( 
-                                    CMmCallTsy::EMultimodeCallDialNoFdnCheck ) 
-                                    && mmCall->CallMode() == callMode )
-                                    {
-TFLOGSTRING("TSY: CMmMessageRouterProxy::RouteCompletion: Special case before CompleteDialNoFdn");                                          
-                                    mmCall->CompleteDialNoFdn( aResult );
-                                    break;
-                                    }
-                                }
-                            }
-                        }
-                    }
-                break;
-                }
-            default:
-                break;
-            }
-        }
-    }
-    
-// ---------------------------------------------------------------------------
-// CMmMessageRouterProxy::RegisterTsyObject
-// Registers a Tsy object for request and notification completions
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//  
-void CMmMessageRouterProxy::SetPhoneTsy(
-    CMmPhoneTsy* aMmPhone )
-    {
-    iMmPhone = aMmPhone;
-    }
-
-//  End of File
+// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+
+
+//  INCLUDE FILES
+#include "cmmmessagerouterproxy.h"
+#include "cmmvoicecalltsy.h"
+#include "cmmdatacalltsy.h"
+#include "cmmcallextinterface.h"
+#include "cmmconferencecalltsy.h"
+#include "cmmconferencecallextinterface.h"
+#include "cmmphonetsy.h"
+#include "cmmlinetsy.h"
+#include "cmmnettsy.h"
+#include <ctsy/serviceapi/mmtsy_ipcdefs.h>
+#include "cmmonstoretsy.h"
+#include "cmmenstoretsy.h"
+#include "cmmphonebookstoretsy.h"
+#include "cmmphoneextinterface.h"
+#include "cmmdtmftsy.h"
+#include "cmmlinelist.h"
+#include "cmmcalllist.h"
+#include "cmmpblist.h"
+#include "cmmsupplservtsy.h"
+#include "Cmmpacketservicetsy.h"
+#include "cmmpacketservicegsmwcdmaext.h"
+#include "cmmpacketqosgsmwcdmaext.h"
+#include "Cmmpacketcontextlist.h"
+#include "cmmmbmscontextlist.h"
+#include "cmmmbmscontexttsy.h"
+#include "CMmCustomTsy.h"
+#include "CMmCustomGsmExt.h"
+#include "cmmussdtsy.h"
+#include "cmmbroadcasttsy.h"
+#include "CMmSimLockTsy.h"
+#include "CMmWimTsy.h"
+#include "CMmSIMTsy.h"
+#include "cmmsecuritytsy.h"
+#include "cmmsmstsy.h"
+#include "cmmsmsstoragetsy.h"
+#include "CMmCustomSecurityTsy.h"
+#include "ctsydelegates.h"
+#include <satcs.h>
+
+
+CMmMessageRouterProxy::CMmMessageRouterProxy()
+    {
+    }
+    
+ CMmMessageRouterProxy* CMmMessageRouterProxy::NewL( 
+    CTsyDelegates& aTsyDelegates )
+    {
+TFLOGSTRING("TSY: CMmMessageRouterProxy::NewL." );    
+    CMmMessageRouterProxy* const routerproxy =
+        new ( ELeave ) CMmMessageRouterProxy();
+    CleanupStack::PushL( routerproxy );
+	routerproxy->iTsyDelegates = &aTsyDelegates;
+    routerproxy->ConstructL();
+    CleanupStack::Pop();
+    return routerproxy;	
+    }
+    
+CMmMessageRouterProxy::~CMmMessageRouterProxy()
+	{	
+	}
+	
+void CMmMessageRouterProxy::ConstructL()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CMmMessageRouterProxy::Complete 
+// Complete with a data package
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CMmMessageRouterProxy::Complete( 
+    TInt aIpc, 
+    CMmDataPackage* aData, 
+    TInt aResult )
+	{
+TFLOGSTRING3("TSY: CMmMessageRouterProxy::Complete. IPC = %d, result: %d", aIpc, aResult);
+	RouteCompletion( aIpc, aData, aResult ); 
+	}
+	
+// ---------------------------------------------------------------------------
+// CMmMessageRouterProxy::Complete 
+// Complete without a data package
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CMmMessageRouterProxy::Complete( TInt aIpc, TInt aResult )
+	{    
+    CMmDataPackage emptyDataPackage;
+	Complete( aIpc, &emptyDataPackage, aResult );
+	}
+	
+// ---------------------------------------------------------------------------
+// CMmMessageRouterProxy::RouteCompletion
+// Completes a request or notification via the specific Tsy object, based on
+// IPC number and data package
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CMmMessageRouterProxy::RouteCompletion(
+    TInt aIpc,
+    CMmDataPackage* aDataPackage,
+    TInt aResult )
+    {
+    TRAP_IGNORE( RouteCompletionL( aIpc, aDataPackage, aResult ) );
+    }
+
+// ---------------------------------------------------------------------------
+// CMmMessageRouterProxy::RouteCompletionL
+// Completes a request or notification via the specific Tsy object, based on
+// IPC number and data package
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CMmMessageRouterProxy::RouteCompletionL(
+    TInt aIpc,
+    CMmDataPackage* aDataPackage,
+    TInt aResult )
+    {
+    //Literals used in routing
+    _LIT( KStringExternal,  "External"  );
+    _LIT( KStringExternal2, "External2" );
+    
+    //Object to complete
+    CBase* mmObject = NULL;
+      
+     //Get mmObject to complete to
+     switch ( aIpc )
+        {
+        // Call Functionality
+        case EMobileCallHold:
+        case EEtelCallDial:
+        case EEtelCallAnswer:
+        case EEtelCallHangUp:
+        case EMobileCallResume:
+        case EMobileCallSwap:
+        case EMobileCallTransfer:
+        case EMobileCallGoOneToOne:
+        case EMobileCallNotifyMobileCallStatusChange:
+        case EMobileCallGetMobileCallInfo:
+        case EMobileCallNotifyCallEvent:
+        case EMobileConferenceCallGetMobileCallInfo:
+        case EMobileCallDialISV:
+        case EMobileCallAnswerISV:
+        case EMobileCallDialEmergencyCall:
+        case EMobileCallReceiveUUI:
+        case EMobileCallDialNoFdnCheck: 
+        // CSD functionality
+        case EMobileCallSetDynamicHscsdParams:
+        case EMobileCallNotifyMobileDataCallCapsChange:
+        case EMobileCallNotifyHscsdInfoChange:
+        case EEtelCallGetCallParams:
+        case EEtelCallGetBearerServiceInfo:
+        	{
+        	TInt callId( -1 );
+	        RMobilePhone::TMobileService callMode( 
+	            RMobilePhone::EVoiceService );
+
+	        const CCallDataPackage* callData = REINTERPRET_CAST( 
+	            const CCallDataPackage*, aDataPackage );
+
+	        callData->GetCallIdAndMode( callId, callMode );
+
+	        //call object can be usually reasoned by Call ID
+	        mmObject = REINTERPRET_CAST( CBase*, 
+                iMmPhone->CallList()->GetMmCallById( callId ) );	
+        	}
+            break;
+            
+		// Line Functionality
+        case EEtelLineNotifyCallAdded:
+        case EEtelLineNotifyIncomingCall:
+        	{
+        	TInt callId( -1 );
+	        RMobilePhone::TMobileService callMode( 
+	            RMobilePhone::EVoiceService );
+	            
+	        const CCallDataPackage* callData = REINTERPRET_CAST( 
+	            const CCallDataPackage*, aDataPackage );
+	            
+	        callData->GetCallIdAndMode( callId, callMode );
+
+            //correct line object is determined using the call mode
+            mmObject = REINTERPRET_CAST( CBase*,
+                iMmPhone->LineList()->GetMmLineByMode( callMode ) );
+        	}
+            break;
+
+        // Conference call functionality
+        case EMobileConferenceCallCreateConference:
+        case EMobileConferenceCallAddCall:
+        case EMobileConferenceCallSwap:
+        case EMobileConferenceCallHangUp:
+        case EMobileConferenceCallNotifyConferenceStatusChange:
+        case EMobileConferenceCallNotifyConferenceEvent:
+
+        // case EMobileConferenceCallGetCaps:
+        // case EMobileConferenceCallNotifyCapsChange:
+        // case EMobileConferenceCallEnumerateCalls:
+        // case EMobileConferenceCallGetConferenceStatus:
+
+        // case EMobileConferenceCallNotifyCapsChangeCancel:
+        // case EMobileConferenceCallCreateConferenceCancel:
+        // case EMobileConferenceCallAddCallCancel:
+        // case EMobileConferenceCallSwapCancel:
+        // case EMobileConferenceCallHangUpCancel:
+        // case EMobileConferenceCallNotifyConferenceStatusChangeCancel:
+        // case EMobileConferenceCallNotifyConferenceEventCancel:
+        	mmObject = iTsyDelegates->
+                GetTsyObject( CMmMessageManagerBase::EConferenceCallTsy );
+            break;
+            
+		// Phonebook functionality
+        // case EMobilePhoneReadDTMFTones:       not supported
+        // case EMobilePhoneReadDTMFTonesCancel: not supported
+        // case EMobilePhoneStartDTMFTone:                no completion
+        // case EMobilePhoneContinueDTMFStringSending:    no completion
+        // case EMobilePhoneGetDTMFCaps:                  no DOS call required
+        // case EMobilePhoneNotifyDTMFCapsChange:         no DOS call required
+        // case EMobilePhoneNotifyDTMFCapsChangeCancel:   no DOS call required
+        // case EMobilePhoneNotifyStopInDTMFStringCancel: no DOS call required
+        // case EMobilePhoneNotifyDTMFEventCancel: 		  no DOS call required
+        case EMobilePhoneNotifyDTMFEvent:
+         	mmObject = iTsyDelegates->GetTsyObject( CMmMessageManagerBase::EDtmfTsy );
+			break;
+			
+        case EMmTsyPhoneBookStoreInitIPC:
+        case EMmTsyPhoneBookStoreCacheIPC:
+        case EMmTsyPhoneBookStoreReadIPC:
+        case EMmTsyPhoneBookStoreWriteIPC:
+        case EMmTsyPhoneBookStoreGetInfoIPC:
+        case EMmTsyPhoneBookStoreDeleteIPC:
+        case EMmTsyPhoneBookStoreDeleteAllIPC:
+        case EMmTsyPhoneBookStoreResetCacheIPC:
+        	{
+        	const CPhoneBookDataPackage* phonebookData = REINTERPRET_CAST( 
+        	    const CPhoneBookDataPackage*, aDataPackage );
+
+	        TName phoneBookName;
+	        phonebookData->GetPhoneBookName( phoneBookName );
+TFLOGSTRING2("TSY: CMmMessageRouterProxy::RouteCompletion: PB Name: %S", &phoneBookName);   
+
+	        for( TInt i = 0; i < iMmPhone->PBList()->GetNumberOfObjects(); i++ )
+	            {
+	            CMmPhoneBookStoreTsy* pbStore = iMmPhone->PBList()->
+	                GetMmPBByIndex( i );
+
+	            if ( 0 == pbStore->PhoneBookName()->CompareF( phoneBookName ) )
+	                {
+	                mmObject = static_cast<CBase*>( pbStore );
+	                }
+	            }
+	        if ( NULL == mmObject )
+	            {
+TFLOGSTRING("TSY: CMmMessageRouterProxy::RouteCompletion: PB object not found!");
+				iMmPhone->SetPBInitActiveStatus( EFalse );
+	            }
+        	}
+            break;
+		// ENStore functionality
+        case EMmTsyENStoreGetInfoIPC:
+        case EMmTsyENStoreReadIPC:
+        case EMmTsyENStoreReadAllPhase1IPC:
+        	mmObject = iTsyDelegates->
+                GetTsyObject( CMmMessageManagerBase::EENStoreTsy  );
+            break;
+            
+		// ONStore functionality
+        case EMmTsyONStoreGetInfoIPC:
+        case EMmTsyONStoreReadIPC:
+        case EMmTsyONStoreWriteIPC:
+        case EMmTsyONStoreDeleteIPC:
+        case EMmTsyONStoreDeleteAllIPC:
+        case EMmTsyONStoreReadAllPhase1IPC:
+        case EMmTsyONStoreStoreAllIPC:
+		case EMmTsyONStoreReadEntryIPC:
+		case EMmTsyONStoreReadSizeIPC:
+		case EMmTsyONStoreWriteSizeIPC:
+		case EMmTsyONStoreWriteEntryIPC:
+        	mmObject = iTsyDelegates->GetTsyObject( 
+        	    CMmMessageManagerBase::EONStoreTsy  );
+            break;
+		
+		//Packet data functionality
+        case EPacketAttach:
+        case EPacketDetach:
+        case EPacketGetNtwkRegStatus:
+        case EPacketSetAttachMode:
+        case EPacketRejectActivationRequest:
+        case EPacketGetAttachMode:
+        case EPacketSetDefaultContextParams:
+        case EPacketNotifyContextAdded:
+        case EPacketNotifyStatusChange:
+        case EPacketNotifyDynamicCapsChange:
+        case EPacketNotifyMSClassChange:
+        case EPacketSetPrefBearer:
+        case EPacketNotifyChangeOfNtwkRegStatus:
+        case EMmTsyNotifyEGprsInfoChangeIPC: // dummy internal IPC
+        case EPacketNotifyAttachModeChange:
+        case EPacketNotifyContextActivationRequested:
+        case EPacketContextInitialiseContext:
+        case EPacketQoSSetProfileParams:
+        case EPacketQoSNotifyProfileChanged:
+        case EPacketNotifyReleaseModeChange:
+        case EPacketContextSetConfig:
+        case EPacketContextDelete:
+        case EPacketContextNotifyDataTransferred:
+        case EPacketContextActivate:
+        case EPacketContextNotifyConfigChanged:
+        case EPacketContextNotifyConnectionSpeedChange:
+        case EPacketContextNotifyStatusChange:
+        case EPacketContextDeactivate:
+        case EPacketContextGetDataVolumeTransferred:
+        case EPacketContextModifyActiveContext:
+        case ECustomSetAlwaysOnMode:
+        case EPacketNotifyTransferCapsIPC:
+        case EPacketEnumerateMbmsActiveServiceList:
+        case EPacketNotifyMbmsServiceAvailabilityChange:
+        case EPacketUpdateMbmsMonitorServiceList:
+        case EPacketGetMbmsNetworkServiceStatus:
+        case EPacketNotifyMbmsNetworkServiceStatusChange:
+        case EPacketContextUpdateMbmsSessionList:
+        case EPacketGetStaticCaps:
+        case EPacketEnumerateMbmsMonitorServiceList:
+        case ECtsyPacketMbmsInitialiseContextComp:
+        case ECtsyPacketMbmsContextNotifyConfigChanged:
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+        case EPacketContextNotifyConnectionInfoChange: 
+#endif // SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+        	mmObject = REINTERPRET_CAST( 
+                CBase*, iMmPhone->PacketDataSession() );
+            break;
+
+        // USSD functionality
+        case EMobileUssdMessagingSendRelease:
+        case EMobileUssdMessagingSendMessage:
+        case EMobileUssdMessagingSendMessageNoFdnCheck:
+        case EMobileUssdMessagingReceiveMessage:
+        case EMobileUssdMessagingNotifyNetworkRelease:
+        	mmObject = iTsyDelegates->GetTsyObject( 
+        	    CMmMessageManagerBase::EUssdMessagingTsy );
+            break;
+            
+		// Broadcast functionality
+        case EMmTsyGsmBroadcastNotifyMessageReceived:
+        case EMmTsyWcdmaBroadcastNotifyMessageReceived:
+        case EMobileBroadcastMessagingReceiveMessage:
+        case EMobileBroadcastMessagingReceiveMessageCancel:
+        case EMobileBroadcastMessagingSetFilterSetting:
+        case EMobileBroadcastMessagingSetLanguageFilter:
+        case EMobileBroadcastMessagingStoreIdList:
+        	mmObject = iTsyDelegates->GetTsyObject(  
+        	    CMmMessageManagerBase::EBroadcastMessagingTsy );
+			break;
+			
+		// SMS functionality
+        case EMobileSmsMessagingGetMessageStoreInfo:
+        case EMmTsyActivateSmsRouting:
+        case EMmTsyDeactivateSmsRouting:
+        case EMobileSmsMessagingReceiveMessage:
+        case EMobileSmsMessagingSendMessage:
+        case EMobileSmsMessagingSendMessageNoFdnCheck: 
+        case EMmTsySmsSendSatMessage:
+        case EMobileSmsMessagingResumeSmsReception:
+        case EMobileSmsMessagingGetSmspListPhase1:
+        case EMobileSmsMessagingStoreSmspList:
+        case EMobileSmsMessagingAckSmsStored:
+        case EMobileSmsMessagingNackSmsStored:
+        case EMobileSmsMessagingSetMoSmsBearer:
+        	mmObject = iTsyDelegates->GetTsyObject(  
+        	    CMmMessageManagerBase::ESmsMessagingTsy );
+            break;
+            
+		// Storage functionality
+        case EMobilePhoneStoreGetInfo:
+        case EMobilePhoneStoreDelete:
+        case EMobilePhoneStoreDeleteAll:
+        case EMobilePhoneStoreRead:
+        case EMobilePhoneStoreWrite:
+        case EMobilePhoneStoreReadAllPhase1:
+        	mmObject = iTsyDelegates->GetTsyObject(  
+        	    CMmMessageManagerBase::EPhoneStoreTsy );
+            break;
+
+        // Custom Tsy functionality
+        case ECustomCancelUssdSessionIPC:
+        case ECustomSsAdditionalInfoNotificationIPC:
+        case ECustomNotifySsNetworkEventIPC:
+        case ECustomNotifySsRequestCompleteIPC:
+        case ECustomNotifyDtmfEventIPC:
+        case ECustomGetDiagnosticOctetsIPC:
+        case ECustomGetRemoteAlertingToneStatusIPC:
+        case ECustomClearCallBlackListIPC:
+        case ECustomCheckEmergencyNumberIPC:
+        case ECustomGetLifeTimeIPC:
+        case ECustomTerminateCallIPC:
+        case ECustomGetAlsBlockedIPC:
+        case ECustomSetAlsBlockedIPC:
+        case ECustomCheckAlsPpSupportIPC:
+        case ECustomCheckTwoDigitDialSupportIPC:
+        case ECustomGetCipheringInfoIPC:
+        case ECustomNotifyCipheringInfoChangeIPC:
+        case ECustomNotifyNSPSStatusIPC:
+        case ECustomNetWakeupIPC:
+        case ECustomGetOperatorNameIPC:
+        case ECustomResetNetServerIPC:
+        case ECustomNotifyNetworkConnectionFailureIPC:
+        case ECustomGetSystemNetworkModesIPC:
+        case ECustomSetSystemNetworkModeIPC:
+        case ECustomGetNetworkProviderNameIPC:
+        case ECustomGetCurrentSystemNetworkModesIPC:
+        case ECustomSatRefreshCompleteNotificationIPC:
+        case ECustomReadSimFileIPC:
+        case ECustomSimLockActivateIPC:
+        case ECustomSimLockDeActivateIPC:
+        case ECustomSendAPDUReqIPC:
+        case ECustomSimWarmResetIPC:
+        case ECustomGetATRIPC:
+        case ECustomSendAPDUReqV2IPC:
+        case ECustomGetSimCardReaderStatusIPC:
+        case ECustomNotifySimCardStatusIPC:
+        case ECustomPowerSimOnIPC:
+        case ECustomPowerSimOffIPC:
+        case ECustomStartSimCbTopicBrowsingIPC:
+        case ECustomDeleteSimCbTopicIPC:
+        case EReadViagHomeZoneParamsIPC:
+        case EReadViagHomeZoneCacheIPC:
+        case EWriteViagHomeZoneUHZIUESettingsIPC:
+        case EWriteViagHomeZoneCacheIPC:
+        case ECustomGetSimAuthenticationDataIPC:
+        case ECustomSetDriveModeIPC:
+        case ECustomNotifyRauEventIPC:
+        case ECustomReadHSxPAStatusIPC:
+        case ECustomWriteHSxPAStatusIPC:
+        case ECustomNotifyHSxPAStatusIPC:
+        case ECustomGetIccCallForwardingStatusIPC:
+        case ECustomNotifyIccCallForwardingStatusChangeIPC:
+        case ECustomGetCellInfoIPC:
+        case ECustomNotifyCellInfoChangeIPC:
+        case ECustomGetBandSelectionIPC:
+        case ECustomSetBandSelectionIPC:
+        case ECustomNotifyRemoteAlertingToneStatusChangeIPC:
+        case ECustomGetServiceTableSupportbyApplicationIPC:
+        case ECustomGetProgrammableOperatorLogoIPC:
+        	mmObject = iTsyDelegates->GetTsyObject( 
+        	    CMmMessageManagerBase::ECustomTsy );
+            break;
+
+        // Security (Custom) functionality
+        case ECustomIsBlockedIPC:
+        case ECustomCheckSecurityCodeIPC:
+        //case ECustomCheckEmergencyNumberIPC:
+        //case ECustomSatRefreshCompleteNotificationIPC:
+        case ECustomDisablePhoneLockIPC:
+        case ECustomCheckSecurityCodeCancelIPC:
+        case EMmTsySecurityGetSimActivePinStateIPC:
+        	mmObject = iTsyDelegates->GetTsyObject( 
+        	    CMmMessageManagerBase::ESecurityTsy );
+            break;
+        // This is a special case
+        case EMobileCallNotifyPrivacyConfirmation:
+            break; 
+        default:
+        	mmObject = iTsyDelegates->GetTsyObject( 
+        	    CMmMessageManagerBase::EPhoneTsy );
+            break;
+        }
+        
+	// Route completion to right TSY 	
+    if ( NULL != mmObject )
+        {
+        switch ( aIpc )
+            {
+            case EMobileCallHold:                
+                static_cast<CMmVoiceCallTsy*>( mmObject )->
+                    CompleteHold( aResult );
+                break;
+            case EMobileCallDialNoFdnCheck:
+            	static_cast<CMmCallTsy*>( mmObject )->
+                	CompleteDialNoFdn( aResult );
+            	break;
+            case EEtelCallDial:
+            case EMobileCallDialISV:                
+                static_cast<CMmCallTsy*>( mmObject )->
+                    CompleteDial( aResult );
+                break;                
+            case EEtelCallAnswer:
+            case EMobileCallAnswerISV:                
+                static_cast<CMmCallTsy*>( mmObject )->
+                    CompleteAnswerIncomingCall( aResult );
+                break;                
+            case EEtelCallHangUp:                
+                static_cast<CMmCallTsy*>( mmObject )->
+                    CompleteHangUp( aResult );
+                break;                
+            case EMobileCallResume:                
+                static_cast<CMmVoiceCallTsy*>( mmObject )->
+                    CompleteResume( aResult );
+                break;                
+            case EMobileCallSwap:                
+                static_cast<CMmVoiceCallTsy*>( mmObject )->
+                    CompleteSwap( aResult );
+                break;                
+            case EMobileCallTransfer:                
+                static_cast<CMmVoiceCallTsy*>( mmObject )->
+                    CompleteTransfer( aResult );
+                break;                
+            case EMobileCallGoOneToOne:                
+                static_cast<CMmVoiceCallTsy*>( mmObject )->
+                    CompleteGoOneToOne( aResult );
+                break;                
+            case EMobileCallNotifyMobileCallStatusChange:                
+                static_cast<CMmCallTsy*>( mmObject )->
+                    CompleteNotifyStatusChange( aResult, aDataPackage );
+                // phone idicator status may change
+                iMmPhone->CompleteNotifyIndicatorChange();
+                break;                
+            case EMobileCallGetMobileCallInfo:                
+                static_cast<CMmCallTsy*>( mmObject )->
+                    CompleteNotifyMobileCallInfoChange( aDataPackage );
+                break;                
+            case EMobileCallNotifyCallEvent:                
+                static_cast<CMmCallTsy*>( mmObject )->
+                    CompleteNotifyRemoteCallEvent( aDataPackage );
+                break;
+            case EMobileCallReceiveUUI:                
+                static_cast<CMmVoiceCallTsy*>( mmObject )->
+                    CompleteReceiveUUI( aDataPackage, aResult );
+                break;
+            case EMobileConferenceCallGetMobileCallInfo:                
+                static_cast<CMmCallTsy*>( mmObject )->
+                    CompleteNotifyMobileCallInfoChange( aDataPackage );
+                break;                
+            case EEtelLineNotifyCallAdded:                
+                static_cast<CMmLineTsy*>( mmObject )->
+                    CompleteNotifyAddBypassingCall( aDataPackage );
+                break;                
+            case EEtelLineNotifyIncomingCall:                
+                static_cast<CMmLineTsy*>( mmObject )->
+                    CompleteNotifyIncomingCall( aDataPackage );
+                break;                
+            case EMobilePhoneSetNetworkSelectionSetting:                
+                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
+                    CompleteSetNetworkSelectionSetting( aResult );
+                break;                
+            case EMobilePhoneNotifyNetworkRegistrationStatusChange:                
+                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
+                    CompleteNotifyNetworkRegistrationStatusChange( 
+                    aDataPackage, aResult );
+                // phone indicator status may change
+                iMmPhone->CompleteNotifyIndicatorChange();
+                break;                
+            case EMobilePhoneNotifyModeChange:                
+                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
+                    CompleteNotifyModeChange( aDataPackage, aResult );
+                break;                
+            case EMobilePhoneNotifyCurrentNetworkChange:                
+                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
+                    CompleteNotifyCurrentNetworkChange( 
+                    aDataPackage, aResult );
+                break;                
+            case EMobilePhoneNotifyNetworkSelectionSettingChange:                
+                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
+                    CompleteNotifyNetworkSelectionSettingChange( 
+                                                          aDataPackage );
+                break;                
+            case EMobilePhoneSelectNetwork:                
+                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
+                    CompleteSelectNetwork( aResult );
+                break;                
+            case EMobilePhoneGetDetectedNetworksV2Phase1:
+                {
+                CMmNetTsy* netTsy = 
+                    static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy();
+
+                netTsy->ProcessGetDetectedNetworksPhase1L(  
+                    aDataPackage, aResult );
+                break;
+                }
+            case EMobilePhoneAuthorizationInfoPhase1:
+                {
+                CMmNetTsy* netTsy = 
+                    static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy();                
+                netTsy->ProcessGetAuthorizationInfoPhase1L(
+                    aDataPackage, aResult );
+                break;
+                }
+            case EMobilePhoneGetHomeNetwork:
+                {
+                CMmPhoneTsy* phoneTsy = 
+                    static_cast<CMmPhoneTsy*>( mmObject );
+                static_cast<CMmPhoneExtInterface*>( phoneTsy->
+                    PhoneExtInterface() )->CompleteGetHomeNetwork( 
+                    aDataPackage );
+                break;
+                }
+			case EMmTsySimRefreshRegisterIPC:
+            	{
+            	CMmPhoneTsy* phoneTsy =
+                	static_cast<CMmPhoneTsy*>( mmObject );
+            	phoneTsy->CompleteSimRefreshRegister( aResult );
+            	break;
+            	}
+            case EMobilePhoneGetDetectedNetworksCancel:
+                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
+                    CompleteGetDetectedNetworksCancel( aResult );
+                break;
+            case EMobilePhoneSelectNetworkCancel:
+                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
+                    CompleteSelectNetworkCancel( aResult );
+                break;
+            case EMobilePhoneNotifySignalStrengthChange:
+                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
+                    CompleteNotifySignalStrengthChange( aDataPackage );
+                break;
+            case EMobilePhoneNotifyNITZInfoChange:
+                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
+                    CompleteNotifyNITZInfoChange( aDataPackage );
+                break;
+            case ECtsyPhoneCellInfoComp:
+                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
+                    CompleteCellInfoReq( aDataPackage, aResult );
+                break;            	            	
+            case ECtsyPhoneCellInfoIndComp:
+                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
+                	CompleteCellInfoIndReq( aDataPackage, aResult );
+                break;            	
+            case EMobilePhoneGetNetworkRegistrationStatus:
+                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
+                    CompleteGetNetworkRegistrationStatus( aResult );
+                break;
+            case EMobilePhoneGetCipheringIndicatorStatus:
+                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
+                    CompleteGetCipheringIndicatorStatus( 
+                    aDataPackage, aResult );
+                break;
+            case EMobilePhoneNotifyNetworkSecurityLevelChange:
+                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
+                    CompleteNotifyNetworkSecurityLevelChange( 
+                    aDataPackage );
+                break;
+            
+      		case EMobilePhoneGetCurrentActiveUSimApplication:
+                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
+                    CompleteGetCurrentActiveUSimApplication( 
+                    aDataPackage, aResult );
+                break;                                
+#ifdef USING_CTSY_DISPATCHER
+    		case ECtsyUpdateLifeTimeComp:
+            	{
+            	CMmPhoneTsy* phoneTsy =
+                	static_cast<CMmPhoneTsy*>( mmObject );
+            	phoneTsy->CompleteUpdateLifeTimer( aResult );
+            	break;
+            	}
+#else
+				case EMmTsyUpdateLifeTimeIPC:
+            	{
+            	CMmPhoneTsy* phoneTsy =
+                	static_cast<CMmPhoneTsy*>( mmObject );
+            	phoneTsy->CompleteUpdateLifeTimer( aResult );
+            	break;
+            	}                                 
+#endif //USING_CTSY_DISPATCHER
+      		case ECtsyPhoneTerminateAllCallsComp:
+      			static_cast<CMmPhoneTsy*>( mmObject )->
+      				CompleteTerminateAllCallsReq( aResult );
+      			break;
+            case ECtsyPhoneTerminateActiveCallsComp:
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                    CompleteTerminateActiveCallsReq( aResult );
+                break;
+                
+            // Conference call functionality
+            case EMobileConferenceCallCreateConference:                
+                static_cast<CMmConferenceCallTsy*>( mmObject )->
+                    CompleteCreateConference( aResult );
+                break;                
+            case EMobileConferenceCallAddCall:                
+                static_cast<CMmConferenceCallTsy*>( mmObject )->
+                    CompleteAddCall( aResult );
+                break;                
+            case EMobileConferenceCallSwap:                
+                static_cast<CMmConferenceCallTsy*>( mmObject )->
+                    CompleteSwap( aResult );
+                break;                
+            case EMobileConferenceCallHangUp:                
+                static_cast<CMmConferenceCallTsy*>( mmObject )->
+                    CompleteHangUp( aResult );
+                break;                
+            case EMobileConferenceCallNotifyConferenceStatusChange:                
+                static_cast<CMmConferenceCallTsy*>( mmObject )->
+                    CompleteNotifyConferenceStatusChange();
+                break;                
+            case EMobileConferenceCallNotifyConferenceEvent:
+                static_cast<CMmConferenceCallTsy*>( mmObject )->
+                    GetActiveConferenceCallExtension()->
+                    CompleteNotifyConferenceEvent( aDataPackage );
+                break;
+            // case EMobileConferenceCallGetCaps:
+            // case EMobileConferenceCallNotifyCapsChange:
+            // case EMobileConferenceCallEnumerateCalls:
+            // case EMobileConferenceCallGetConferenceStatus:
+
+            // case EMobileConferenceCallNotifyCapsChangeCancel:
+            // case EMobileConferenceCallCreateConferenceCancel:
+            // case EMobileConferenceCallAddCallCancel:
+            // case EMobileConferenceCallSwapCancel:
+            // case EMobileConferenceCallHangUpCancel:
+            // case EMobileConferenceCallNotifyConferenceStatusChangeCancel:
+            // case EMobileConferenceCallNotifyConferenceEventCancel:
+
+            // DTMF functionality
+            case EMobilePhoneSendDTMFTones:                
+                static_cast<CMmPhoneTsy*>( mmObject )->GetDtmfTsy()->
+                    CompleteSendDTMFTones( aResult );
+                break;
+#ifdef USING_CTSY_DISPATCHER
+            case EMobilePhoneStartDTMFTone:
+            	static_cast<CMmPhoneTsy*>( mmObject )->GetDtmfTsy()->
+            		CompleteStartDTMFTone( aResult );
+            	break;
+            case EMobilePhoneStopDTMFTone:
+            	static_cast<CMmPhoneTsy*>( mmObject )->GetDtmfTsy()->
+            		CompleteStopDTMFTone( aResult );
+            	break;
+#else
+            case EMobilePhoneStopDTMFTone:
+#endif //USING_CTSY_DISPATCHER             	
+            case EMobilePhoneSendDTMFTonesCancel:                
+                static_cast<CMmPhoneTsy*>( mmObject )->GetDtmfTsy()->
+                    CompleteSendDTMFTonesCancel( aResult );
+                break;                
+            case EMobilePhoneNotifyStopInDTMFString:
+                static_cast<CMmPhoneTsy*>( mmObject )->GetDtmfTsy()->
+                    CompleteNotifyStopInDTMFString( aDataPackage );
+                break;
+
+            // case EMobilePhoneReadDTMFTones:       not supported
+            // case EMobilePhoneReadDTMFTonesCancel: not supported
+            // case EMobilePhoneStartDTMFTone:                no completion
+            // case EMobilePhoneContinueDTMFStringSending:    no completion
+            // case EMobilePhoneGetDTMFCaps:                  no DOS call required
+            // case EMobilePhoneNotifyDTMFCapsChange:         no DOS call required
+            // case EMobilePhoneNotifyDTMFCapsChangeCancel:   no DOS call required
+            // case EMobilePhoneNotifyDTMFEventCancel:		  no DOS call required
+            // case EMobilePhoneNotifyStopInDTMFStringCancel: no DOS call required
+
+            case EMobilePhoneNotifyDTMFEvent: 				//no DOS call required
+	           	// unpack result: a RMobilePhone::TMobilePhoneDTMFEvent
+				TInt dtmfInfo;
+				aDataPackage->UnPackData( dtmfInfo );
+				static_cast<CMmDtmfTsy*>( mmObject )->CompleteNotifyDTMFEvent( dtmfInfo );
+				break;
+            case EMmTsyPhoneBookStoreInitIPC:                
+                {
+                static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
+                    CompletePBStoreInitializationL( 
+                    aResult, aDataPackage );
+                    TBool done = EFalse;
+                    
+                    // NOTE: The statement above is redundant, as the loop below calls CompletePBStoreInitializationL
+                    // on every phonebook store. However, we need to be certain that changing the order in which
+                    // phonebook stores are initialised won't introduce side effects. (One future improvement)
+                    for( TInt i = 0; i < iMmPhone->PBList()->GetNumberOfObjects(); i++ )
+        	            {
+TFLOGSTRING("TSY: CMmMessageRouterProxy::RouteCompletion:EMmTsyPhoneBookStoreInitIPC for loop, check init statuses ");
+        	            CMmPhoneBookStoreTsy* pbStore = iMmPhone->PBList()->
+        	                GetMmPBByIndex( i );
+                        done = pbStore->IsPBInitDone();
+TFLOGSTRING3("TSY: CMmMessageRouterProxy::RouteCompletion: active: %i, done: %i",iMmPhone->IsPBInitActive(), done);
+        	            if ( iMmPhone->IsPBInitActive() && !done ) 
+        	                {
+TFLOGSTRING2("TSY: CMmMessageRouterProxy::RouteCompletion: complete also to: %S",pbStore->PhoneBookName());
+        	                mmObject = static_cast<CBase*>( pbStore );
+        	                static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
+                                CompletePBStoreInitializationL( 
+                                    aResult, aDataPackage );
+        	                }
+        	            }
+                iMmPhone->SetPBInitActiveStatus( EFalse );    
+                }
+                break;                
+            case EMmTsyPhoneBookStoreCacheIPC:                
+                static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
+                    CompleteCachingL( aResult, aDataPackage );
+                break;                
+            case EMmTsyPhoneBookStoreReadIPC:                
+                static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
+                    CompleteReadL( aResult, aDataPackage );
+                break;                
+            case EMmTsyPhoneBookStoreWriteIPC:                
+                static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
+                    CompleteWriteL( aResult, aDataPackage );
+                break;                
+            case EMmTsyPhoneBookStoreGetInfoIPC:                
+                static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
+                    CompleteCountEntries( aResult, aDataPackage );
+                break;                
+            case EMmTsyPhoneBookStoreDeleteIPC:                
+                static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
+                    CompleteDeleteL( aResult, aDataPackage );
+                break;                
+            case EMmTsyPhoneBookStoreDeleteAllIPC:                
+                static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
+                    CompleteDeleteAll( aResult, aDataPackage );
+                break;                
+            case EMmTsyPhoneBookStoreResetCacheIPC:                
+                static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
+                    ResetCacheReady();
+                static_cast<CMmPhoneBookStoreTsy*>( mmObject )->
+                    ResetCache();
+                break;                
+            
+            // CSD functionality
+            case EEtelPhoneNotifyModemDetected:
+                {
+                RPhone::TStatus* modemStatus = NULL;
+                //unpack the data
+                aDataPackage->UnPackData( &modemStatus );
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                    CompleteNotifyModemDetected( *modemStatus );
+                break;
+                }
+            case EMobileCallSetDynamicHscsdParams:                
+                static_cast<CMmDataCallTsy*>( mmObject )->
+                    CompleteSetDynamicHscsdParams( aResult );
+                break;                
+            case EMobileCallNotifyMobileDataCallCapsChange:                
+                static_cast<CMmDataCallTsy*>( mmObject )->
+                    ActiveCallExtension()->
+                    ReceivedMobileDataCallCaps( aDataPackage );
+                break;                
+            case EMobileCallNotifyHscsdInfoChange:                
+                static_cast<CMmDataCallTsy*>( mmObject )->
+                    ActiveCallExtension()->ReceivedHscsdInfo( 
+                    aDataPackage );
+                break;                
+            case EEtelCallGetCallParams:                
+                static_cast<CMmCallTsy*>( mmObject )->
+                ActiveCallExtension()->ReceivedCallParams( aDataPackage );
+                break;                
+            case EEtelCallGetBearerServiceInfo:
+                {
+                RCall::TBearerService* bearerService = NULL;
+                aDataPackage->UnPackData( &bearerService );
+                static_cast<CMmCallTsy*>( mmObject )->
+                    ActiveCallExtension()->ReceivedBearerServiceInfo( 
+                    *bearerService );
+                break;
+                }
+            case EMmTsyENStoreGetInfoIPC:                
+                static_cast<CMmENStoreTsy*>( mmObject )->CompleteGetInfo(
+                    aResult, aDataPackage );
+                break;                
+            case EMmTsyENStoreReadIPC:                
+                static_cast<CMmENStoreTsy*>( mmObject )->CompleteRead(
+                    aResult, aDataPackage );
+                break;                
+            case EMmTsyENStoreReadAllPhase1IPC:                
+                static_cast<CMmENStoreTsy*>( mmObject )->
+                        CompleteReadAllPhase1L( aResult, aDataPackage );
+                break;                
+            case EMmTsyONStoreGetInfoIPC:                
+                static_cast<CMmONStoreTsy*>( mmObject )->CompleteGetInfo(
+                    aResult, aDataPackage );
+                break;                
+            case EMmTsyONStoreReadIPC:                
+                static_cast<CMmONStoreTsy*>( mmObject )->CompleteRead(
+                    aResult, aDataPackage );
+                break;                
+            case EMmTsyONStoreWriteIPC:                
+                static_cast<CMmONStoreTsy*>( mmObject )->CompleteWrite(
+                    aResult, aDataPackage );
+                break;                
+            case EMmTsyONStoreDeleteIPC:                
+                static_cast<CMmONStoreTsy*>( mmObject )->CompleteDelete(
+                    aResult );
+                break;                
+            case EMmTsyONStoreDeleteAllIPC:                
+                static_cast<CMmONStoreTsy*>( mmObject )->
+                    CompleteDeleteAll( aResult );
+                break;
+            case EMmTsyONStoreReadAllPhase1IPC:
+                static_cast<CMmONStoreTsy*>( mmObject )->
+                    CompleteReadAllPhase1L();
+                break;
+            case EMmTsyONStoreReadEntryIPC:
+   				STATIC_CAST( CMmONStoreTsy*, mmObject )->
+                    InternalRetrieveONListReadEntryL( 
+                    aResult, aDataPackage );
+                break;
+            case EMmTsyONStoreReadSizeIPC:
+                STATIC_CAST( CMmONStoreTsy*, mmObject )->
+                    InternalRetrieveONListReadSizeL( 
+                    aResult, aDataPackage );
+                break;
+            case EMmTsyONStoreWriteSizeIPC:
+                STATIC_CAST( CMmONStoreTsy*, mmObject )->
+                    InternalStoreAllGetSizeL( aResult, aDataPackage );
+                break;
+            case EMmTsyONStoreWriteEntryIPC:
+   				STATIC_CAST( CMmONStoreTsy*, mmObject )->
+                    InternalStoreAllWriteEntryL( aResult );
+                break;
+            case EPacketAttach:	            
+	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
+	                ActivePacketServiceExtension()->CompleteAttach( 
+                    aResult );
+	            break;	            
+	        case EPacketDetach:	            
+	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
+	                ActivePacketServiceExtension()->CompleteDetachL( 
+                    aResult );
+	            break;	            
+	        case EPacketGetNtwkRegStatus:	            
+	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
+	                ActivePacketServiceExtension()->
+                    CompleteGetNtwkRegStatus( aDataPackage, aResult );
+	            break;	            
+	            
+	        case ECustomSetAlwaysOnMode:
+            	STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
+                    CompleteSetAlwaysOn( aResult );
+            	break;	            
+	        case EPacketSetAttachMode:	            
+	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
+	                ActivePacketServiceExtension()->CompleteSetAttachMode( 
+	                aResult );
+	            break;	            
+	        case EPacketRejectActivationRequest:	            
+	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
+	                CompleteRejectActivationRequest();
+	            break;	            
+	        case EPacketGetAttachMode:	            
+	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
+	                ActivePacketServiceExtension()->CompleteGetAttachMode(
+	                aDataPackage, aResult );
+	            break;	            
+	        case EPacketSetDefaultContextParams:	            
+	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
+	                ActivePacketServiceExtension()->
+	                CompleteSetDefaultContextParams( aResult );
+	            break;	            
+	        case EPacketNotifyContextAdded:	            
+	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
+	                CompleteNotifyContextAdded( aDataPackage);
+	            break;	            
+	        case EPacketNotifyStatusChange:	            
+	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
+	                CompletePacketStatusChanged( aDataPackage, aResult );
+	            break;	            
+	        case EPacketNotifyDynamicCapsChange:	            
+	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
+	                ActivePacketServiceExtension()->
+                    CompleteDynamicCapsChange( aDataPackage );
+	            break;	            
+            case EPacketNotifyTransferCapsIPC:                  
+                STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
+                    ActivePacketServiceExtension()->
+                    CompleteTransferCapsChange( aDataPackage );
+	            break;   	                	            
+	        case EPacketNotifyMSClassChange:	          
+	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
+	                CompleteNotifyMSClassChange( aDataPackage );
+	            break;	            
+	        case EPacketSetPrefBearer:	            
+	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
+	                ActivePacketServiceExtension()->
+                    CompleteSetPreferredBearer( aResult );
+	            break;	            
+	        case EPacketNotifyChangeOfNtwkRegStatus:	            
+	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
+	                CompleteNotifyChangeOfNtwkRegStatus( aDataPackage, aResult );
+	            break;	            
+	        case EMmTsyNotifyEGprsInfoChangeIPC:	            
+	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
+	                CompleteNotifyEGprsInfoChange( aDataPackage );
+	            break;	            
+	        case EPacketNotifyAttachModeChange:	            
+	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
+	                PreferredBearerChanged( aDataPackage );
+	            break;	            
+	        case EPacketNotifyContextActivationRequested:	            
+	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
+	                CompleteNotifyContextActivationRequested( 
+                        aDataPackage );
+	            break;	            
+            case EPacketNotifyMbmsNetworkServiceStatusChange:
+            	static_cast<CMmPacketServiceTsy*>(mmObject)->
+            	CompleteNotifyMbmsNetworkServiceStatusChange(aDataPackage, aResult);
+            	break;
+            case EPacketNotifyMbmsServiceAvailabilityChange:
+            	static_cast<CMmPacketServiceTsy*>(mmObject)->
+            	CompleteNotifyMbmsServiceAvailabilityChangeL(aDataPackage, aResult);
+            	break;
+            case EPacketGetMbmsNetworkServiceStatus:
+            	static_cast<CMmPacketServiceTsy*>(mmObject)->
+            	CompleteGetMbmsNetworkServiceStatus(aDataPackage, aResult);
+            	break;
+            case EPacketGetStaticCaps:
+            	static_cast<CMmPacketServiceTsy*>(mmObject)->
+            	ActivePacketServiceExtension()->CompleteGetStaticCaps(aDataPackage, aResult);
+            	break;
+            case EPacketEnumerateMbmsMonitorServiceList:
+            	{
+            	if (KErrNone == aResult)
+                    { 
+                    TInt maxMonitorValue;
+                    aDataPackage->UnPackData( maxMonitorValue );
+                    static_cast<CMmPacketServiceTsy*>(mmObject)->CompleteMaxMonitoredServicesChange( maxMonitorValue );
+                    }	
+            	}
+            	break;	
+            case EPacketUpdateMbmsMonitorServiceList: 
+	            static_cast<CMmPacketServiceTsy*> ( mmObject )
+	                ->CompleteUpdateMbmsMonitorServiceList( aDataPackage, 
+	                    aResult );	            
+                break;
+	        case EPacketContextInitialiseContext:
+	            {
+	            TInfoName* contextName = NULL;
+#ifdef USING_CTSY_DISPATCHER
+	            TDesC* channelId = NULL;
+	            aDataPackage->UnPackData(&contextName, &channelId);
+	            __ASSERT_DEBUG(contextName,User::Invariant());
+	            __ASSERT_DEBUG(channelId,User::Invariant());
+#else
+	            aDataPackage->UnPackData( &contextName);
+#endif //USING_CTSY_DISPATCHER	            
+	            
+	            CMmPacketServiceTsy* serviceTsy = static_cast<CMmPacketServiceTsy*> (mmObject);
+	                
+	            CMmPacketContextTsy* mmPacketContextTsy = 
+	                serviceTsy->ContextTsy( *contextName );
+                    	            
+	            if( NULL != mmPacketContextTsy && 
+	            	mmPacketContextTsy->ContextType( ) == 
+	            	CMmPacketContextTsy::EContextTypePacketContext )
+	                {
+	                CMmPacketContextGsmWcdmaExt* mmPacketContextExt =
+	                    mmPacketContextTsy->PacketContextGsmWcdmaExt();
+	                if( NULL != mmPacketContextExt )
+	                    {
+#ifdef USING_CTSY_DISPATCHER	                    
+                        mmPacketContextExt->CompleteInitialiseContext(*channelId, aResult);
+#else	                    
+                            // The initialise context API will return the context name as the channelId.
+                            mmPacketContextExt->CompleteInitialiseContext(aResult);
+#endif //USING_CTSY_DISPATCHER                       
+	                    }
+	                }
+	            break;
+	            }
+	            
+	        case ECtsyPacketMbmsInitialiseContextComp:
+	        	{
+	        	TInfoName* contextName = NULL;
+	        	RPacketContext::TDataChannelV2* dataChannelV2 = NULL;
+	        	aDataPackage->UnPackData( &contextName, &dataChannelV2 );
+	            CMmPacketServiceTsy* serviceTsy = static_cast<CMmPacketServiceTsy*> (mmObject);
+
+	            CMmPacketContextTsy* mmPacketContextTsy = serviceTsy->ContextTsy( *contextName );
+	        	
+	        	CMmMBMSContextTsy* context = static_cast<CMmMBMSContextTsy*>  ( mmPacketContextTsy );
+	        	
+	        	if( NULL != context )
+	        	   {
+	        	   context->CompleteInitialiseContext( aResult, dataChannelV2 );	                    
+	        	   }        		        
+	        	break;
+	        	}
+	        	
+	        case EPacketQoSSetProfileParams:
+	            {
+	            TInfoName mmPacketContextName;
+	            aDataPackage->UnPackData( mmPacketContextName );
+
+	            CMmPacketQoSTsy* mmPacketQosTsy = STATIC_CAST( 
+	                CMmPacketServiceTsy*, mmObject )->QosTsy( 
+	                mmPacketContextName );
+
+	                if ( NULL != mmPacketQosTsy )
+	                    {
+	                    mmPacketQosTsy->
+                            CompleteSetProfileParameters( aResult );
+	                    }
+	            break;
+	            }
+	        case EPacketQoSNotifyProfileChanged:
+	            {
+	            TInfoName mmPacketContextName;
+
+	            aDataPackage->UnPackData( mmPacketContextName );
+
+	            CMmPacketQoSTsy* mmPacketQosTsy = STATIC_CAST( 
+	                CMmPacketServiceTsy*, mmObject )->QosTsy( 
+	                mmPacketContextName );
+
+	            if ( NULL != mmPacketQosTsy )
+                    {
+                    mmPacketQosTsy->PacketQoSGsmWcdmaExt()->
+                        CompleteNotifyProfileChanged( aDataPackage );
+                    }
+	            break;
+	            }
+	        case EPacketNotifyReleaseModeChange:            
+	            STATIC_CAST( CMmPacketServiceTsy*, mmObject )->
+	                CompleteNetworkModeChange( aDataPackage );
+	            break;            
+	        case EPacketContextSetConfig:
+	            {
+	            TInfoName* contextName = NULL;
+	            aDataPackage->UnPackData( &contextName );
+	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
+	                CMmPacketServiceTsy*, mmObject )->
+                    ContextTsy( *contextName );
+                    
+	            if( NULL != mmPacketContextTsy && 
+	            	mmPacketContextTsy->ContextType( ) == 
+	            	CMmPacketContextTsy::EContextTypePacketContext )
+	                {
+    	            if( NULL != mmPacketContextTsy )
+    	                {
+    	                CMmPacketContextGsmWcdmaExt* mmPacketContextGsmWcdma =
+    	                    mmPacketContextTsy->PacketContextGsmWcdmaExt();
+
+    	                if( NULL != mmPacketContextGsmWcdma )
+    	                    {
+    	                    mmPacketContextGsmWcdma->
+                                CompleteSetConfig( aResult);
+    	                    }
+    	                }
+	                }
+	            else
+	                {	                
+	                CMmMBMSContextTsy* context = static_cast<CMmMBMSContextTsy*> ( mmPacketContextTsy );
+	                if( NULL != context )
+	                    {
+                        context->CompleteSetConfig( 
+                        aResult );
+                        }	                    	                
+	                }
+	            break;
+	            }
+            case EPacketEnumerateMbmsActiveServiceList:
+                { 
+                static_cast<CMmPacketServiceTsy*> ( mmObject )->
+	                    CompleteEnumerateMbmsActiveServiceList( 
+	                        aDataPackage, aResult );
+                break;
+                }
+	            
+            case EPacketContextUpdateMbmsSessionList:
+                {
+	            TInfoName* contextName = NULL;
+	            aDataPackage->UnPackData( &contextName );
+	            
+	            CMmPacketContextTsy* mmPacketContextTsy = static_cast<CMmPacketServiceTsy*> ( mmObject )->
+                    ContextTsy( *contextName );
+                    
+	            if( NULL != mmPacketContextTsy && 
+	            		mmPacketContextTsy->ContextType( ) == 
+	            		CMmPacketContextTsy::EContextTypeMBMS )
+	                {
+	                static_cast<CMmMBMSContextTsy*> 
+	                    ( mmPacketContextTsy )->CompleteUpdateMbmsSessionList( aResult );
+	                }
+                break;
+                }    
+	        case EPacketContextDelete:
+	            {
+	            TInfoName* contextName = NULL;
+	            aDataPackage->UnPackData( &contextName );
+	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
+	                CMmPacketServiceTsy*, mmObject )->
+                    ContextTsy( *contextName );
+	            
+	            if( NULL != mmPacketContextTsy && 
+	            	mmPacketContextTsy->ContextType( ) == 
+	            	CMmPacketContextTsy::EContextTypePacketContext )
+	                {
+	                CMmPacketContextGsmWcdmaExt* mmPacketContextGsmWcdma =
+	                    mmPacketContextTsy->PacketContextGsmWcdmaExt();
+
+	                if( NULL != mmPacketContextGsmWcdma )
+	                    {
+	                    mmPacketContextGsmWcdma->CompleteDelete( aResult );
+	                    }
+	                }
+	            else
+	                {
+	                CMmMBMSContextTsy* context = static_cast< 
+	                    CMmMBMSContextTsy*>( mmPacketContextTsy );
+	                if( NULL != context )
+	                    {
+                        context->CompleteDelete( 
+                        aResult );
+                        }	                	                
+	                }
+	            break;
+	            }
+	        case EPacketContextNotifyDataTransferred:
+	            {
+	            TInfoName* contextName = NULL;
+	            RPacketContext::TDataVolume* dataVolume;
+	            aDataPackage->UnPackData( &contextName, &dataVolume );
+	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
+	                CMmPacketServiceTsy*, mmObject )->
+                    ContextTsy( *contextName );
+	            if( NULL == mmPacketContextTsy && 
+	                ( 0 == ( *contextName ).Compare( KStringExternal ) || 
+	                0 == ( *contextName ).Compare( KStringExternal2 ) ) )
+	                {
+	                mmPacketContextTsy = STATIC_CAST(
+	                    CMmPacketServiceTsy*, mmObject )->DialUpContext( 
+	                    *contextName );
+	                }
+	            if( NULL != mmPacketContextTsy )
+	                {
+	                mmPacketContextTsy->
+                        SetDataVolume( aResult, *dataVolume );
+	                }
+	            break;
+	            }
+	        case EPacketContextActivate:
+	            {
+	            TInfoName* contextName = NULL;
+	            aDataPackage->UnPackData( &contextName);
+	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
+	                CMmPacketServiceTsy*, mmObject )->
+                                                ContextTsy( *contextName );
+                                                    	            
+	            if( NULL == mmPacketContextTsy && 
+	                ( 0 == (*contextName).Compare(KStringExternal) || 
+	                0 == (*contextName).Compare(KStringExternal2) ) )
+	                {
+	                mmPacketContextTsy = STATIC_CAST(
+	                    CMmPacketServiceTsy*, mmObject )->DialUpContext(
+                        *contextName );
+	                }
+	            if( (mmPacketContextTsy != NULL) && (mmPacketContextTsy->ContextType( ) == 
+	            	CMmPacketContextTsy::EContextTypePacketContext ))
+	                {
+	                CMmPacketContextGsmWcdmaExt* mmPacketContextGsmWcdma =
+    	                    mmPacketContextTsy->PacketContextGsmWcdmaExt();
+	                if( NULL != mmPacketContextGsmWcdma )
+	                	{
+	                	mmPacketContextGsmWcdma->CompleteActivate(aDataPackage, aResult );
+	                	}
+	                }
+	            else if( (mmPacketContextTsy != NULL) && ( mmPacketContextTsy->ContextType( ) == 
+	                			CMmPacketContextTsy::EContextTypeMBMS ))
+	                    {	                    
+    	                CMmMBMSContextTsy* mbmsContext = static_cast<
+    	                    CMmMBMSContextTsy*>( mmPacketContextTsy );
+    	                mbmsContext->CompleteActivate( aResult );	            	                    	                    
+	                    }	                    
+	            break;
+	            }
+	        case ECtsyPacketMbmsContextNotifyConfigChanged:
+	        	{
+	        	TInfoName* contextName = NULL;
+	            aDataPackage->UnPackData( &contextName );
+
+	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
+	                CMmPacketServiceTsy*, mmObject )->
+                                              ContextTsy( *contextName );                                              	                	                
+	            if( (mmPacketContextTsy != NULL) && ( mmPacketContextTsy->ContextType( ) == 
+	            	CMmPacketContextTsy::EContextTypeMBMS ) )
+	            	{
+	            	CMmMBMSContextTsy* mbmsContext = static_cast<CMmMBMSContextTsy*>( mmPacketContextTsy );
+	            	mbmsContext->CompleteNotifyConfigChanged(aDataPackage,aResult);
+	            	}
+	            
+	            break;
+	           	}
+	        
+	        case EPacketContextNotifyConfigChanged:
+	            {
+	            TInfoName* contextName = NULL;
+	            aDataPackage->UnPackData( &contextName );
+
+	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
+	                CMmPacketServiceTsy*, mmObject )->
+                                              ContextTsy( *contextName );                                              	                	                
+	            if( NULL == mmPacketContextTsy )
+	                {
+	                mmPacketContextTsy = STATIC_CAST(
+	                    CMmPacketServiceTsy*, mmObject )->DialUpContext( 
+	                    *contextName );
+	                }
+	            if( ( NULL != mmPacketContextTsy ) &&(mmPacketContextTsy->ContextType() == 
+	            	CMmPacketContextTsy::EContextTypePacketContext ))
+	                {
+	                CMmPacketContextGsmWcdmaExt* mmPacketContextGsmWcdma = mmPacketContextTsy->PacketContextGsmWcdmaExt();
+	                if( NULL != mmPacketContextGsmWcdma )
+	                	{
+	                	mmPacketContextGsmWcdma->CompleteActivatePhase2(
+	                			aDataPackage, aResult );
+	                	}
+	                }
+	            break;
+	            }
+	        case EPacketContextNotifyConnectionSpeedChange:
+	            {
+	            TInfoName* contextName = NULL;
+	            TInt* connectionSpeed = NULL;
+	            aDataPackage->UnPackData( &contextName, &connectionSpeed );
+
+	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
+	                CMmPacketServiceTsy*, mmObject )->
+                    ContextTsy( *contextName );
+	            
+	            if( NULL == mmPacketContextTsy )
+	                {
+	                mmPacketContextTsy = STATIC_CAST(
+	                    CMmPacketServiceTsy*, mmObject )->DialUpContext(
+                        *contextName );
+	                }
+	            if( NULL != mmPacketContextTsy )
+	                {
+                    mmPacketContextTsy->
+                        CompleteNotifyConnectionSpeedChange(
+                        *connectionSpeed );
+	                }
+	            break;
+	            }
+	        case EPacketContextNotifyStatusChange:
+	            {
+	            TInfoName* contextName = NULL;
+	            aDataPackage->UnPackData( &contextName );
+	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
+                    CMmPacketServiceTsy*, mmObject )->
+                    ContextTsy( *contextName );
+	                
+	            if( NULL == mmPacketContextTsy && 
+	                ( 0 == ( *contextName ).Compare( KStringExternal ) || 
+	                0 == ( *contextName ).Compare( KStringExternal2 ) ) )
+	                {
+	                mmPacketContextTsy = STATIC_CAST(
+	                    CMmPacketServiceTsy*, mmObject )->DialUpContext(
+                        *contextName );
+	                }
+	     
+	            if( NULL != mmPacketContextTsy )
+	                {
+	                // pdp context
+    	            if( mmPacketContextTsy->ContextType( ) == 
+    	            	CMmPacketContextTsy::EContextTypePacketContext )
+    	                { 	                
+    	                CMmPacketContextGsmWcdmaExt* mmPacketContextGsmWcdma =
+    	                    mmPacketContextTsy->PacketContextGsmWcdmaExt();
+
+    	                if( NULL != mmPacketContextGsmWcdma )
+    	                    {
+                          mmPacketContextGsmWcdma->CompleteNotifyStatusChange(
+                                aDataPackage, aResult );
+    	                    }
+    	                }
+    	            // mbms context
+    	            else if( (mmPacketContextTsy != NULL) && (mmPacketContextTsy->ContextType( ) == 
+    	            			CMmPacketContextTsy::EContextTypeMBMS ))
+    	                    {	                    
+    	                CMmMBMSContextTsy* mbmsContext = static_cast<
+    	                    CMmMBMSContextTsy*>( mmPacketContextTsy );
+    	                mbmsContext->CompleteNotifyStatusChange(
+                                aDataPackage, aResult );            	                    	                    
+	                    } 
+	                }
+	            break;
+	            }
+	        case EPacketContextDeactivate:
+	            {
+            	TInfoName* contextName = NULL;
+            	
+            	// only packed for MBMS in a particular fail scenario
+            	RPacketMbmsContext::CMbmsSession* session = NULL;
+         
+	            if(aResult == KErrMbmsImpreciseServiceEntries)
+	            	{
+	            	// definitely an MBMS session
+	            	aDataPackage->UnPackData( &contextName, &session );
+	            	}
+	            else
+	            	{
+	            	aDataPackage->UnPackData( &contextName );
+	            	}
+	            
+	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
+	                CMmPacketServiceTsy*, mmObject )->
+                                                ContextTsy( *contextName );
+                                             
+	            if( NULL == mmPacketContextTsy )
+	                {
+	                mmPacketContextTsy = STATIC_CAST(
+	                    CMmPacketServiceTsy*, mmObject )->DialUpContext(
+                        *contextName );
+	                }
+	            if( (mmPacketContextTsy != NULL) &&(mmPacketContextTsy->ContextType() == 
+	            	CMmPacketContextTsy::EContextTypePacketContext ))
+	                {		            
+
+    	            if( NULL != mmPacketContextTsy )
+    	                {
+    	                CMmPacketContextGsmWcdmaExt* mmPacketContextGsmWcdma =
+    	                    mmPacketContextTsy->PacketContextGsmWcdmaExt();
+
+    	                if( NULL != mmPacketContextGsmWcdma )
+    	                    {
+    	                    mmPacketContextGsmWcdma->
+                                CompleteDeactivate(aResult);
+    	                    }
+    	                }
+	                }
+	                else if((mmPacketContextTsy != NULL) && (mmPacketContextTsy->ContextType( ) == 
+	                	CMmPacketContextTsy::EContextTypeMBMS ))
+	                    {
+    	                CMmMBMSContextTsy* mbmsContext = static_cast<
+    	                    CMmMBMSContextTsy*>( mmPacketContextTsy );
+    	                mbmsContext->CompleteDeactivate(aDataPackage, aResult);	            	                    	                    
+	                    }	                
+	            break;
+	            }
+	        case EPacketContextGetDataVolumeTransferred:
+	            {
+	            TInfoName* contextName = NULL;
+	            aDataPackage->UnPackData( &contextName );
+	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
+	                CMmPacketServiceTsy*, mmObject )->
+                    ContextTsy( *contextName );
+
+	            if( NULL == mmPacketContextTsy )
+	                {
+	                mmPacketContextTsy = STATIC_CAST(
+	                    CMmPacketServiceTsy*, mmObject )->DialUpContext(
+                        *contextName );
+	                }
+
+	            if( NULL != mmPacketContextTsy )
+	                {
+	                CMmPacketContextGsmWcdmaExt* mmPacketContextGsmWcdma =
+	                    mmPacketContextTsy->PacketContextGsmWcdmaExt();
+
+	                if( NULL != mmPacketContextGsmWcdma )
+	                    {
+                        mmPacketContextGsmWcdma->
+                            CompleteGetDataVolumeTransferred( aDataPackage,
+                            aResult );
+	                    }
+	                }
+	            break;
+	            }
+	        case EPacketContextModifyActiveContext:
+	            {
+	            TInfoName* contextName = NULL;
+	            aDataPackage->UnPackData( &contextName );
+	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
+	                CMmPacketServiceTsy*, mmObject )->
+                    ContextTsy( *contextName );
+	            
+	            if( NULL != mmPacketContextTsy )
+	                {
+	                CMmPacketContextGsmWcdmaExt* mmPacketContextGsmWcdma =
+	                    mmPacketContextTsy->PacketContextGsmWcdmaExt();
+
+	                if( NULL != mmPacketContextGsmWcdma )
+	                    {
+	                    mmPacketContextGsmWcdma->
+                        CompleteModifyActiveContext( 
+                        aDataPackage, aResult );
+	                    }
+	                }
+	            break;
+	            }	            
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+	        case EPacketContextNotifyConnectionInfoChange:
+	            {
+	            TInfoName* contextName = NULL;
+	            TConnectionInfoBase* infoBase = NULL;
+	            aDataPackage->UnPackData( &contextName, &infoBase );
+
+	            CMmPacketContextTsy* mmPacketContextTsy = STATIC_CAST( 
+	                CMmPacketServiceTsy*, mmObject )->
+                    ContextTsy( *contextName );
+	            
+	            if( NULL != mmPacketContextTsy )
+	                {
+                    mmPacketContextTsy->
+                        CompleteNotifyConnectionInfoChange( infoBase );
+	                }
+	            break;
+	            }
+#endif // SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+	            	            	            
+            //USSD
+            case EMobileUssdMessagingSendMessage:                
+                static_cast<CMmUssdTsy*>( mmObject )->
+                    CompleteSendMessage( aResult );
+                break;                
+            case EMobileUssdMessagingSendMessageNoFdnCheck:                
+                static_cast<CMmUssdTsy*>( mmObject )->
+                    CompleteSendMessageNoFdnCheck( aResult );
+                break;                                
+            case EMobileUssdMessagingReceiveMessage:                
+                static_cast<CMmUssdTsy*>( mmObject )->
+                    CompleteReceiveMessage( aResult, aDataPackage );
+                break;                
+            case EMobileUssdMessagingSendRelease:                
+                static_cast<CMmUssdTsy*>( mmObject )->
+                    CompleteSendRelease( aResult, aDataPackage );
+                break; 
+            case EMobileUssdMessagingNotifyNetworkRelease:                
+                static_cast<CMmUssdTsy*>( mmObject )->
+                    CompleteNotifyNetworkRelease( aResult, aDataPackage );
+                break;                
+            case EMmTsyGsmBroadcastNotifyMessageReceived:                
+                static_cast<CMmBroadcastTsy*>( mmObject )->
+                    CompleteReceiveMessageGsmCbs( aResult, aDataPackage );
+                break;                
+            case EMmTsyWcdmaBroadcastNotifyMessageReceived:                
+                static_cast<CMmBroadcastTsy*>( mmObject )->
+                  CompleteReceiveMessageWcdmaCbs( aResult, aDataPackage );
+                break;                
+            case EMobileBroadcastMessagingReceiveMessage:                
+                static_cast<CMmBroadcastTsy*>( mmObject )->
+                    InternalCompleteCbRoutingRequest( aResult );
+                break;                
+            case EMobileBroadcastMessagingReceiveMessageCancel:                
+                static_cast<CMmBroadcastTsy*>( mmObject )->
+                    CompleteReceiveMessageCancel( aResult );
+                break;                
+            case EMobileBroadcastMessagingSetFilterSetting:                
+                static_cast<CMmBroadcastTsy*>( mmObject )->
+                    CompleteSetFilterSetting( aResult );
+                break;                
+            case EMobileSmsMessagingGetMessageStoreInfo:                
+                static_cast<CMmSmsTsy*>( mmObject )->
+                    CompleteGetMessageStoreInfo( aResult, aDataPackage );
+                break;                
+            case EMmTsyActivateSmsRouting:
+            case EMmTsyDeactivateSmsRouting:                
+                static_cast<CMmSmsTsy*>( mmObject )->
+                    CompleteActivateSmsRouting( aResult, aDataPackage );
+                break;                
+            case EMobileSmsMessagingReceiveMessage:                
+                static_cast<CMmSmsTsy*>( mmObject )->
+                    CompleteReceiveMessage( aResult, aDataPackage );
+                break;                
+            case EMobileSmsMessagingSendMessage:                
+                static_cast<CMmSmsTsy*>( mmObject )->
+                    CompleteSendMessage( aResult, aDataPackage );
+                break;                
+            case EMobileSmsMessagingSendMessageNoFdnCheck:                
+                static_cast<CMmSmsTsy*>( mmObject )->
+                    CompleteSendMessageNoFdnCheck( aResult, aDataPackage );
+                break;                
+            case EMmTsySmsSendSatMessage:                
+                static_cast<CMmSmsTsy*>( mmObject )->
+                    CompleteSendSatMessage( aResult );
+                break;                
+            case EMobileSmsMessagingResumeSmsReception:                
+                static_cast<CMmSmsTsy*>( mmObject )->
+                    CompleteResumeSmsReception( aResult );
+                break;                
+            case EMobileSmsMessagingGetSmspListPhase1:                
+                static_cast<CMmSmsTsy*>( mmObject )->
+                    CompleteReadAllSmspPhase1( aResult, aDataPackage );
+                break;                
+            case EMobileSmsMessagingStoreSmspList:                
+                static_cast<CMmSmsTsy*>( mmObject )->
+                    InternalStoreSmspList( aResult );
+                break;                
+            case EMobileSmsMessagingAckSmsStored:                
+                static_cast<CMmSmsTsy*>( mmObject )->
+                    CompleteAckSmsStored( aResult );
+                break;                
+            case EMobileSmsMessagingNackSmsStored:                
+                static_cast<CMmSmsTsy*>( mmObject )->
+                    CompleteNackSmsStored( aResult );
+                break;                
+            case EMobileSmsMessagingSetMoSmsBearer:
+                static_cast<CMmSmsTsy*>( mmObject )->
+                    CompleteSetMoSmsBearer( aResult );
+                break;
+            case EMobilePhoneStoreGetInfo:                
+                static_cast<CMmSmsStorageTsy*>( mmObject )->
+                    CompleteGetInfo( aResult, aDataPackage );
+                break;                
+            case EMobilePhoneStoreDelete:                
+                static_cast<CMmSmsStorageTsy*>( mmObject )->
+                    CompleteDeleteSms( aResult );
+                break;                
+            case EMobilePhoneStoreDeleteAll:                
+                static_cast<CMmSmsStorageTsy*>( mmObject )->
+                    CompleteDeleteAllSms( aResult );
+                break;                
+            case EMobilePhoneStoreRead:               
+                static_cast<CMmSmsStorageTsy*>( mmObject )->
+            		CompleteReadSms( aResult, aDataPackage );
+                break;                
+            case EMobilePhoneStoreWrite:                
+                static_cast<CMmSmsStorageTsy*>( mmObject )->
+                    CompleteWriteSms( aResult, aDataPackage );
+                break;                
+            case EMobilePhoneStoreReadAllPhase1:
+                {
+                if ( iMmPhone->GetSmsTsy()->GetSmsStorageTsy() )
+                    {
+                    static_cast<CMmSmsStorageTsy*>( mmObject )->
+                        RetrieveSmsListReadSmsL( aResult, aDataPackage );
+                    }
+                break;
+                }
+            
+            // Supplementary Services functionality
+            // Call Forwarding
+            case EMobilePhoneGetCallForwardingStatusPhase1:
+                {
+                // unpack result: a CMobilePhoneCFList
+                CMobilePhoneCFList* cfResults;
+                aDataPackage->UnPackData( &cfResults );
+                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
+                    CompleteGetCallForwardingStatusPhase1L( 
+                    cfResults, aResult );
+                break;
+                }
+            case EMobilePhoneNotifyCallServiceCapsChange:                
+                {
+                // unpack result: a RMobilePhone::TMobilePhoneCallServiceCaps
+                RMobilePhone::TMobilePhoneCallServiceCaps callServiceCaps;
+                aDataPackage->UnPackData( callServiceCaps );
+                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
+                  CompleteNotifyCallServiceCapsChange( callServiceCaps );
+                break;
+                }
+            case EMobilePhoneSetCallForwardingStatus:                
+                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
+                    CompleteSetCallForwardingStatus( aResult );
+                break;                
+            case EMobilePhoneNotifyCallForwardingStatusChange:
+                {
+                // unpack result: a RMobilePhone::TMobilePhoneCFCondition
+                RMobilePhone::TMobilePhoneCFCondition cfCondition;
+                aDataPackage->UnPackData( cfCondition );
+                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
+                  CompleteNotifyCallForwardingStatusChange( cfCondition );
+                break;
+                }
+            case EMobilePhoneNotifyCallForwardingActive:
+                {
+                // unpack results: a RMobilePhone::TMobileService
+                // and a RMobilePhone::TMobilePhoneCFActive
+                RMobilePhone::TMobileService serviceGroup;
+                RMobilePhone::TMobilePhoneCFActive activeType;
+                aDataPackage->UnPackData( serviceGroup, activeType );
+                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
+                    CompleteNotifyCallForwardingActive( 
+                    serviceGroup, activeType );
+                break;
+                }
+            // Call Barring
+            case EMobilePhoneGetBarringStatusPhase1:
+                {
+                // unpack result: a CMobilePhoneCBList
+                CMobilePhoneCBList* cbResults;
+                aDataPackage->UnPackData( &cbResults );
+                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
+                CompleteGetCallBarringStatusPhase1L( cbResults, aResult );
+                break;
+                }
+            case EMobilePhoneSetCallBarringStatus:                
+                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
+                    CompleteSetCallBarringStatus( aResult );
+                break;                
+            case EMobilePhoneNotifyCallBarringStatusChange:
+                {
+                // unpack result: a RMobilePhone::TMobilePhoneCBCondition
+                RMobilePhone::TMobilePhoneCBCondition cbCondition;
+                aDataPackage->UnPackData( cbCondition );
+                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
+                    CompleteNotifyCallBarringStatusChange( cbCondition );
+                break;
+                }
+            // Supplementary Services password change
+            case EMobilePhoneSetSSPassword:                
+                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
+                    CompleteSetSSPassword( aResult );
+                break;                
+            // Call Waiting
+            case EMobilePhoneGetWaitingStatusPhase1:
+                {
+                // unpack result: a CMobilePhoneCWList
+                CMobilePhoneCWList* cwResults;
+                aDataPackage->UnPackData( &cwResults );
+                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
+                CompleteGetCallWaitingStatusPhase1L( cwResults, aResult );
+                break;
+                }
+            case EMobilePhoneSetCallWaitingStatus:                
+                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
+                    CompleteSetCallWaitingStatus( aResult );
+                break;                
+            case EMobilePhoneNotifyCallWaitingStatusChange:
+                {
+                // unpack result: RMobilePhone::TMobilePhoneCWInfoEntryV1
+                RMobilePhone::TMobilePhoneCWInfoEntryV1* cwStatus;
+                aDataPackage->UnPackData( &cwStatus );
+                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
+                    CompleteNotifyCallWaitingStatusChange( cwStatus );
+                break;
+                }
+            // Identity EMobilePhoneGetIdentityServiceStatus
+            case EMobilePhoneGetIdentityServiceStatus:
+                {
+                // if no error, then unpack result: a
+                // RMobilePhone::TMobilePhoneIdServiceStatus
+                RMobilePhone::TMobilePhoneIdServiceStatus status =
+                    RMobilePhone::EIdServiceUnknown;
+                if ( KErrNone == aResult )
+                    {
+                    aDataPackage->UnPackData( status );
+                    }
+                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
+                    CompleteGetIdentityServiceStatus( status, aResult );
+                break;
+                }
+            // User's Access to Network Services
+            case EMobilePhoneSendNetworkServiceRequest:                
+                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
+                    CompleteSendNetworkServiceRequest( aResult );
+                break;  
+            case EMobilePhoneSendNetworkServiceRequestNoFdnCheck:
+            	static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
+                    CompleteSendNetworkServiceRequestNoFdnCheck( aResult );
+                break;
+            // Notify for Send Network Service Request
+            case ECtsyPhoneSendNetworkServiceRequestInd:
+            	static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
+            		CompleteSendNetworkServiceRequestInd( aResult,aDataPackage);
+            	break;
+            // Notify for All Send Network Service Request
+            case EMobilePhoneNotifyAllSendNetworkServiceRequest:
+                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
+                CompleteNotifyAllSendNetworkServiceRequest( aResult,
+                    aDataPackage );
+                break;
+            // Get ICC message waiting indicators
+            case EMobilePhoneGetIccMessageWaitingIndicators:
+                {
+                // packed param: RMobilePhone::TMobilePhoneMessageWaitingV1
+                RMobilePhone::TMobilePhoneMessageWaitingV1* mmWaiting;
+                aDataPackage->UnPackData( &mmWaiting );
+                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
+                    CompleteGetIccMessageWaitingIndicators( mmWaiting,
+                    aResult );
+                }
+                break;
+                
+            // Set ICC message waiting indicators
+            case EMobilePhoneSetIccMessageWaitingIndicators:                    
+                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
+                    CompleteSetIccMessageWaitingIndicators( aResult );
+                break;
+                    
+            // Notify ICC message waiting indicators change
+            case EMobilePhoneNotifyIccMessageWaitingIndicatorsChange:
+                // packed param: RMobilePhone::TMobilePhoneMessageWaitingV1
+                RMobilePhone::TMobilePhoneMessageWaitingV1* mmWaiting;
+                aDataPackage->UnPackData( &mmWaiting );
+                static_cast<CMmPhoneTsy*>( mmObject )->GetSupplServTsy()->
+                    CompleteNotifyIccMessageWaitingIndicatorChange(
+                    mmWaiting, aResult );
+                break;    
+
+            // case EMobilePhoneGetCallForwardingStatusPhase2:          no DOS call required
+            // case EMobilePhoneGetCallForwardingStatusCancel:          no DOS call required
+            // case EMobilePhoneSetCallForwardingStatusCancel:          no DOS call required
+            // case EMobilePhoneNotifyCallForwardingStatusChangeCancel: no DOS call required
+            // case EMobilePhoneNotifyCallForwardingActiveCancel:       no DOS call required
+            // case EMobilePhoneGetCallForwardingIndicator:             not supported
+            // case EMobilePhoneGetCallForwardingIndicatorCancel:       not supported
+
+            // Custom Tsy functionality
+            case ECustomSsAdditionalInfoNotificationIPC:
+                {
+                // unpack pointer to RMmCustomAPI::TSsAdditionalInfo
+                RMmCustomAPI::TSsAdditionalInfo* addInfo;
+                aDataPackage->UnPackData( addInfo );
+
+                static_cast<CMmCustomTsy*>( mmObject )->
+                CompleteSsAdditionalInfoNotification( addInfo, aResult );
+                break;
+                }
+            case ECustomNotifySsNetworkEventIPC:
+                {
+                // unpack result: a RMmCustomAPI::TSsTypeAndMode and
+                // a RMmCustomAPI::TSsInfo
+                RMmCustomAPI::TSsTypeAndMode ssTypeAndMode;
+                RMmCustomAPI::TSsInfo ssInfo;
+                aDataPackage->UnPackData( ssTypeAndMode, ssInfo );
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteNotifySsNetworkEvent( ssTypeAndMode, ssInfo, 
+                    aResult );
+                break;
+                }
+            case ECustomNotifySsRequestCompleteIPC:
+                {
+                // unpack result: a TInt with SS status
+                TInt ssStatus;
+                aDataPackage->UnPackData( ssStatus );
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteSsRequestCompleteNotification( 
+                    ssStatus, aResult );
+                break;
+                }
+            case ECustomNotifyDtmfEventIPC:
+                {
+                // unpack result: a RMmCustomAPI::TDtmfInfo
+                RMmCustomAPI::TDtmfInfo dtmfInfo;
+                aDataPackage->UnPackData( dtmfInfo );
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteNotifyDtmfEvent( dtmfInfo, aResult );
+                break;
+                }
+         	case ECustomNotifyRauEventIPC:
+                {
+                // unpack result
+                RMmCustomAPI::TRauEventStatus rauEventStatus;
+                aDataPackage->UnPackData( rauEventStatus );
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteNotifyRauEvent( rauEventStatus, aResult );
+                break;
+                }
+            case ECustomGetDiagnosticOctetsIPC:
+                {
+                // unpack result: TInt (call ID) and TUint8 (diagnostics)
+                TInt callId( -1 );
+                TUint8 diags;
+                aDataPackage->UnPackData( callId, diags );
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteGetDiagnosticOctects( callId, diags );
+                break;
+                }
+            case ECustomGetRemoteAlertingToneStatusIPC:
+                {
+                // unpack result: a TBool playRemoteAlertToneLocally
+                TBool playRemoteAlertToneLocally;
+                aDataPackage->UnPackData( playRemoteAlertToneLocally );
+                // not completed by Custom Tsy, but by the GSM extension
+                CMmCustomGsmExt* customGsmExt = 
+                    static_cast<CMmCustomGsmExt*>(
+                    static_cast<CMmCustomTsy*>( mmObject )->
+                    GetActiveExtensionPtr() );
+                
+                if ( customGsmExt )
+                    {
+                    customGsmExt->SetLocalRemoteAlertToneRequired(
+                        playRemoteAlertToneLocally );
+                    }
+                break;
+                }
+            case ECustomClearCallBlackListIPC:                
+                // no packed parameters
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteClearCallBlackList( aResult );
+                break;                
+            case ECustomCheckEmergencyNumberIPC:
+                {
+                // packed parameter: a ptr to TMobileTelNumber
+                RMmCustomAPI::TMobileTelNumber* telNumber;
+                aDataPackage->UnPackData( telNumber );
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteCheckEmergencyNumber( telNumber, aResult );
+                break;
+                }
+            case ECustomGetLifeTimeIPC:
+                {
+                // packed parameter: a RMmCustomAPI::TLifeTimeData
+                RMmCustomAPI::TLifeTimeData lifeTime;
+                aDataPackage->UnPackData( lifeTime );
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteGetLifeTime( lifeTime, aResult );
+                break;
+                }
+            case ECustomTerminateCallIPC:                
+                // no packed parameters
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteTerminateCall( aResult );
+                break;                
+            case ECustomGetAlsBlockedIPC:
+                {
+                // packed parameter: TGetAlsBlockStatus (block status)
+                RMmCustomAPI::TGetAlsBlockStatus blockStatus;
+                aDataPackage->UnPackData( blockStatus );
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteGetAlsBlocked( blockStatus, aResult );
+                break;
+                }
+            case ECustomSetAlsBlockedIPC:                
+                // no packed parameters
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteSetAlsBlocked( aResult );
+                break;                
+            case ECustomCheckAlsPpSupportIPC:
+                {
+                // packed parameter: RMmCustomAPI::TAlsSupport
+                RMmCustomAPI::TAlsSupport alsSupport;
+                aDataPackage->UnPackData( alsSupport );
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteGetAlsPpSupport( alsSupport, aResult );
+                break;
+                }
+            case ECustomCheckTwoDigitDialSupportIPC:
+                {
+                // packed parameter: RMmCustomAPI::TTwoDigitDialSupport
+                RMmCustomAPI::TTwoDigitDialSupport twoDigitDialSupport;
+                aDataPackage->UnPackData( twoDigitDialSupport );
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteCheckTwoDigitDialSupport( twoDigitDialSupport,
+                    aResult );
+                break;
+                }
+            case ECustomGetCipheringInfoIPC:
+                {
+                // packed parameter:
+                // TBool (ciphering indicator required/not required)
+                TBool indReq;
+                aDataPackage->UnPackData( indReq );
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteGetCipheringInfo( indReq, aResult );
+                break;
+                }
+            case ECustomNotifyCipheringInfoChangeIPC:
+                {
+                // packed parameters:
+                // TBool (ciphering indicator required/not required)
+                // TBool (ciphering on/off)
+                TBool indReq;
+                TBool ciStatus;
+                aDataPackage->UnPackData( indReq, ciStatus );
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteNotifyCipheringInfoChange( indReq, ciStatus, 
+                    aResult );
+                break;
+                }
+            case ECustomNotifyNSPSStatusIPC:
+                {
+                // packed parameter: TBool nspsIsOn
+                TBool nspsIsOn;
+                aDataPackage->UnPackData( nspsIsOn );
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteNotifyNSPSStatus( nspsIsOn );
+                break;
+                }
+            case ECustomNetWakeupIPC:                
+                // no packed parameters
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteNetWakeup( aResult );
+                break;                
+            case ECustomGetOperatorNameIPC:
+                {
+                // packed parameter: a RMmCustomAPI::TOperatorNameInfo
+                RMmCustomAPI::TOperatorNameInfo operNameInfo;
+                aDataPackage->UnPackData( operNameInfo );
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteGetOperatorName( operNameInfo, aResult );
+                break;
+                }
+            case EMobilePhoneIMSAuthenticate:                
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                    CompleteImsAuthentication( aDataPackage, aResult );
+                break;                
+            case ECustomGetSimAuthenticationDataIPC:                
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteSimAuthentication( aDataPackage, aResult );
+                break;                
+            case ECustomResetNetServerIPC:                
+                // no packed parameters
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteResetNetServer( aResult );
+                break;                
+            case ECustomNotifyNetworkConnectionFailureIPC:                
+                // no packed parameters
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteNotifyNetworkConnectionFailure();
+                break;                
+            case ECustomGetSystemNetworkModesIPC:
+                {
+                // packed parameters TUint32 (systemNetworkModes)
+                TUint32 systemNetworkModes;
+                aDataPackage->UnPackData( systemNetworkModes );
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteGetSystemOrCurrentNetworkModes( 
+                    systemNetworkModes, aResult );
+                break;
+                }
+            case ECustomSetSystemNetworkModeIPC:                
+                // no packed parameters)
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteSetSystemNetworkMode( aResult );
+                break;                
+            case ECustomGetNetworkProviderNameIPC:
+                {
+                // packed parameter: TDes* (network provider name)
+                TDes* name;
+                aDataPackage->UnPackData( name );
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteGetNetworkOperatorName( name, aResult );
+                break;
+                }
+            case ECustomGetCurrentSystemNetworkModesIPC:
+                {
+                TUint32 currentNetworkModes;
+                aDataPackage->UnPackData( currentNetworkModes );
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteGetCurrentSystemNetworkMode( 
+                    currentNetworkModes, aResult );
+                break;
+                }
+            case ECustomGetBandSelectionIPC:
+                {
+                // Packed parameters TBandSelection (systemNetworkBand). 
+                // Initialize parameters. In otherwise compiler gives warning.
+                // CompleteGetSystemNetworkBand does not handle parameters if 
+                // aResult is not KErrNone.
+                RMmCustomAPI::TBandSelection systemNetworkBand
+                    = RMmCustomAPI::ENetworkBandAny;
+                RMmCustomAPI::TNetworkModeCaps systemNetworkMode
+                    = RMmCustomAPI::KCapsNetworkModeDual;
+                if (KErrNone == aResult)
+                	{
+                aDataPackage->UnPackData( systemNetworkBand,
+                    systemNetworkMode );
+                	}
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteGetSystemNetworkBand( 
+                    systemNetworkBand, systemNetworkMode, aResult );
+                break;
+                }
+            case ECustomSetBandSelectionIPC:                
+                // no packed parameters)
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteSetSystemNetworkBand( aResult );
+                break;
+            
+            case ECustomSatRefreshCompleteNotificationIPC:                
+                // no packed parameters
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteSatRefreshCompleteNotification();
+                break;                
+            case ECustomReadSimFileIPC:
+                {
+                // packed parameter: pointer to TDesC8 (SIM data)
+                TDesC8* simData;
+                aDataPackage->UnPackData( simData );
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteGetSimFileInfo( simData, aResult );
+                break;
+                }
+            case ECustomSimLockActivateIPC:
+                {
+                // no packed parameters
+                CMmSimLockTsy* simLockTsy = static_cast<CMmSimLockTsy*>(
+                    static_cast<CMmCustomTsy*>( mmObject )->
+                    GetSimLockTsyPtr() );
+                simLockTsy->CompleteActivateSimLock( aResult );
+                break;
+                }
+            case ECustomSimLockDeActivateIPC:
+                {
+                // no packed parameters
+                CMmSimLockTsy* simLockTsy = static_cast<CMmSimLockTsy*>(
+                    static_cast<CMmCustomTsy*>( mmObject )->
+                    GetSimLockTsyPtr() );
+                simLockTsy->CompleteDeActivateSimLock( aResult );
+                break;
+                }
+            case ECustomSendAPDUReqIPC:
+                {
+                CMmWimTsy* wimTsy = static_cast<CMmWimTsy*>(
+                    static_cast<CMmCustomTsy*>( mmObject )->
+                    GetWimTsyPtr() );
+                wimTsy->CompleteSendAPDUReq( aDataPackage, aResult );
+                break;
+                }
+            case ECustomSimWarmResetIPC:
+                {
+                // no packed parameters
+                CMmWimTsy* wimTsy = static_cast<CMmWimTsy*>(
+                    static_cast<CMmCustomTsy*>( mmObject )->
+                    GetWimTsyPtr() );
+                wimTsy->CompleteSimWarmReset( aResult );
+                break;
+                }
+            case ECustomGetATRIPC:
+                {
+                // packed parameter: TPtrC8* atr
+                TPtrC8* atr;
+                aDataPackage->UnPackData( &atr );
+                CMmWimTsy* wimTsy = static_cast<CMmWimTsy*>(
+                    static_cast<CMmCustomTsy*>( mmObject )->
+                    GetWimTsyPtr() );
+                wimTsy->CompleteGetATR( *atr, aResult );
+                break;
+                }
+            case ECustomGetSimCardReaderStatusIPC:
+                {
+                // packed parameter: TPtrC8* status
+                TPtrC8* status;
+                aDataPackage->UnPackData( &status );
+                CMmWimTsy* wimTsy = static_cast<CMmWimTsy*>(
+                    static_cast<CMmCustomTsy*>( mmObject )->
+                    GetWimTsyPtr() );
+                wimTsy->CompleteGetSimCardReaderStatus( 
+                    *status, aResult );
+                break;
+                }
+            case ECustomNotifySimCardStatusIPC:
+                {
+                // packed param: RMmCustomAPI::TSIMCardStatus returnStatus
+                RMmCustomAPI::TSIMCardStatus returnStatus;
+                aDataPackage->UnPackData( returnStatus );
+                CMmWimTsy* wimTsy = static_cast<CMmWimTsy*>(
+                    static_cast<CMmCustomTsy*>( mmObject )->
+                    GetWimTsyPtr() );
+                wimTsy->CompleteNotifySimCardStatus( returnStatus );
+                break;
+                }
+            case ECustomSendAPDUReqV2IPC:
+                {
+                // packed parameter: TPtrC8* data
+                TPtrC8* data;
+                aDataPackage->UnPackData( &data );
+                CMmWimTsy* wimTsy = static_cast<CMmWimTsy*>(
+                    static_cast<CMmCustomTsy*>( mmObject )->
+                    GetWimTsyPtr() );
+                wimTsy->CompleteSendAPDUReqV2( *data, aResult );
+                break;
+                }
+            case ECustomPowerSimOnIPC:
+                {
+                // no packed parameters
+                CMmWimTsy* wimTsy = static_cast<CMmWimTsy*>(
+                    static_cast<CMmCustomTsy*>( mmObject )->
+                    GetWimTsyPtr() );
+                wimTsy->CompletePowerSimOn( aResult );
+                break;
+                }
+            case ECustomPowerSimOffIPC:
+                {
+                // no packed parameters
+                CMmWimTsy* wimTsy = static_cast<CMmWimTsy*>(
+                    static_cast<CMmCustomTsy*>( mmObject )->
+                    GetWimTsyPtr() );
+                wimTsy->CompletePowerSimOff( aResult );
+                break;
+                }
+            case ECustomStartSimCbTopicBrowsingIPC:
+                {
+                // packed parameter: pointer to array with CB topics
+                CArrayFixFlat<RMmCustomAPI::TSimCbTopic>* 
+                    cimCbTopics = NULL;
+                if ( KErrNone == aResult )
+                    {
+                    // only unpack data in successful case
+                    aDataPackage->UnPackData( cimCbTopics );
+                    }
+                CMmSIMTsy* simTsy = static_cast<CMmSIMTsy*>(
+                    static_cast<CMmCustomTsy*>( mmObject )->
+                    GetSIMTsyPtr() );
+                simTsy->CompleteStartSimCbTopicBrowsing( 
+                    cimCbTopics, aResult );
+                break;
+                }
+            case ECustomDeleteSimCbTopicIPC:
+                {
+                // no packed parameters
+                CMmSIMTsy* simTsy = static_cast<CMmSIMTsy*>(
+                    static_cast<CMmCustomTsy*>( mmObject )->
+                    GetSIMTsyPtr() );
+                simTsy->CompleteDeleteSimCbTopic( aResult );
+                break;
+                }
+                
+            case ECustomGetServiceTableSupportbyApplicationIPC:
+            	{
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteGetUSIMServiceSupport(aDataPackage, aResult );
+                break;
+            	
+            	}
+            	
+            case EReadViagHomeZoneParamsIPC:
+                {
+                // packed parameter: RMmCustomAPI::TViagParams, pointer to 
+                // RMmCustomAPI::TViagElements
+                RMmCustomAPI::TViagParams viagParams;
+                RMmCustomAPI::TViagElements* viagElems = NULL;
+                if ( KErrNone == aResult )
+                    {
+                    // only unpack data in successful case
+                    aDataPackage->UnPackData( viagParams, viagElems );
+                    }
+                CMmSIMTsy* simTsy = static_cast<CMmSIMTsy*>(
+                    static_cast<CMmCustomTsy*>( mmObject )->
+                                                        GetSIMTsyPtr() );
+                simTsy->CompleteReadViagHomeZoneParamsResp( &viagParams, 
+                    viagElems, aResult );
+                break;
+                }
+            case EReadViagHomeZoneCacheIPC:
+                {
+                // packed parameter: RMmCustomAPI::TViagCacheRecordContent
+                RMmCustomAPI::TViagCacheRecordContent viagRecordContent;
+                aDataPackage->UnPackData( viagRecordContent );
+                CMmSIMTsy* simTsy = static_cast<CMmSIMTsy*>(
+                    static_cast<CMmCustomTsy*>( mmObject )->
+                    GetSIMTsyPtr() );
+                simTsy->CompleteReadViagHomeZoneCacheRespL( 
+                    &viagRecordContent, aResult );
+                break;
+                }
+            case EWriteViagHomeZoneCacheIPC:
+                {
+                // no packed parameters
+                CMmSIMTsy* simTsy = static_cast<CMmSIMTsy*>(
+                    static_cast<CMmCustomTsy*>( mmObject )->
+                    GetSIMTsyPtr() );
+                simTsy->CompleteWriteViagHomeZoneCacheResp( aResult );
+                break;
+                }
+            case EWriteViagHomeZoneUHZIUESettingsIPC:
+                {
+                // no packed parameters
+                CMmSIMTsy* simTsy = static_cast<CMmSIMTsy*>(
+                    static_cast<CMmCustomTsy*>( mmObject )->
+                    GetSIMTsyPtr() );
+                simTsy->CompleteWriteViagHomeZoneUHZIUESettingsResp( 
+                    aResult );
+                break;
+                }
+            case ECustomSetDriveModeIPC:                
+                // no packed parameters
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteSetDriveMode( aResult );
+                break;                
+            
+            // Security (Custom) functionality
+            case ECustomIsBlockedIPC:
+                {
+                TBool isBlocked;
+                aDataPackage->UnPackData ( isBlocked );
+                static_cast<CMmCustomSecurityTsy*>( mmObject )->
+                    CompleteIsBlocked( aResult, isBlocked );
+                break;
+                }
+            case ECustomCheckSecurityCodeIPC:                
+                static_cast<CMmCustomSecurityTsy*>( mmObject )->
+                    CompleteCheckSecurityCode( aResult );
+                break;                
+            //case ECustomCheckEmergencyNumberIPC:
+            //case ECustomSatRefreshCompleteNotificationIPC:
+            case ECustomDisablePhoneLockIPC:                
+                static_cast<CMmCustomSecurityTsy*>( mmObject )->
+                    CompleteDisablePhoneLock( aResult);
+                break;                
+            case ECustomCheckSecurityCodeCancelIPC:                
+                static_cast<CMmCustomSecurityTsy*>( mmObject )->
+                    CompleteCheckSecurityCodeCancel();
+                break;                
+            case ECustomReadHSxPAStatusIPC:
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteReadHSxPAStatus( aDataPackage, aResult );
+                break;
+            case ECustomWriteHSxPAStatusIPC:
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteWriteHSxPAStatus( aResult );
+                break;
+            case ECustomNotifyHSxPAStatusIPC:
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteNotifyHSxPAStatus( aDataPackage, aResult );
+                break;
+            case ECustomGetIccCallForwardingStatusIPC:
+            	static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteGetIccCallForwardingStatus( aDataPackage, aResult );
+                break;
+            case ECustomNotifyIccCallForwardingStatusChangeIPC:
+            	static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteNotifyIccCallForwardingStatusChange( aDataPackage, aResult );
+                break;
+            case ECustomGetCellInfoIPC:
+                {
+                //unpack the data
+                RMmCustomAPI::TMmCellInfo* cellInfo;
+                aDataPackage->UnPackData( &cellInfo );
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteGetCellInfo( cellInfo, aResult );
+                break;
+                }
+            case ECustomNotifyCellInfoChangeIPC:
+            	{
+                //unpack the data
+                RMmCustomAPI::TMmCellInfo* cellInfoChange;
+                aDataPackage->UnPackData( &cellInfoChange );
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteNotifyCellInfoChange( cellInfoChange, aResult );
+                break;
+                }
+        	case ECustomNotifyRemoteAlertingToneStatusChangeIPC:
+                {
+                // unpack result
+                RMmCustomAPI::TRemoteAlertingToneStatus remoteAlertingToneStatus;
+                aDataPackage->UnPackData( remoteAlertingToneStatus );
+                static_cast<CMmCustomTsy*>( mmObject )->
+                    CompleteNotifyRemoteAlertingToneStatusChange( 
+                    remoteAlertingToneStatus, aResult );
+                break;
+                }
+                
+            case ECustomGetProgrammableOperatorLogoIPC:
+            	{
+            	RMmCustomAPI::TOperatorId* operatorId;
+            	RMmCustomAPI::TOperatorLogo* operatorLogo;
+            	aDataPackage->UnPackData(&operatorId, &operatorLogo);
+				static_cast<CMmCustomTsy*>( mmObject )->CompleteGetProgrammableOperatorLogo(operatorId, operatorLogo, aResult);
+				break;
+            	}
+                
+                
+        	// Security cases
+            case EMobilePhoneGetLockInfo:                
+                static_cast<CMmPhoneTsy*>( mmObject )->GetSecurityTsy()->
+                    CompleteGetLockInfo( aDataPackage, aResult );
+                break;                
+            case EMobilePhoneChangeSecurityCode:                
+                static_cast<CMmPhoneTsy*>( mmObject )->GetSecurityTsy()->
+                    CompleteChangeSecurityCode( aResult );
+                break;                
+            case EMobilePhoneAbortSecurityCode:                
+                static_cast<CMmPhoneTsy*>( mmObject )->GetSecurityTsy()->
+                    CompleteAbortSecurityCode( aResult );
+                break;                
+            case EMobilePhoneVerifySecurityCode:                
+                static_cast<CMmPhoneTsy*>( mmObject )->GetSecurityTsy()->
+                    CompleteVerifySecurityCodeL( aResult );
+                break;                
+            case EMobilePhoneSetLockSetting:
+                {
+                //unpack the data
+                RMobilePhone::TMobilePhoneLockStatus* status = NULL;
+                RMobilePhone::TMobilePhoneLockSetting* setting = NULL;
+                aDataPackage->UnPackData( &status, &setting );
+                static_cast<CMmPhoneTsy*>( mmObject )->GetSecurityTsy()->
+                    CompleteSetLockSetting( aResult,*status, *setting );
+                break;
+                }
+            case EMobilePhoneNotifySecurityEvent:
+                {
+                RMobilePhone::TMobilePhoneSecurityEvent* event = NULL;
+                //unpack the data
+                aDataPackage->UnPackData( &event );
+                static_cast<CMmPhoneTsy*>( mmObject )->GetSecurityTsy()->
+                    CompleteNotifySecurityEventL( *event, aResult );
+                break;
+                }
+            case EMobilePhoneNotifyLockInfoChange:                
+                static_cast<CMmPhoneTsy*>( mmObject )->GetSecurityTsy()->
+                    CompleteNotifyLockInfoChange( aDataPackage, aResult);
+                break;                
+            case EMmTsySecurityGetSimActivePinStateIPC:                
+                static_cast<CMmCustomSecurityTsy*>(
+                    mmObject )->SetActivePin( aDataPackage );
+                break;                
+            case EMmTsySimGetICCType:                
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                  PhoneExtInterface()->CompleteGetICCType( aDataPackage );
+                break;                
+            case EMmTsyBootNotifySimStatusReadyIPC: 
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                    CompleteNotifySimStatusReadyL();
+                break;                
+            case EMmTsyBootNotifyModemStatusReadyIPC:                
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                    CompleteNotifyModemStatusReady();
+                break;                
+            case EMmTsyBootNotifySecurityReadyIPC:                
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                    CompleteNotifySecurityReady();
+                break;   
+            case EMobilePhoneNotifyIccAccessCapsChange:                
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                    CompleteNotifyIccAccessCapsChange();
+                break;              
+            case EMmTsyBootGetRFStatusIPC:
+                {
+                TRfStateInfo* rfInfo = NULL;
+                aDataPackage->UnPackData ( &rfInfo );
+                CMmPhoneTsy* phoneTsy = 
+                                  static_cast<CMmPhoneTsy*>( mmObject );
+                phoneTsy->SetRfStateInfo( *rfInfo );
+                // inform also SMS Tsy about RF state
+                CMmSmsTsy* smsTsy = phoneTsy->SmsSession();
+                if ( smsTsy )
+                    {
+                    if ( ERfsStateInfoInactive == *rfInfo )
+                        {
+                        smsTsy->SetOffline( ETrue );
+                        }
+                    else
+                        {
+                        smsTsy->SetOffline( EFalse );
+                        }
+                    }
+                break;
+                }
+            case EMobilePhoneGetMailboxNumbers:
+            	iMmPhone->CompleteGetMailboxNumbers( aDataPackage, aResult );
+                break;            
+            // Miscellaneous Phone functionality
+
+            // case EMobilePhoneGetBatteryInfo: // handled in CommonTSY
+            case EMobilePhoneNotifyBatteryInfoChange:
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                  CompleteNotifyBatteryInfoChange(aDataPackage, aResult );
+                //  phone indicator status may change
+                iMmPhone->CompleteNotifyIndicatorChange();
+                break;
+
+            case EMobilePhoneGetPhoneId:
+                {
+                // packed parameter: TDes8 with serial number
+                TBuf8<KSerialNumberLength> serialNumber;
+                aDataPackage->UnPackData( serialNumber );
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                    CompleteGetPhoneId( serialNumber, aResult );
+                break;
+                }
+
+#ifdef USING_CTSY_DISPATCHER               
+            case ECtsyGetPhoneIdV2Comp: 
+                {
+                // Ltsy returns packed parameter of RMobilePhone::TMobilePhoneIdentityV1
+                RMobilePhone::TMobilePhoneIdentityV1* phoneId = NULL;
+                aDataPackage->UnPackData(&phoneId);
+                __ASSERT_DEBUG(phoneId, User::Invariant());
+
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                    CompleteGetPhoneId(*phoneId, aResult);
+                break;
+                }
+#endif //USING_CTSY_DISPATCHER
+             
+            case EMobilePhoneGetSubscriberId:
+                {
+                // packed param: TBuf8<RMobilePhone::KIMSISize> with IMSI
+                TBuf8<RMobilePhone::KIMSISize> imsi;
+                aDataPackage->UnPackData( imsi );
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                    CompleteGetSubscriberIdL( imsi, aResult );
+                break;
+                }
+            case EMobilePhoneGetALSLine:
+                {
+                // packed parameter: RMobilePhone::TMobilePhoneALSLine
+                RMobilePhone::TMobilePhoneALSLine alsStatus;
+                aDataPackage->UnPackData ( alsStatus );
+
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                    CompleteGetAlsLine ( alsStatus, aResult );
+                break;
+                }
+            case EMobilePhoneSetALSLine:                
+                // no packed parameters
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                    CompleteSetAlsLine ( aResult );
+                break;                
+            case EMobilePhoneGetCustomerServiceProfile:
+                {
+                // packed parameter: RMobilePhone::TMobilePhoneCspFileV1
+                RMobilePhone::TMobilePhoneCspFileV1 cspFile;
+                aDataPackage->UnPackData( cspFile );
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                    CompleteGetCustomerServiceProfile( cspFile, aResult );
+                break;
+                }
+            case EMobilePhoneGetPhoneStoreInfo:
+                {
+                //packed param: RMobilePhoneStore::TMobilePhoneStoreInfoV1
+                RMobilePhoneStore::TMobilePhoneStoreInfoV1 phoneStoreInfo;
+                aDataPackage->UnPackData( phoneStoreInfo );
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                    CompleteGetPhoneStoreInfo( phoneStoreInfo, aResult );
+                break;
+                }
+            case EMobilePhoneGetServiceTable:
+                {
+                //packed param: RMobilePhone::TMobilePhoneServiceTableV1
+                RMobilePhone::TMobilePhoneServiceTableV1 table;
+                aDataPackage->UnPackData( table );
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                    CompleteGetServiceTableL ( table, aResult );
+                break;
+                }
+            case EMmTsyPhoneGetPin1DisableSupportedIPC:
+                {
+                // packed parameter: TBool (supported or not)
+                TBool supported = EFalse;
+                aDataPackage->UnPackData( supported );
+                if ( !supported )
+                    {
+                    static_cast<CMmPhoneTsy*>( mmObject )->
+                          GetSecurityTsy()->SetPin1DisableNotSupported();
+                    }
+                break;
+                }
+            case EMobilePhoneSetFdnSetting :                
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                    CompleteSetFdnSettingL( aResult );
+                break;                
+            case EMobilePhoneGetFdnStatus:                
+                static_cast<CMmPhoneTsy*>( mmObject )-> 
+                    CompleteGetFdnStatus( aDataPackage, aResult );
+                break;                
+            case EMobilePhoneGetServiceProviderName:                
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                  CompleteGetServiceProviderName( aDataPackage, aResult );
+                break;                
+            case EMmTsySimRefreshNowIPC:
+                {
+                //packed param: TUint16(list of SIM files to be refreshed)
+                TUint16 filesToRefresh = 0;
+                aDataPackage->UnPackData( filesToRefresh );
+                // Refresh notification received, start refresh
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                    CompleteSimRefreshNowL( filesToRefresh );
+                break;
+                }
+            case EMmTsyGetCallForwardingNumberIPC:
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                    CompleteGetCallForwardingNumber( 
+                    aResult, aDataPackage );
+                break;
+
+            // Access point control list (ACL)
+            case EMobilePhoneEnumerateAPNEntries:
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                    CompleteEnumerateAPNEntries( aDataPackage, aResult );
+                break;
+            case EMobilePhoneGetAPNname:
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                    CompleteGetAPNname( aDataPackage, aResult );
+                break;
+            case EMobilePhoneAppendAPNName:
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                    CompleteAppendAPNName( aResult );
+                break;
+            case EMobilePhoneDeleteAPNName:
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                    CompleteDeleteAPNName( aResult );
+                break;
+            case EMobilePhoneSetAPNControlListServiceStatus:
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                    CompleteSetAPNControlListServiceStatus( aResult );
+                break;
+            case EMobilePhoneGetAPNControlListServiceStatus:
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                    CompleteGetAPNControlListServiceStatus( aDataPackage, 
+                    aResult );
+                break;
+            case EMobilePhoneNotifyAPNListChanged:
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                    CompleteNotifyAPNListChanged( aResult );
+                break;
+            case EMobilePhoneNotifyAPNControlListServiceStatusChange:
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                    CompleteNotifyAPNControlListServiceStatusChange( 
+                    aDataPackage, aResult );
+                break;
+            case EMobilePhoneGetSecurityCodeInfo:
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                    GetSecurityTsy()->CompleteGetSecurityCodeInfo( 
+                    aDataPackage, aResult );
+                break;
+            case EMobilePhoneNotifySecurityCodeInfoChange:
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                    GetSecurityTsy()->CompleteNotifySecurityCodeInfoChange( 
+                    aDataPackage, aResult );
+                break;
+            case EMmTsyPhoneBookStoreFdnInfoIPC:
+TFLOGSTRING("TSY: CMmMessageRouterProxy::RouteCompletion: route to phonetsy EMmTsyPhoneBookStoreFdnInfoIPC");               
+                static_cast<CMmPhoneTsy*>( mmObject )->
+                    SaveFdnInfoDetails( aResult, aDataPackage );
+                break;
+            default:
+                break;
+            }
+
+        }
+    else //special cases goes here
+        {
+        switch ( aIpc )
+            {
+            //this IPC has to be routed to
+            //the NetTsy object as is an special case. 
+            //We Force the routing.
+            case EMobileCallNotifyPrivacyConfirmation:
+                {
+                mmObject =iTsyDelegates-> 
+                      GetTsyObject(  CMmMessageManagerBase::EPhoneTsy );
+                static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->
+                    ReceivedCallPrivacyInformation( aDataPackage );
+                break;
+                }
+            case EMobileCallGetMobileCallInfo:
+                {
+                // If call object is not found, this call object has just 
+                // been initiated. Inform Line object instead.
+                // (Get mobile call information is always completed before 
+                // call status change)
+                TInt callId( -1 );
+                RMobilePhone::TMobileService callMode( 
+                    RMobilePhone::EVoiceService );
+
+                const CCallDataPackage* callData = 
+                  reinterpret_cast<const CCallDataPackage*>(aDataPackage);
+                callData->GetCallIdAndMode( callId, callMode );
+
+                mmObject = REINTERPRET_CAST( CBase*, 
+                      iMmPhone->LineList()->GetMmLineByMode( callMode ) );
+                
+                if ( NULL == mmObject )
+                    {
+TFLOGSTRING("TSY: CMmMessageRouterProxy::RouteCompletion: Call object not found for mobile Call Info!");
+                    }
+                else
+                    {
+                    // complete call added notification directly from here
+                    static_cast<CMmLineTsy*>( mmObject )->
+                        CompleteNotifyDiallingStatus( aDataPackage );
+                    }
+                break;
+                }
+            case EEtelCallDial:
+            case EMobileCallDialISV:
+            case EMobileCallDialNoFdnCheck:
+                {
+                //If data/video call creation fails (e.g when dialled 
+                //number has not been in the FDN list), dial is completed 
+                //when this call object has just been initiated 
+                //(and therefore not found).
+                TInt callId( -1 );
+                RMobilePhone::TMobileService callMode( 
+                    RMobilePhone::EServiceUnspecified );
+
+                const CCallDataPackage* callData = 
+                reinterpret_cast<const CCallDataPackage*>( aDataPackage );
+                callData->GetCallIdAndMode( callId, callMode );
+
+                if ( callId == 0 && ( 
+                    callMode == RMobilePhone::ECircuitDataService || 
+                    callMode == RMobilePhone::EVoiceService || 
+                    callMode == RMobilePhone::EAuxVoiceService ) )
+                    {
+                    //check if data call exists
+                    CMmDataCallTsy* mmCall = 
+                      reinterpret_cast<CMmDataCallTsy*>(
+                        iMmPhone->CallList()->
+                            GetMmCallByMode( callMode ) );
+
+                    if ( NULL == mmCall )
+                        {
+TFLOGSTRING("TSY: CMmMessageRouterProxy::RouteCompletion: Call object not found for Dial!");
+                        }
+                    else
+                        {
+                        //find object that requested dial
+                        if ( ( mmCall->IsServiceLocallyRequested( 
+                            CMmCallTsy::EMultimodeCallDial ) )
+                            || ( mmCall->IsServiceLocallyRequested( 
+                            CMmCallTsy::EMultimodeCallDialISV ) ) 
+                            || (mmCall->IsServiceLocallyRequested( 
+                            CMmCallTsy::EMultimodeMobileCallDialEmergencyCall ) ) 
+                            || ( mmCall->IsServiceLocallyRequested( 
+                            CMmCallTsy::
+                            EMultimodeCallDialNoFdnCheck ) ) )
+                            {
+                            for( TInt i = 0; i < iMmPhone->CallList()->
+                                GetNumberOfObjects(); i++ )
+                                {
+                                mmCall = reinterpret_cast<CMmDataCallTsy*>(
+                                    iMmPhone->CallList()->
+                                                    GetMmCallByIndex(i) );
+                                                    
+                                if ( ( mmCall->ServiceRequested( 
+                                    CMmCallTsy::EMultimodeCallDial ) 
+                                      && mmCall->CallMode() == callMode )
+                                      || ( mmCall->ServiceRequested( 
+                                      CMmCallTsy::EMultimodeCallDialISV ) 
+                                    && mmCall->CallMode() == callMode ) )
+                                    {
+TFLOGSTRING("TSY: CMmMessageRouterProxy::RouteCompletion: Special case before CompleteDial");                                    
+                                    mmCall->CompleteDial( aResult );
+                                    break;
+                                    }
+                                    
+                                if  ( mmCall->ServiceRequested( 
+                                    CMmCallTsy::EMultimodeCallDialNoFdnCheck ) 
+                                    && mmCall->CallMode() == callMode )
+                                    {
+TFLOGSTRING("TSY: CMmMessageRouterProxy::RouteCompletion: Special case before CompleteDialNoFdn");                                          
+                                    mmCall->CompleteDialNoFdn( aResult );
+                                    break;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                break;
+                }
+            default:
+                break;
+            }
+        }
+    }
+    
+// ---------------------------------------------------------------------------
+// CMmMessageRouterProxy::RegisterTsyObject
+// Registers a Tsy object for request and notification completions
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//  
+void CMmMessageRouterProxy::SetPhoneTsy(
+    CMmPhoneTsy* aMmPhone )
+    {
+    iMmPhone = aMmPhone;
+    }
+
+//  End of File