cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsycallcontrolbase.cpp
branchRCL_3
changeset 19 630d2f34d719
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsycallcontrolbase.cpp	Tue Aug 31 16:23:08 2010 +0300
@@ -0,0 +1,868 @@
+// Copyright (c) 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 "te_integration_stltsysuitestepbase.h"
+#include "te_integration_stltsysuitedefs.h"
+#include "testltsycallcontrolbase.h"
+
+//const define
+_LIT16(KPhoneTSY, "phonetsy");
+_LIT16(KLtsyTelNumOne, "58848158");
+_LIT16(KLtsyTelNumTwo, "58848157");
+_LIT16(KLtsyBadNumber, "11");
+_LIT16(KLtsySelfNumber, "15901279603");
+
+
+CTestLtsyCallControlBase::CTestLtsyCallControlBase(CTestLtsyModel& aModel) : iLtsyModel(aModel)
+	{
+	
+	}
+
+CTestLtsyCallControlBase::~CTestLtsyCallControlBase()
+	{
+	CloseLine();
+	
+	CloseCallOne();
+	
+	CloseCallTwo();	
+	}
+
+TVerdict CTestLtsyCallControlBase::doTestStepPreambleL()
+	{
+	
+	OpenPhoneL();
+	
+	OpenLineL();
+	
+	OpenCustomAPIL();
+	
+	return EPass;
+	}
+
+TVerdict CTestLtsyCallControlBase::doTestStepPostambleL()
+	{
+	
+	CloseLine();
+	
+	CloseCallOne();
+	
+	CloseCallTwo();
+	
+	CloseCustomAPI();
+	
+	return EPass;
+	}
+
+TVerdict CTestLtsyCallControlBase::doTestStepL()
+	{
+	//Open Call
+	OpenCallOneL();
+	
+	//Dial Call
+	DialCallOne();
+	
+	User::After(1000*1000);
+	
+	//Hold call
+	HoldCallOne();
+	
+	User::After(1000*1000);
+	
+	//Resume call
+	ResumeCallOne();
+	
+	User::After(1000*1000);
+	
+	//Hold call
+	HoldCallOne();
+	
+	User::After(1000*1000);
+	
+	//Resume call
+	ResumeCallOne();
+	
+	User::After(1000*1000);
+	
+	//Hang up call
+	HangupCallOneL();
+	
+	User::After(1000*1000);
+	
+	//Close call
+	CloseCallOne();
+	
+	return EPass;
+	}
+
+void CTestLtsyCallControlBase::OpenPhoneL()
+	{
+	INFO_PRINTF1(_L("starting opne phone"));
+	
+	if (!iLtsyModel.SharedEnv().PhoneOpened())
+		{
+		iLtsyModel.SharedEnv().OpenPhoneL(KPhoneTSY);
+		}
+	}
+
+void CTestLtsyCallControlBase::OpenLineL()
+	{
+	INFO_PRINTF1(_L("starting opne line"));	
+	
+	if (iLtsyModel.SharedEnv().PhoneOpened())
+		{
+		TInt numberLines = 0;
+		User::LeaveIfError(iLtsyModel.SharedEnv().Phone().EnumerateLines(numberLines));
+		RPhone::TLineInfo lineInfo;
+		TBool foundLine = EFalse;
+		for (TInt a = 0; a < numberLines; a++)
+			{
+			User::LeaveIfError(iLtsyModel.SharedEnv().Phone().GetLineInfo(a, lineInfo));
+			if (lineInfo.iLineCapsFlags & RLine::KCapsVoice)
+				{
+				foundLine = ETrue;
+				break;
+				}
+			}
+		if (!foundLine)
+			{
+			INFO_PRINTF1(_L("The phone has opened fail"));	
+			User::Leave(KErrNotFound);
+			}
+		
+		User::LeaveIfError(iLtsyModel.CallSharedData().VoiceLine().Open(iLtsyModel.SharedEnv().Phone(), lineInfo.iName));
+		INFO_PRINTF1(_L("The line open successful"));	
+		}
+	else
+		{
+		INFO_PRINTF1(_L("The phone has opened fail"));	
+		}
+	}
+
+void CTestLtsyCallControlBase::CloseLine()
+	{
+	iLtsyModel.CallSharedData().VoiceLine().Close();
+	}
+
+void CTestLtsyCallControlBase::OpenCustomAPIL()
+	{
+	INFO_PRINTF1(_L("starting opne custom API"));
+	
+	
+	if (iLtsyModel.SharedEnv().PhoneOpened())
+		{
+		User::LeaveIfError(iLtsyModel.CallSharedData().MmCustomAPI().Open(iLtsyModel.SharedEnv().Phone()));
+		INFO_PRINTF1(_L("The custom API open successfully"));
+		}
+	else
+		{
+		INFO_PRINTF1(_L("The phone has opened fail"));
+		}
+	}
+
+void CTestLtsyCallControlBase::CloseCustomAPI()
+	{
+	INFO_PRINTF1(_L("starting close custom API"));
+	iLtsyModel.CallSharedData().MmCustomAPI().Close();
+	}
+
+void CTestLtsyCallControlBase::CustomAPITerminateAllCallsL()
+	{
+	INFO_PRINTF1(_L("RCustomAPI start terminate all calls"));
+	
+	TBuf<128> allcall(_L("ALL_CALLS"));
+	TRequestStatus iStatus;
+	iLtsyModel.CallSharedData().MmCustomAPI().TerminateCall(iStatus, allcall);
+	User::WaitForRequest(iStatus);
+	
+	INFO_PRINTF2(_L("RCustomAPI terminate all calls result = %d"), iStatus.Int());
+	
+	if (iStatus.Int() != KErrNone)
+		{
+		User::LeaveIfError(iStatus.Int());
+		}	
+	}
+
+void CTestLtsyCallControlBase::PhoneTerminateAllCallsL()
+	{
+	INFO_PRINTF1(_L("phone start terminate all calls"));
+	
+	TRequestStatus iStatus;
+	iLtsyModel.SharedEnv().Phone().TerminateAllCalls(iStatus);
+	User::WaitForRequest(iStatus);
+	
+	INFO_PRINTF2(_L("phone terminate all calls result = %d"), iStatus.Int());
+	
+	if (iStatus.Int() != KErrNone)
+		{
+		User::LeaveIfError(iStatus.Int());
+		}		
+	}
+
+//It must open RCustomAPI before create CTelephony
+void CTestLtsyCallControlBase::CreateThirtyPartyTelephonyL()
+	{
+	iLtsyModel.CallSharedData().ThirdPartyTelephony() = CTelephony::NewL();
+	}
+
+void CTestLtsyCallControlBase::DialCallOne()
+	{
+	INFO_PRINTF1(_L("starting dial call one"));
+	INFO_PRINTF2(_L("starting dial number %S..."), &KLtsyTelNumOne);
+	INFO_PRINTF1(_L("If ring please pick up your telephone "));
+	
+	TRequestStatus tDialStatus;
+	TRequestStatus tNotifyStatus;
+	
+	RMobileCall::TMobileCallStatus tCallStatus;
+	iLtsyModel.CallSharedData().VoiceCallOne().NotifyMobileCallStatusChange(tNotifyStatus, tCallStatus);
+	
+	iLtsyModel.CallSharedData().VoiceCallOne().Dial(tDialStatus, KLtsyTelNumOne);
+	User::WaitForRequest(tDialStatus);
+	
+	INFO_PRINTF3(_L("Dial number %S\t Result = %d"), &KLtsyTelNumOne, tDialStatus.Int());
+	
+	if (tDialStatus.Int() == KErrNone)
+		{
+		User::WaitForRequest(tNotifyStatus);
+		if (tNotifyStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("Dial number first call status = %d"), tCallStatus);
+			}
+		else
+			{
+			INFO_PRINTF1(_L("Dial call notify call status fail"));
+			return;
+			}
+		
+		iLtsyModel.CallSharedData().VoiceCallOne().NotifyMobileCallStatusChange(tNotifyStatus, tCallStatus);
+		User::WaitForRequest(tNotifyStatus);
+		if (tNotifyStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("Dial number second call status = %d"), tCallStatus);
+			}
+		else
+			{
+			INFO_PRINTF1(_L("Dial call notify call status fail"));
+			return;
+			}
+		
+		iLtsyModel.CallSharedData().VoiceCallOne().NotifyMobileCallStatusChange(tNotifyStatus, tCallStatus);
+		User::WaitForRequest(tNotifyStatus);
+		if (tNotifyStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("Dial number three call status = %d"), tCallStatus);
+			}
+		else
+			{
+			INFO_PRINTF1(_L("Dial call notify call status fail"));
+			return;
+			}		
+		}
+	else
+		{
+		iLtsyModel.CallSharedData().VoiceCallOne().CancelAsyncRequest(EMobileCallNotifyMobileCallStatusChange);
+		}
+	}
+
+void CTestLtsyCallControlBase::CallOneDialBadNumberL()
+	{
+	INFO_PRINTF1(_L("starting dial call one"));
+	INFO_PRINTF2(_L("starting dial bad number %S..."), &KLtsyBadNumber);
+	
+	TRequestStatus tDialStatus;
+	iLtsyModel.CallSharedData().VoiceCallOne().Dial(tDialStatus, KLtsyBadNumber);
+	User::WaitForRequest(tDialStatus);	
+	
+	User::LeaveIfError(tDialStatus.Int());
+	}
+
+void CTestLtsyCallControlBase::CallOneDialSelfNumberL()
+	{
+	INFO_PRINTF1(_L("starting dial call one"));
+	INFO_PRINTF2(_L("starting dial bad number %S..."), &KLtsySelfNumber);
+	
+	TRequestStatus tDialStatus;
+	iLtsyModel.CallSharedData().VoiceCallOne().Dial(tDialStatus, KLtsySelfNumber);
+	User::WaitForRequest(tDialStatus);	
+	
+	User::LeaveIfError(tDialStatus.Int());	
+	}
+
+void CTestLtsyCallControlBase::DialCallTwo()
+	{
+	INFO_PRINTF1(_L("starting dial call two"));
+	INFO_PRINTF2(_L("starting dial number %S..."), &KLtsyTelNumTwo);
+	
+	TRequestStatus tDialStatus;
+	TRequestStatus tNotifyStatus;
+	
+	RMobileCall::TMobileCallStatus tCallStatus;
+	iLtsyModel.CallSharedData().VoiceCallTwo().NotifyMobileCallStatusChange(tNotifyStatus, tCallStatus);
+	
+	iLtsyModel.CallSharedData().VoiceCallTwo().Dial(tDialStatus, KLtsyTelNumTwo);
+	User::WaitForRequest(tDialStatus);
+	
+	INFO_PRINTF3(_L("Dial number %S\t Result = %d"), &KLtsyTelNumTwo, tDialStatus.Int());
+	
+	if (tDialStatus.Int() == KErrNone)
+		{
+		User::WaitForRequest(tNotifyStatus);
+		if (tNotifyStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("Dial number first call status = %d"), tCallStatus);
+			}
+		else
+			{
+			INFO_PRINTF1(_L("Dial call notify call status fail"));
+			return;
+			}
+		
+		iLtsyModel.CallSharedData().VoiceCallTwo().NotifyMobileCallStatusChange(tNotifyStatus, tCallStatus);
+		User::WaitForRequest(tNotifyStatus);
+		if (tNotifyStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("Dial number second call status = %d"), tCallStatus);
+			}
+		else
+			{
+			INFO_PRINTF1(_L("Dial call notify call status fail"));
+			return;
+			}
+		
+		iLtsyModel.CallSharedData().VoiceCallTwo().NotifyMobileCallStatusChange(tNotifyStatus, tCallStatus);
+		User::WaitForRequest(tNotifyStatus);
+		if (tNotifyStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("Dial number three call status = %d"), tCallStatus);
+			}
+		else
+			{
+			INFO_PRINTF1(_L("Dial call notify call status fail"));
+			return;
+			}		
+		}
+	else
+		{
+		iLtsyModel.CallSharedData().VoiceCallTwo().CancelAsyncRequest(EMobileCallNotifyMobileCallStatusChange);
+		}
+	}
+
+void CTestLtsyCallControlBase::HangupCallOneL()
+	{
+	INFO_PRINTF1(_L("starting hang up call one"));
+	
+	TRequestStatus tHangupStatus;
+	TRequestStatus tNotifyStatus;	
+	
+	RMobileCall::TMobileCallStatus tCallStatus;
+	iLtsyModel.CallSharedData().VoiceCallOne().NotifyMobileCallStatusChange(tNotifyStatus, tCallStatus);
+	
+	iLtsyModel.CallSharedData().VoiceCallOne().HangUp(tHangupStatus);
+	User::WaitForRequest(tHangupStatus);
+	
+	INFO_PRINTF2(_L("Hang up call one result = %d"), tHangupStatus.Int());
+	
+	if (tHangupStatus.Int() == KErrNone)
+		{
+		User::WaitForRequest(tNotifyStatus);
+		if (tNotifyStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("Hang up notify call status = %d"), tCallStatus);
+			}
+		else
+			{
+			INFO_PRINTF1(_L("Hang up notify call status fail"));
+			User::LeaveIfError(tNotifyStatus.Int());
+			}
+		
+		RMobileCall::TMobileCallStatus tCallStatus;
+		iLtsyModel.CallSharedData().VoiceCallOne().NotifyMobileCallStatusChange(tNotifyStatus, tCallStatus);
+		if (tNotifyStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("Hang up notify call status = %d"), tCallStatus);
+			}
+		else
+			{
+			INFO_PRINTF1(_L("Hang up notify call status fail"));
+			User::LeaveIfError(tNotifyStatus.Int());
+			}
+		}
+	else
+		{
+		iLtsyModel.CallSharedData().VoiceCallOne().CancelAsyncRequest(EMobileCallNotifyMobileCallStatusChange);
+		User::LeaveIfError(tHangupStatus.Int());
+		}
+	}
+
+void CTestLtsyCallControlBase::HangupCallTwoL()
+	{
+	INFO_PRINTF1(_L("starting hang up call two"));
+	
+	TRequestStatus tHangupStatus;
+	TRequestStatus tNotifyStatus;	
+	
+	RMobileCall::TMobileCallStatus tCallStatus;
+	iLtsyModel.CallSharedData().VoiceCallTwo().NotifyMobileCallStatusChange(tNotifyStatus, tCallStatus);
+	
+	iLtsyModel.CallSharedData().VoiceCallTwo().HangUp(tHangupStatus);
+	User::WaitForRequest(tHangupStatus);
+	
+	INFO_PRINTF2(_L("Hang up call one result = %d"), tHangupStatus.Int());
+	
+	if (tHangupStatus.Int() == KErrNone)
+		{
+		User::WaitForRequest(tNotifyStatus);
+		if (tNotifyStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("Hang up notify call status = %d"), tCallStatus);
+			}
+		else
+			{
+			INFO_PRINTF1(_L("Hang up notify call status fail"));
+			User::LeaveIfError(tNotifyStatus.Int());
+			}
+		
+		RMobileCall::TMobileCallStatus tCallStatus;
+		iLtsyModel.CallSharedData().VoiceCallTwo().NotifyMobileCallStatusChange(tNotifyStatus, tCallStatus);
+		if (tNotifyStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("Hang up notify call status = %d"), tCallStatus);
+			}
+		else
+			{
+			INFO_PRINTF1(_L("Hang up notify call status fail"));
+			User::LeaveIfError(tNotifyStatus.Int());
+			}
+		}
+	else
+		{
+		iLtsyModel.CallSharedData().VoiceCallTwo().CancelAsyncRequest(EMobileCallNotifyMobileCallStatusChange);
+		User::LeaveIfError(tHangupStatus.Int());
+		}	
+	}
+
+void CTestLtsyCallControlBase::CloseCallOne()
+	{
+	INFO_PRINTF1(_L("starting close call one"));
+	
+	iLtsyModel.CallSharedData().VoiceCallOne().Close();
+	}
+
+void CTestLtsyCallControlBase::CloseCallTwo()
+	{
+	INFO_PRINTF1(_L("starting close call two"));
+	
+	iLtsyModel.CallSharedData().VoiceCallTwo().Close();	
+	}
+
+void CTestLtsyCallControlBase::OpenCallOneL()
+	{
+	INFO_PRINTF1(_L("starting open call one"));
+	
+	User::LeaveIfError(iLtsyModel.CallSharedData().VoiceCallOne().OpenNewCall(iLtsyModel.CallSharedData().VoiceLine()));
+	}
+
+void CTestLtsyCallControlBase::OpenCallTwoL()
+	{
+	INFO_PRINTF1(_L("starting open call two"));
+	
+	User::LeaveIfError(iLtsyModel.CallSharedData().VoiceCallTwo().OpenNewCall(iLtsyModel.CallSharedData().VoiceLine()));	
+	}
+
+void CTestLtsyCallControlBase::HoldCallOne()
+	{
+	INFO_PRINTF1(_L("starting hold call one"));
+	
+	TRequestStatus iStatus;
+	TRequestStatus iCallChangeStatus;
+	TRequestStatus iCallEvent;
+	
+	RMobileCall::TMobileCallStatus tCallStatus;
+	RMobileCall::TMobileCallEvent tCallEvent;
+	
+	iLtsyModel.CallSharedData().VoiceCallOne().NotifyMobileCallStatusChange(iCallChangeStatus, tCallStatus);	
+	iLtsyModel.CallSharedData().VoiceCallOne().NotifyCallEvent(iCallEvent, tCallEvent);	
+	
+	iLtsyModel.CallSharedData().VoiceCallOne().Hold(iStatus);
+	User::WaitForRequest(iStatus);
+	INFO_PRINTF2(_L("Hold call one result = %d"), iStatus.Int());
+	
+	if (iStatus.Int() == KErrNone)
+		{
+		User::WaitForRequest(iCallChangeStatus);
+		INFO_PRINTF2(_L("Hold call notify call status = %d"), tCallStatus);
+		
+		User::WaitForRequest(iCallEvent);
+		INFO_PRINTF2(_L("Hold call notify call Event = %d"), tCallEvent);
+		}
+	else
+		{
+		iLtsyModel.CallSharedData().VoiceCallOne().CancelAsyncRequest(EMobileCallNotifyMobileCallStatusChange);
+		iLtsyModel.CallSharedData().VoiceCallOne().CancelAsyncRequest(EMobileCallNotifyCallEvent);
+		}
+	}
+
+void CTestLtsyCallControlBase::HoldCallTwo()
+	{
+	INFO_PRINTF1(_L("starting hold call two"));
+	
+	TRequestStatus iStatus;
+	TRequestStatus iCallChangeStatus;
+	TRequestStatus iCallEvent;
+	
+	RMobileCall::TMobileCallStatus tCallStatus;
+	RMobileCall::TMobileCallEvent tCallEvent;
+	
+	iLtsyModel.CallSharedData().VoiceCallTwo().NotifyMobileCallStatusChange(iCallChangeStatus, tCallStatus);	
+	iLtsyModel.CallSharedData().VoiceCallTwo().NotifyCallEvent(iCallEvent, tCallEvent);	
+	
+	iLtsyModel.CallSharedData().VoiceCallTwo().Hold(iStatus);
+	User::WaitForRequest(iStatus);
+	INFO_PRINTF2(_L("Hold call two result = %d"), iStatus.Int());
+	
+	if (iStatus.Int() == KErrNone)
+		{
+		User::WaitForRequest(iCallChangeStatus);
+		INFO_PRINTF2(_L("Hold call notify call status = %d"), tCallStatus);
+		
+		User::WaitForRequest(iCallEvent);
+		INFO_PRINTF2(_L("Hold call notify call Event = %d"), tCallEvent);
+		}
+	else
+		{
+		iLtsyModel.CallSharedData().VoiceCallTwo().CancelAsyncRequest(EMobileCallNotifyMobileCallStatusChange);
+		iLtsyModel.CallSharedData().VoiceCallOne().CancelAsyncRequest(EMobileCallNotifyCallEvent);
+		}	
+	}
+	
+void CTestLtsyCallControlBase::ResumeCallOne()
+	{
+	INFO_PRINTF1(_L("starting resume call one"));
+	
+	TRequestStatus iStatus;
+	
+	TRequestStatus iCallChangeStatus;
+	RMobileCall::TMobileCallStatus tCallStatus;
+	
+	TRequestStatus iCallEvent;
+	RMobileCall::TMobileCallEvent tCallEvent;
+	
+	iLtsyModel.CallSharedData().VoiceCallOne().NotifyMobileCallStatusChange(iCallChangeStatus, tCallStatus);
+	
+	iLtsyModel.CallSharedData().VoiceCallOne().NotifyCallEvent(iCallEvent, tCallEvent);
+	
+	iLtsyModel.CallSharedData().VoiceCallOne().Resume(iStatus);
+	User::WaitForRequest(iStatus);
+	
+	INFO_PRINTF2(_L("Resume call one result = %d"), iStatus.Int());
+	
+	if (iStatus.Int() == KErrNone)
+		{
+		User::WaitForRequest(iCallChangeStatus);
+		INFO_PRINTF2(_L("Resume call one status = %d"), tCallStatus);
+		
+		User::WaitForRequest(iCallEvent);
+		INFO_PRINTF2(_L("Resume call one call event = %d"), tCallEvent);
+		}
+	else
+		{
+		iLtsyModel.CallSharedData().VoiceCallOne().CancelAsyncRequest(EMobileCallNotifyMobileCallStatusChange);
+		iLtsyModel.CallSharedData().VoiceCallOne().CancelAsyncRequest(EMobileCallNotifyCallEvent);
+		}
+	}
+
+void CTestLtsyCallControlBase::ResumeCallTwo()
+	{
+	INFO_PRINTF1(_L("starting resume call two"));
+	
+	TRequestStatus iStatus;
+	
+	TRequestStatus iCallChangeStatus;
+	RMobileCall::TMobileCallStatus tCallStatus;
+	
+	TRequestStatus iCallEvent;
+	RMobileCall::TMobileCallEvent tCallEvent;
+	
+	iLtsyModel.CallSharedData().VoiceCallTwo().NotifyMobileCallStatusChange(iCallChangeStatus, tCallStatus);
+	
+	iLtsyModel.CallSharedData().VoiceCallTwo().NotifyCallEvent(iCallEvent, tCallEvent);
+	
+	iLtsyModel.CallSharedData().VoiceCallTwo().Resume(iStatus);
+	User::WaitForRequest(iStatus);
+	
+	INFO_PRINTF2(_L("Resume call two result = %d"), iStatus.Int());
+	
+	if (iStatus.Int() == KErrNone)
+		{
+		User::WaitForRequest(iCallChangeStatus);
+		INFO_PRINTF2(_L("Resume call two status = %d"), tCallStatus);
+		
+		User::WaitForRequest(iCallEvent);
+		INFO_PRINTF2(_L("Resume call two call event = %d"), tCallEvent);
+		}
+	else
+		{
+		iLtsyModel.CallSharedData().VoiceCallTwo().CancelAsyncRequest(EMobileCallNotifyMobileCallStatusChange);
+		iLtsyModel.CallSharedData().VoiceCallTwo().CancelAsyncRequest(EMobileCallNotifyCallEvent);
+		}	
+	}
+
+void CTestLtsyCallControlBase::SwapCallOne()
+	{
+	INFO_PRINTF1(_L("starting swap call one"));
+	
+	TRequestStatus iStatus;
+	TRequestStatus iCallChangeStatus;
+	
+	RMobileCall::TMobileCallStatus tCallStatus;
+	iLtsyModel.CallSharedData().VoiceCallOne().NotifyMobileCallStatusChange(iCallChangeStatus, tCallStatus);
+	
+	iLtsyModel.CallSharedData().VoiceCallOne().Swap(iStatus);
+	User::WaitForRequest(iStatus);
+	
+	INFO_PRINTF2(_L("call one swap result = %d"), iStatus.Int());
+	
+	if (iStatus.Int() == KErrNone)
+		{
+		User::WaitForRequest(iCallChangeStatus);
+		INFO_PRINTF2(_L("call one swap status = %d"), tCallStatus);
+		}
+	else
+		{
+		iLtsyModel.CallSharedData().VoiceCallOne().CancelAsyncRequest(EMobileCallNotifyMobileCallStatusChange);
+		}
+	}
+	
+void CTestLtsyCallControlBase::NotifyCallOne()
+	{
+	INFO_PRINTF1(_L("starting notify call one"));
+	
+	TRequestStatus iCallChangeStatus;
+	RMobileCall::TMobileCallStatus tCallStatus;
+	iLtsyModel.CallSharedData().VoiceCallOne().NotifyMobileCallStatusChange(iCallChangeStatus, tCallStatus);
+	User::WaitForRequest(iCallChangeStatus);
+	INFO_PRINTF3(_L("call one after swap result = %d\tstatus = %d"), iCallChangeStatus.Int(), tCallStatus);	
+	}
+
+void CTestLtsyCallControlBase::NotifyCallTwo()
+	{
+	INFO_PRINTF1(_L("starting notify call two"));
+	
+	TRequestStatus iCallChangeStatus;
+	RMobileCall::TMobileCallStatus tCallStatus;
+	iLtsyModel.CallSharedData().VoiceCallTwo().NotifyMobileCallStatusChange(iCallChangeStatus, tCallStatus);
+	User::WaitForRequest(iCallChangeStatus);
+	INFO_PRINTF3(_L("call two after swap result = %d\tstatus = %d"), iCallChangeStatus.Int(), tCallStatus);		
+	}
+
+void CTestLtsyCallControlBase::SwapCallTwo()
+	{
+	INFO_PRINTF1(_L("starting swap call two"));
+	
+	TRequestStatus iStatus;
+	TRequestStatus iCallChangeStatus;
+	
+	RMobileCall::TMobileCallStatus tCallStatus;
+	iLtsyModel.CallSharedData().VoiceCallTwo().NotifyMobileCallStatusChange(iCallChangeStatus, tCallStatus);
+	
+	iLtsyModel.CallSharedData().VoiceCallTwo().Swap(iStatus);
+	User::WaitForRequest(iStatus);
+	
+	INFO_PRINTF2(_L("call two swap result = %d"), iStatus.Int());
+	
+	if (iStatus.Int() == KErrNone)
+		{
+		User::WaitForRequest(iCallChangeStatus);
+		INFO_PRINTF2(_L("call two swap status = %d"), tCallStatus);
+		}
+	else
+		{
+		iLtsyModel.CallSharedData().VoiceCallTwo().CancelAsyncRequest(EMobileCallNotifyMobileCallStatusChange);
+		}	
+	}
+
+void CTestLtsyCallControlBase::NotifyIncomingCallOneL()
+	{
+	INFO_PRINTF1(_L("starting notify incoming call one"));
+	
+	TName name;
+	TRequestStatus iNotifyIncomingCallStatus;
+	iLtsyModel.CallSharedData().VoiceLine().NotifyIncomingCall(iNotifyIncomingCallStatus, name);
+	User::WaitForRequest(iNotifyIncomingCallStatus);
+	
+	INFO_PRINTF2(_L("Notify incoming call result = %d"), iNotifyIncomingCallStatus.Int());
+	
+	if (iNotifyIncomingCallStatus.Int() == KErrNone)
+		{
+		INFO_PRINTF3(_L("Notify incoming call %S Result = %d"), &name, iNotifyIncomingCallStatus.Int());
+		
+		INFO_PRINTF1(_L("Starting Open Call one for incoming call..."));
+		
+		TInt nRes = iLtsyModel.CallSharedData().VoiceCallOne().OpenExistingCall(iLtsyModel.CallSharedData().VoiceLine(), name);
+
+		//Get Call info
+		RMobileCall::TMobileCallInfoV1 tCallInfo;
+		RMobileCall::TMobileCallInfoV1Pckg tCallInfoPckg(tCallInfo);
+		iLtsyModel.CallSharedData().VoiceCallOne().GetMobileCallInfo(tCallInfoPckg);
+		
+		INFO_PRINTF2(_L("Remote call service(voice=1,data=3,fax=5) = %d"), tCallInfo.iService);
+
+		INFO_PRINTF2(_L("Remote call telnum = %S"), &(tCallInfo.iRemoteParty.iRemoteNumber.iTelNumber));
+		
+		}
+	else
+		{
+		User::LeaveIfError(iNotifyIncomingCallStatus.Int());
+		}
+	}
+
+void CTestLtsyCallControlBase::AnswerIncomingCallOneL()
+	{
+	INFO_PRINTF1(_L("starting answering incoming call one"));
+	
+	TRequestStatus iStatus;
+	TRequestStatus iCallChangeStatus;
+	
+	RMobileCall::TMobileCallStatus tCallStatus;
+	iLtsyModel.CallSharedData().VoiceCallOne().NotifyMobileCallStatusChange(iCallChangeStatus, tCallStatus);
+	
+	iLtsyModel.CallSharedData().VoiceCallOne().AnswerIncomingCall(iStatus);
+	User::WaitForRequest(iStatus);
+	
+	INFO_PRINTF2(_L("answering call result = %d"), iStatus.Int());
+	
+	if (iStatus.Int() == KErrNone)
+		{
+		User::WaitForRequest(iCallChangeStatus);
+		if (iCallChangeStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("first answering call status = %d"), tCallStatus);
+			}
+		else
+			{
+			User::LeaveIfError(iCallChangeStatus.Int());
+			}
+		
+		iLtsyModel.CallSharedData().VoiceCallOne().NotifyMobileCallStatusChange(iCallChangeStatus, tCallStatus);
+		User::WaitForRequest(iCallChangeStatus);
+		if (iCallChangeStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("second answering call status = %d"), tCallStatus);
+			}
+		else
+			{
+			User::LeaveIfError(iCallChangeStatus.Int());
+			}
+		}
+	else
+		{
+		User::LeaveIfError(iStatus.Int());
+		}
+	}
+
+void CTestLtsyCallControlBase::AnswerIncomingCallTwoL()
+	{
+	INFO_PRINTF1(_L("starting answering incoming call two"));
+	
+	TRequestStatus iStatus;
+	TRequestStatus iCallChangeStatus;
+	
+	RMobileCall::TMobileCallStatus tCallStatus;
+	iLtsyModel.CallSharedData().VoiceCallTwo().NotifyMobileCallStatusChange(iCallChangeStatus, tCallStatus);
+	
+	iLtsyModel.CallSharedData().VoiceCallTwo().AnswerIncomingCall(iStatus);
+	User::WaitForRequest(iStatus);
+	
+	INFO_PRINTF2(_L("answering call result = %d"), iStatus.Int());
+	
+	if (iStatus.Int() == KErrNone)
+		{
+		User::WaitForRequest(iCallChangeStatus);
+		if (iCallChangeStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("first answering call status = %d"), tCallStatus);
+			}
+		else
+			{
+			User::LeaveIfError(iCallChangeStatus.Int());
+			}
+		
+		iLtsyModel.CallSharedData().VoiceCallTwo().NotifyMobileCallStatusChange(iCallChangeStatus, tCallStatus);
+		User::WaitForRequest(iCallChangeStatus);
+		if (iCallChangeStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("second answering call status = %d"), tCallStatus);
+			}
+		else
+			{
+			User::LeaveIfError(iCallChangeStatus.Int());
+			}
+		
+		
+		iLtsyModel.CallSharedData().VoiceCallOne().NotifyMobileCallStatusChange(iCallChangeStatus, tCallStatus);
+		User::WaitForRequest(iCallChangeStatus);
+		if (iCallChangeStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("call one swith call status = %d"), tCallStatus);
+			}
+		else
+			{
+			User::LeaveIfError(iCallChangeStatus.Int());
+			}
+		
+		}
+	else
+		{
+		User::LeaveIfError(iStatus.Int());
+		}	
+	}
+
+void CTestLtsyCallControlBase::NotifyIncomingCallTwoL()
+	{
+	INFO_PRINTF1(_L("starting notify incoming call two"));
+	
+	TName name;
+	TRequestStatus iNotifyIncomingCallStatus;
+	iLtsyModel.CallSharedData().VoiceLine().NotifyIncomingCall(iNotifyIncomingCallStatus, name);
+	User::WaitForRequest(iNotifyIncomingCallStatus);
+	
+	INFO_PRINTF2(_L("Notify incoming call result = %d"), iNotifyIncomingCallStatus.Int());
+	
+	if (iNotifyIncomingCallStatus.Int() == KErrNone)
+		{
+		INFO_PRINTF3(_L("Notify incoming call %S Result = %d"), &name, iNotifyIncomingCallStatus.Int());
+		
+		INFO_PRINTF1(_L("Starting Open Call one for incoming call..."));
+		
+		TInt nRes = iLtsyModel.CallSharedData().VoiceCallTwo().OpenExistingCall(iLtsyModel.CallSharedData().VoiceLine(), name);
+
+		//Get Call info
+		RMobileCall::TMobileCallInfoV1 tCallInfo;
+		RMobileCall::TMobileCallInfoV1Pckg tCallInfoPckg(tCallInfo);
+		iLtsyModel.CallSharedData().VoiceCallTwo().GetMobileCallInfo(tCallInfoPckg);
+		
+		INFO_PRINTF2(_L("Remote call service(voice=1,data=3,fax=5) = %d"), tCallInfo.iService);
+
+		INFO_PRINTF2(_L("Remote call telnum = %S"), &(tCallInfo.iRemoteParty.iRemoteNumber.iTelNumber));
+		
+		}	
+	else
+		{
+		User::LeaveIfError(iNotifyIncomingCallStatus.Int());
+		}
+	}
+
+//End of file