telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/src/cmockcallmesshandler.cpp
changeset 0 3553901f7fa8
child 19 630d2f34d719
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/src/cmockcallmesshandler.cpp	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,406 @@
+// 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 "cmockcallmesshandler.h"
+#include <ctsy/tflogger.h>
+#include "MmTsy_Csd_Defs.h"
+#include "cmmmessagerouter.h"
+#include <ctsy/pluginapi/mmmessagemanagercallback.h>
+#include "cmockltsyengine.h"
+#include "tmockltsydata.h"
+
+/**
+Factory function
+*/
+CMockCallMessHandler* CMockCallMessHandler::NewL(CMmMessageRouter* aMessageRouter)
+    {
+    CMockCallMessHandler* self = new(ELeave)CMockCallMessHandler(aMessageRouter);
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+    
+    return self;
+    }
+
+/**
+Constructor
+*/
+CMockCallMessHandler::CMockCallMessHandler(CMmMessageRouter* aMessageRouter)
+	: iMessageRouter(aMessageRouter)
+    {
+    }
+
+/**
+2nd phase contructor
+*/
+void CMockCallMessHandler::ConstructL()
+    {
+    }
+
+
+/**
+Destructor
+*/
+CMockCallMessHandler::~CMockCallMessHandler()
+    {
+    }
+
+/**
+Execute a request
+*/
+TInt CMockCallMessHandler::ExtFuncL(TInt aIpc,const CMmDataPackage* aMmDataPackage)
+    {
+ 	const CCallDataPackage* callDataPackage = static_cast<const CCallDataPackage*>(aMmDataPackage);
+
+	switch (aIpc)
+    	{
+		case EEtelCallDial:
+		case EMobileCallDialNoFdnCheck:
+			{
+			TInt callId;
+			RMobilePhone::TMobileService service;
+			callDataPackage->GetCallIdAndMode(callId, service);
+			// extract MmData
+			//RMobileCall::TCallParams callParams;
+			TPckg<RMobileCall::TCallParams>* callParamsPckg;
+			RMobileCall::TMobileCallInfoV8* callInfo;
+			aMmDataPackage->UnPackData(&callParamsPckg, &callInfo);
+			RMobileCall::TCallParams& callParams = (*callParamsPckg)();
+			
+			if (callParams.ExtensionId() == RMobileCall::KETelMobileCallParamsV1)
+				{
+				RMobileCall::TMobileCallParamsV1Pckg* callParamsPckg;
+				aMmDataPackage->UnPackData(&callParamsPckg, &callInfo);
+				TMockLtsyCallData2<RMobileCall::TMobileCallParamsV1, RMobileCall::TMobileCallInfoV8> 
+					data(callId, service, (*callParamsPckg)(), *callInfo);
+				return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+				}
+			else if (callParams.ExtensionId() == RMobileCall::KETelMobileCallParamsV2)
+				{
+				RMobileCall::TMobileCallParamsV2Pckg* callParamsPckg;
+				aMmDataPackage->UnPackData(&callParamsPckg, &callInfo);
+				TMockLtsyCallData2<RMobileCall::TMobileCallParamsV2, RMobileCall::TMobileCallInfoV8> 
+					data(callId, service, (*callParamsPckg)(), *callInfo);
+				return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+				}
+			else if (callParams.ExtensionId() == RMobileCall::KETelMobileCallParamsV7)
+				{
+				RMobileCall::TMobileCallParamsV7Pckg* callParamsPckg;
+				aMmDataPackage->UnPackData(&callParamsPckg, &callInfo);
+				TMockLtsyCallData2<RMobileCall::TMobileCallParamsV7, RMobileCall::TMobileCallInfoV8> 
+					data(callId, service, (*callParamsPckg)(), *callInfo);
+				return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+				}
+			else if (callParams.ExtensionId() == RMobileCall::KETelMobileDataCallParamsV1)
+				{
+				RMobileCall::TMobileDataCallParamsV1Pckg* callParamsPckg;
+				aMmDataPackage->UnPackData(&callParamsPckg, &callInfo);
+				TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV1, RMobileCall::TMobileCallInfoV8> 
+					data(callId, service, (*callParamsPckg)(), *callInfo);
+				return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+				}
+			else if (callParams.ExtensionId() == RMobileCall::KETelMobileDataCallParamsV2)
+				{
+				RMobileCall::TMobileDataCallParamsV2Pckg* callParamsPckg2;
+				aMmDataPackage->UnPackData(&callParamsPckg2, &callInfo);
+				TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV2, RMobileCall::TMobileCallInfoV8> 
+					data(callId, service, (*callParamsPckg2)(), *callInfo);
+				return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+				}
+			else if (callParams.ExtensionId() == RMobileCall::KETelMobileDataCallParamsV8)
+				{
+				RMobileCall::TMobileDataCallParamsV8Pckg* callParamsPckg8;
+				aMmDataPackage->UnPackData(&callParamsPckg8, &callInfo);
+				TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV8, RMobileCall::TMobileCallInfoV8> 
+					data(callId, service, (*callParamsPckg8)(), *callInfo);
+				return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+				}
+			else if (callParams.ExtensionId() == RMobileCall::KETelMobileHscsdCallParamsV1)
+				{
+				RMobileCall::TMobileHscsdCallParamsV1Pckg* callParamsPckg;
+				aMmDataPackage->UnPackData(&callParamsPckg, &callInfo);
+				TMockLtsyCallData2<RMobileCall::TMobileHscsdCallParamsV1, RMobileCall::TMobileCallInfoV8> 
+					data(callId, service, (*callParamsPckg)(), *callInfo);
+				return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+				}
+			else if (callParams.ExtensionId() == RMobileCall::KETelMobileHscsdCallParamsV2)
+				{
+				RMobileCall::TMobileHscsdCallParamsV2Pckg* callParamsPckg2;
+				aMmDataPackage->UnPackData(&callParamsPckg2, &callInfo);
+				TMockLtsyCallData2<RMobileCall::TMobileHscsdCallParamsV2, RMobileCall::TMobileCallInfoV8> 
+					data(callId, service, (*callParamsPckg2)(), *callInfo);
+				return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+				}
+			else if (callParams.ExtensionId() == RMobileCall::KETelMobileHscsdCallParamsV7)
+				{
+				RMobileCall::TMobileHscsdCallParamsV7Pckg* callParamsPckg7;
+				aMmDataPackage->UnPackData(&callParamsPckg7, &callInfo);
+				TMockLtsyCallData2<RMobileCall::TMobileHscsdCallParamsV7, RMobileCall::TMobileCallInfoV8> 
+					data(callId, service, (*callParamsPckg7)(), *callInfo);
+				return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+				}
+			else if (callParams.ExtensionId() == RMobileCall::KETelMobileHscsdCallParamsV8)
+				{
+				RMobileCall::TMobileHscsdCallParamsV8Pckg* callParamsPckg8;
+				aMmDataPackage->UnPackData(&callParamsPckg8, &callInfo);
+				TMockLtsyCallData2<RMobileCall::TMobileHscsdCallParamsV8, RMobileCall::TMobileCallInfoV8> 
+					data(callId, service, (*callParamsPckg8)(), *callInfo);
+				return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+				}
+						
+			else        // default
+			    {
+                TMockLtsyCallData0 data(callId, service);    
+                return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+			    }
+			}
+		
+    	case EEtelCallHangUp:
+    		{
+			TInt callId;
+			RMobilePhone::TMobileService service;
+			callDataPackage->GetCallIdAndMode(callId, service);
+    		TInt hangUpCause;
+    		TBool autoStChangeDisable;
+			aMmDataPackage->UnPackData(hangUpCause, autoStChangeDisable);
+  			TMockLtsyCallData2<TInt, TBool> data(callId, service, hangUpCause, autoStChangeDisable);
+			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+ 			}
+    	case EMobileCallDialEmergencyCall:
+			{
+			RMobileENStore::TEmergencyNumber* number;
+			aMmDataPackage->UnPackData(&number);
+  			TMockLtsyData1<RMobileENStore::TEmergencyNumber> data(*number);
+            return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+			}
+    	case EEtelCallLoanDataPort:
+    	case EEtelCallRecoverDataPort:
+			{
+			TInt callId;
+			RMobilePhone::TMobileService service;
+			callDataPackage->GetCallIdAndMode(callId, service);
+			RCall::TCommPort* commPort;
+			aMmDataPackage->UnPackData(&commPort);
+						
+			TMockLtsyCallData1<RCall::TCommPort> data(callId, service, *commPort);
+			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+			}
+        case EMobileCallSetDynamicHscsdParams:
+        	{
+			TInt callId;
+			RMobilePhone::TMobileService service;
+			callDataPackage->GetCallIdAndMode(callId, service);
+        	RMobileCall::TMobileHscsdCallParamsV1 hscsdParams;
+		   	aMmDataPackage->UnPackData(hscsdParams);
+        
+        	TMockLtsyCallData1<RMobileCall::TMobileHscsdCallParamsV1> hscsdData(callId, service, hscsdParams);
+           	return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc, hscsdData);
+        	}
+    	case EMobileCallAnswerISV:
+ 		case EMobileCallTransfer:
+		case EMobileCallResume:
+    	case EMobileCallSwap:
+ 		case EMobileCallHold:	
+        case EEtelCallAnswer:
+        case EMobileCallGoOneToOne:
+    	case EMobileConferenceCallAddCall:
+            {
+			TInt callId;
+			RMobilePhone::TMobileService service;
+			callDataPackage->GetCallIdAndMode(callId, service);
+            TMockLtsyCallData0 data(callId, service);    
+            return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+            }
+    	case EMobileConferenceCallCreateConference:
+    	default:
+    		{
+		    TMockLtsyData0 data;
+ 			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+    		}
+    	}
+    }
+
+/**
+Complete a request
+*/
+void CMockCallMessHandler::CompleteL(TInt aIpc, const TDesC8& aData, TInt aResult)
+	{
+	CCallDataPackage dataPackage;
+	switch (aIpc)
+		{
+        case EEtelLineNotifyIncomingCall:
+		case EEtelLineNotifyCallAdded:
+			{
+			TMockLtsyCallData1Buf<RMobileCall::TMobileCallInfoV1> callInfoData;
+			callInfoData.DeserialiseL(aData);
+			dataPackage.SetCallIdAndMode(callInfoData.CallId(),callInfoData.CallMode());
+			dataPackage.PackData(callInfoData.Data1Ptr());
+			}
+		break;
+		
+		case EEtelCallNotifyStatusChange:
+		    {
+			TMockLtsyCallData1Buf<RCall::TStatus> callStatusData;
+			callStatusData.DeserialiseL(aData);
+			dataPackage.SetCallIdAndMode(callStatusData.CallId(),callStatusData.CallMode());
+			dataPackage.PackData(callStatusData.Data1Ptr());
+		    }
+		break;
+		    
+		case EMobileCallNotifyMobileCallStatusChange:
+			{
+			TMockLtsyCallData1Buf<RMobileCall::TMobileCallStatus> callStatusData;
+			callStatusData.DeserialiseL(aData);
+			dataPackage.SetCallIdAndMode(callStatusData.CallId(),callStatusData.CallMode());
+			dataPackage.PackData(callStatusData.Data1Ptr());
+			}
+		break;
+		
+		case EMobileCallNotifyCallEvent:
+		    {
+			TMockLtsyCallData1Buf<RMobileCall::TMobileCallEvent> callEv;
+			callEv.DeserialiseL(aData);
+			dataPackage.SetCallIdAndMode(callEv.CallId(),callEv.CallMode());
+			dataPackage.PackData(callEv.Data1Ptr());
+		    }
+		    break;
+		    
+		case EMobileCallGetMobileCallInfo:
+		    {
+			TMockLtsyCallData1Buf<RMobileCall::TMobileCallInfoV1> data;            
+			data.DeserialiseL(aData);
+			dataPackage.SetCallIdAndMode(data.CallId(), data.CallMode());
+			dataPackage.PackData(data.Data1Ptr());
+		    }
+		    break;
+		case EEtelCallGetBearerServiceInfo:
+			{
+			TMockLtsyCallData1Buf<RCall::TBearerService> bearerData;
+			bearerData.DeserialiseL(aData);
+			dataPackage.SetCallIdAndMode(bearerData.CallId(), bearerData.CallMode());
+			dataPackage.PackData(bearerData.Data1Ptr());
+			break;	
+			}
+		case EMobileCallNotifyHscsdInfoChange:
+			{
+			TMockLtsyCallData2Buf<RMobileCall::TMobileCallHscsdInfoV8, RMobileCall::TMobileCallDataCapsV1> hscsdData;
+			hscsdData.DeserialiseL(aData);
+			dataPackage.SetCallIdAndMode(hscsdData.CallId(), hscsdData.CallMode());
+			dataPackage.PackData(hscsdData.Data1Ptr(), hscsdData.Data2Ptr());
+			break;
+			}
+		case EMobileCallNotifyMobileDataCallCapsChange:
+			{
+			TMockLtsyCallData1Buf<RMobileCall::TMobileCallDataCapsV1> capsData;
+			capsData.DeserialiseL(aData);
+			dataPackage.SetCallIdAndMode(capsData.CallId(), capsData.CallMode());
+			dataPackage.PackData(capsData.Data1Ptr());
+			break;
+			}
+		case EMobileCallNotifyPrivacyConfirmation:
+			{
+			TMockLtsyCallData1Buf<RMobilePhone::TMobilePhonePrivacy> privacyData;
+			privacyData.DeserialiseL(aData);
+			dataPackage.PackData(privacyData.Data1Ptr());
+			}
+			break;
+		case EMobileConferenceCallNotifyConferenceEvent:
+			{
+			TMockLtsyCallData1Buf<TInt> ghostOperationData;
+			ghostOperationData.DeserialiseL(aData);
+			dataPackage.SetCallIdAndMode(ghostOperationData.CallId(), ghostOperationData.CallMode());
+			dataPackage.PackData(ghostOperationData.Data1Ptr());
+			break;
+			}
+		case EMobileCallReceiveUUI:
+			{
+			TMockLtsyCallData1Buf<RMobileCall::TMobileCallUUI> receiveUUI;
+			receiveUUI.DeserialiseL(aData);
+			dataPackage.SetCallIdAndMode(receiveUUI.CallId(), receiveUUI.CallMode());
+			dataPackage.PackData(receiveUUI.Data1Ptr());
+			break;
+			}
+		// no data params
+		case EMobileCallDialISV:
+		case EMobileCallAnswerISV:
+ 		case EMobileCallTransfer:
+		case EMobileCallResume:
+		case EMobileCallSwap:
+ 		case EMobileCallHold:	
+		case EEtelCallAnswer:
+		case EEtelCallDial:
+		case EEtelCallHangUp:
+		case EMobileCallDialEmergencyCall:
+		case EMobileCallGoOneToOne:
+		case EMobileCallDialNoFdnCheck:
+		case EMobileCallSetDynamicHscsdParams:
+			{
+			TMockLtsyCallData0 callStatusData;
+			callStatusData.DeserialiseL(aData);
+			dataPackage.SetCallIdAndMode(callStatusData.CallId(),callStatusData.CallMode());
+			}
+			break;
+		case EMobileConferenceCallCreateConference:
+		case EMobileConferenceCallAddCall:
+		case EMobileConferenceCallNotifyConferenceStatusChange:
+		default:
+			break;
+		}
+	iMessageRouter->MessageManagerCallback()->Complete(aIpc, &dataPackage, aResult);
+	}
+
+
+/**
+Log utils
+*/
+void CMockCallMessHandler::LogErrorData(TInt aIpc, const MMockSyEngineData& aData, const TDesC8& aExpectedData)
+	{
+	switch (aIpc)
+    	{
+		case EEtelCallDial:
+			{
+			LogEtelCallDialErrorData(aData,aExpectedData);
+			}
+			break;
+    	default:
+    		{
+    		}
+    	}
+    	
+	}
+
+/**
+Log EEtelCallDial ipc data
+*/
+void CMockCallMessHandler::LogEtelCallDialErrorData(const MMockSyEngineData& aData, const TDesC8& aExpectedData)
+	{
+	RMobileCall::TMobileCallParamsV1 expectedCallMode;
+	RMobileCall::TMobileCallInfoV1 expectedCallInfo;
+	TMockLtsyCallData2<RMobileCall::TMobileCallParamsV1, RMobileCall::TMobileCallInfoV1> expectedData(expectedCallMode, expectedCallInfo);
+	TRAPD(err, expectedData.DeserialiseL(aExpectedData));
+	
+	const TMockLtsyCallData2<RMobileCall::TMobileCallParamsV1, RMobileCall::TMobileCallInfoV1>& receivedData = 
+		static_cast<const TMockLtsyCallData2<RMobileCall::TMobileCallParamsV1, RMobileCall::TMobileCallInfoV1> &>(aData);
+		
+	TBuf<KMaxLogLineSize> logBuffer;
+	if (err == KErrNone)
+		{
+		logBuffer.Format(_L("Received id=%d mode=%d, Expected id=%d mode=%d, callParam OK=%d callInfo OK=%d"), 
+			receivedData.CallId(), receivedData.CallMode(), expectedData.CallId(), expectedData.CallMode(), 
+			TComparator<RMobileCall::TMobileCallParamsV1>::IsEqual(expectedData.Data1(), receivedData.Data1()),
+			TComparator<RMobileCall::TMobileCallInfoV1>::IsEqual(expectedData.Data2(), receivedData.Data2()));
+		iMessageRouter->MockLtsyEngine()->LogData(logBuffer);
+		}
+	}