telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/src/cmockphonemesshandler.cpp
changeset 0 3553901f7fa8
child 20 244d7c5f118e
child 47 8b9e023e329f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/src/cmockphonemesshandler.cpp	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,951 @@
+// Copyright (c) 2007-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 <ctsy/pluginapi/mmmessagemanagercallback.h>
+#include <ctsy/serviceapi/mmtsy_ipcdefs.h>
+#include "cmockphonemesshandler.h"
+#include "MmTsy_Csd_Defs.h" 
+#include <ctsy/pluginapi/cmmdatapackage.h>
+#include "cmmmessagerouter.h"
+#include "cmockltsyengine.h"
+#include "tmockltsydata.h"
+#include <mmlist.h>
+#include "etelmm.h"
+
+/**
+Factory function
+*/
+CMockPhoneMessHandler* CMockPhoneMessHandler::NewL(CMmMessageRouter* aMessageRouter )
+    {
+    CMockPhoneMessHandler* self = new(ELeave)CMockPhoneMessHandler(aMessageRouter);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop();
+    return self;
+    }
+
+/**
+Constructor
+*/
+CMockPhoneMessHandler::CMockPhoneMessHandler(CMmMessageRouter* aMessageRouter)
+ :iMessageRouter(aMessageRouter)
+    {  
+    }
+
+/**
+2nd phase contructor
+*/
+void CMockPhoneMessHandler::ConstructL()
+    {
+    }
+
+/**
+Destructor
+*/
+CMockPhoneMessHandler::~CMockPhoneMessHandler()
+    {
+	iAuthorizationInfos.ResetAndDestroy();
+	iCBLists.ResetAndDestroy();
+	iCFLists.ResetAndDestroy();
+	iCWLists.ResetAndDestroy();
+	iVoicemailIds.ResetAndDestroy();
+	iNetworkInfoV1List.ResetAndDestroy();
+	iNetworkInfoV2List.ResetAndDestroy();
+	iNetworkInfoV5List.ResetAndDestroy();
+    }
+
+/**
+Execute a request
+*/
+TInt CMockPhoneMessHandler::ExtFuncL(TInt aIpc,const CMmDataPackage* aMmDataPackage)
+    {
+    switch (aIpc)
+    	{
+    	case EMobilePhoneGetAPNname: 
+    		{
+    		TUint32 index;
+    		aMmDataPackage->UnPackData(index);
+			TMockLtsyData1<TUint32> data(index);
+			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);    		
+    		} 
+    		
+    	case EMobilePhoneAppendAPNName:
+    		{
+    		RMobilePhone::TAPNEntryV3 apnEntry;
+    		aMmDataPackage->UnPackData(apnEntry);    		   		
+			TMockLtsyData1<RMobilePhone::TAPNEntryV3> data( apnEntry);
+			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);     		
+    		}  
+    		
+    	case EMobilePhoneDeleteAPNName:
+    		{
+    		TUint32 index;
+    		aMmDataPackage->UnPackData(index);    		 		
+			TMockLtsyData1<TUint32> data( index);
+			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);  
+    		}
+	 
+		case EMmTsyUpdateLifeTimeIPC:
+    		{
+    		TUint32 callDuration;
+    		aMmDataPackage->UnPackData(callDuration);    		 		
+			TMockLtsyData1<TUint32> data(callDuration);
+			// ignore callDuration param value, when doing check in mocksy engine:
+			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data, EFalse);  
+    		}      		
+		case EMobilePhoneSetAPNControlListServiceStatus:
+    		{
+    		RMobilePhone::TAPNControlListServiceStatus apnControlListServiceStatus;
+    		aMmDataPackage->UnPackData(apnControlListServiceStatus);    		 		
+			TMockLtsyData1<RMobilePhone::TAPNControlListServiceStatus> data(apnControlListServiceStatus);
+			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);  
+    		}
+    	
+    	case EMobilePhoneGetServiceTable:
+    		{
+     		RMobilePhone::TMobilePhoneServiceTable serviceTable;
+   			aMmDataPackage->UnPackData(serviceTable);
+			TMockLtsyData1<RMobilePhone::TMobilePhoneServiceTable> data(serviceTable);
+			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+    		}
+    		
+    	case EMobilePhoneGetLockInfo:
+    		{
+    		RMobilePhone::TMobilePhoneLock lockType;
+    		aMmDataPackage->UnPackData(lockType);
+    		TMockLtsyData1<RMobilePhone::TMobilePhoneLock> data(lockType);
+       		return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+    		}
+			    		
+    	case EMobilePhoneSetLockSetting:
+    		{
+    		TLockAndSetting* lockAndSetting;
+    		RMobilePhone::TMobilePassword* password;
+    		aMmDataPackage->UnPackData(&lockAndSetting, &password);
+    		if ( (*lockAndSetting).iLock && (*lockAndSetting).iSetting )
+    			{
+	    		TLockSettingPassword lockSettingPassword;
+	    		lockSettingPassword.iLock = *((*lockAndSetting).iLock);
+	    		lockSettingPassword.iSetting = *((*lockAndSetting).iSetting);
+	    		if ( password )
+	    			{
+	    			lockSettingPassword.iPassword = *password;
+	    			}
+	    		else
+	    			{
+	    			lockSettingPassword.iPassword = KNullDesC();
+	    			}
+	    		TMockLtsyData1<TLockSettingPassword> data(lockSettingPassword);
+	       		return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+    			}
+    		else
+    			{
+    			return KErrCorrupt;
+    			}
+    		}
+    	case EMobilePhoneNotifySecurityEvent:
+    		{
+    		RMobilePhone::TMobilePhoneSecurityEvent event;
+    		aMmDataPackage->UnPackData(event);
+    		TMockLtsyData1<RMobilePhone::TMobilePhoneSecurityEvent> data(event);
+    		return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+    		}
+    	case EMobilePhoneNotifyLockInfoChange:
+    		{
+    		RMobilePhone::TMobilePhoneLock lock;
+			RMobilePhone::TMobilePhoneLockInfoV1 lockInfoV1;
+			aMmDataPackage->UnPackData(lockInfoV1,lock);
+			TMockLtsyData2<RMobilePhone::TMobilePhoneLockInfoV1, RMobilePhone::TMobilePhoneLock> data(lockInfoV1, lock);
+			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+    		}	
+    	case EMobilePhoneAbortSecurityCode:
+		case EMobilePhoneGetSecurityCodeInfo:
+			{
+			RMobilePhone::TMobilePhoneSecurityCode secCode;
+			aMmDataPackage->UnPackData(secCode);
+			TMockLtsyData1<RMobilePhone::TMobilePhoneSecurityCode> data(secCode);
+			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc, data);
+			}
+    	case EMobilePhoneSetALSLine:
+    		{
+    		RMobilePhone::TMobilePhoneALSLine alsLine;
+    		aMmDataPackage->UnPackData(alsLine);
+    		TMockLtsyData1<RMobilePhone::TMobilePhoneALSLine> data(alsLine);
+ 			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+    		}
+    	case EMobilePhoneGetMailboxNumbers:
+    		{
+    		RMobilePhone::TMobilePhoneVoicemailIdsV3* voicemailIds;
+    		aMmDataPackage->UnPackData(&voicemailIds);
+		    TMockLtsyData1<RMobilePhone::TMobilePhoneVoicemailIdsV3> data(*voicemailIds);
+ 			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+    		}
+    	case EMobilePhoneIMSAuthenticate:
+    		{
+    		RMobilePhone::TImsAuthenticateDataV5* authData;
+    		aMmDataPackage->UnPackData(&authData);
+		    TMockLtsyData1<RMobilePhone::TImsAuthenticateDataV5> data(*authData);
+ 			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+    		}
+    	case EMobilePhoneSetIccMessageWaitingIndicators:
+    		{
+    		RMobilePhone::TMobilePhoneMessageWaitingV1* indicatorsData;
+    		aMmDataPackage->UnPackData(&indicatorsData);
+		    TMockLtsyData1<RMobilePhone::TMobilePhoneMessageWaitingV1> data(*indicatorsData);
+ 			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+    		}
+    	case EMobilePhoneSendDTMFTones:
+    		{
+    		TDesC* tones;
+    		aMmDataPackage->UnPackData(&tones);
+    		TInfoName bufTones;
+    		if (tones)
+	    		{
+	    		bufTones.Copy((*tones).Left(KMaxInfoName));	
+	    		}
+		    TMockLtsyData1<TInfoName> data(bufTones);
+ 			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+    		}
+    	case EMobilePhoneStartDTMFTone:
+    		{
+    		TChar* tone;
+    		aMmDataPackage->UnPackData(&tone);
+		    TMockLtsyData1<TChar> data(*tone);
+ 			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+    		}
+    	case EMobilePhoneContinueDTMFStringSending:
+    		{
+    		const HBufC16* tones;
+    		aMmDataPackage->UnPackData(&tones);
+    		TInfoName bufTones;
+    		if (tones)
+	    		{
+	    		bufTones.Copy(*tones);	
+	    		}
+		    TMockLtsyData1<TInfoName> data(bufTones);
+ 			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+    		}
+    	case EMobilePhoneSetCallWaitingStatus:
+    		{
+			RMobilePhone::TMobileService serviceGroup;
+    		RMobilePhone::TMobilePhoneServiceAction action;
+    		aMmDataPackage->UnPackData(serviceGroup, action);
+		    TMockLtsyData2<RMobilePhone::TMobileService, RMobilePhone::TMobilePhoneServiceAction>
+		                  data(serviceGroup, action);
+ 			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+    		}
+    	case EMobilePhoneVerifySecurityCode:
+    		{
+    		RMobilePhone::TMobilePhoneSecurityCode secCode;
+    		RMobilePhone::TCodeAndUnblockCode twoCodes;
+    		aMmDataPackage->UnPackData(secCode, twoCodes);
+    		TMockLtsyData2<RMobilePhone::TMobilePhoneSecurityCode, RMobilePhone::TCodeAndUnblockCode> data(secCode,twoCodes);
+ 			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+    		}
+		case EMobilePhoneNotifyCallBarringStatusChange:
+    		{
+    		RMobilePhone::TMobilePhoneCBCondition condition;
+    		aMmDataPackage->UnPackData(condition);
+		    TMockLtsyData1<RMobilePhone::TMobilePhoneCBCondition> data(condition);
+ 			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+    		}
+    	case EMobilePhoneGetCallForwardingStatusPhase1:
+    		{
+			RMobilePhone::TMobilePhoneCFCondition condition;
+			RMobilePhone::TMobileService serviceGroup;
+    		aMmDataPackage->UnPackData(condition, serviceGroup);
+    		TMockLtsyData2<RMobilePhone::TMobilePhoneCFCondition, RMobilePhone::TMobileService>
+    		                                          data(condition, serviceGroup);
+ 			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc, data);
+    		}
+    	case EMobilePhoneSetCallForwardingStatus:
+    		{
+			RMobilePhone::TMobilePhoneCFCondition condition;
+			RMobilePhone::TMobilePhoneCFChangeV1* cfInfo( NULL );
+    		aMmDataPackage->UnPackData(condition, cfInfo);
+    		if ( cfInfo )
+	    		{
+	    		TMockLtsyData2<RMobilePhone::TMobilePhoneCFCondition, RMobilePhone::TMobilePhoneCFChangeV1>
+	    		                                          data(condition, *cfInfo);
+	 			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc, data);
+	    		}
+	    	else
+	    		{
+	    		return KErrCorrupt;
+	    		}
+    		}
+    	case EMobilePhoneSetSSPassword:
+    		{
+    		RMobilePhone::TMobilePhonePasswordChangeV2 pwdChange;
+    		TUint16 service;
+    		aMmDataPackage->UnPackData(pwdChange, service);
+    		TMockLtsyData2<RMobilePhone::TMobilePhonePasswordChangeV2, TUint16> data(pwdChange, service);
+ 			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+    		}
+    	case EMobilePhoneSendNetworkServiceRequest:
+    	case EMobilePhoneSendNetworkServiceRequestNoFdnCheck:
+    		{
+    		const TDesC* serviceString;
+    		aMmDataPackage->UnPackData(serviceString);
+    		TInfoName serviceStringBuf(*serviceString);
+		    TMockLtsyData1<TInfoName> data(serviceStringBuf);
+ 			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc, data);
+    		}
+    	case ECtsyPhoneSendNetworkServiceRequestIndReq:
+    		{
+    		RMobilePhone::TMobilePhoneNotifySendSSOperation op;
+    		aMmDataPackage->UnPackData(op);
+    		TMockLtsyData1<RMobilePhone::TMobilePhoneNotifySendSSOperation> data(op);
+    		return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+    		}    		    		
+    	case EMobilePhoneGetIdentityServiceStatus:
+    		{
+    		RMobilePhone::TMobilePhoneIdService service;
+    		aMmDataPackage->UnPackData(service);
+			TMockLtsyData1<RMobilePhone::TMobilePhoneIdService> data(service);
+ 			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc, data);
+    		}
+    	case EMobilePhoneSetNetworkSelectionSetting:
+    		{
+			RMobilePhone::TMobilePhoneNetworkSelectionV1 setting;
+    		aMmDataPackage->UnPackData(setting);
+    		TMockLtsyData1<RMobilePhone::TMobilePhoneNetworkSelectionV1> data(setting);
+ 			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+    		}
+    	case EMobilePhoneSelectNetwork:
+    		{
+			TBool isManual;
+			RMobilePhone::TMobilePhoneNetworkManualSelection manualSelection;
+    		aMmDataPackage->UnPackData(isManual, manualSelection);
+			TMockLtsyData2<TBool, RMobilePhone::TMobilePhoneNetworkManualSelection> 
+				data(isManual, manualSelection);
+ 			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+    		}
+    	case EMobilePhoneGetPhoneStoreInfo:
+    		{
+    		RMobilePhone::TMobileName storeName;
+    		aMmDataPackage->UnPackData(storeName);
+			TMockLtsyData1<RMobilePhone::TMobileName> data(storeName);
+ 			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);    		
+    		}
+		case EMobilePhoneGetBarringStatusPhase1:
+			{
+			RMobilePhone::TMobilePhoneCBCondition condition;
+			aMmDataPackage->UnPackData(condition);
+			TMockLtsyData1<RMobilePhone::TMobilePhoneCBCondition> data(condition);
+			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+			}
+		case EMobilePhoneSetCallBarringStatus:
+			{
+			RMobilePhone::TMobilePhoneCBCondition condition;
+			RMobilePhone::TMobilePhoneCBChangeV1* info = NULL;
+			aMmDataPackage->UnPackData(condition, info);
+			TMockLtsyData2<RMobilePhone::TMobilePhoneCBCondition, 
+						   RMobilePhone::TMobilePhoneCBChangeV1> data(condition, *info);
+			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+			}
+		case ECtsyPhoneTerminateAllCallsReq:
+			{
+			TInt callId(0);
+			aMmDataPackage->UnPackData(callId);
+			TMockLtsyData1< TInt > data(callId);
+			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc, data);
+			}
+    	case ECtsyPhoneCellInfoReq:
+    	case ECtsyPhoneCellInfoIndReq:			
+    	case EMobilePhoneSelectNetworkCancel:
+    	case EMobilePhoneGetFdnStatus:
+    	case EMobilePhoneEnumerateAPNEntries:
+    	case EMobilePhoneGetAPNControlListServiceStatus:			    		
+    	case EMobilePhoneAuthorizationInfoPhase1:
+    	case EMobilePhoneGetIccMessageWaitingIndicators:
+    	case EMobilePhoneStopDTMFTone:
+    	case EMobilePhoneSendDTMFTonesCancel:
+    	case EMobilePhoneGetWaitingStatusPhase1:
+    	case EMobilePhoneGetServiceProviderName:
+    	case EMobilePhoneGetCustomerServiceProfile:
+    	case EMobilePhoneGetSubscriberId:
+    	default:
+    		{
+		    TMockLtsyData0 data;
+ 			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+    		}
+    	}
+    }
+
+/**
+Complete a request
+*/
+void CMockPhoneMessHandler::CompleteL(TInt aIpc, const TDesC8& aData, TInt aResult)
+	{
+	CMmDataPackage dataPackage;
+	switch (aIpc)
+		{
+		case EMobilePhoneGetAPNname:
+			{
+			TMockLtsyData1Buf<RMobilePhone::TAPNEntryV3> apnEntry;
+			apnEntry.DeserialiseL(aData);
+			dataPackage.PackData(apnEntry.Data1Ptr());
+			}
+			break;
+		
+		case EMobilePhoneNotifyIccAccessCapsChange:
+		case EMobilePhoneAppendAPNName:
+		case EMobilePhoneDeleteAPNName:
+		case EMobilePhoneNotifyAPNListChanged:
+		case EMobilePhoneSetAPNControlListServiceStatus:	 
+  		case EMmTsyUpdateLifeTimeIPC:
+			{
+			// no parameter is requred
+			}
+			break;
+			
+		case EMobilePhoneEnumerateAPNEntries:
+			{	
+			TMockLtsyData1Buf<TUint32> index;
+			index.DeserialiseL(aData);
+			dataPackage.PackData(index.Data1Ptr());		
+			}
+			break;
+			
+		case EMobilePhoneGetAPNControlListServiceStatus:
+		case EMobilePhoneNotifyAPNControlListServiceStatusChange:
+			{
+			TMockLtsyData1Buf<RMobilePhone::TAPNControlListServiceStatus> status;
+			status.DeserialiseL(aData);
+			dataPackage.PackData(status.Data1Ptr());
+			}
+			break;	
+		
+		case EMobilePhoneGetHomeNetwork:
+			{
+			TMockLtsyData1Buf<RMobilePhone::TMobilePhoneNetworkInfoV8> idData;
+			idData.DeserialiseL(aData);
+			
+			TInt id = idData.Data1Ptr()->ExtensionId();
+			
+		    if ( KETelExtMultimodeV1 == id )
+				{
+				TMockLtsyData1Buf<RMobilePhone::TMobilePhoneNetworkInfoV1> homeNetworkDataV1;
+				homeNetworkDataV1.DeserialiseL(aData);
+				dataPackage.PackData(homeNetworkDataV1.Data1Ptr());
+				}
+			else if ( KETelExtMultimodeV2 == id )
+				{
+				TMockLtsyData1Buf<RMobilePhone::TMobilePhoneNetworkInfoV2> homeNetworkDataV2;
+				homeNetworkDataV2.DeserialiseL(aData);
+				dataPackage.PackData(homeNetworkDataV2.Data1Ptr());
+				}
+    		else if ( KEtelExtMultimodeV5 == id )
+    			{
+				TMockLtsyData1Buf<RMobilePhone::TMobilePhoneNetworkInfoV5> homeNetworkDataV5;
+				homeNetworkDataV5.DeserialiseL(aData);
+				dataPackage.PackData(homeNetworkDataV5.Data1Ptr());
+    			}  
+    		else
+    			{
+				dataPackage.PackData(idData.Data1Ptr());
+    			} 
+			}
+			break;
+		
+		case EMmTsyPhoneGetPin1DisableSupportedIPC:
+			{
+			TMockLtsyData1Buf<TBool> pin1DisableSupportData;
+			pin1DisableSupportData.DeserialiseL(aData);
+			dataPackage.PackData(pin1DisableSupportData.Data1Ptr());
+			}
+			break;
+			
+		case EMobilePhoneGetALSLine:
+			{
+			TMockLtsyData1Buf<RMobilePhone::TMobilePhoneALSLine> alsLineData;
+			alsLineData.DeserialiseL(aData);
+			dataPackage.PackData(alsLineData.Data1Ptr());
+			}
+			break;
+			
+		case EMobilePhoneGetServiceTable:
+			{
+			RMobilePhone::TMobilePhoneServiceTableV1 table;
+			TPckg<RMobilePhone::TMobilePhoneServiceTableV1> serviceTableData(table);
+			serviceTableData.Copy(aData);
+			dataPackage.PackData(&table);
+			}
+			break;
+		case EMobilePhoneGetSubscriberId:
+			{
+			TBuf8<RMobilePhone::KIMSISize> subscriberId;
+			subscriberId.Copy(aData);
+			dataPackage.PackData(&subscriberId);
+			}
+			break;
+		case EMobilePhoneGetPhoneId:
+			{
+			//CTSY does not expect the full TMobilePhoneIdentityV1 but just a TBuf8<KSerialNumberLength> containing serial id.
+			TMockLtsyData1Buf<TBuf8<KSerialNumberLength> > serialIdData;
+			serialIdData.DeserialiseL(aData);
+			dataPackage.PackData(serialIdData.Data1Ptr()); //<<<how to know how to pack up data to send to CTSY??
+			}
+			break;
+		case EMobilePhoneGetCurrentActiveUSimApplication:
+			{
+			TMockLtsyData1Buf<RMobilePhone::TAID > aid;
+			aid.DeserialiseL(aData);
+			dataPackage.PackData(aid.Data1Ptr());
+			}
+			break;						
+		case EMobilePhoneGetNetworkRegistrationStatus:
+			// no params
+			break;
+			
+		case EMobilePhoneNotifyBatteryInfoChange:
+			{
+			TMockLtsyData1Buf<RMobilePhone::TMobilePhoneBatteryInfoV1> serialBatInfo;
+			serialBatInfo.DeserialiseL(aData);
+			dataPackage.PackData(serialBatInfo.Data1Ptr());
+			}			
+			break;
+		case EMobilePhoneGetPhoneStoreInfo:
+			{
+			TMockLtsyData1Buf<RMobilePhoneStore::TMobilePhoneStoreInfoV1> phoneStoreInfo;
+			phoneStoreInfo.DeserialiseL(aData);
+			dataPackage.PackData(phoneStoreInfo.Data1Ptr());
+			}							
+			break;
+		case EMobilePhoneNotifySignalStrengthChange:
+		    {
+		    TInt32 signalStrength;
+		    TInt8  signalBar;		    	    			
+ 			TMockLtsyData2<TInt32, TInt8> signalStrengthData(signalStrength, signalBar);
+ 			signalStrengthData.DeserialiseL(aData);
+ 			dataPackage.PackData(signalStrengthData.Data2Ptr(),signalStrengthData.Data1Ptr());		  						
+		}
+		    break;
+		case EMobilePhoneGetLockInfo:
+			{
+			TMockLtsyData2Buf<RMobilePhone::TMobilePhoneLockStatus, RMobilePhone::TMobilePhoneLockSetting> lockInfoData;
+			lockInfoData.DeserialiseL(aData);
+			dataPackage.PackData(lockInfoData.Data1Ptr(), lockInfoData.Data2Ptr());
+			}
+			break;
+			
+		case EMobilePhoneNotifyLockInfoChange:
+			{
+			TMockLtsyData2Buf<RMobilePhone::TMobilePhoneLockInfoV1, RMobilePhone::TMobilePhoneLock> lockInfoData;
+			lockInfoData.DeserialiseL(aData);
+			dataPackage.PackData(lockInfoData.Data1Ptr(), lockInfoData.Data2Ptr());
+			}
+			break;
+
+		case EMobilePhoneNotifyNetworkSecurityLevelChange:
+			{
+			TMockLtsyData1Buf<RMobilePhone::TMobilePhoneNetworkSecurity> netSecurity;
+			netSecurity.DeserialiseL(aData);
+			dataPackage.PackData(netSecurity.Data1Ptr());
+			}			
+			break;
+			
+		case EMobilePhoneNotifySecurityCapsChange:
+		    {
+			TMockLtsyData1Buf<TUint32> caps;
+			caps.DeserialiseL(aData);
+			dataPackage.PackData(caps.Data1Ptr());
+		    }
+		    break;
+		    
+		case EMobilePhoneNotifySecurityEvent:
+		    {
+			TMockLtsyData1Buf<RMobilePhone::TMobilePhoneSecurityEvent> ev;
+			ev.DeserialiseL(aData);
+			dataPackage.PackData(ev.Data1Ptr());
+		    }
+		    break;	
+
+		case EMobilePhoneGetCipheringIndicatorStatus:
+		    {
+			TMockLtsyData1Buf<RMobilePhone::TMobileCallCipheringIndicator> indi;
+			indi.DeserialiseL(aData);
+			dataPackage.PackData(indi.Data1Ptr());
+		    }
+		    break;	
+		case EMobilePhoneSetALSLine:
+			break;
+		case EMobilePhoneAuthorizationInfoPhase1:
+		    {
+			RMobilePhone::CImsAuthorizationInfoV5* info = RMobilePhone::CImsAuthorizationInfoV5::NewL();
+			CleanupStack::PushL(info);
+			iAuthorizationInfos.Append(info);
+			CleanupStack::Pop(info);
+			info->InternalizeL(aData);
+			dataPackage.PackData(&info);
+		    }
+			break;
+		case EMmTsyBootGetRFStatusIPC:
+			{
+			TMockLtsyData1Buf<TRfStateInfo> indi;
+			indi.DeserialiseL(aData);
+			dataPackage.PackData(indi.Data1Ptr());
+			}
+			break;
+
+		case EMobilePhoneGetMailboxNumbers:
+		    {
+			TMockLtsyData1Buf<RMobilePhone::TMobilePhoneVoicemailIdsV3> voicemailIdsData;
+			voicemailIdsData.DeserialiseL(aData);
+			RMobilePhone::TMobilePhoneVoicemailIdsV3* voicemailIds = 
+			           new (ELeave) RMobilePhone::TMobilePhoneVoicemailIdsV3(voicemailIdsData.Data1());
+			CleanupStack::PushL(voicemailIds);
+			iVoicemailIds.Append(voicemailIds);
+			CleanupStack::Pop(voicemailIds);
+			dataPackage.PackData(&voicemailIds);
+		    }
+			break;
+
+		case EMobilePhoneIMSAuthenticate:
+		    {
+			TMockLtsyData1Buf<RMobilePhone::TImsAuthenticateDataV5> authenticateData;
+			authenticateData.DeserialiseL(aData);
+			// compare with special constant _L8("17796") for recognize null pointer packing test case
+			if (authenticateData.Data1Ptr()->iAUTS.Compare(_L8("17796"))==0)
+				{
+				RMobilePhone::TImsAuthenticateDataV5* nullPtr(NULL);
+				dataPackage.PackData(nullPtr);
+				}
+			else
+				{
+				dataPackage.PackData(authenticateData.Data1Ptr());
+				}
+		    }
+			break;
+
+		case EMobilePhoneSetLockSetting:
+		    {
+			TMockLtsyData2Buf<RMobilePhone::TMobilePhoneLockStatus, RMobilePhone::TMobilePhoneLockSetting> lockSettingData;
+			lockSettingData.DeserialiseL(aData);
+			dataPackage.PackData(lockSettingData.Data1Ptr(), lockSettingData.Data2Ptr());
+		    }
+			break;
+		case EMobilePhoneGetSecurityCodeInfo:
+			{
+			TMockLtsyData2Buf<RMobilePhone::TMobilePhoneSecurityCode, RMobilePhone::TMobilePhoneSecurityCodeInfoV5> codeInfoData;
+			codeInfoData.DeserialiseL(aData);
+			dataPackage.PackData(codeInfoData.Data1Ptr(), codeInfoData.Data2Ptr());
+			}
+			break;
+
+		case EMobilePhoneNotifySecurityCodeInfoChange:
+			{
+			TMockLtsyData2Buf<RMobilePhone::TMobilePhoneSecurityCode, RMobilePhone::TMobilePhoneSecurityCodeInfoV5> codeInfoData;
+			codeInfoData.DeserialiseL(aData);
+			dataPackage.PackData(codeInfoData.Data1Ptr(), codeInfoData.Data2Ptr());
+			}
+			break;
+		
+		case EMobilePhoneGetIccMessageWaitingIndicators:
+		case EMobilePhoneNotifyIccMessageWaitingIndicatorsChange:
+			{
+			TMockLtsyData1Buf<RMobilePhone::TMobilePhoneMessageWaitingV1> indicatorsData;
+			indicatorsData.DeserialiseL(aData);
+			dataPackage.PackData(indicatorsData.Data1Ptr());
+			}
+			break;
+		case EMobilePhoneSetIccMessageWaitingIndicators:
+			break;
+		case EMobilePhoneNotifyStopInDTMFString:
+			{
+			TMockLtsyData1Buf<TInfoName> tones;
+			tones.DeserialiseL(aData);
+			TBuf<KMaxInfoName> tonesBuf;
+
+			_LIT(KNull, "null");
+			if ( tones.Data1() != KNull() )
+				{
+				tonesBuf = tones.Data1();
+				}
+			dataPackage.PackData(&tonesBuf);
+			}
+			break;
+		case EMobilePhoneStopDTMFTone:
+		case EMobilePhoneSendDTMFTones:
+		case EMobilePhoneSendDTMFTonesCancel:
+			break;
+		case EMobilePhoneNotifyDTMFEvent:
+			{
+	   		TMockLtsyData1Buf< RMobilePhone::TMobilePhoneDTMFEvent > toneEvent;
+			toneEvent.DeserialiseL(aData);
+			dataPackage.PackData(toneEvent.Data1Ptr());	
+			}			
+			break;		
+		case EMobilePhoneGetWaitingStatusPhase1:
+		    {
+			TMockLtsyData1Buf<CMobilePhoneCWList*> completeData;
+			completeData.DeserialiseL(aData);
+			if (completeData.Data1())
+				{
+				completeData.PushL();
+				iCWLists.AppendL(completeData.Data1());
+				CleanupStack::Pop(&completeData);
+				}
+			dataPackage.PackData(completeData.Data1());
+		    }
+			break;
+    	case EMobilePhoneGetCallForwardingStatusPhase1:
+		    {
+			TMockLtsyData1Buf<CMobilePhoneCFList*> completeData;
+			completeData.DeserialiseL(aData);
+			if (completeData.Data1())
+				{
+				completeData.PushL();
+				iCFLists.AppendL(completeData.Data1());
+				CleanupStack::Pop(&completeData);
+				}
+			dataPackage.PackData(completeData.Data1());
+		    }
+			break;
+
+		case EMmTsySimGetICCType:
+    		{
+			TMockLtsyData1Buf<TInt> icc;
+			icc.DeserialiseL(aData);
+			dataPackage.PackData(icc.Data1Ptr());
+		    }
+    		break;
+
+		case EMobilePhoneGetFdnStatus:
+		    {
+			TMockLtsyData1Buf<RMobilePhone::TMobilePhoneFdnStatus> status;
+			status.DeserialiseL(aData);
+			dataPackage.PackData(status.Data1Ptr());
+		    }
+		    break;
+			
+		case EMobilePhoneNotifyNetworkRegistrationStatusChange:
+			{
+			TMockLtsyData2Buf<RMobilePhone::TMobilePhoneRegistrationStatus, RMobilePhone::TMobilePhoneNetworkStatus> data;
+			data.DeserialiseL(aData);
+			dataPackage.PackData(data.Data1Ptr(), data.Data2Ptr());
+			}
+			break;
+
+		case EMobilePhoneSetCallWaitingStatus:
+			break;
+		case EMobilePhoneNotifyCallWaitingStatusChange:
+			{
+			TMockLtsyData1Buf<RMobilePhone::TMobilePhoneCWInfoEntryV1> cwInfoEntry;
+			cwInfoEntry.DeserialiseL(aData);
+			dataPackage.PackData(cwInfoEntry.Data1Ptr());
+			}
+			break;
+			
+		case EMobilePhoneSetFdnSetting:
+		    break;
+		    
+		case EMobilePhoneNotifyFdnStatusChange:
+		    break;
+		
+		case EMobilePhoneGetDetectedNetworksV2Phase1:
+			{
+			TMockLtsyData1Buf<CMobilePhoneNetworkListV2*> status;
+			status.DeserialiseL(aData);
+			dataPackage.PackData(status.Data1Ptr());
+			iMessageRouter->MessageManagerCallback()->Complete(aIpc, &dataPackage, aResult);
+			status.Close();
+			return;
+			}
+		case EMobilePhoneNotifyNITZInfoChange:
+			{
+			TMockLtsyData1Buf<RMobilePhone::TMobilePhoneNITZ> status;
+			status.DeserialiseL(aData);
+			dataPackage.PackData(status.Data1Ptr());
+			}
+			break;
+		case ECtsyPhoneCellInfoComp:				
+			{
+			TMockLtsyData1Buf<RMobilePhone::TMobilePhoneCellInfoV9> mockData;
+			mockData.DeserialiseL(aData);
+			dataPackage.PackData(mockData.Data1Ptr());
+			}
+			break;
+		case ECtsyPhoneCellInfoIndComp:
+			{
+			TMockLtsyData1Buf<RMobilePhone::TMobilePhoneCellInfoV9> mockData;
+			mockData.DeserialiseL(aData);
+			dataPackage.PackData(mockData.Data1Ptr());
+			}
+			break;
+		case EMobilePhoneNotifyCurrentNetworkChange:
+			{
+			TMockLtsyData2Buf<RMobilePhone::TMobilePhoneNetworkInfoV8,
+			                  RMobilePhone::TMobilePhoneLocationAreaV1> mockDataV8;
+			mockDataV8.DeserialiseL(aData);
+			
+			TInt id = mockDataV8.Data1Ptr()->ExtensionId();
+			
+		    if ( KETelExtMultimodeV1 == id )
+				{
+				TMockLtsyData2Buf<RMobilePhone::TMobilePhoneNetworkInfoV1,
+                                  RMobilePhone::TMobilePhoneLocationAreaV1> mockData;
+				mockData.DeserialiseL(aData);
+				dataPackage.PackData(mockData.Data1Ptr(), mockData.Data2Ptr());
+				}
+			else if ( KETelExtMultimodeV2 == id )
+				{
+				TMockLtsyData2Buf<RMobilePhone::TMobilePhoneNetworkInfoV2,
+                                  RMobilePhone::TMobilePhoneLocationAreaV1> mockData;
+				mockData.DeserialiseL(aData);
+				dataPackage.PackData(mockData.Data1Ptr(), mockData.Data2Ptr());
+				}
+    		else if( KEtelExtMultimodeV5 == id)
+    			{	
+    			TMockLtsyData2Buf<RMobilePhone::TMobilePhoneNetworkInfoV5,
+                                  RMobilePhone::TMobilePhoneLocationAreaV1> mockData;
+				mockData.DeserialiseL(aData);
+				dataPackage.PackData(mockData.Data1Ptr(), mockData.Data2Ptr());
+    			}
+    		else
+    			{
+    			dataPackage.PackData(mockDataV8.Data1Ptr(), mockDataV8.Data2Ptr());
+    			} 
+			}
+			break;
+
+		case EMobilePhoneNotifyCallBarringStatusChange:
+			{
+			TMockLtsyData1Buf<RMobilePhone::TMobilePhoneCBCondition> conditionData;
+			conditionData.DeserialiseL(aData);
+			dataPackage.PackData(conditionData.Data1Ptr());
+			}
+			break;
+			
+		case EMobilePhoneGetBarringStatusPhase1:
+			{
+			CMobilePhoneCBList* cbList(NULL);
+			if ( KNullDesC8() != aData )
+				{
+				cbList = CMobilePhoneCBList::NewL();
+				CleanupStack::PushL(cbList);
+				iCBLists.Append(cbList);
+				CleanupStack::Pop(cbList);
+				cbList->RestoreL(aData);
+				}
+			dataPackage.PackData(cbList);
+			}
+			break;
+			
+		case EMobilePhoneNotifyCallForwardingActive:
+			{
+			TMockLtsyData2Buf<RMobilePhone::TMobileService, RMobilePhone::TMobilePhoneCFActive> data;
+			data.DeserialiseL(aData);
+			dataPackage.PackData(data.Data1Ptr(), data.Data2Ptr());
+			}
+			break;
+		case EMobilePhoneNotifyCallForwardingStatusChange:
+			{
+			TMockLtsyData1Buf<RMobilePhone::TMobilePhoneCFCondition> data;
+			data.DeserialiseL(aData);
+			dataPackage.PackData(data.Data1Ptr());
+			}
+			break;
+    	case EMobilePhoneGetIdentityServiceStatus:
+			{
+			TMockLtsyData1Buf<RMobilePhone::TMobilePhoneIdServiceStatus> data;
+			data.DeserialiseL(aData);
+			dataPackage.PackData(data.Data1Ptr());
+			}
+			break;
+		case EMobilePhoneSetCallForwardingStatus:
+			break;
+		case EMobilePhoneSendNetworkServiceRequest:
+		case EMobilePhoneSendNetworkServiceRequestNoFdnCheck:
+			break;
+		case ECtsyPhoneSendNetworkServiceRequestInd:
+			{
+			TMockLtsyData1Buf<RMobilePhone::TMobilePhoneSendSSRequestV3> data;
+			data.DeserialiseL(aData);
+			dataPackage.PackData(data.Data1Ptr());			
+			}			
+			break;
+    	case EMobilePhoneNotifyModeChange:
+    		{
+    		TMockLtsyData1Buf<RMobilePhone::TMobilePhoneNetworkMode> status;
+			status.DeserialiseL(aData);
+			dataPackage.PackData(status.Data1Ptr());
+    		}
+    		break;
+		case EMobilePhoneGetServiceProviderName:
+			{
+    		TMockLtsyData1Buf<RMobilePhone::TMobilePhoneServiceProviderNameV2> status;
+			status.DeserialiseL(aData);
+			dataPackage.PackData(status.Data1Ptr());
+			}
+			break;
+		case EMobilePhoneNotifyNetworkSelectionSettingChange:
+			{
+    		TMockLtsyData1Buf<RMobilePhone::TMobilePhoneNetworkSelectionV1> status;
+			status.DeserialiseL(aData);
+			dataPackage.PackData(status.Data1Ptr());
+			}
+			break;
+		case EMobilePhoneGetCustomerServiceProfile:
+			{
+			RMobilePhone::TMobilePhoneCspFileV1 cspFile;
+			TPckg<RMobilePhone::TMobilePhoneCspFileV1> mockData(cspFile);
+			mockData.Copy(aData);
+			dataPackage.PackData(&cspFile);
+			}
+			break;
+			
+		case EEtelPhoneNotifyModemDetected:
+			{
+    		TMockLtsyData1Buf<RPhone::TStatus> status;
+			status.DeserialiseL(aData);
+			dataPackage.PackData(status.Data1Ptr());
+			}
+			break;
+		case EMmTsySimRefreshNowIPC:
+			{
+    		TMockLtsyData1Buf<TUint16> files;
+			files.DeserialiseL(aData);
+			dataPackage.PackData(files.Data1Ptr());
+			}
+			break;
+		case EETelLineCapsChangeNotification:
+			break;
+
+		case EMobilePhoneNotifyCallServiceCapsChange:
+			{
+			TUint32 caps;
+			TPckg<TUint32> mockData(caps);
+			mockData.Copy(aData);
+			dataPackage.PackData(&caps);
+			}
+			break;
+		case ECtsyPhoneTerminateAllCallsComp:
+			{
+			// no parameter is required
+			}
+			break;
+		default:
+			{
+			// shouldnt get here. will panic MessageManager()->Complete if allowed to continue
+			}
+			break;
+		}
+	iMessageRouter->MessageManagerCallback()->Complete(aIpc, &dataPackage, aResult);
+	}
+
+//  End of File  
+