telephonyserverplugins/common_tsy/test/integration/src/cctsyintegrationtestcallcontrol.cpp
changeset 0 3553901f7fa8
child 17 3f227a47ad75
equal deleted inserted replaced
-1:000000000000 0:3553901f7fa8
       
     1 /*
       
     2 * Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 /**
       
    21  * Test step definitions for the CallControl functional unit.
       
    22  * @internalTechnology
       
    23  */
       
    24 
       
    25 #include "cctsyintegrationtestcallcontrol.h"
       
    26 #include "cetelsessionmgr.h"
       
    27 #include "cctsyinidata.h"
       
    28 #include "tcallcontroltsytesthelper.h"
       
    29 #include <pcktcs.h>
       
    30 #include "rpsasciirqstdefs.h"
       
    31 #include "rpsmaster.h"
       
    32 #include <ctsy/serviceapi/gsmerror.h>
       
    33 #include "rpsasciirqstdefs.h"
       
    34 #include "rpsmaster.h"
       
    35 
       
    36 	
       
    37 CCTSYIntegrationTestCallControlBase::CCTSYIntegrationTestCallControlBase(CEtelSessionMgr& aEtelSessionMgr)
       
    38 	: CCTSYIntegrationTestSuiteStepBase(aEtelSessionMgr), iCallControlTestHelper(*this), iNetworkTestHelper(*this), iPacketServiceTestHelper(*this)
       
    39 /**
       
    40  * Constructor
       
    41  */
       
    42 	{
       
    43 	}
       
    44 
       
    45 CCTSYIntegrationTestCallControlBase::~CCTSYIntegrationTestCallControlBase()
       
    46 /*
       
    47  * Destructor
       
    48  */
       
    49 	{
       
    50 	}
       
    51 	
       
    52 CCTSYIntegrationTestCallControl0001::CCTSYIntegrationTestCallControl0001(CEtelSessionMgr& aEtelSessionMgr)
       
    53 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
    54 /**
       
    55  * Constructor.
       
    56  */
       
    57 	{
       
    58 	SetTestStepName(CCTSYIntegrationTestCallControl0001::GetTestStepName());
       
    59 	}
       
    60 
       
    61 CCTSYIntegrationTestCallControl0001::~CCTSYIntegrationTestCallControl0001()
       
    62 /**
       
    63  * Destructor.
       
    64  */
       
    65 	{
       
    66 	}
       
    67 	
       
    68 	
       
    69 TVerdict CCTSYIntegrationTestCallControl0001::doTestStepL()
       
    70 /**
       
    71  * @SYMTestCaseID BA-CTSY-INT-CCON-0001
       
    72  * @SYMFssID BA/CTSY/CCON-0001
       
    73  * @SYMTestCaseDesc Make an outgoing voice call that connects
       
    74  * @SYMTestPriority High
       
    75  * @SYMTestActions RPhone::EnumerateLines, RCall::Dial
       
    76  * @SYMTestExpectedResults Pass - MO call connects.  Phone status updates correctly.
       
    77  * @SYMTestType CIT
       
    78  * @SYMTestCaseDependencies live/automatic
       
    79  *
       
    80  * Reason for test: Verify change in call state is reflected in RPhone.
       
    81  *
       
    82  * @return - TVerdict code
       
    83  */
       
    84 	{
       
    85 
       
    86 	////////////////////////////////////////////////////////////////
       
    87 	// SET UP
       
    88 	////////////////////////////////////////////////////////////////
       
    89 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
    90 	
       
    91 	// Get Voice line 1 
       
    92 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
    93 
       
    94 	// Get call 1 
       
    95 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
    96 		
       
    97 	// Check phone supports KCapsVoice
       
    98 	RLine::TCaps lineCaps; 
       
    99 	CHECK_EQUALS_L(voiceLine.GetCaps(lineCaps), KErrNone, 
       
   100 			_L("RMobileLine::GetCaps returned an error"));
       
   101 	CHECK_BITS_SET_L(lineCaps.iFlags, RLine::KCapsVoice, KNoUnwantedBits, 
       
   102 			_L("RLine::GetCaps returned wrong caps"));
       
   103 	
       
   104 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
       
   105 	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
   106 	
       
   107 	////////////////////////////////////////////////////////////////
       
   108 	// SET UP END
       
   109 	////////////////////////////////////////////////////////////////
       
   110 	
       
   111 	StartTest();
       
   112 	
       
   113 	////////////////////////////////////////////////////////////////
       
   114 	// TEST START
       
   115 	////////////////////////////////////////////////////////////////
       
   116 	
       
   117 	
       
   118 	// Check RPhone::EnumerateLines returns 4 (CTSY hard-coded value)
       
   119 	
       
   120 	TInt count = 0;
       
   121 	ASSERT_EQUALS(phone.EnumerateLines(count), KErrNone, 
       
   122 			_L("RPhone::EnumerateLines did returned an error"));
       
   123 	ASSERT_EQUALS(count, 4,  
       
   124 			_L("RPhone::EnumerateLines did not return a count of four"));
       
   125 	
       
   126 	// Check RPhone::GetLineInfo returns iStatus of EStatusIdle
       
   127 	RPhone::TLineInfo lineInfo;
       
   128 	TInt dataLineIndex=0;
       
   129 	ASSERT_EQUALS(phone.GetLineInfo(dataLineIndex, lineInfo), KErrNone,
       
   130 			_L("RPhone::GetLineInfo returned an error"));
       
   131 	ASSERT_EQUALS(lineInfo.iStatus, RCall::EStatusIdle, 
       
   132 			_L("RPhone::GetLineInfo wrong iStatus, should be EStatusIdle"));
       
   133 	
       
   134 	// Check RPhone::GetLineInfo returns iLineCapsFlags of KCapsVoice
       
   135 	ASSERT_BITS_SET(lineInfo.iLineCapsFlags, RLine::KCapsVoice, KNoUnwantedBits, 
       
   136 			_L("RPhone::GetLineInfo returned wrong caps"));	
       
   137 
       
   138 	// Check RPhone::GetLineInfo returns a valid line name
       
   139 	ASSERT_TRUE(lineInfo.iName.Length() >0,  
       
   140 			_L("RPhone::GetLineInfo wrong call name"));
       
   141 	
       
   142 	// Dial voice number that answers. 
       
   143 	TPtrC number; 
       
   144 	ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number) != EFalse,			  
       
   145 			_L("CTestStep::GetStringFromConfig did not complete as expected"));
       
   146 	TCoreEtelRequestStatus<RCall> dialStatus(call1, &RCall::DialCancel);
       
   147 	CleanupStack::PushL(dialStatus);
       
   148 	call1.Dial(dialStatus, number); 
       
   149 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeMedium), KErrNone, 
       
   150 			_L("RCall::Dial timed-out"));
       
   151 	ASSERT_EQUALS(dialStatus.Int(), KErrNone,  
       
   152 			_L("RCall::Dial returned with an error"));
       
   153 	
       
   154 	// Check RPhone::GetLineInfo returns iStatus of EStatusConnected
       
   155 	ASSERT_EQUALS(phone.GetLineInfo(dataLineIndex, lineInfo), KErrNone,  
       
   156 			_L("RPhone::GetLineInfo returned an error"));
       
   157 	ASSERT_EQUALS(lineInfo.iStatus, RCall::EStatusConnected, 
       
   158 			_L("RPhone::GetLineInfo wrong iStatus, should be EStatusConnected"));
       
   159 
       
   160 	// Check RPhone::GetLineInfo returns iLineCapsFlags of KCapsVoice	
       
   161 	ASSERT_BITS_SET(lineInfo.iLineCapsFlags, RLine::KCapsVoice, KNoUnwantedBits, 
       
   162 			_L("RPhone::GetLineInfo returned wrong caps"));	
       
   163 
       
   164 	// Check RPhone::GetLineInfo returns a valid line name
       
   165 	ASSERT_TRUE(lineInfo.iName.Length() >0,  
       
   166 			_L("RPhone::GetLineInfo wrong call name"));
       
   167 
       
   168 	////////////////////////////////////////////////////////////////
       
   169 	// TEST END
       
   170 	////////////////////////////////////////////////////////////////
       
   171 
       
   172     StartCleanup();
       
   173 
       
   174     // hang up the active call
       
   175 	TCoreEtelRequestStatus<RCall> hangUpStatus (call1,&RCall::HangUpCancel);	
       
   176 	CleanupStack::PushL(hangUpStatus);
       
   177 	call1.HangUp(hangUpStatus);
       
   178 	WaitForRequestWithTimeOut(hangUpStatus, ETimeMedium);	
       
   179 	
       
   180 
       
   181 	CleanupStack::PopAndDestroy(2,&dialStatus);
       
   182 	
       
   183 	return TestStepResult();
       
   184 	}
       
   185 
       
   186 TPtrC CCTSYIntegrationTestCallControl0001::GetTestStepName()
       
   187 /**
       
   188  * @return The test step name.
       
   189  */
       
   190 	{
       
   191 	return  _L("CCTSYIntegrationTestCallControl0001");
       
   192 	}
       
   193 
       
   194 
       
   195 
       
   196 CCTSYIntegrationTestCallControl0002::CCTSYIntegrationTestCallControl0002(CEtelSessionMgr& aEtelSessionMgr)
       
   197 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
   198 /**
       
   199  * Constructor.
       
   200  */
       
   201 	{
       
   202 	SetTestStepName(CCTSYIntegrationTestCallControl0002::GetTestStepName());
       
   203 	}
       
   204 
       
   205 CCTSYIntegrationTestCallControl0002::~CCTSYIntegrationTestCallControl0002()
       
   206 /**
       
   207  * Destructor.
       
   208  */
       
   209 	{
       
   210 	}
       
   211 
       
   212 TVerdict CCTSYIntegrationTestCallControl0002::doTestStepL()
       
   213 /**
       
   214  * @SYMTestCaseID BA-CTSY-INT-CCON-0002
       
   215  * @SYMFssID BA/CTSY/CCON-0002
       
   216  * @SYMTestCaseDesc Make an outgoing voice call that connects
       
   217  * @SYMTestPriority High
       
   218  * @SYMTestActions RLine::NotifyStatusChange, RLine::GetStatus, RMobileLine::NotifyMobileLineStatusChange, RMobileLine::GetMobileLineStatus, RLine::GetInfo, RLine::GetCallInfo, RLine::EnumerateCall
       
   219  * @SYMTestExpectedResults Pass - Mo call connects.  Line status updates corectly.
       
   220  * @SYMTestType CIT
       
   221  * @SYMTestCaseDependencies live/automatic
       
   222  *
       
   223  * Reason for test: Verify change in call state is reflected in RLine and RMobileLine
       
   224  *
       
   225  * @return - TVerdict code
       
   226  */
       
   227 	{
       
   228 
       
   229 	////////////////////////////////////////////////////////////////
       
   230 	// SET UP
       
   231 	////////////////////////////////////////////////////////////////
       
   232 
       
   233 	// Get phone
       
   234 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
   235 		
       
   236 	// Check phone supports KCapsVoice
       
   237 	// Get Voice line 1 
       
   238 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
   239 
       
   240 	// Get call 1 
       
   241 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
   242 
       
   243 	// Check GetCaps returns iLineCapsFlags of KCapsVoice 
       
   244 	RLine::TCaps lineCaps; 
       
   245 	CHECK_EQUALS_L(voiceLine.GetCaps(lineCaps), KErrNone,  
       
   246 			_L("RMobileLine::GetCaps returned an error"));
       
   247 	CHECK_BITS_SET_L(lineCaps.iFlags, RLine::KCapsVoice, KNoUnwantedBits,  
       
   248 			_L("RLine::GetCaps returned wrong caps"));
       
   249 	
       
   250 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
       
   251 	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
   252 	
       
   253 	////////////////////////////////////////////////////////////////
       
   254 	// SET UP END
       
   255 	////////////////////////////////////////////////////////////////
       
   256 	
       
   257 	StartTest();
       
   258 	
       
   259 	////////////////////////////////////////////////////////////////
       
   260 	// TEST START
       
   261 	////////////////////////////////////////////////////////////////
       
   262 	
       
   263 	
       
   264 	// ===  Check line caps ===
       
   265 
       
   266 	// Check RLine::GetCaps supports caps in set of KCapsVoice.
       
   267 	ASSERT_EQUALS(voiceLine.GetCaps(lineCaps), KErrNone,  
       
   268 			_L("RMobileLine::GetCaps returned an error"));
       
   269 	ASSERT_BITS_SET(lineCaps.iFlags, RLine::KCapsVoice, KNoUnwantedBits, 
       
   270 			_L("RLine::GetCaps returned wrong caps"));
       
   271 
       
   272 	// ===  Check line status ===
       
   273 
       
   274 	// Check RLine::GetStatus returns EStatusIdle.
       
   275 	RCall::TStatus callStatus;
       
   276 	ASSERT_EQUALS(voiceLine.GetStatus(callStatus), KErrNone,  
       
   277 			_L("RLine::GetStatus returned an error"));
       
   278 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle, 
       
   279 			_L("RLine::GetStatus wrong iStatus, should be EStatusIdle"));
       
   280 
       
   281 	// Check RMobileLine::GetMobileLineStatus returns EStatusIdle.
       
   282 	RMobileCall::TMobileCallStatus lineStatus;
       
   283 	ASSERT_EQUALS(voiceLine.GetMobileLineStatus(lineStatus), KErrNone, 
       
   284 			_L("RMobileLine::GetMobileLineStatus returned an error"));
       
   285 	ASSERT_EQUALS(lineStatus, RMobileCall::EStatusIdle,
       
   286 			_L("RMobileLine::GetMobileLineStatus did not return EStatusIdle as expected"));
       
   287 
       
   288 	// ===  Check line info ===
       
   289 
       
   290 	// Check RLine::GetCallInfo returns valid name.
       
   291 	// Check RLine::GetCallInfo returns caps in set of KCapsVoice | KCapsDial.
       
   292 	// Check RLine::GetCallInfo returns status of EStatusIdle.
       
   293 	RLine::TCallInfo callInfo;
       
   294 	TInt dataLineIndex=0;
       
   295 	ASSERT_EQUALS(voiceLine.GetCallInfo(dataLineIndex, callInfo), KErrNone, 
       
   296 			_L("RLine::GetCallInfo returned an error"));
       
   297 	ASSERT_TRUE(callInfo.iCallName.Length() >0, 
       
   298 			_L("RLine::GetCallInfo returned an invalid  name"));
       
   299 	ASSERT_BITS_SET(callInfo.iCallCapsFlags, RCall::KCapsVoice | RCall::KCapsDial, KNoUnwantedBits , 
       
   300 			_L("RLine::GetCallInfo returned wrong caps"));	
       
   301 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusIdle, 
       
   302 			_L("RLine::GetCallInfo wrong iStatus, should be EStatusIdle"));
       
   303 	
       
   304 	// Check RLine::GetInfo returns status of EStatusIdle.
       
   305 	RLine::TLineInfo lineInfo;
       
   306 	ASSERT_EQUALS(voiceLine.GetInfo(lineInfo),KErrNone, 
       
   307 			_L("RLine::GetInfo returned an error")); 
       
   308 	ASSERT_EQUALS(lineInfo.iStatus, RCall::EStatusIdle,
       
   309 			 _L("RLine::GetInfo did not return EStatusIdle"));
       
   310 
       
   311 	// Check RLine::EnumerateCall returns aCount of 4
       
   312 	TInt count = 0;
       
   313 	ASSERT_EQUALS(phone.EnumerateLines(count), KErrNone, 
       
   314 			_L("RPhone::EnumerateLines did returned an error"));
       
   315 	ASSERT_EQUALS(count, 4,  
       
   316 			_L("RPhone::EnumerateLines did not return a count of four"));
       
   317 
       
   318 	// post notifier for RLine::NotifyStatusChange
       
   319 	TCoreEtelRequestStatus<RLine> notifyStatusChangeStatus (voiceLine,&RLine::NotifyStatusChangeCancel);
       
   320 	CleanupStack::PushL(notifyStatusChangeStatus);
       
   321 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,callStatus);
       
   322 
       
   323 	// post a notifier for RMobileLine::NotifyMobileLineStatusChange
       
   324 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
   325 	TExtEtelRequestStatus notifyMobileLineChangeStatus(voiceLine, EMobileLineNotifyMobileLineStatusChange);
       
   326 	CleanupStack::PushL(notifyMobileLineChangeStatus);
       
   327 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileCallStatus);
       
   328 
       
   329 	// Dial a voice number that answers. 
       
   330 	TPtrC number; 
       
   331 	ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number) != EFalse,			  
       
   332 			_L("CTestStep::GetStringFromConfig did not complete as expected"));
       
   333 	TCoreEtelRequestStatus<RCall> dialStatus(call1, &RCall::DialCancel);
       
   334 	CleanupStack::PushL(dialStatus);
       
   335 	call1.Dial(dialStatus, number); 
       
   336 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeMedium), KErrNone, 
       
   337 			_L("RCall::Dial timed-out"));
       
   338 	ASSERT_EQUALS(dialStatus.Int(), KErrNone,  
       
   339 			_L("RCall::Dial returned with an error"));
       
   340 		
       
   341 	// ===  Check line status ===
       
   342 
       
   343 	// Check RLine::NotifyStatusChange completes with EStatusDialling ->
       
   344 	TInt expectedStatus = KErrNone;  
       
   345 	RCall::TStatus expectedCallStatus = RCall::EStatusDialling;
       
   346 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
   347 														 notifyStatusChangeStatus,
       
   348 														 callStatus,
       
   349 														 expectedCallStatus,
       
   350 														 expectedStatus);
       
   351 
       
   352 	// Check RLine::NotifyStatusChange completes with EStatusConnecting ->
       
   353 	expectedCallStatus = RCall::EStatusConnecting;	
       
   354 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,callStatus);
       
   355 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
   356 														 notifyStatusChangeStatus,
       
   357 														 callStatus,
       
   358 														 expectedCallStatus,
       
   359 														 expectedStatus);
       
   360 														 															 
       
   361 	// Check RLine::NotifyStatusChange completes with EStatusConnected.
       
   362 	expectedCallStatus = RCall::EStatusConnected;
       
   363 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,callStatus);
       
   364 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
   365 														 notifyStatusChangeStatus,
       
   366 														 callStatus,
       
   367 														 expectedCallStatus,
       
   368 														 expectedStatus);
       
   369 														 
       
   370 	// Check RLine::GetStatus returns EStatusConnected
       
   371 	ASSERT_EQUALS(voiceLine.GetStatus(callStatus), KErrNone, 
       
   372 			_L("RLine::GetStatus returned an error"));
       
   373 	ASSERT_EQUALS(callStatus, RCall::EStatusConnected, 
       
   374 			_L("RLine::GetStatus did not return EStatusConnected as expected"));
       
   375 	
       
   376 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusDialling ->
       
   377 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusDialling;
       
   378 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
   379 																		notifyMobileLineChangeStatus,
       
   380 																		mobileCallStatus,
       
   381 																		expectedMobileCallStatus,
       
   382 																		expectedStatus);
       
   383 																		
       
   384 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusConnecting ->
       
   385 	expectedMobileCallStatus = RMobileCall::EStatusConnecting;
       
   386 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileCallStatus);
       
   387 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
   388 																		notifyMobileLineChangeStatus,
       
   389 																		mobileCallStatus,
       
   390 																		expectedMobileCallStatus,
       
   391 																		expectedStatus);
       
   392 
       
   393 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusConnected.																		
       
   394 	expectedMobileCallStatus = RMobileCall::EStatusConnected;
       
   395 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileCallStatus);
       
   396 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
   397 																		notifyMobileLineChangeStatus,
       
   398 																		mobileCallStatus,
       
   399 																		expectedMobileCallStatus,
       
   400 																		expectedStatus);
       
   401 																																					
       
   402 	
       
   403 	// Check RMobileLine::GetMobileLineStatus returns EStatusConnected
       
   404 	ASSERT_EQUALS(voiceLine.GetMobileLineStatus(mobileCallStatus), KErrNone, 
       
   405 			_L("RMobileLine::GetMobileLineStatus returned an error"));
       
   406 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected, 
       
   407 			_L("RMobileLine::GetMobileLineStatus did not set line status to EStatusConnected"));
       
   408 	
       
   409 	
       
   410 	// ===  Check line info ===
       
   411 
       
   412 	// Check RLine::GetCallInfo returns valid name.
       
   413 	// Check RLine::GetCallInfo returns caps in set of KCapsHangUp.
       
   414 	// Check RLine::GetCallInfo returns status of EStatusConnected.
       
   415 	ASSERT_EQUALS(voiceLine.GetCallInfo(dataLineIndex, callInfo), KErrNone,  
       
   416 			_L("RLine::GetCallInfo returned an error"));
       
   417 	ASSERT_TRUE(callInfo.iCallName.Length() >0,  
       
   418 			_L("RLine::GetCallInfo returned an invalid  name"));
       
   419 	ASSERT_BITS_SET(callInfo.iCallCapsFlags, RCall::KCapsHangUp, KNoUnwantedBits,  
       
   420 			_L("RLine::GetCallInfo returned wrong caps"));	
       
   421 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusConnected,  
       
   422 			_L("RLine::GetCallInfo wrong iStatus, should be EStatusConnected"));
       
   423 
       
   424 	// Check RLine::GetInfo returns status of EStatusConnected.
       
   425 	ASSERT_EQUALS(voiceLine.GetInfo(lineInfo), KErrNone,  
       
   426 			_L("RLine::GetInfo returned an error")); 
       
   427 	ASSERT_EQUALS(lineInfo.iStatus, RCall::EStatusConnected, 
       
   428 			_L("RLine::GetInfo did not return EStatusConnected"));
       
   429 
       
   430 	
       
   431 	////////////////////////////////////////////////////////////////
       
   432 	// TEST END
       
   433 	////////////////////////////////////////////////////////////////
       
   434 
       
   435     StartCleanup();
       
   436     
       
   437     // hang up the active call
       
   438 	TCoreEtelRequestStatus<RCall> hangUpStatus (call1,&RCall::HangUpCancel);	
       
   439 	CleanupStack::PushL(hangUpStatus);
       
   440 	call1.HangUp(hangUpStatus);
       
   441 	WaitForRequestWithTimeOut(hangUpStatus, ETimeMedium);	
       
   442 	
       
   443 	// Pop 
       
   444 	// notifyStatusChangeStatus
       
   445 	// notifyMobileLineChangeStatus
       
   446 	// dialStatus
       
   447 	// hangUpStatus
       
   448 	CleanupStack::PopAndDestroy(4,&notifyStatusChangeStatus);
       
   449 	
       
   450 	return TestStepResult();
       
   451 	}
       
   452 
       
   453 TPtrC CCTSYIntegrationTestCallControl0002::GetTestStepName()
       
   454 /**
       
   455  * @return The test step name.
       
   456  */
       
   457 	{
       
   458 	return 	_L("CCTSYIntegrationTestCallControl0002");
       
   459 	}
       
   460 
       
   461 
       
   462 
       
   463 CCTSYIntegrationTestCallControl0003::CCTSYIntegrationTestCallControl0003(CEtelSessionMgr& aEtelSessionMgr)
       
   464 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
   465 /**
       
   466  * Constructor.
       
   467  */
       
   468 	{
       
   469 	SetTestStepName(CCTSYIntegrationTestCallControl0003::GetTestStepName());
       
   470 	}
       
   471 
       
   472 CCTSYIntegrationTestCallControl0003::~CCTSYIntegrationTestCallControl0003()
       
   473 /**
       
   474  * Destructor.
       
   475  */
       
   476 	{
       
   477 	}
       
   478 
       
   479 TVerdict CCTSYIntegrationTestCallControl0003::doTestStepL()
       
   480 /**
       
   481  * @SYMTestCaseID BA-CTSY-INT-CCON-0003
       
   482  * @SYMFssID BA/CTSY/CCON-0003
       
   483  * @SYMTestCaseDesc Make an outgoing voice call that connects
       
   484  * @SYMTestPriority High
       
   485  * @SYMTestActions RCall::GetInfo, RCall::GetStatus, RCall::NotifyCapsChange, RCall::NotifyStatusChange, RMobileCall::GetMobileCallCaps, RMobileCall::GetMobileCallInfo, RMobileCall::GetMobileCallStatus, RMobileCall::NotifyMobileCallCapsChange, RMobileCall::NotifyMobileCallStatusChange
       
   486  * @SYMTestExpectedResults Pass - Mo call connects.  Call status updates correctly.
       
   487  * @SYMTestType CIT
       
   488  * @SYMTestCaseDependencies live/automatic
       
   489  *
       
   490  * Reason for test: Verify change in call state is reflected in RCall and RMobileCall.
       
   491  *
       
   492  * @return - TVerdict code
       
   493  */
       
   494 	{
       
   495 
       
   496 	////////////////////////////////////////////////////////////////
       
   497 	// SET UP
       
   498 	////////////////////////////////////////////////////////////////
       
   499 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
   500 	
       
   501 	// Check phone supports KCapsVoice
       
   502 	// Get Voice line 1 
       
   503 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
   504 
       
   505 	// Get call 1 
       
   506 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
   507 
       
   508 	RLine::TCaps lineCaps; 
       
   509 	CHECK_EQUALS_L(voiceLine.GetCaps(lineCaps), KErrNone,  
       
   510 			_L("RMobileLine::GetCaps returned an error"));
       
   511 	CHECK_BITS_SET_L(lineCaps.iFlags, RLine::KCapsVoice, KNoUnwantedBits,  
       
   512 			_L("RLine::GetCaps returned wrong caps"));
       
   513 
       
   514 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
       
   515 	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
   516 
       
   517 	////////////////////////////////////////////////////////////////
       
   518 	// SET UP END
       
   519 	////////////////////////////////////////////////////////////////
       
   520 	
       
   521 	StartTest();
       
   522 	
       
   523 	////////////////////////////////////////////////////////////////
       
   524 	// TEST START
       
   525 	////////////////////////////////////////////////////////////////
       
   526 	
       
   527 	
       
   528 	// ===  Check call caps ===
       
   529 
       
   530 	// Check RCall::GetCaps supports KCapsDial | KCapsVoice.
       
   531 	RCall::TCaps callCaps;
       
   532 	TUint32 wantedCaps = RCall::KCapsDial | RCall::KCapsVoice;
       
   533 	ASSERT_EQUALS(call1.GetCaps(callCaps),KErrNone,  
       
   534 			_L("RCall::GetCaps returned an error"));
       
   535 	ASSERT_BITS_SET(callCaps.iFlags, wantedCaps, KNoUnwantedBits,  
       
   536 			_L("RCall::GetCaps returned wrong caps"));
       
   537 
       
   538 	// Check RMobileCall::GetMobileCallCaps returns iCallControlCaps in set of KCapsVoice | KCapsDial.
       
   539 	// Check RMobileCall::GetMobileCallCaps includes iCallEventCaps in set of 0.
       
   540 	TUint32 wantedCallControlCaps = RCall::KCapsDial | RCall::KCapsVoice;
       
   541 	TUint32 wantedCallEventCaps = 0;
       
   542 	RMobileCall::TMobileCallCapsV1 mobileCallCaps;
       
   543 	RMobileCall::TMobileCallCapsV1Pckg capsPckg(mobileCallCaps);
       
   544 	ASSERT_EQUALS(call1.GetMobileCallCaps(capsPckg), KErrNone,   
       
   545 			_L("RMobileCall::GetMobileCallCaps returned an error"));
       
   546 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedCallControlCaps, KNoUnwantedBits,   
       
   547 			_L("RMobileCall::GetMobileCallCaps returned wrong caps"));
       
   548 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedCallEventCaps, KNoUnwantedBits,   
       
   549 			_L("RMobileCall::GetMobileCallCaps returned wrong caps"));
       
   550 
       
   551 	// ===  Check call status ===
       
   552 
       
   553 	// Check RCall::GetStatus returns EStatusIdle.
       
   554 	RCall::TStatus callStatus;
       
   555 	ASSERT_EQUALS(call1.GetStatus(callStatus), KErrNone,  
       
   556 			_L("RCall::GetStatus returned an Error"));
       
   557 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle,  
       
   558 			_L("RCall::GetStatus did not return EStatusIdle"));
       
   559 	
       
   560 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
   561 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
   562 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,    
       
   563 			_L("RMobileCall::GetMobileCallStatus returned an Error"));
       
   564 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle,    
       
   565 			_L("RMobileCall::GetMobileCallStatus did not set the status to EStatusIdle"));
       
   566 	
       
   567 	// ===  Check call info ===
       
   568 
       
   569 	// Check RCall::GetInfo returns valid call name.
       
   570 	// Check RCall::GetInfo returns valid voice line name.
       
   571 	// Check RCall::GetInfo returns call status of EStatusIdle.
       
   572 	// Check RCall::GetInfo returns call duration of 0.
       
   573 	RCall::TCallInfo callInfo;
       
   574 	ASSERT_EQUALS(call1.GetInfo(callInfo), KErrNone,  
       
   575 			_L("RCall::GetInfo returned an error"));
       
   576 	ASSERT_TRUE(callInfo.iCallName.Length() >0,  
       
   577 			_L("RCall::GetInfo returned an invalid  name"));
       
   578 	ASSERT_TRUE(callInfo.iLineName.Length() >0,  
       
   579 			_L("RCall::GetInfo returned an invalid  Line name"));
       
   580 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusIdle,    
       
   581 			_L("RCall::GetInfo wrong iStatus, should be EStatusIdle"));
       
   582 	ASSERT_EQUALS(callInfo.iDuration.Int(), 0,    
       
   583 			_L("RCall::GetInfo wrong iDuration, should be 0"));
       
   584 
       
   585 	// Check RMobileCall::GetMobileCallInfo returns iValid with correct flags for returned parameters set.
       
   586 	// Check RMobileCall::GetMobileCallInfo returns valid call name.
       
   587 	// Check RMobileCall::GetMobileCallInfo returns valid line name.
       
   588 	RMobileCall::TMobileCallInfoV1 mobileCallInfo;
       
   589 	RMobileCall::TMobileCallInfoV1Pckg callInfoPckg(mobileCallInfo);
       
   590 	RMobileCall::TMobileCallInfoV1 validCallInfo;
       
   591 	validCallInfo.iValid = RMobileCall::KCallStartTime;
       
   592 	ASSERT_EQUALS(call1.GetMobileCallInfo(callInfoPckg), KErrNone,    
       
   593 			_L("RMobileCall::GetMobileCallInfo returned an error"));
       
   594 	ASSERT_BITS_SET(mobileCallInfo.iValid, validCallInfo.iValid,KNoUnwantedBits,    
       
   595 			_L("RMobileCall::GetMobileCallInfo returned unexpected flags in iValid"));
       
   596 	ASSERT_TRUE(mobileCallInfo.iCallName.Length() >0,    
       
   597 			_L("RMobileCall::GetMobileCallInfo returned an invalid callName"));
       
   598 	ASSERT_TRUE(mobileCallInfo.iLineName.Length() >0,    
       
   599 			_L("RMobileCall::GetMobileCallInfo returned an invalid line name"));
       
   600 
       
   601 	// post notifier for RCall::NotifyCapsChange
       
   602 	TCoreEtelRequestStatus<RCall> notifyCapsChangeStatus (call1,&RCall::NotifyCapsChangeCancel);	
       
   603 	CleanupStack::PushL(notifyCapsChangeStatus);
       
   604 	call1.NotifyCapsChange(notifyCapsChangeStatus,callCaps);
       
   605 	
       
   606 	// post notifier for RMobileCall::NotifyMobileCallCapsChange
       
   607 	TExtEtelRequestStatus notifyMobileCallCapsChangeStatus(call1, EMobileCallNotifyMobileCallCapsChange);
       
   608 	CleanupStack::PushL(notifyMobileCallCapsChangeStatus);
       
   609 	call1.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus,capsPckg);
       
   610 
       
   611 	// post notifier for RCall::NotifyStatusChange
       
   612 	TCoreEtelRequestStatus<RCall> notifyStatusChangeStatus (call1,&RCall::NotifyStatusChangeCancel);
       
   613 	CleanupStack::PushL(notifyStatusChangeStatus);
       
   614 	call1.NotifyStatusChange(notifyStatusChangeStatus,callStatus);
       
   615 	
       
   616 	// post notifier for RMobileCall::NotifyMobileCallStatusChange
       
   617 	TExtEtelRequestStatus notifyMobileCallStatusChangeStatus(call1, EMobileCallNotifyMobileCallStatusChange);
       
   618 	CleanupStack::PushL(notifyMobileCallStatusChangeStatus);
       
   619 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallStatus);
       
   620 
       
   621 	// Dial a voice number. 
       
   622 	TPtrC number; 
       
   623 	ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number) != EFalse,			  
       
   624 			_L("CTestStep::GetStringFromConfig did not complete as expected"));
       
   625 	TCoreEtelRequestStatus<RCall> dialStatus(call1, &RCall::DialCancel);
       
   626 	CleanupStack::PushL(dialStatus);
       
   627 	call1.Dial(dialStatus, number); 
       
   628 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeMedium), KErrNone, 
       
   629 			_L("RCall::Dial timed-out"));
       
   630 	ASSERT_EQUALS(dialStatus.Int(), KErrNone,  
       
   631 			_L("RCall::Dial returned with an error"));
       
   632 		
       
   633 	// ===  Check call caps ===
       
   634 
       
   635 	// Check RCall::NotifyCapsChange completes with caps in set of KCapsVoice | KCapsHangUp.
       
   636 	RCall::TCaps wantedCaps2, unwantedCaps2;
       
   637 	wantedCaps2.iFlags = RCall::KCapsVoice | RCall::KCapsHangUp;
       
   638 	unwantedCaps2.iFlags = 0;
       
   639 	const TInt wantedStatus = KErrNone;
       
   640 	iCallControlTestHelper.WaitForCallNotifyCapsChange(call1, 
       
   641 													   notifyCapsChangeStatus,
       
   642 													   callCaps,
       
   643 													   wantedCaps2,
       
   644 													   unwantedCaps2,
       
   645 													   wantedStatus);
       
   646 													   
       
   647 	// Check RCall::GetCaps supports KCapsHangUp | KCapsVoice.
       
   648 	wantedCaps = RCall::KCapsHangUp | RCall::KCapsVoice;
       
   649 	ASSERT_EQUALS(call1.GetCaps(callCaps), KErrNone,  
       
   650 			_L("RCall::GetCaps returned an Error"));
       
   651 	ASSERT_BITS_SET(callCaps.iFlags, wantedCaps, KNoUnwantedBits,     
       
   652 			_L("RCall::GetCaps returned unexpected Caps"));
       
   653 
       
   654 	
       
   655 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of 
       
   656 	//			KCapsVoice | KCapsHold | KCapsHangUp | KCapsTransfer.
       
   657 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallEventCaps in set of 
       
   658 	//			KCapsLocalHold | KCapsLocalTransfer | KCapsRemoteHold | KCapsRemoteTerminate | 
       
   659 	//			KCapsRemoteConferenceCreate.
       
   660 	RMobileCall::TMobileCallCapsV1 wantedMobileCaps;
       
   661 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | 
       
   662 										RMobileCall::KCapsHold | 
       
   663 										RMobileCall::KCapsHangUp;
       
   664 										
       
   665 	wantedMobileCaps.iCallEventCaps = RMobileCall::KCapsLocalHold | 
       
   666 									  RMobileCall::KCapsLocalTransfer | 
       
   667 									  RMobileCall::KCapsRemoteHold | 
       
   668 									  RMobileCall::KCapsRemoteTerminate | 
       
   669 									  RMobileCall::KCapsRemoteConferenceCreate;
       
   670 									  
       
   671 	TCmpRMobileCallTMobileCallCaps mobileCapsComp(wantedMobileCaps,mobileCallCaps, *this);
       
   672 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(call1, 
       
   673 																	   notifyMobileCallCapsChangeStatus,
       
   674 																	   mobileCapsComp,
       
   675 																	   wantedStatus);
       
   676 												
       
   677 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of 
       
   678 	//			KCapsVoice |KCapsHold | KCapsHangUp | KCapsTransfer.
       
   679 	// Check RMobileCall::GetMobileCallCaps includes iCallEventCaps in set of 
       
   680 	//			KCapsLocalHold | KCapsLocalTransfer | KCapsRemoteHold | KCapsRemoteTerminate | 
       
   681 	//			KCapsRemoteConferenceCreate.
       
   682 	ASSERT_EQUALS(call1.GetMobileCallCaps(capsPckg), KErrNone, 
       
   683 			_L("RMobileCall::GetMobileCallCaps returned an error"));
       
   684 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | 
       
   685 											   RMobileCall::KCapsHold | 
       
   686 											   RMobileCall::KCapsHangUp;
       
   687 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps,KNoUnwantedBits,
       
   688 			 _L("RMobileCall::GetMobileCallCaps returned unexpected iCallControlCaps"));
       
   689 	
       
   690 	wantedMobileCaps.iCallEventCaps = RMobileCall::KCapsLocalHold | 
       
   691 											 RMobileCall::KCapsLocalTransfer |
       
   692 											 RMobileCall::KCapsRemoteHold | 
       
   693 											 RMobileCall::KCapsRemoteTerminate | 
       
   694 											 RMobileCall::KCapsRemoteConferenceCreate;
       
   695 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedMobileCaps.iCallEventCaps,KNoUnwantedBits,
       
   696 			 _L("RMobileCall::GetMobileCallCaps returned unexpected iCallEventCaps"));										   
       
   697 
       
   698 
       
   699 	// ===  Check call status ===
       
   700 
       
   701 	// Check RCall::NotifyStatusChange completes with EStatusDialling -> 
       
   702 	RCall::TStatus expectedCallStatus = RCall::EStatusDialling;
       
   703 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
   704 														 notifyStatusChangeStatus,
       
   705 														 callStatus,
       
   706 														 expectedCallStatus,
       
   707 														 wantedStatus);
       
   708 
       
   709 	// Check RCall::NotifyStatusChange completes with EStatusConnecting -> 	
       
   710 	expectedCallStatus = RCall::EStatusConnecting;
       
   711 	call1.NotifyStatusChange(notifyStatusChangeStatus,callStatus);
       
   712 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
   713 													 notifyStatusChangeStatus,
       
   714 													 callStatus,
       
   715 													 expectedCallStatus,
       
   716 													 wantedStatus);
       
   717 
       
   718 	// Check RCall::NotifyStatusChange completes with EStatusConnected.
       
   719 	expectedCallStatus = RCall::EStatusConnected;
       
   720 	call1.NotifyStatusChange(notifyStatusChangeStatus,callStatus);
       
   721 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
   722 													 notifyStatusChangeStatus,
       
   723 													 callStatus,
       
   724 													 expectedCallStatus,
       
   725 													 wantedStatus);	
       
   726 													 												 
       
   727 	// Check RCall::GetStatus returns EStatusConnected.
       
   728 	ASSERT_EQUALS(call1.GetStatus(callStatus),KErrNone,  
       
   729 			_L("RCall::GetStatus returned an error"));
       
   730 	ASSERT_EQUALS(callStatus, RCall::EStatusConnected, 
       
   731 			_L("RCall::GetStatus returned an unexpected call status"));
       
   732 	
       
   733 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDialling ->  
       
   734 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusDialling;
       
   735 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
   736 															notifyMobileCallStatusChangeStatus,
       
   737 															mobileCallStatus,
       
   738 															expectedMobileCallStatus,
       
   739 															wantedStatus);
       
   740 
       
   741 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusConnecting ->															
       
   742 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallStatus);
       
   743 	expectedMobileCallStatus = RMobileCall::EStatusConnecting;
       
   744 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
   745 															notifyMobileCallStatusChangeStatus,
       
   746 															mobileCallStatus,
       
   747 															expectedMobileCallStatus,
       
   748 															wantedStatus);
       
   749 
       
   750 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusConnected.															
       
   751 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallStatus);
       
   752 	expectedMobileCallStatus = RMobileCall::EStatusConnected;															
       
   753 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
   754 															notifyMobileCallStatusChangeStatus,
       
   755 															mobileCallStatus,
       
   756 															expectedMobileCallStatus,
       
   757 															wantedStatus);
       
   758 																														
       
   759 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusConnected.
       
   760 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone, 
       
   761 			_L("RMobileCall::GetMobileStatus returned an error"));
       
   762 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected, 
       
   763 			_L("RMobileCall::GetMobileStatus did not return a status EStatusConnected"));
       
   764 
       
   765 	
       
   766 	// ===  Check call info ===
       
   767 
       
   768 	// Check RCall::GetInfo returns valid call name.
       
   769 	// Check RCall::GetInfo returns valid voice line name.
       
   770 	// Check RCall::GetInfo returns call status of EStatusConnected.
       
   771 	// Check RCall::GetInfo returns call duration of > 0.
       
   772 	User::After(KOneSecond*1);
       
   773 	ASSERT_EQUALS(call1.GetInfo(callInfo), KErrNone,  
       
   774 			_L("RCall::GetInfo returned an error"));
       
   775 	ASSERT_TRUE(callInfo.iCallName.Length() >0,  
       
   776 			_L("RCall::GetInfo returned an invalid  name"));
       
   777 	ASSERT_TRUE(callInfo.iLineName.Length() >0,  
       
   778 			_L("RCall::GetInfo returned an invalid  Line name"));
       
   779 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusConnected, 
       
   780 			_L("RCall::GetInfo wrong iStatus, should be EStatusConnected"));
       
   781 	ASSERT_TRUE(callInfo.iDuration.Int() > 0,  
       
   782 			_L("RCall::GetInfo wrong iDuration, should be >0"));
       
   783 
       
   784 	// Check RMobileCall::GetMobileCallInfo returns iValid > 0.
       
   785 	// Check RMobileCall::GetMobileCallInfo returns data for attributes marked as valid in iValid.
       
   786 	// Check RMobileCall::GetMobileCallInfo returns valid line name.
       
   787 	ASSERT_EQUALS(call1.GetMobileCallInfo(callInfoPckg), KErrNone, 
       
   788 			_L("RMobileCall::GetMobileCallInfo returned an error"));
       
   789 	ASSERT_TRUE(mobileCallInfo.iLineName.Length() >0, 
       
   790 			_L("RMobileCall::GetMobileCallInfo returned an invalid line name"));
       
   791 	ASSERT_TRUE(mobileCallInfo.iValid > 0, 
       
   792 			_L("RMobileCall::GetMobileCallInfo returned unexpected flags in iValid"));
       
   793 
       
   794 	iCallControlTestHelper.CheckForValidCallInfo(mobileCallInfo, number);
       
   795 	
       
   796 	
       
   797 	////////////////////////////////////////////////////////////////
       
   798 	// TEST END
       
   799 	////////////////////////////////////////////////////////////////
       
   800 
       
   801     StartCleanup();
       
   802     
       
   803     // hang up the active call
       
   804 	TCoreEtelRequestStatus<RCall> hangUpStatus (call1,&RCall::HangUpCancel);
       
   805 	CleanupStack::PushL(hangUpStatus);		
       
   806 	call1.HangUp(hangUpStatus);
       
   807 	WaitForRequestWithTimeOut(hangUpStatus, ETimeMedium);	
       
   808 	
       
   809 	// Pop
       
   810 	// notifyCapsChangeStatus
       
   811 	// notifyMobileCallCapsChangeStatus
       
   812 	// notifyStatusChangeStatus
       
   813 	// notifyMobileCallStatusChangeStatus
       
   814 	// dialStatus
       
   815 	// hangUpStatus
       
   816 	
       
   817 	CleanupStack::PopAndDestroy(6,&notifyCapsChangeStatus);
       
   818 	
       
   819 	return TestStepResult();
       
   820 	}
       
   821 
       
   822 TPtrC CCTSYIntegrationTestCallControl0003::GetTestStepName()
       
   823 /**
       
   824  * @return The test step name.
       
   825  */
       
   826 	{
       
   827 	return  _L("CCTSYIntegrationTestCallControl0003");
       
   828 	}
       
   829 
       
   830 
       
   831 
       
   832 CCTSYIntegrationTestCallControl0004::CCTSYIntegrationTestCallControl0004(CEtelSessionMgr& aEtelSessionMgr)
       
   833 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
   834 /**
       
   835  * Constructor.
       
   836  */
       
   837 	{
       
   838 	SetTestStepName(CCTSYIntegrationTestCallControl0004::GetTestStepName());
       
   839 	}
       
   840 
       
   841 CCTSYIntegrationTestCallControl0004::~CCTSYIntegrationTestCallControl0004()
       
   842 /**
       
   843  * Destructor.
       
   844  */
       
   845 	{
       
   846 	}
       
   847 
       
   848 TVerdict CCTSYIntegrationTestCallControl0004::doTestStepL()
       
   849 /**
       
   850  * @SYMTestCaseID BA-CTSY-INT-CCON-0004
       
   851  * @SYMFssID BA/CTSY/CCON-0004
       
   852  * @SYMTestCaseDesc Dial a call which remote party rejects.
       
   853  * @SYMTestPriority High
       
   854  * @SYMTestActions RLine::NotifyStatusChange, RMobileLine::NotifyMobileLineStatusChange, RMobileCall::GetMobileCallStatus, RCall::NotifyStatusChange, RMobileCall::NotifyMobileCallStatusChange, RLine::GetStatus, RMobileLine::GetMobileLineStatus, RCall::GetStatus
       
   855  * @SYMTestExpectedResults Pass - Dial completes with an error.
       
   856  * @SYMTestType CIT
       
   857  * @SYMTestCaseDependencies live/rps
       
   858  *
       
   859  * Reason for test: Verify call and line status after call is rejected.
       
   860  *
       
   861  * @return - TVerdict code
       
   862  */
       
   863 	{
       
   864 
       
   865 	////////////////////////////////////////////////////////////////
       
   866 	// SET UP
       
   867 	////////////////////////////////////////////////////////////////
       
   868 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
   869 	
       
   870 	// Check phone supports KCapsVoice
       
   871 	// Get Voice line 1 
       
   872 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
   873 
       
   874 	// Get call 1 
       
   875 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
   876 
       
   877 	RLine::TCaps lineCaps; 
       
   878 	CHECK_EQUALS_L(voiceLine.GetCaps(lineCaps), KErrNone,  
       
   879 			_L("RMobileLine::GetCaps returned an error"));
       
   880 	CHECK_BITS_SET_L(lineCaps.iFlags, RLine::KCapsVoice, KNoUnwantedBits,  
       
   881 			_L("RLine::GetCaps returned wrong caps"));
       
   882 
       
   883 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
       
   884 	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
   885 
       
   886 	////////////////////////////////////////////////////////////////
       
   887 	// SET UP END
       
   888 	////////////////////////////////////////////////////////////////
       
   889 	
       
   890 	StartTest();
       
   891 	
       
   892 	////////////////////////////////////////////////////////////////
       
   893 	// TEST START
       
   894 	////////////////////////////////////////////////////////////////
       
   895 	
       
   896 	// post a notifier for RLine::NotifyStatusChange
       
   897 	RCall::TStatus lineStatus;
       
   898 	TCoreEtelRequestStatus<RLine> notifyStatusChangeStatus (voiceLine,&RLine::NotifyStatusChangeCancel);
       
   899 	CleanupStack::PushL(notifyStatusChangeStatus);
       
   900 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
   901 
       
   902 	// post a notifier for RMobileLine::NotifyMobileLineStatusChange
       
   903 	RMobileCall::TMobileCallStatus mobileLineStatus;
       
   904 	TExtEtelRequestStatus notifyMobileLineChangeStatus(voiceLine, EMobileLineNotifyMobileLineStatusChange);
       
   905 	CleanupStack::PushL(notifyMobileLineChangeStatus);
       
   906 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
   907 
       
   908 	// post notifier for RCall::NotifyStatusChange
       
   909 	RCall::TStatus callStatus;
       
   910 	TCoreEtelRequestStatus<RCall> notifyCallStatusChangeStatus (call1,&RCall::NotifyStatusChangeCancel);
       
   911 	CleanupStack::PushL(notifyCallStatusChangeStatus);
       
   912 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
   913 
       
   914 	// post a notifier for RMobileCall::NotifyMobileCallStatusChange
       
   915 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
   916 	TExtEtelRequestStatus notifyMobileCallChangeStatus(call1, EMobileCallNotifyMobileCallStatusChange);
       
   917 	CleanupStack::PushL(notifyMobileCallChangeStatus);
       
   918 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
   919 
       
   920 	// Dial RPS which will reject the call. 
       
   921 	TPtrC number;
       
   922 	TCoreEtelRequestStatus<RCall> dialStatus(call1, &RCall::DialCancel);
       
   923 	CleanupStack::PushL(dialStatus);		
       
   924 	RPSRejectNextCallL(EVoiceLine);
       
   925  	GetRPSNumber(EVoiceLine, number); // Voicemail should be deactivated for this number
       
   926 	call1.Dial(dialStatus, number);
       
   927 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeVeryLong), KErrNone,  
       
   928 			_L("RCall::Dial timed-out"));
       
   929 	ASSERT_TRUE(dialStatus.Int() != KErrNone,  
       
   930 			_L("RCall::Dial did not return an error"));
       
   931 
       
   932 	// ===  Check line status ===
       
   933 
       
   934 	// Check RLine::NotifyStatusChange completes with EStatusDialling -> EStatusHangingUp -> EStatusIdle
       
   935 	RCall::TStatus expectedLineStatus = RCall::EStatusDialling;
       
   936 	TInt expectedStatus = KErrNone;	
       
   937 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
   938 														 notifyStatusChangeStatus,
       
   939 														 lineStatus,
       
   940 														 expectedLineStatus,
       
   941 														 expectedStatus);
       
   942 	
       
   943 
       
   944 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
   945 	expectedLineStatus = RCall::EStatusHangingUp;
       
   946 	ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10065);
       
   947 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
   948 														 notifyStatusChangeStatus,
       
   949 														 lineStatus,
       
   950 														 expectedLineStatus,
       
   951 														 expectedStatus);	
       
   952 	 
       
   953 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
   954 	expectedLineStatus = RCall::EStatusIdle;
       
   955 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
   956 														 notifyStatusChangeStatus,
       
   957 														 lineStatus,
       
   958 														 expectedLineStatus,
       
   959 														 expectedStatus);	
       
   960 														 													 
       
   961 	// Check RLine::GetStatus returns EStatusIdle
       
   962 	ASSERT_EQUALS(voiceLine.GetStatus(lineStatus), KErrNone,  
       
   963 			_L("RLine::GetStatus returned an error"));
       
   964 	ASSERT_EQUALS(lineStatus, RCall::EStatusIdle,  
       
   965 			_L("RLine::GetStatus did not return EStatusIdle as expected"));
       
   966 	
       
   967 
       
   968 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusDisconnecting -> EStatusIdle
       
   969 	RMobileCall::TMobileCallStatus expectedMobileLineStatus = RMobileCall::EStatusDisconnecting;
       
   970 	ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10065);
       
   971 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
   972 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
   973 																		notifyMobileLineChangeStatus,
       
   974 																		mobileLineStatus,
       
   975 																		expectedMobileLineStatus,
       
   976 																		expectedStatus);
       
   977 																		
       
   978 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusIdle 																		
       
   979 	expectedMobileLineStatus = RMobileCall::EStatusIdle;
       
   980 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
   981 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
   982 																		notifyMobileLineChangeStatus,
       
   983 																		mobileLineStatus,
       
   984 																		expectedMobileLineStatus,
       
   985 																		expectedStatus);																
       
   986 	// ===  Check call status ===
       
   987 
       
   988 	// Check RCall::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle.
       
   989 	RCall::TStatus expectedCallStatus = RCall::EStatusHangingUp;
       
   990 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
   991 														 notifyCallStatusChangeStatus,
       
   992 														 callStatus,
       
   993 														 expectedCallStatus,
       
   994 														 expectedStatus);
       
   995 														 
       
   996 	expectedCallStatus = RCall::EStatusIdle;
       
   997 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
   998 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
   999 														 notifyCallStatusChangeStatus,
       
  1000 														 callStatus,
       
  1001 														 expectedCallStatus,
       
  1002 														 expectedStatus);
       
  1003 	// Check RCall::GetStatus returns EStatusIdle.
       
  1004 	ASSERT_EQUALS(call1.GetStatus(callStatus), KErrNone,  
       
  1005 			_L("RCall::GetStatus returned an Error"));
       
  1006 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle,  
       
  1007 			_L("RCall::GetStatus did not return EStatusIdle"));
       
  1008 	
       
  1009 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDisconnecting -> EStatusIdle.
       
  1010 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusDisconnecting;
       
  1011 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  1012 																		notifyMobileCallChangeStatus,
       
  1013 																		mobileCallStatus,
       
  1014 																		expectedMobileCallStatus,
       
  1015 																		expectedStatus);
       
  1016 
       
  1017 	expectedMobileCallStatus = RMobileCall::EStatusIdle;
       
  1018 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  1019 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  1020 																		notifyMobileCallChangeStatus,
       
  1021 																		mobileCallStatus,
       
  1022 																		expectedMobileCallStatus,
       
  1023 																		expectedStatus);	
       
  1024 
       
  1025 
       
  1026 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
  1027 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  1028 			_L("RMobileCall::GetMobileCallStatus returned an error"));
       
  1029 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle,  
       
  1030 			_L("RMobileCall::GetMobileCallStatus did not return EStatusIdle"));
       
  1031 	
       
  1032 	////////////////////////////////////////////////////////////////
       
  1033 	// TEST END
       
  1034 	////////////////////////////////////////////////////////////////
       
  1035 
       
  1036     StartCleanup();
       
  1037     
       
  1038     // hang up the active call
       
  1039 	TCoreEtelRequestStatus<RCall> hangUpStatus (call1,&RCall::HangUpCancel);	
       
  1040 	CleanupStack::PushL(hangUpStatus);
       
  1041 	call1.HangUp(hangUpStatus);
       
  1042 	WaitForRequestWithTimeOut(hangUpStatus, ETimeMedium);	
       
  1043     	
       
  1044 	// Pop
       
  1045 	// notifyStatusChangeStatus
       
  1046 	// notifyMobileLineChangeStatus
       
  1047 	// notifyCallStatusChangeStatus
       
  1048 	// notifyMobileCallChangeStatus
       
  1049 	// dialStatus
       
  1050 	// hangUpStatus
       
  1051 	CleanupStack::PopAndDestroy(6,&notifyStatusChangeStatus);
       
  1052 	
       
  1053 	return TestStepResult();
       
  1054 	}
       
  1055 
       
  1056 TPtrC CCTSYIntegrationTestCallControl0004::GetTestStepName()
       
  1057 /**
       
  1058  * @return The test step name.
       
  1059  */
       
  1060 	{
       
  1061 	return  _L("CCTSYIntegrationTestCallControl0004");
       
  1062 	}
       
  1063 
       
  1064 
       
  1065 
       
  1066 CCTSYIntegrationTestCallControl0005::CCTSYIntegrationTestCallControl0005(CEtelSessionMgr& aEtelSessionMgr)
       
  1067 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
  1068 /**
       
  1069  * Constructor.
       
  1070  */
       
  1071 	{
       
  1072 	SetTestStepName(CCTSYIntegrationTestCallControl0005::GetTestStepName());
       
  1073 	}
       
  1074 
       
  1075 CCTSYIntegrationTestCallControl0005::~CCTSYIntegrationTestCallControl0005()
       
  1076 /**
       
  1077  * Destructor.
       
  1078  */
       
  1079 	{
       
  1080 	}
       
  1081 
       
  1082 TVerdict CCTSYIntegrationTestCallControl0005::doTestStepL()
       
  1083 /**
       
  1084  * @SYMTestCaseID BA-CTSY-INT-CCON-0005
       
  1085  * @SYMFssID BA/CTSY/CCON-0005
       
  1086  * @SYMTestCaseDesc Dial. Remote end doesn't pick up
       
  1087  * @SYMTestPriority High
       
  1088  * @SYMTestActions This requires a mobile SIM with voicemail deactivated. This test will only time out after 100seconds.
       
  1089  * @SYMTestExpectedResults Pass - Error returned.
       
  1090  * @SYMTestType CIT
       
  1091  * @SYMTestCaseDependencies live/manual
       
  1092  *
       
  1093  * Reason for test: Verify error is returned on attempt to dial.
       
  1094  *
       
  1095  * @return - TVerdict code
       
  1096  */
       
  1097 	{
       
  1098 
       
  1099 	////////////////////////////////////////////////////////////////
       
  1100 	// SET UP
       
  1101 	////////////////////////////////////////////////////////////////
       
  1102 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
  1103 	
       
  1104 	// Get Voice line 1 
       
  1105 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
  1106 
       
  1107 	// Get call 1 
       
  1108 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
  1109 	
       
  1110 	// Check phone supports KCapsVoice.
       
  1111 	RLine::TCaps lineCaps; 
       
  1112 	CHECK_EQUALS_L(voiceLine.GetCaps(lineCaps), KErrNone,  
       
  1113 			_L("RMobileLine::GetCaps returned an error"));
       
  1114 	CHECK_BITS_SET_L(lineCaps.iFlags, RLine::KCapsVoice, KNoUnwantedBits,  
       
  1115 			_L("RLine::GetCaps returned wrong caps"));
       
  1116 
       
  1117 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
       
  1118 	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
  1119 
       
  1120 	////////////////////////////////////////////////////////////////
       
  1121 	// SET UP END
       
  1122 	////////////////////////////////////////////////////////////////
       
  1123 	
       
  1124 	StartTest();
       
  1125 	
       
  1126 	////////////////////////////////////////////////////////////////
       
  1127 	// TEST START
       
  1128 	////////////////////////////////////////////////////////////////
       
  1129 	
       
  1130 	
       
  1131 	// Dial a number which will not answer. 	
       
  1132 	TPtrC number;
       
  1133 	GetStringFromConfig(KIniVoiceNumSection,KIniVoiceNumDoesNotConnect,number);
       
  1134 	TCoreEtelRequestStatus<RMobileCall> dialStatus(call1, &RCall::DialCancel);
       
  1135 	CleanupStack::PushL(dialStatus);
       
  1136 	call1.Dial(dialStatus, number);
       
  1137 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeVeryLong), KErrNone, 
       
  1138                   _L("RCall::Dial timed-out"));	
       
  1139     // Check Dial request completes with an error
       
  1140 	ASSERT_TRUE(dialStatus.Int() != KErrNone,			 
       
  1141                 _L("RCall::Dial did not return KErrNone"));
       
  1142 	
       
  1143 	////////////////////////////////////////////////////////////////
       
  1144 	// TEST END
       
  1145 	////////////////////////////////////////////////////////////////
       
  1146 
       
  1147     StartCleanup();
       
  1148 	    
       
  1149 	// hang up the active call
       
  1150 	TCoreEtelRequestStatus<RCall> hangUpStatus (call1,&RCall::HangUpCancel);	
       
  1151 	CleanupStack::PushL(hangUpStatus);
       
  1152 	call1.HangUp(hangUpStatus);
       
  1153 	WaitForRequestWithTimeOut(hangUpStatus, ETimeMedium);	
       
  1154 
       
  1155 	//Pop	
       
  1156 	// dialStatus
       
  1157 	// hangUpStatus
       
  1158 	CleanupStack::PopAndDestroy(2,&dialStatus);
       
  1159 	
       
  1160 	return TestStepResult();
       
  1161 	}
       
  1162 
       
  1163 TPtrC CCTSYIntegrationTestCallControl0005::GetTestStepName()
       
  1164 /**
       
  1165  * @return The test step name.
       
  1166  */
       
  1167 	{
       
  1168 	return  _L("CCTSYIntegrationTestCallControl0005");
       
  1169 	}
       
  1170 
       
  1171 
       
  1172 
       
  1173 CCTSYIntegrationTestCallControl0006::CCTSYIntegrationTestCallControl0006(CEtelSessionMgr& aEtelSessionMgr)
       
  1174 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
  1175 /**
       
  1176  * Constructor.
       
  1177  */
       
  1178 	{
       
  1179 	SetTestStepName(CCTSYIntegrationTestCallControl0006::GetTestStepName());
       
  1180 	}
       
  1181 
       
  1182 CCTSYIntegrationTestCallControl0006::~CCTSYIntegrationTestCallControl0006()
       
  1183 /**
       
  1184  * Destructor.
       
  1185  */
       
  1186 	{
       
  1187 	}
       
  1188 
       
  1189 TVerdict CCTSYIntegrationTestCallControl0006::doTestStepL()
       
  1190 /**
       
  1191  * @SYMTestCaseID BA-CTSY-INT-CCON-0006
       
  1192  * @SYMFssID BA/CTSY/CCON-0006
       
  1193  * @SYMTestCaseDesc Dial when no network is present
       
  1194  * @SYMTestPriority High
       
  1195  * @SYMTestActions RCall::Dial
       
  1196  * @SYMTestExpectedResults Pass - KErrGsmOfflineOpNotAllowed returned.
       
  1197  * @SYMTestType CIT
       
  1198  * @SYMTestCaseDependencies live/manual
       
  1199  *
       
  1200  * Reason for test: Verify error is returned on attempt to dial.
       
  1201  *
       
  1202  * @return - TVerdict code
       
  1203  */
       
  1204 	{
       
  1205 
       
  1206 	////////////////////////////////////////////////////////////////
       
  1207 	// SET UP
       
  1208 	////////////////////////////////////////////////////////////////
       
  1209 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
  1210 	
       
  1211 	// Check phone supports KCapsVoice.
       
  1212 	// Get Voice line 1 
       
  1213 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
  1214 	// Get call 1 
       
  1215 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
  1216 	
       
  1217 	RLine::TCaps lineCaps; 
       
  1218 	CHECK_EQUALS_L(voiceLine.GetCaps(lineCaps), KErrNone,  
       
  1219 			_L("RMobileLine::GetCaps returned an error"));
       
  1220 	CHECK_BITS_SET_L(lineCaps.iFlags, RLine::KCapsVoice, KNoUnwantedBits, 
       
  1221 			_L("RLine::GetCaps returned wrong caps"));
       
  1222 
       
  1223 	////////////////////////////////////////////////////////////////
       
  1224 	// SET UP END
       
  1225 	////////////////////////////////////////////////////////////////
       
  1226 	
       
  1227 	StartTest();
       
  1228 	
       
  1229 	////////////////////////////////////////////////////////////////
       
  1230 	// TEST START
       
  1231 	////////////////////////////////////////////////////////////////
       
  1232 		
       
  1233 	// Remove aerial from phone. 
       
  1234 
       
  1235 	// Check RMobilePhone::GetNetworkRegistrationStatus returns one of ENotRegisteredNoService | ENotRegisteredSearching
       
  1236 	RMobilePhone::TMobilePhoneRegistrationStatus registrationStatus;
       
  1237 	TExtEtelRequestStatus getNWRegistraionStatusStatus(phone,EMobilePhoneGetNetworkRegistrationStatus);
       
  1238 	CleanupStack::PushL(getNWRegistraionStatusStatus);
       
  1239 	phone.GetNetworkRegistrationStatus(getNWRegistraionStatusStatus,registrationStatus);
       
  1240 	ASSERT_EQUALS(WaitForRequestWithTimeOut(getNWRegistraionStatusStatus, ETimeMedium), KErrNone,  
       
  1241 			_L("RMobilePhone::GetNetworkRegistrationStatus timed out"));	
       
  1242 	ASSERT_EQUALS(getNWRegistraionStatusStatus.Int(), KErrNone,  
       
  1243 			_L("RMobilePhone::GetNetworkRegistrationStatus returned an error"));
       
  1244 	ASSERT_TRUE(((registrationStatus == RMobilePhone::ENotRegisteredNoService) || (registrationStatus ==RMobilePhone::ENotRegisteredSearching)),			 
       
  1245 			_L("RMobilePhone::GetNetworkRegistrationStatus did not set the registration status to ENotRegisteredNoService | ENotRegisteredSearching"));
       
  1246 
       
  1247 	// Dial a number. 
       
  1248 	TCoreEtelRequestStatus<RMobileCall> dialStatus(call1, &RCall::DialCancel);
       
  1249 	CleanupStack::PushL(dialStatus);		
       
  1250 	TPtrC number;
       
  1251 	ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number) != EFalse,  
       
  1252 			_L("GetStringFromConfig did not complete as expected"));
       
  1253 	call1.Dial(dialStatus, number);
       
  1254 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeLong), KErrNone,  
       
  1255 			_L("RCall::Dial timed-out"));
       
  1256 
       
  1257 	// Check KErrGsmOfflineOpNotAllowed or KErrGsmNoService is returned.
       
  1258 	ASSERT_TRUE( ((dialStatus.Int() == KErrGsmOfflineOpNotAllowed) || (dialStatus.Int() == KErrGsmNoService) ),  
       
  1259 			_L("RCall::Dial did not return KErrGsmOfflineOpNotAllowed nor KErrGsmNoService"));
       
  1260 
       
  1261 	////////////////////////////////////////////////////////////////
       
  1262 	// TEST END
       
  1263 	////////////////////////////////////////////////////////////////
       
  1264 
       
  1265     StartCleanup();
       
  1266 
       
  1267     // hang up the active call
       
  1268 	TCoreEtelRequestStatus<RCall> hangUpStatus (call1,&RCall::HangUpCancel);	
       
  1269 	CleanupStack::PushL(hangUpStatus);
       
  1270 	call1.HangUp(hangUpStatus);
       
  1271 	WaitForRequestWithTimeOut(hangUpStatus, ETimeMedium);	
       
  1272 		
       
  1273 	// Pop
       
  1274 	// getNWRegistraionStatusStatus
       
  1275 	// dialStatus
       
  1276 	// hangUpStatus
       
  1277 	CleanupStack::PopAndDestroy(3, &getNWRegistraionStatusStatus);
       
  1278 	
       
  1279 	return TestStepResult();
       
  1280 	}
       
  1281 
       
  1282 TPtrC CCTSYIntegrationTestCallControl0006::GetTestStepName()
       
  1283 /**
       
  1284  * @return The test step name.
       
  1285  */
       
  1286 	{
       
  1287 	return  _L("CCTSYIntegrationTestCallControl0006");
       
  1288 	}
       
  1289 
       
  1290 
       
  1291 
       
  1292 CCTSYIntegrationTestCallControl0007::CCTSYIntegrationTestCallControl0007(CEtelSessionMgr& aEtelSessionMgr)
       
  1293 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
  1294 /**
       
  1295  * Constructor.
       
  1296  */
       
  1297 	{
       
  1298 	SetTestStepName(CCTSYIntegrationTestCallControl0007::GetTestStepName());
       
  1299 	}
       
  1300 
       
  1301 CCTSYIntegrationTestCallControl0007::~CCTSYIntegrationTestCallControl0007()
       
  1302 /**
       
  1303  * Destructor.
       
  1304  */
       
  1305 	{
       
  1306 	}
       
  1307 
       
  1308 TVerdict CCTSYIntegrationTestCallControl0007::doTestStepL()
       
  1309 /**
       
  1310  * @SYMTestCaseID BA-CTSY-INT-CCON-0007
       
  1311  * @SYMFssID BA/CTSY/CCON-0007
       
  1312  * @SYMTestCaseDesc Make a voice call to remote party that is engaged.
       
  1313  * @SYMTestPriority High
       
  1314  * @SYMTestActions RMobileLine::NotifyMobileLineStatusChange, RMobileCall::GetMobileCallStatus, RCall::NotifyStatusChange, RMobileCall::NotifyMobileCallStatusChange, RLine::GetStatus, RMobileLine::GetMobileLineStatus, RCall::GetStatus, RCall::Dial
       
  1315  * @SYMTestExpectedResults Pass - Dialling to a busy number fails.
       
  1316  * @SYMTestType CIT
       
  1317  * @SYMTestCaseDependencies live/automatic
       
  1318  *
       
  1319  * Reason for test: Verify dialling fails and line returns to idle.
       
  1320  *
       
  1321  * @return - TVerdict code
       
  1322  */
       
  1323 	{
       
  1324 
       
  1325 	////////////////////////////////////////////////////////////////
       
  1326 	// SET UP
       
  1327 	////////////////////////////////////////////////////////////////
       
  1328 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
  1329 	
       
  1330 	// Get Voice line 1 
       
  1331 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
  1332 	// Get call 1 
       
  1333 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
  1334 
       
  1335 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
       
  1336 	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
  1337 
       
  1338 	////////////////////////////////////////////////////////////////
       
  1339 	// SET UP END
       
  1340 	////////////////////////////////////////////////////////////////
       
  1341 	
       
  1342 	StartTest();
       
  1343 	
       
  1344 	////////////////////////////////////////////////////////////////
       
  1345 	// TEST START
       
  1346 	////////////////////////////////////////////////////////////////
       
  1347 	
       
  1348 	// post notifier for RCall::NotifyStatusChange
       
  1349 	RCall::TStatus callStatus;
       
  1350 	TCoreEtelRequestStatus<RCall> notifyCallStatusChangeStatus (call1,&RCall::NotifyStatusChangeCancel);
       
  1351 	CleanupStack::PushL(notifyCallStatusChangeStatus);
       
  1352 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  1353 
       
  1354 	// post a notifier for RMobileCall::NotifyMobileCallStatusChange
       
  1355 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
  1356 	TExtEtelRequestStatus notifyMobileCallChangeStatus(call1, EMobileCallNotifyMobileCallStatusChange);
       
  1357 	CleanupStack::PushL(notifyMobileCallChangeStatus);
       
  1358 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  1359 
       
  1360 	// post a notifier for RLine::NotifyStatusChange
       
  1361 	RCall::TStatus lineStatus;
       
  1362 	TCoreEtelRequestStatus<RLine> notifyStatusChangeStatus (voiceLine,&RLine::NotifyStatusChangeCancel);
       
  1363 	CleanupStack::PushL(notifyStatusChangeStatus);
       
  1364 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  1365 
       
  1366 	// post a notifier for RMobileLine::NotifyMobileLineStatusChange
       
  1367 	RMobileCall::TMobileCallStatus mobileLineStatus;
       
  1368 	TExtEtelRequestStatus notifyMobileLineChangeStatus(voiceLine, EMobileLineNotifyMobileLineStatusChange);
       
  1369 	CleanupStack::PushL(notifyMobileLineChangeStatus);
       
  1370 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  1371 
       
  1372 	// Set RPS to simulate an engaged remote party. 
       
  1373 	TPtrC number;
       
  1374 	ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number) != EFalse,  
       
  1375 			_L("GetStringFromConfig did not complete as expected"));
       
  1376 	RPSDialNumberL(number,EVoiceLine);
       
  1377 	
       
  1378 	// Dial RPS. 
       
  1379 	TPtrC engagedNumber;
       
  1380 	GetRPSNumber(EVoiceLine,engagedNumber); //this will return KIniVoiceNumber2 if not using RPS, 
       
  1381 											 //This should be the phone which is engaged, if testing manually.
       
  1382 	TCoreEtelRequestStatus<RMobileCall> dialStatus(call1, &RCall::DialCancel);
       
  1383 	CleanupStack::PushL(dialStatus);											 
       
  1384 	call1.Dial(dialStatus, engagedNumber);
       
  1385 
       
  1386 	// ===  Check call status ===
       
  1387 
       
  1388 	// Check RCall::NotifyStatusChange completes with EStatusDialling.
       
  1389 	RCall::TStatus expectedCallStatus = RCall::EStatusDialling;
       
  1390 	const TInt expectedStatus = KErrNone;
       
  1391 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  1392 														 notifyCallStatusChangeStatus,
       
  1393 														 callStatus,
       
  1394 														 expectedCallStatus,
       
  1395 														 expectedStatus);
       
  1396 														 
       
  1397 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDialling.
       
  1398 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusDialling;
       
  1399 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  1400 																		notifyMobileCallChangeStatus,
       
  1401 																		mobileCallStatus,
       
  1402 																		expectedMobileCallStatus,
       
  1403 																		expectedStatus);
       
  1404 
       
  1405 
       
  1406 	// ===  Check line status ===
       
  1407 
       
  1408 	// Check RLine::NotifyStatusChange completes with EStatusDialling.
       
  1409 	RCall::TStatus expectedLineStatus = RCall::EStatusDialling;	
       
  1410 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  1411 														 notifyStatusChangeStatus,
       
  1412 														 lineStatus,
       
  1413 														 expectedLineStatus,
       
  1414 														 expectedStatus);
       
  1415 
       
  1416 	// Check RLine::GetStatus returns EStatusDialling
       
  1417 	ASSERT_EQUALS(voiceLine.GetStatus(lineStatus), KErrNone,  
       
  1418 			_L("RLine::GetStatus returned an error"));
       
  1419 	ASSERT_EQUALS(lineStatus, RCall::EStatusDialling,  
       
  1420 			_L("RLine::GetStatus did not return EStatusDialling as expected"));
       
  1421 
       
  1422 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusDialling .
       
  1423 	expectedMobileCallStatus = RMobileCall::EStatusDialling;
       
  1424 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  1425 																		notifyMobileLineChangeStatus,
       
  1426 																		mobileLineStatus,
       
  1427 																		expectedMobileCallStatus,
       
  1428 																		expectedStatus);
       
  1429 																		
       
  1430 	// Check RMobileLine::GetMobileLineStatus returns EStatusDialling
       
  1431 	ASSERT_EQUALS(voiceLine.GetMobileLineStatus(mobileLineStatus), KErrNone, 
       
  1432 			_L("RMobileLine::GetMobileLineStatus returned an error"));
       
  1433 	ASSERT_EQUALS(mobileLineStatus, RMobileCall::EStatusDialling,  
       
  1434 			_L("RMobileLine::GetMobileLineStatus did not set the status to EStatusDialling"));
       
  1435 
       
  1436 	// Check dial fails because line is engaged.
       
  1437 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeLong), KErrNone,  
       
  1438 			_L("RCall::Dial timed-out"));
       
  1439 	ASSERT_TRUE(dialStatus.Int() !=  KErrNone,  
       
  1440 			_L("RCall::Dial Should have failed because engaged"));
       
  1441 
       
  1442 	// ===  Check line goes back to idle ===
       
  1443 	// post notifier for RLine::NotifyStatusChange
       
  1444 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  1445 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  1446 	voiceLine.NotifyMobileLineStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  1447 	
       
  1448 	// Check RLine::NotifyStatusChange completes with RCall::EStatusIdle
       
  1449 	expectedLineStatus = RCall::EStatusIdle;	
       
  1450 	ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10065);
       
  1451 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  1452 														 notifyStatusChangeStatus,
       
  1453 														 lineStatus,
       
  1454 														 expectedLineStatus,
       
  1455 														 expectedStatus);
       
  1456 
       
  1457 	// Check RLine::GetStatus returns RCall::EStatusIdle
       
  1458 	ASSERT_EQUALS(voiceLine.GetStatus(lineStatus), KErrNone,  
       
  1459 			_L("RLine::GetStatus returned an error"));
       
  1460 	ASSERT_EQUALS(lineStatus, RCall::EStatusIdle,  
       
  1461 			_L("RLine::GetStatus did not return EStatusIdle as expected"));
       
  1462 	
       
  1463 	// ===  Check call status goes back to idle ===
       
  1464 
       
  1465 	// Check RCall::NotifyStatusChange completes with EStatusIdle.
       
  1466 	expectedCallStatus = RCall::EStatusIdle;
       
  1467 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  1468 														 notifyCallStatusChangeStatus,
       
  1469 														 callStatus,
       
  1470 														 expectedCallStatus,
       
  1471 														 expectedStatus);
       
  1472 	// Check RCall::GetStatus returns EStatusIdle.
       
  1473 	ASSERT_EQUALS(call1.GetStatus(callStatus), KErrNone,  
       
  1474 			_L("RCall::GetStatus returned an error"));
       
  1475 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle,  
       
  1476 			_L("RCall::GetStatus did not return EStatusIdle"));
       
  1477 
       
  1478 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusIdle.
       
  1479 	expectedMobileCallStatus = RMobileCall::EStatusIdle;
       
  1480 	ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10066);
       
  1481 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  1482 																		notifyMobileCallChangeStatus,
       
  1483 																		mobileCallStatus,
       
  1484 																		expectedMobileCallStatus,
       
  1485 																		expectedStatus);
       
  1486 
       
  1487 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
  1488 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  1489 			_L("RMobileCall::GetMobileCallStatus returned an error"));
       
  1490 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle,  
       
  1491 			_L("RMobileCall::GetMobileCallStatus did not return EStatusIdle"));
       
  1492 
       
  1493 	
       
  1494 	////////////////////////////////////////////////////////////////
       
  1495 	// TEST END
       
  1496 	////////////////////////////////////////////////////////////////
       
  1497 
       
  1498     StartCleanup();
       
  1499 
       
  1500 	// tell RPS to hang up after 0 seconds
       
  1501 	RPSHangupL(EVoiceLine,0);
       
  1502 	
       
  1503 	// Pop
       
  1504 	// notifyCallStatusChangeStatus
       
  1505 	// notifyMobileCallChangeStatus
       
  1506 	// notifyStatusChangeStatus
       
  1507 	// notifyMobileLineChangeStatus
       
  1508 	// dialStatus
       
  1509 	CleanupStack::PopAndDestroy(5, &notifyCallStatusChangeStatus);
       
  1510 	
       
  1511 	return TestStepResult();
       
  1512 	}
       
  1513 
       
  1514 TPtrC CCTSYIntegrationTestCallControl0007::GetTestStepName()
       
  1515 /**
       
  1516  * @return The test step name.
       
  1517  */
       
  1518 	{
       
  1519 	return  _L("CCTSYIntegrationTestCallControl0007");
       
  1520 	}
       
  1521 
       
  1522 
       
  1523 
       
  1524 CCTSYIntegrationTestCallControl0008::CCTSYIntegrationTestCallControl0008(CEtelSessionMgr& aEtelSessionMgr)
       
  1525 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
  1526 /**
       
  1527  * Constructor.
       
  1528  */
       
  1529 	{
       
  1530 	SetTestStepName(CCTSYIntegrationTestCallControl0008::GetTestStepName());
       
  1531 	}
       
  1532 
       
  1533 CCTSYIntegrationTestCallControl0008::~CCTSYIntegrationTestCallControl0008()
       
  1534 /**
       
  1535  * Destructor.
       
  1536  */
       
  1537 	{
       
  1538 	}
       
  1539 
       
  1540 TVerdict CCTSYIntegrationTestCallControl0008::doTestStepL()
       
  1541 /**
       
  1542  * @SYMTestCaseID BA-CTSY-INT-CCON-0008
       
  1543  * @SYMFssID BA/CTSY/CCON-0008
       
  1544  * @SYMTestCaseDesc Make a call to an international number
       
  1545  * @SYMTestPriority High
       
  1546  * @SYMTestActions RLine::NotifyStatusChange, RLine::GetStatus, RMobileLine::NotifyMobileLineStatusChange, RMobileLine::GetMobileLineStatus, RCall::NotifyStatusChange, RCall::GetStatus, RMobileCall::NotifyMobileCallStatusChange, RMobileCall::GetMobileCallStatus, RCall::HangUp, RCall::GetInfo, RMobileCall::GetMobileCallInfo
       
  1547  * @SYMTestExpectedResults Pass - Can dial international numbers
       
  1548  * @SYMTestType CIT
       
  1549  * @SYMTestCaseDependencies live/automatic
       
  1550  *
       
  1551  * Reason for test: Verify international number can be dialled and line and call statuses are correct.
       
  1552  *
       
  1553  * @return - TVerdict code
       
  1554  */
       
  1555 	{
       
  1556 
       
  1557 	////////////////////////////////////////////////////////////////
       
  1558 	// SET UP
       
  1559 	////////////////////////////////////////////////////////////////
       
  1560 
       
  1561 	
       
  1562 	// Get Voice line 1 
       
  1563 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
  1564 	// Get call 1 
       
  1565 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
  1566 
       
  1567 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
  1568 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
  1569 	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
  1570 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
  1571 
       
  1572 	////////////////////////////////////////////////////////////////
       
  1573 	// SET UP END
       
  1574 	////////////////////////////////////////////////////////////////
       
  1575 	
       
  1576 	StartTest();
       
  1577 	
       
  1578 	////////////////////////////////////////////////////////////////
       
  1579 	// TEST START
       
  1580 	////////////////////////////////////////////////////////////////
       
  1581 	
       
  1582 	
       
  1583 	// ===  Check call status ===
       
  1584 
       
  1585 	// Check RCall::GetStatus returns EStatusIdle or EStatusUnknown.
       
  1586 	RCall::TStatus callStatus;
       
  1587 	ASSERT_EQUALS(call1.GetStatus(callStatus), KErrNone,  
       
  1588 			_L("RCall::GetStatus returned an error"));
       
  1589 	ASSERT_TRUE(callStatus == RCall::EStatusIdle || 
       
  1590 				callStatus == RCall::EStatusUnknown,  
       
  1591 			_L("RCall::GetStatus did not set call status EStatusIdle or EStatusUnknown as expected"));
       
  1592 	
       
  1593 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle or EStatusUnknown.
       
  1594 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
  1595 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  1596 			_L("RMobileCall::GetMobileCallStatus returned an error"));
       
  1597 	ASSERT_TRUE(mobileCallStatus == RMobileCall::EStatusUnknown ||
       
  1598 		        mobileCallStatus == RMobileCall::EStatusIdle,  
       
  1599 			_L("RMobileCall::GetMobileCallStatus did not set call status EStatusIdle or EStatusUnknown as expected"));
       
  1600 
       
  1601 	// ===  Check line status ===
       
  1602 
       
  1603 	// Check RLine::GetStatus returns EStatusIdle or EStatusUnknown.
       
  1604 	ASSERT_EQUALS(voiceLine.GetStatus(callStatus), KErrNone,  
       
  1605 			_L("RLine::GetStatus returned an error"));
       
  1606 	ASSERT_TRUE(callStatus == RCall::EStatusUnknown || 
       
  1607 				callStatus == RCall::EStatusIdle,  
       
  1608 			_L("RLine::GetStatus did not set call status to EStatusIdle or EStatusUnknown as expected"));
       
  1609 
       
  1610 	// Check RMobileLine::GetMobileLineStatus returns EStatusIdle or EStatusUnknown.
       
  1611 	ASSERT_EQUALS(voiceLine.GetMobileLineStatus(mobileCallStatus), KErrNone,  
       
  1612 			_L("RMobileLine::GetMobileLineStatus returned an error"));
       
  1613 	ASSERT_TRUE(mobileCallStatus == RMobileCall::EStatusUnknown || 
       
  1614 				mobileCallStatus == RMobileCall::EStatusIdle,  
       
  1615 			_L("RMobileLine::GetMobileLineStatus did not set status to EStatusIdle or EStatusUnknown"));
       
  1616 
       
  1617 	// post notifier for RCall::NotifyStatusChange
       
  1618 	TCoreEtelRequestStatus<RCall> notifyCallStatusChangeStatus (call1,&RCall::NotifyStatusChangeCancel);
       
  1619 	CleanupStack::PushL(notifyCallStatusChangeStatus);
       
  1620 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  1621 
       
  1622 	// post a notifier for RMobileCall::NotifyMobileCallStatusChange
       
  1623 	TExtEtelRequestStatus notifyMobileCallChangeStatus(call1, EMobileCallNotifyMobileCallStatusChange);
       
  1624 	CleanupStack::PushL(notifyMobileCallChangeStatus);
       
  1625 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);	
       
  1626 
       
  1627 	// post a notifier for RLine::NotifyStatusChange
       
  1628 	TCoreEtelRequestStatus<RLine> notifyStatusChangeStatus (voiceLine,&RLine::NotifyStatusChangeCancel);
       
  1629 	CleanupStack::PushL(notifyStatusChangeStatus);
       
  1630 	RCall::TStatus lineStatus;
       
  1631 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  1632 
       
  1633 	// post a notifier for RMobileLine::NotifyMobileLineStatusChange
       
  1634 	TExtEtelRequestStatus notifyMobileLineChangeStatus(voiceLine, EMobileLineNotifyMobileLineStatusChange);
       
  1635 	CleanupStack::PushL(notifyMobileLineChangeStatus);
       
  1636 	RMobileCall::TMobileCallStatus mobileLineStatus;
       
  1637 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  1638 
       
  1639 		
       
  1640 	// Dial a number with a + prefix where remote party answers. 
       
  1641 	TPtrC number;
       
  1642 	GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber2, number);
       
  1643 	TCoreEtelRequestStatus<RMobileCall> dialStatus(call1, &RCall::DialCancel);
       
  1644 	CleanupStack::PushL(dialStatus);											 
       
  1645 	call1.Dial(dialStatus, number);	
       
  1646 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeMedium), KErrNone,  
       
  1647 			_L("RCall::Dial timed-out"));
       
  1648 	ASSERT_EQUALS(dialStatus.Int(), KErrNone,  
       
  1649 			_L("RCall::Dial returned with an error"));
       
  1650 
       
  1651 	// ===  Check call status ===
       
  1652 
       
  1653 	// Check RCall::NotifyStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  1654 	RCall::TStatus expectedCallStatus = RCall::EStatusDialling;
       
  1655 	const TInt expectedStatus = KErrNone;
       
  1656 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  1657 														 notifyCallStatusChangeStatus,
       
  1658 														 callStatus,
       
  1659 														 expectedCallStatus,
       
  1660 														 expectedStatus);
       
  1661 														 
       
  1662 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  1663 	expectedCallStatus = RCall::EStatusConnecting;	
       
  1664 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  1665 														 notifyCallStatusChangeStatus,
       
  1666 														 callStatus,
       
  1667 														 expectedCallStatus,
       
  1668 														 expectedStatus);	
       
  1669 														 
       
  1670 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  1671 	expectedCallStatus = RCall::EStatusConnected;	
       
  1672 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  1673 														 notifyCallStatusChangeStatus,
       
  1674 														 callStatus,
       
  1675 														 expectedCallStatus,
       
  1676 														 expectedStatus);	
       
  1677 														 													 
       
  1678 	// Check RCall::GetStatus returns EStatusConnected.
       
  1679 	ASSERT_EQUALS(call1.GetStatus(callStatus), KErrNone,  
       
  1680 			_L("RCall::GetStatus returned an error"));
       
  1681 	ASSERT_EQUALS(callStatus, RCall::EStatusConnected,  
       
  1682 			_L("RCall::GetStatus did not set call status EStatusConnected as expected"));
       
  1683 
       
  1684 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  1685 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusDialling;
       
  1686 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  1687 																		notifyMobileCallChangeStatus,
       
  1688 																		mobileCallStatus,
       
  1689 																		expectedMobileCallStatus,
       
  1690 																		expectedStatus);
       
  1691 	expectedMobileCallStatus = RMobileCall::EStatusConnecting;
       
  1692 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);	
       
  1693 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  1694 																		notifyMobileCallChangeStatus,
       
  1695 																		mobileCallStatus,
       
  1696 																		expectedMobileCallStatus,
       
  1697 																		expectedStatus);
       
  1698 	expectedMobileCallStatus = RMobileCall::EStatusConnected;
       
  1699 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);	
       
  1700 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  1701 																		notifyMobileCallChangeStatus,
       
  1702 																		mobileCallStatus,
       
  1703 																		expectedMobileCallStatus,
       
  1704 																		expectedStatus);
       
  1705 																																																							
       
  1706 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusConnected.
       
  1707 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  1708 			_L("RMobileCall::GetMobileCallStatus returned an error"));
       
  1709 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected,  
       
  1710 			_L("RMobileCall::GetMobileCallStatus did not set call status EStatusConnected as expected"));
       
  1711 
       
  1712 	// ===  Check line status ===
       
  1713 
       
  1714 	// Check RLine::NotifyStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  1715 	RCall::TStatus expectedLineStatus = RCall::EStatusDialling;
       
  1716 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  1717 														 notifyStatusChangeStatus,
       
  1718 														 lineStatus,
       
  1719 														 expectedLineStatus,
       
  1720 														 expectedStatus);
       
  1721 	expectedLineStatus = RCall::EStatusConnecting;	
       
  1722 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus, lineStatus);
       
  1723 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  1724 														 notifyStatusChangeStatus,
       
  1725 														 lineStatus,
       
  1726 														 expectedLineStatus,
       
  1727 														 expectedStatus);
       
  1728 	expectedLineStatus = RCall::EStatusConnected;	
       
  1729 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus, lineStatus);	
       
  1730 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  1731 														 notifyStatusChangeStatus,
       
  1732 														 lineStatus,
       
  1733 														 expectedLineStatus,
       
  1734 														 expectedStatus);
       
  1735 														 														 
       
  1736 	// Check RLine::GetStatus returns EStatusConnected
       
  1737 	ASSERT_EQUALS(voiceLine.GetStatus(callStatus), KErrNone,  
       
  1738 			_L("RLine::GetStatus returned an error"));
       
  1739 	ASSERT_EQUALS(callStatus, RCall::EStatusConnected,  
       
  1740 			_L("RLine::GetStatus did not set call status to EStatusConnected as expected"));
       
  1741 
       
  1742 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  1743 	RMobileCall::TMobileCallStatus expectedMobileLineStatus = RMobileCall::EStatusDialling;
       
  1744 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  1745 																		notifyMobileLineChangeStatus,
       
  1746 																		mobileLineStatus,
       
  1747 																		expectedMobileLineStatus,
       
  1748 																		expectedStatus);
       
  1749 																		
       
  1750 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  1751 	expectedMobileLineStatus = RMobileCall::EStatusConnecting;
       
  1752 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  1753 																		notifyMobileLineChangeStatus,
       
  1754 																		mobileLineStatus,
       
  1755 																		expectedMobileLineStatus,
       
  1756 																		expectedStatus);
       
  1757 																		
       
  1758 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  1759 	expectedMobileLineStatus = RMobileCall::EStatusConnected;
       
  1760 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  1761 																		notifyMobileLineChangeStatus,
       
  1762 																		mobileLineStatus,
       
  1763 																		expectedMobileLineStatus,
       
  1764 																		expectedStatus);	
       
  1765 																																																							
       
  1766 	// Check RMobileLine::GetMobileLineStatus returns EStatusConnected
       
  1767 	ASSERT_EQUALS(voiceLine.GetMobileLineStatus(mobileCallStatus), KErrNone,  
       
  1768 			_L("RMobileLine::GetMobileLineStatus returned an error"));
       
  1769 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected,  
       
  1770 			_L("RMobileLine::GetMobileLineStatus did not set status to EStatusConnected"));
       
  1771 
       
  1772 	// ===  Check call info ===
       
  1773 
       
  1774     // Wait 3 seconds, so that the call duration will be more then 0 seconds
       
  1775     User::After(3*KOneSecond);
       
  1776 
       
  1777 	// Check RCall::GetInfo returns valid call name.
       
  1778 	// Check RCall::GetInfo returns valid voice line name.
       
  1779 	// Check RCall::GetInfo returns call status of EStatusConnected.
       
  1780 	// Check RCall::GetInfo returns call duration of > 0.
       
  1781 	RCall::TCallInfo callInfo;
       
  1782 	ASSERT_EQUALS(call1.GetInfo(callInfo), KErrNone,  
       
  1783 			_L("RCall::GetInfo returned an error"));
       
  1784 	ASSERT_TRUE(callInfo.iCallName.Length() >0,  
       
  1785 			_L("RCall::GetInfo returned an invalid  name"));
       
  1786 	ASSERT_TRUE(callInfo.iLineName.Length() >0,  
       
  1787 			_L("RCall::GetInfo returned an invalid  Line name"));
       
  1788 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusConnected,  
       
  1789 			_L("RCall::GetInfo wrong iStatus, should be EStatusIdle"));
       
  1790 	ASSERT_TRUE(callInfo.iDuration.Int()>0,  
       
  1791 			_L("RCall::GetInfo wrong iDuration, should be > 0"));
       
  1792 	
       
  1793 	
       
  1794 
       
  1795 	// Check RMobileCall::GetMobileCallInfo returns iValid > 0.
       
  1796 	// Check RMobileCall::GetMobileCallInfo returns data for attributes marked as valid in iValid.
       
  1797 	// Check RMobileCall::GetMobileCallInfo returns valid line name.
       
  1798 	// Check RMobileCall::GetMobileCallInfo returns correct number for iDialledParty.iTelNumber
       
  1799 	// Check RMobileCall::GetMobileCallInfo returns iDialledParty.iTypeOfNumber of EInternationalNumber
       
  1800 	RMobileCall::TMobileCallInfoV1 mobileCallInfo;
       
  1801 	RMobileCall::TMobileCallInfoV1Pckg callInfoPckg(mobileCallInfo);
       
  1802 	ASSERT_EQUALS(call1.GetMobileCallInfo(callInfoPckg), KErrNone,  
       
  1803 			_L("RMobileCall::GetMobileCallInfo returned an error"));
       
  1804 	ASSERT_TRUE(mobileCallInfo.iValid > 0,  
       
  1805 			_L("RMobileCall::GetMobileCallInfo returned unexpected flags in iValid"));
       
  1806 	ASSERT_TRUE(mobileCallInfo.iCallName.Length() >0,  
       
  1807 			_L("RMobileCall::GetMobileCallInfo returned an invalid callName"));
       
  1808 	ASSERT_TRUE(mobileCallInfo.iLineName.Length() >0,  
       
  1809 			_L("RMobileCall::GetMobileCallInfo returned an invalid line name"));
       
  1810 	ASSERT_EQUALS_DES16(mobileCallInfo.iDialledParty.iTelNumber, number,  
       
  1811 			_L("RMobileCall::GetMobileCallInfo returned incorrect number for iDialledParty.iTelNumber"));
       
  1812 	ASSERT_EQUALS(mobileCallInfo.iDialledParty.iTypeOfNumber, RMobilePhone::EInternationalNumber,  
       
  1813 			_L("RMobileCall::GetMobileCallInfo returned incorrect type for iDialledParty.iTypeOfNumber"));
       
  1814 
       
  1815 
       
  1816 	//------------ Post Notifiers ----------------------------
       
  1817 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  1818 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);	
       
  1819 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  1820 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  1821 
       
  1822     
       
  1823 	// Hang up. 
       
  1824 	TCoreEtelRequestStatus<RCall> hangUpStatus (call1,&RCall::HangUpCancel);	
       
  1825 	CleanupStack::PushL(hangUpStatus);
       
  1826 	call1.HangUp(hangUpStatus);
       
  1827 	ASSERT_EQUALS(WaitForRequestWithTimeOut(hangUpStatus, ETimeMedium), KErrNone,  
       
  1828 			_L("RCall::HangUp timed-out"));
       
  1829 	ASSERT_EQUALS(hangUpStatus.Int(), KErrNone,  
       
  1830 			_L("RCall::HangUp returned an error"));
       
  1831 	
       
  1832 	// ===  Check call status ===
       
  1833 
       
  1834 	// Check RCall::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle.
       
  1835 	expectedCallStatus = RCall::EStatusHangingUp;
       
  1836 	const TInt wantedStatus = KErrNone;
       
  1837 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  1838 														 notifyStatusChangeStatus,
       
  1839 														 callStatus,
       
  1840 														 expectedCallStatus,
       
  1841 														 wantedStatus);
       
  1842 	
       
  1843 	call1.NotifyStatusChange(notifyStatusChangeStatus,callStatus);
       
  1844 	expectedCallStatus = RCall::EStatusIdle;
       
  1845 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  1846 													 notifyStatusChangeStatus,
       
  1847 													 callStatus,
       
  1848 													 expectedCallStatus,
       
  1849 													 wantedStatus);
       
  1850 													 
       
  1851 	// Check RCall::GetStatus returns EStatusIdle.
       
  1852 	ASSERT_EQUALS(call1.GetStatus(callStatus),KErrNone,  
       
  1853 			_L("RCall::GetStatus returned an error"));
       
  1854 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle,  
       
  1855 			_L("RCall::GetStatus returned an unexpected call status"));
       
  1856 
       
  1857 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDisconnecting -> EStatusIdle.
       
  1858 	expectedMobileCallStatus = RMobileCall::EStatusDisconnecting;
       
  1859 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  1860 															notifyMobileCallChangeStatus,
       
  1861 															mobileCallStatus,
       
  1862 															expectedMobileCallStatus,
       
  1863 															wantedStatus);
       
  1864 															
       
  1865 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  1866 	expectedMobileCallStatus = RMobileCall::EStatusIdle;
       
  1867 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  1868 															notifyMobileCallChangeStatus,
       
  1869 															mobileCallStatus,
       
  1870 															expectedMobileCallStatus,
       
  1871 															wantedStatus);
       
  1872 															
       
  1873 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
  1874 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  1875 			_L("RMobileCall::GetMobileStatus returned an error"));
       
  1876 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle,  
       
  1877 			_L("RMobileCall::GetMobileStatus did not return a status EStatusIdle"));
       
  1878 
       
  1879 	// ===  Check line status ===
       
  1880 
       
  1881 	// Check RMobileLine::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle
       
  1882 	expectedLineStatus = RCall::EStatusHangingUp;
       
  1883 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  1884 														 notifyStatusChangeStatus,
       
  1885 														 lineStatus,
       
  1886 														 expectedLineStatus,
       
  1887 														 expectedStatus);
       
  1888 														 
       
  1889 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  1890 	expectedLineStatus = RCall::EStatusIdle;
       
  1891 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  1892 														 notifyStatusChangeStatus,
       
  1893 														 lineStatus,
       
  1894 														 expectedLineStatus,
       
  1895 														 expectedStatus);
       
  1896     voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  1897 	// Check RMobileLine::GetStatus returns EStatusIdle
       
  1898 	ASSERT_EQUALS(voiceLine.GetStatus(lineStatus), KErrNone,  
       
  1899 			_L("RLine::GetStatus returned an error"));
       
  1900 	ASSERT_EQUALS(lineStatus, RCall::EStatusIdle,  
       
  1901 			_L("RLine::GetStatus did not return EStatusIdle as expected"));
       
  1902 
       
  1903 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusDisconnecting -> EStatusIdle
       
  1904 	expectedMobileLineStatus = RMobileCall::EStatusDisconnecting;
       
  1905 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  1906 																		notifyMobileLineChangeStatus,
       
  1907 																		mobileLineStatus,
       
  1908 																		expectedMobileLineStatus,
       
  1909 																		expectedStatus);
       
  1910 
       
  1911 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  1912 	expectedMobileLineStatus = RMobileCall::EStatusIdle;
       
  1913 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  1914 																		notifyMobileLineChangeStatus,
       
  1915 																		mobileLineStatus,
       
  1916 																		expectedMobileLineStatus,
       
  1917 																		expectedStatus);
       
  1918 	// Check RMobileLine::GetMobileLineStatus returns EStatusIdle
       
  1919 	ASSERT_EQUALS(voiceLine.GetMobileLineStatus(mobileLineStatus), KErrNone,  
       
  1920 			_L("RMobileLine::GetMobileLineStatus returned an error"));
       
  1921 	ASSERT_EQUALS(mobileLineStatus, RMobileCall::EStatusIdle,  
       
  1922 			_L("RMobileLine::GetMobileLineStatus did not set the status to EStatusIdle"));
       
  1923 
       
  1924 	
       
  1925 	////////////////////////////////////////////////////////////////
       
  1926 	// TEST END
       
  1927 	////////////////////////////////////////////////////////////////
       
  1928 
       
  1929     StartCleanup();
       
  1930 	
       
  1931 	// Pop:
       
  1932 	//	hangUpStatus
       
  1933 	//	dialStatus
       
  1934 	//	notifyMobileLineChangeStatus
       
  1935 	//	notifyStatusChangeStatus
       
  1936 	//	notifyMobileCallChangeStatus
       
  1937 	//	notifyCallStatusChangeStatus
       
  1938 	CleanupStack::PopAndDestroy(6,&notifyCallStatusChangeStatus);
       
  1939 	
       
  1940 	return TestStepResult();
       
  1941 	}
       
  1942 
       
  1943 TPtrC CCTSYIntegrationTestCallControl0008::GetTestStepName()
       
  1944 /**
       
  1945  * @return The test step name.
       
  1946  */
       
  1947 	{
       
  1948 	return  _L("CCTSYIntegrationTestCallControl0008");
       
  1949 	}
       
  1950 
       
  1951 
       
  1952 
       
  1953 CCTSYIntegrationTestCallControl0009::CCTSYIntegrationTestCallControl0009(CEtelSessionMgr& aEtelSessionMgr)
       
  1954 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
  1955 /**
       
  1956  * Constructor.
       
  1957  */
       
  1958 	{
       
  1959 	SetTestStepName(CCTSYIntegrationTestCallControl0009::GetTestStepName());
       
  1960 	}
       
  1961 
       
  1962 CCTSYIntegrationTestCallControl0009::~CCTSYIntegrationTestCallControl0009()
       
  1963 /**
       
  1964  * Destructor.
       
  1965  */
       
  1966 	{
       
  1967 	}
       
  1968 
       
  1969 TVerdict CCTSYIntegrationTestCallControl0009::doTestStepL()
       
  1970 /**
       
  1971  * @SYMTestCaseID BA-CTSY-INT-CCON-0009
       
  1972  * @SYMFssID BA/CTSY/CCON-0009
       
  1973  * @SYMTestCaseDesc Dial and hang up a call specifying valid call parameters 01.
       
  1974  * @SYMTestPriority High
       
  1975  * @SYMTestActions RMobileCall::NotifyMobileCallStatusChange, RCall::NotifyStatusChange, RLine::NotifyStatusChange, RMobileLine::GetMobileLineStatus, RMobileLine::NotifyMobileLineStatusChange, RLine::GetStatus, RMobileCall::GetMobileCallStatus, RCall::GetCallParams, RCall::GetStatus, RCall::GetCallParams, RCall::GetStatus, RCall::HangUp
       
  1976  * @SYMTestExpectedResults Pass - Call connects and call parameters are correct.
       
  1977  * @SYMTestType CIT
       
  1978  * @SYMTestCaseDependencies live/automatic
       
  1979  *
       
  1980  * Reason for test: Verify call and line statuses and call params are correct.
       
  1981  *
       
  1982  * @return - TVerdict code
       
  1983  */
       
  1984 	{
       
  1985 
       
  1986 	////////////////////////////////////////////////////////////////
       
  1987 	// SET UP
       
  1988 	////////////////////////////////////////////////////////////////
       
  1989 	
       
  1990 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
  1991 	
       
  1992 	// Check phone supports KCapsVoice
       
  1993 
       
  1994 	// Get Voice line 1 
       
  1995 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
  1996 	// Get call 1 
       
  1997 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
  1998 
       
  1999 	RLine::TCaps lineCaps; 
       
  2000 	CHECK_EQUALS_L(voiceLine.GetCaps(lineCaps), KErrNone,  
       
  2001 			_L("RMobileLine::GetCaps returned an error"));
       
  2002 	CHECK_BITS_SET_L(lineCaps.iFlags, RLine::KCapsVoice, KNoUnwantedBits,  
       
  2003 			_L("RLine::GetCaps returned wrong caps"));
       
  2004 
       
  2005 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
       
  2006 	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
  2007 
       
  2008 	////////////////////////////////////////////////////////////////
       
  2009 	// SET UP END
       
  2010 	////////////////////////////////////////////////////////////////
       
  2011 	
       
  2012 	StartTest();
       
  2013 	
       
  2014 	////////////////////////////////////////////////////////////////
       
  2015 	// TEST START
       
  2016 	////////////////////////////////////////////////////////////////
       
  2017 	
       
  2018 	
       
  2019 	// Populate RMobileCall::TMobileCallParamsV1 with  
       
  2020 	RMobileCall::TMobileCallParamsV1 mobileCallParams;
       
  2021 	// ?iSpeakerControl = EMonitorSpeakerControlAlwaysOff 
       
  2022 	mobileCallParams.iSpeakerControl = RCall::EMonitorSpeakerControlAlwaysOff;
       
  2023 	// ?iSpeakerVolume = EMonitorSpeakerVolumeOff 
       
  2024 	mobileCallParams.iSpeakerVolume = RCall::EMonitorSpeakerVolumeOff;
       
  2025 	// ?iInterval = 0x01 
       
  2026 	mobileCallParams.iInterval = 0x01;
       
  2027 	// ?iWaitForDialTone = EDialToneWait 
       
  2028 	mobileCallParams.iWaitForDialTone = RCall::EDialToneWait;
       
  2029 	// ?iIdRestrict = EIdRestrictDefault 
       
  2030 	mobileCallParams.iIdRestrict = RMobileCall::EIdRestrictDefault;	
       
  2031 	// ?iExplicitInvoke = TRUE 
       
  2032 	mobileCallParams.iCug.iExplicitInvoke = TRUE ;
       
  2033 	// ?iCugIndex = 0x0000 
       
  2034 	mobileCallParams.iCug.iCugIndex = 0x0000;
       
  2035 	// ?iSuppressOA = FALSE 
       
  2036 	mobileCallParams.iCug.iSuppressOA = FALSE;
       
  2037 	// ?iSuppressPrefCug = TRUE 
       
  2038 	mobileCallParams.iCug.iSuppressPrefCug = TRUE;
       
  2039 	// ?iAutoRedial = TRUE 
       
  2040 	mobileCallParams.iAutoRedial = TRUE;
       
  2041 	
       
  2042 	RMobileCall::TMobileCallParamsV1Pckg mobileCallParamsPkg(mobileCallParams);
       
  2043 
       
  2044 	//=========Post Notifiers===============
       
  2045 		
       
  2046 	// post notifier for RCall::NotifyStatusChange
       
  2047 	TCoreEtelRequestStatus<RCall> notifyCallStatusChangeStatus (call1,&RCall::NotifyStatusChangeCancel);
       
  2048 	CleanupStack::PushL(notifyCallStatusChangeStatus);
       
  2049 	RCall::TStatus callStatus;
       
  2050 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  2051 
       
  2052 	// post a notifier for RMobileCall::NotifyMobileCallStatusChange
       
  2053 	TExtEtelRequestStatus notifyMobileCallChangeStatus(call1, EMobileCallNotifyMobileCallStatusChange);
       
  2054 	CleanupStack::PushL(notifyMobileCallChangeStatus);
       
  2055 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
  2056 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  2057 
       
  2058 	// post a notifier for RLine::NotifyStatusChange
       
  2059 	TCoreEtelRequestStatus<RLine> notifyStatusChangeStatus (voiceLine,&RLine::NotifyStatusChangeCancel);
       
  2060 	CleanupStack::PushL(notifyStatusChangeStatus);
       
  2061 	RCall::TStatus lineStatus;
       
  2062 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  2063 
       
  2064 	// post a notifier for RMobileLine::NotifyMobileLineStatusChange
       
  2065 	TExtEtelRequestStatus notifyMobileLineChangeStatus(voiceLine, EMobileLineNotifyMobileLineStatusChange);
       
  2066 	CleanupStack::PushL(notifyMobileLineChangeStatus);
       
  2067 	RMobileCall::TMobileCallStatus mobileLineStatus;
       
  2068 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  2069 	
       
  2070 	
       
  2071 	//======= Dial a number which answers using call params. 
       
  2072 	TCoreEtelRequestStatus<RMobileCall> dialStatus(call1, &RCall::DialCancel);
       
  2073 	CleanupStack::PushL(dialStatus);		
       
  2074 	TPtrC number;
       
  2075 	ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number) != EFalse,  
       
  2076 			_L("GetStringFromConfig did not complete as expected"));
       
  2077 	call1.Dial(dialStatus,mobileCallParamsPkg, number);
       
  2078 	// Wait for completion. 
       
  2079 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeMedium), KErrNone,  
       
  2080 			_L("RCall::Dial timed-out"));
       
  2081 	ASSERT_EQUALS(dialStatus.Int(), KErrNone,  
       
  2082 			_L("RCall::Dial returned an error"));
       
  2083 	
       
  2084 	const TInt expectedStatus = KErrNone;
       
  2085 	
       
  2086 	// ===  Check line status ===
       
  2087 
       
  2088 	// Check RLine::NotifyStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  2089 	RCall::TStatus expectedLineStatus = RCall::EStatusDialling;
       
  2090 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  2091 														 notifyStatusChangeStatus,
       
  2092 														 lineStatus,
       
  2093 														 expectedLineStatus,
       
  2094 														 expectedStatus);
       
  2095 
       
  2096 	expectedLineStatus = RCall::EStatusConnecting;	
       
  2097 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus, lineStatus);
       
  2098 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  2099 														 notifyStatusChangeStatus,
       
  2100 														 lineStatus,
       
  2101 														 expectedLineStatus,
       
  2102 														 expectedStatus);
       
  2103 	
       
  2104 	expectedLineStatus = RCall::EStatusConnected;	
       
  2105 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus, lineStatus);	
       
  2106 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  2107 														 notifyStatusChangeStatus,
       
  2108 														 lineStatus,
       
  2109 														 expectedLineStatus,
       
  2110 														 expectedStatus);
       
  2111 	
       
  2112 	// Check RLine::GetStatus returns EStatusConnected
       
  2113 	ASSERT_EQUALS(voiceLine.GetStatus(lineStatus), KErrNone,  
       
  2114 			_L("RLine::GetStatus returned an error"));
       
  2115 	ASSERT_EQUALS(lineStatus, RCall::EStatusConnected,  
       
  2116 			_L("RLine::GetStatus did not set line status to EStatusConnected as expected"));
       
  2117 
       
  2118 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  2119 	RMobileCall::TMobileCallStatus expectedMobileLineStatus = RMobileCall::EStatusDialling;
       
  2120 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  2121 																		notifyMobileLineChangeStatus,
       
  2122 																		mobileLineStatus,
       
  2123 																		expectedMobileLineStatus,
       
  2124 																		expectedStatus);
       
  2125 
       
  2126 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  2127 	expectedMobileLineStatus = RMobileCall::EStatusConnecting;
       
  2128 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  2129 																		notifyMobileLineChangeStatus,
       
  2130 																		mobileLineStatus,
       
  2131 																		expectedMobileLineStatus,
       
  2132 																		expectedStatus);
       
  2133 
       
  2134 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  2135 	expectedMobileLineStatus = RMobileCall::EStatusConnected;
       
  2136 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  2137 																		notifyMobileLineChangeStatus,
       
  2138 																		mobileLineStatus,
       
  2139 																		expectedMobileLineStatus,
       
  2140 																		expectedStatus);	
       
  2141 
       
  2142 	// Check RMobileLine::GetMobileLineStatus returns EStatusConnected
       
  2143 	ASSERT_EQUALS(voiceLine.GetMobileLineStatus(mobileLineStatus), KErrNone,  
       
  2144 			_L("RMobileLine::GetMobileLineStatus returned an error"));
       
  2145 	ASSERT_EQUALS(mobileLineStatus, RMobileCall::EStatusConnected,  
       
  2146 			_L("RMobileLine::GetMobileLineStatus did not set status to EStatusConnected"));
       
  2147 	
       
  2148 	// ===  Check call status ===
       
  2149 	
       
  2150 	// Check RCall::NotifyStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  2151 	RCall::TStatus expectedCallStatus = RCall::EStatusDialling;
       
  2152 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  2153 														 notifyCallStatusChangeStatus,
       
  2154 														 callStatus,
       
  2155 														 expectedCallStatus,
       
  2156 														 expectedStatus);
       
  2157 	
       
  2158 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  2159 	expectedCallStatus = RCall::EStatusConnecting;
       
  2160 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  2161 														 notifyCallStatusChangeStatus,
       
  2162 														 callStatus,
       
  2163 														 expectedCallStatus,
       
  2164 														 expectedStatus);
       
  2165 	DEBUG_PRINTF1(_L("3"));
       
  2166 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  2167 	expectedCallStatus = RCall::EStatusConnected;
       
  2168 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  2169 														 notifyCallStatusChangeStatus,
       
  2170 														 callStatus,
       
  2171 														 expectedCallStatus,
       
  2172 														 expectedStatus);		
       
  2173 								 												 
       
  2174 	// Check RCall::GetStatus returns EStatusConnected.
       
  2175 	ASSERT_EQUALS(voiceLine.GetStatus(callStatus), KErrNone,  
       
  2176 			_L("RLine::GetStatus returned an error"));
       
  2177 	ASSERT_EQUALS(callStatus, RCall::EStatusConnected,  
       
  2178 			_L("RLine::GetStatus did not return EStatusConnected as expected"));
       
  2179 	DEBUG_PRINTF1(_L("5 check for mobile call dialling"));
       
  2180 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  2181 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusDialling;
       
  2182 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  2183 																		notifyMobileCallChangeStatus,
       
  2184 																		mobileCallStatus,
       
  2185 																		expectedMobileCallStatus,
       
  2186 																		expectedStatus);
       
  2187 	
       
  2188 	expectedMobileCallStatus = RMobileCall::EStatusConnecting;
       
  2189 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);	
       
  2190 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  2191 																		notifyMobileCallChangeStatus,
       
  2192 																		mobileCallStatus,
       
  2193 																		expectedMobileCallStatus,
       
  2194 																		expectedStatus);
       
  2195 
       
  2196 	expectedMobileCallStatus = RMobileCall::EStatusConnected;
       
  2197 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);	
       
  2198 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  2199 																		notifyMobileCallChangeStatus,
       
  2200 																		mobileCallStatus,
       
  2201 																		expectedMobileCallStatus,
       
  2202 																		expectedStatus);
       
  2203 																	
       
  2204 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusConnected.
       
  2205 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  2206 			_L("RMobileCall::GetMobileCallStatus returned an error"));
       
  2207 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected,  
       
  2208 			_L("RMobileCall::GetMobileCallStatus did not set call status EStatusConnected as expected"));
       
  2209 
       
  2210 	
       
  2211 	// ===  Get call parameters. ===
       
  2212 	RMobileCall::TMobileCallParamsV1 checkParams;
       
  2213 	RMobileCall::TMobileCallParamsV1Pckg checkParamsPkg(checkParams);
       
  2214 	call1.GetCallParams(checkParamsPkg);
       
  2215 	
       
  2216 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iSpeakerControl as that used for Dial.
       
  2217 	ASSERT_EQUALS(checkParams.iSpeakerControl,  mobileCallParams.iSpeakerControl,  
       
  2218 			_L("RCall::GetCallParams did not return the same iSpeakerControl as that used for Dial"));
       
  2219 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iSpeakerVolume as that used for Dial.
       
  2220 	ASSERT_EQUALS(checkParams.iSpeakerVolume, mobileCallParams.iSpeakerVolume,  
       
  2221 			_L("RCall::GetCallParams did not return the same iSpeakerVolume as that used for Dial"));
       
  2222 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iInterval as that used for Dial.
       
  2223 	ASSERT_EQUALS(checkParams.iInterval, mobileCallParams.iInterval,  
       
  2224 			_L("RCall::GetCallParams did not return the same iInterval as that used for Dial"));
       
  2225 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iWaitForDialTone as that used for Dial.
       
  2226 	ASSERT_EQUALS(checkParams.iWaitForDialTone, mobileCallParams.iWaitForDialTone,  
       
  2227 			_L("RCall::GetCallParams did not return the same iWaitForDialTone as that used for Dial"));
       
  2228 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iIdRestrict as that used for Dial.
       
  2229 	ASSERT_EQUALS(checkParams.iIdRestrict, mobileCallParams.iIdRestrict,  
       
  2230 			_L("RCall::GetCallParams did not return the same iIdRestrict as that used for Dial"));
       
  2231 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iCug.iExplicitInvoke as that used for Dial.
       
  2232 	ASSERT_EQUALS(checkParams.iCug.iExplicitInvoke, mobileCallParams.iCug.iExplicitInvoke,  
       
  2233 			_L("RCall::GetCallParams did not return the same iCug.iExplicitInvoke as that used for Dial"));
       
  2234 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iCug.iCugIndex as that used for Dial.
       
  2235 	ASSERT_EQUALS(checkParams.iCug.iCugIndex, mobileCallParams.iCug.iCugIndex,  
       
  2236 			_L("RCall::GetCallParams did not return the same iCug.iCugIndex as that used for Dial"));
       
  2237 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iCug.iSuppressPrefCug as that used for Dial.
       
  2238 	ASSERT_EQUALS(checkParams.iCug.iSuppressPrefCug, mobileCallParams.iCug.iSuppressPrefCug,  
       
  2239 			_L("RCall::GetCallParams did not return the same iCug.iSuppressPrefCug as that used for Dial"));
       
  2240 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iCug.iSuppressOA as that used for Dial.
       
  2241 	ASSERT_EQUALS(checkParams.iCug.iSuppressOA, mobileCallParams.iCug.iSuppressOA,  
       
  2242 			_L("RCall::GetCallParams did not return the same iCug.iSuppressOA as that used for Dial"));
       
  2243 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iAutoRedial as that used for Dial.
       
  2244 	ASSERT_EQUALS(checkParams.iAutoRedial, mobileCallParams.iAutoRedial,  
       
  2245 			_L("RCall::GetCallParams did not return the same iAutoRedial as that used for Dial"));
       
  2246 
       
  2247 	
       
  2248 	//------------ Post Notifiers ----------------------------
       
  2249 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  2250 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);	
       
  2251 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  2252 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);	
       
  2253 
       
  2254 	// Hang up call. 
       
  2255 	TCoreEtelRequestStatus<RCall> hangUpStatus (call1,&RCall::HangUpCancel);	
       
  2256 	CleanupStack::PushL(hangUpStatus);
       
  2257 	call1.HangUp(hangUpStatus);
       
  2258 	ASSERT_EQUALS(WaitForRequestWithTimeOut(hangUpStatus, ETimeMedium), KErrNone,  
       
  2259 			_L("RCall::HangUp timed-out"));
       
  2260 	ASSERT_EQUALS(hangUpStatus.Int(), KErrNone,  
       
  2261 			_L("RCall::HangUp returned an error"));
       
  2262 	
       
  2263 	// ===  Check call status ===
       
  2264 		
       
  2265 	// Check RCall::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle
       
  2266 	expectedCallStatus = RCall::EStatusHangingUp;
       
  2267 	const TInt wantedStatus = KErrNone;
       
  2268 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  2269 														 notifyStatusChangeStatus,
       
  2270 														 callStatus,
       
  2271 														 expectedCallStatus,
       
  2272 														 wantedStatus);
       
  2273 	
       
  2274 	call1.NotifyStatusChange(notifyStatusChangeStatus,callStatus);
       
  2275 	expectedCallStatus = RCall::EStatusIdle;
       
  2276 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  2277 													 notifyStatusChangeStatus,
       
  2278 													 callStatus,
       
  2279 													 expectedCallStatus,
       
  2280 													 wantedStatus);
       
  2281 	// Check RCall::GetStatus returns EStatusIdle.
       
  2282 	ASSERT_EQUALS(call1.GetStatus(callStatus),KErrNone,  
       
  2283 			_L("RCall::GetStatus returned an error"));
       
  2284 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle,  
       
  2285 			_L("RCall::GetStatus returned an unexpected call status"));
       
  2286 	
       
  2287 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDisconnecting -> EStatusIdle
       
  2288 	expectedMobileCallStatus = RMobileCall::EStatusDisconnecting;
       
  2289 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  2290 															notifyMobileCallChangeStatus,
       
  2291 															mobileCallStatus,
       
  2292 															expectedMobileCallStatus,
       
  2293 															wantedStatus);
       
  2294 																
       
  2295 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  2296 	expectedMobileCallStatus = RMobileCall::EStatusIdle;
       
  2297 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  2298 															notifyMobileCallChangeStatus,
       
  2299 															mobileCallStatus,
       
  2300 															expectedMobileCallStatus,
       
  2301 															wantedStatus);
       
  2302 							
       
  2303 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
  2304 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  2305 			_L("RMobileCall::GetMobileStatus returned an error"));
       
  2306 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle,  
       
  2307 			_L("RMobileCall::GetMobileStatus did not return a status EStatusIdle"));
       
  2308 
       
  2309 	// ===  Check line status ===
       
  2310 	
       
  2311 	// Check RLine::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle
       
  2312 	DEBUG_PRINTF1(_L("12"));
       
  2313 	expectedLineStatus = RCall::EStatusHangingUp;
       
  2314 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  2315 														 notifyStatusChangeStatus,
       
  2316 														 lineStatus,
       
  2317 														 expectedLineStatus,
       
  2318 														 expectedStatus);
       
  2319 															 
       
  2320 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  2321 	expectedLineStatus = RCall::EStatusIdle;
       
  2322 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  2323 														 notifyStatusChangeStatus,
       
  2324 														 lineStatus,
       
  2325 														 expectedLineStatus,
       
  2326 														 expectedStatus);
       
  2327 													 
       
  2328 	// Check RLine::GetStatus returns EStatusIdle
       
  2329 	ASSERT_EQUALS(voiceLine.GetStatus(lineStatus), KErrNone,  
       
  2330 			_L("RLine::GetStatus returned an error"));
       
  2331 	ASSERT_EQUALS(lineStatus, RCall::EStatusIdle,  
       
  2332 			_L("RLine::GetStatus did not return EStatusIdle as expected"));
       
  2333 	
       
  2334 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusDisconnecting -> EStatusIdle
       
  2335 	DEBUG_PRINTF1(_L("13"));
       
  2336 	expectedMobileLineStatus = RMobileCall::EStatusDisconnecting;
       
  2337 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  2338 																		notifyMobileLineChangeStatus,
       
  2339 																		mobileLineStatus,
       
  2340 																		expectedMobileLineStatus,
       
  2341 																		expectedStatus);
       
  2342 	
       
  2343 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  2344 	expectedMobileLineStatus = RMobileCall::EStatusIdle;
       
  2345 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  2346 																		notifyMobileLineChangeStatus,
       
  2347 																		mobileLineStatus,
       
  2348 																		expectedMobileLineStatus,
       
  2349 																		expectedStatus);
       
  2350 	
       
  2351 	// Check RMobileLine::GetMobileLineStatus returns EStatusIdle
       
  2352 	ASSERT_EQUALS(voiceLine.GetMobileLineStatus(mobileLineStatus), KErrNone,  
       
  2353 			_L("RMobileLine::GetMobileLineStatus returned an error"));
       
  2354 	ASSERT_EQUALS(mobileLineStatus, RMobileCall::EStatusIdle,  
       
  2355 			_L("RMobileLine::GetMobileLineStatus did not set the status to EStatusIdle"));
       
  2356 
       
  2357 	
       
  2358 	////////////////////////////////////////////////////////////////
       
  2359 	// TEST END
       
  2360 	////////////////////////////////////////////////////////////////
       
  2361 
       
  2362     StartCleanup();
       
  2363 	
       
  2364 	// Pop
       
  2365 	// notifyCallStatusChangeStatus
       
  2366 	// notifyMobileCallChangeStatus
       
  2367 	// notifyStatusChangeStatus
       
  2368 	// notifyMobileLineChangeStatus 
       
  2369     // dialStatus
       
  2370 	// hangUpStatus
       
  2371 	CleanupStack::PopAndDestroy(6,&notifyCallStatusChangeStatus);
       
  2372 	
       
  2373 	return TestStepResult();
       
  2374 	}
       
  2375 
       
  2376 TPtrC CCTSYIntegrationTestCallControl0009::GetTestStepName()
       
  2377 /**
       
  2378  * @return The test step name.
       
  2379  */
       
  2380 	{
       
  2381 	return  _L("CCTSYIntegrationTestCallControl0009");
       
  2382 	}
       
  2383 
       
  2384 
       
  2385 
       
  2386 CCTSYIntegrationTestCallControl0010::CCTSYIntegrationTestCallControl0010(CEtelSessionMgr& aEtelSessionMgr)
       
  2387 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
  2388 /**
       
  2389  * Constructor.
       
  2390  */
       
  2391 	{
       
  2392 	SetTestStepName(CCTSYIntegrationTestCallControl0010::GetTestStepName());
       
  2393 	}
       
  2394 
       
  2395 CCTSYIntegrationTestCallControl0010::~CCTSYIntegrationTestCallControl0010()
       
  2396 /**
       
  2397  * Destructor.
       
  2398  */
       
  2399 	{
       
  2400 	}
       
  2401 
       
  2402 TVerdict CCTSYIntegrationTestCallControl0010::doTestStepL()
       
  2403 /**
       
  2404  * @SYMTestCaseID BA-CTSY-INT-CCON-0010
       
  2405  * @SYMFssID BA/CTSY/CCON-0010
       
  2406  * @SYMTestCaseDesc Dial and hang up a call specifying valid call parameters 02.
       
  2407  * @SYMTestPriority High
       
  2408  * @SYMTestActions RMobileCall::NotifyMobileCallStatusChange, RCall::NotifyStatusChange, RLine::NotifyStatusChange, RMobileLine::GetMobileLineStatus, RMobileLine::NotifyMobileLineStatusChange, RLine::GetStatus, RMobileCall::GetMobileCallStatus, RCall::GetCallParams, RCall::GetStatus, RCall::GetCallParams, RCall::GetStatus, RCall::HangUp
       
  2409  * @SYMTestExpectedResults Pass - Call connects and call parameters are correct.
       
  2410  * @SYMTestType CIT
       
  2411  * @SYMTestCaseDependencies live/automatic
       
  2412  *
       
  2413  * Reason for test: Verify call and line statuses and call params are correct.
       
  2414  *
       
  2415  * @return - TVerdict code
       
  2416  */
       
  2417 	{
       
  2418 
       
  2419 	////////////////////////////////////////////////////////////////
       
  2420 	// SET UP
       
  2421 	////////////////////////////////////////////////////////////////
       
  2422 
       
  2423 	
       
  2424 	// Check phone supports KCapsVoice
       
  2425 	// Get Voice line 1 
       
  2426 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
  2427 	// Get call 1 
       
  2428 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
  2429 
       
  2430 	RLine::TCaps lineCaps; 
       
  2431 	CHECK_EQUALS_L(voiceLine.GetCaps(lineCaps), KErrNone,  
       
  2432 			_L("RMobileLine::GetCaps returned an error"));
       
  2433 	CHECK_BITS_SET_L(lineCaps.iFlags, RLine::KCapsVoice, KNoUnwantedBits,  
       
  2434 			_L("RLine::GetCaps returned wrong caps"));
       
  2435 
       
  2436 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
  2437 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
  2438 	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
  2439 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
  2440 
       
  2441 	////////////////////////////////////////////////////////////////
       
  2442 	// SET UP END
       
  2443 	////////////////////////////////////////////////////////////////
       
  2444 	
       
  2445 	StartTest();
       
  2446 	
       
  2447 	////////////////////////////////////////////////////////////////
       
  2448 	// TEST START
       
  2449 	////////////////////////////////////////////////////////////////
       
  2450 	
       
  2451 	
       
  2452 	// Populate RMobileCall::TMobileCallParamsV1 with  
       
  2453 	RMobileCall::TMobileCallParamsV1 mobileCallParams;
       
  2454 	RMobileCall::TMobileCallParamsV1Pckg mobileCallParamsPkg(mobileCallParams);
       
  2455 	// ?iSpeakerControl = EMonitorSpeakerControlAlwaysOff 
       
  2456 	mobileCallParams.iSpeakerControl = RCall::EMonitorSpeakerControlAlwaysOff;
       
  2457 	// ?iSpeakerVolume = EMonitorSpeakerVolumeHigh 
       
  2458 	mobileCallParams.iSpeakerVolume = RCall::EMonitorSpeakerVolumeHigh;
       
  2459 	// ?iInterval = 0x02 
       
  2460 	mobileCallParams.iInterval = 0x02;
       
  2461 	// ?iWaitForDialTone = EDialToneWait 
       
  2462 	mobileCallParams.iWaitForDialTone = RCall::EDialToneWait;
       
  2463 	// ?iIdRestrict = ESendMyId 
       
  2464 	mobileCallParams.iIdRestrict = RMobileCall::ESendMyId;	
       
  2465 	// ?iExplicitInvoke = FALSE 
       
  2466 	mobileCallParams.iCug.iExplicitInvoke = FALSE ;
       
  2467 	// ?iCugIndex = 0x0000 
       
  2468 	mobileCallParams.iCug.iCugIndex = 0x0000;
       
  2469 	// ?iSuppressOA = FALSE 
       
  2470 	mobileCallParams.iCug.iSuppressOA = FALSE;
       
  2471 	// ?iSuppressPrefCug = FALSE 
       
  2472 	mobileCallParams.iCug.iSuppressPrefCug = FALSE;
       
  2473 	// ?iAutoRedial = FALSE 
       
  2474 	mobileCallParams.iAutoRedial = FALSE;
       
  2475 
       
  2476 	//=========Post Notifiers===============
       
  2477 		
       
  2478 	// post notifier for RCall::NotifyStatusChange
       
  2479 	TCoreEtelRequestStatus<RCall> notifyCallStatusChangeStatus (call1,&RCall::NotifyStatusChangeCancel);
       
  2480 	CleanupStack::PushL(notifyCallStatusChangeStatus);
       
  2481 	RCall::TStatus callStatus;
       
  2482 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  2483 
       
  2484 	// post a notifier for RMobileCall::NotifyMobileCallStatusChange
       
  2485 	TExtEtelRequestStatus notifyMobileCallChangeStatus(call1, EMobileCallNotifyMobileCallStatusChange);
       
  2486 	CleanupStack::PushL(notifyMobileCallChangeStatus);
       
  2487 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
  2488 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  2489 
       
  2490 	// post a notifier for RLine::NotifyStatusChange
       
  2491 	TCoreEtelRequestStatus<RLine> notifyStatusChangeStatus (voiceLine,&RLine::NotifyStatusChangeCancel);
       
  2492 	CleanupStack::PushL(notifyStatusChangeStatus);
       
  2493 	RCall::TStatus lineStatus;
       
  2494 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  2495 
       
  2496 	// post a notifier for RMobileLine::NotifyMobileLineStatusChange
       
  2497 	TExtEtelRequestStatus notifyMobileLineChangeStatus(voiceLine, EMobileLineNotifyMobileLineStatusChange);
       
  2498 	CleanupStack::PushL(notifyMobileLineChangeStatus);
       
  2499 	RMobileCall::TMobileCallStatus mobileLineStatus;
       
  2500 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  2501 		
       
  2502 	// Dial a number which answers using call params. 
       
  2503 	TCoreEtelRequestStatus<RMobileCall> dialStatus(call1, &RCall::DialCancel);
       
  2504 	CleanupStack::PushL(dialStatus);		
       
  2505 	TPtrC number;
       
  2506 	ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number) != EFalse,  
       
  2507 			_L("GetStringFromConfig did not complete as expected"));
       
  2508 	call1.Dial(dialStatus,mobileCallParamsPkg, number);
       
  2509 	// Wait for completion. 
       
  2510 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeMedium), KErrNone,  
       
  2511 			_L("RCall::Dial timed-out"));
       
  2512 	ASSERT_EQUALS(dialStatus.Int(), KErrNone,  
       
  2513 			_L("RCall::Dial returned an error"));
       
  2514 
       
  2515 
       
  2516 	// ===  Check line status ===
       
  2517 
       
  2518 	const TInt expectedStatus = KErrNone;
       
  2519 	
       
  2520 	// ===  Check line status ===
       
  2521 
       
  2522 	// Check RLine::NotifyStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  2523 	RCall::TStatus expectedLineStatus = RCall::EStatusDialling;
       
  2524 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  2525 														 notifyStatusChangeStatus,
       
  2526 														 lineStatus,
       
  2527 														 expectedLineStatus,
       
  2528 														 expectedStatus);
       
  2529 
       
  2530 	expectedLineStatus = RCall::EStatusConnecting;	
       
  2531 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus, lineStatus);
       
  2532 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  2533 														 notifyStatusChangeStatus,
       
  2534 														 lineStatus,
       
  2535 														 expectedLineStatus,
       
  2536 														 expectedStatus);
       
  2537 	
       
  2538 	expectedLineStatus = RCall::EStatusConnected;	
       
  2539 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus, lineStatus);	
       
  2540 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  2541 														 notifyStatusChangeStatus,
       
  2542 														 lineStatus,
       
  2543 														 expectedLineStatus,
       
  2544 														 expectedStatus);
       
  2545 	
       
  2546 	// Check RLine::GetStatus returns EStatusConnected
       
  2547 	ASSERT_EQUALS(voiceLine.GetStatus(lineStatus), KErrNone,  
       
  2548 			_L("RLine::GetStatus returned an error"));
       
  2549 	ASSERT_EQUALS(lineStatus, RCall::EStatusConnected,  
       
  2550 			_L("RLine::GetStatus did not set line status to EStatusConnected as expected"));
       
  2551 
       
  2552 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  2553 	RMobileCall::TMobileCallStatus expectedMobileLineStatus = RMobileCall::EStatusDialling;
       
  2554 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  2555 																		notifyMobileLineChangeStatus,
       
  2556 																		mobileLineStatus,
       
  2557 																		expectedMobileLineStatus,
       
  2558 																		expectedStatus);
       
  2559 
       
  2560 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  2561 	expectedMobileLineStatus = RMobileCall::EStatusConnecting;
       
  2562 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  2563 																		notifyMobileLineChangeStatus,
       
  2564 																		mobileLineStatus,
       
  2565 																		expectedMobileLineStatus,
       
  2566 																		expectedStatus);
       
  2567 
       
  2568 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  2569 	expectedMobileLineStatus = RMobileCall::EStatusConnected;
       
  2570 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  2571 																		notifyMobileLineChangeStatus,
       
  2572 																		mobileLineStatus,
       
  2573 																		expectedMobileLineStatus,
       
  2574 																		expectedStatus);	
       
  2575 
       
  2576 	// Check RMobileLine::GetMobileLineStatus returns EStatusConnected
       
  2577 	ASSERT_EQUALS(voiceLine.GetMobileLineStatus(mobileLineStatus), KErrNone,  
       
  2578 			_L("RMobileLine::GetMobileLineStatus returned an error"));
       
  2579 	ASSERT_EQUALS(mobileLineStatus, RMobileCall::EStatusConnected,  
       
  2580 			_L("RMobileLine::GetMobileLineStatus did not set status to EStatusConnected"));
       
  2581 	
       
  2582 	// ===  Check call status ===
       
  2583 	
       
  2584 	// Check RCall::NotifyStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  2585 	RCall::TStatus expectedCallStatus = RCall::EStatusDialling;
       
  2586 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  2587 														 notifyCallStatusChangeStatus,
       
  2588 														 callStatus,
       
  2589 														 expectedCallStatus,
       
  2590 														 expectedStatus);
       
  2591 	
       
  2592 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  2593 	expectedCallStatus = RCall::EStatusConnecting;
       
  2594 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  2595 														 notifyCallStatusChangeStatus,
       
  2596 														 callStatus,
       
  2597 														 expectedCallStatus,
       
  2598 														 expectedStatus);
       
  2599 
       
  2600 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  2601 	expectedCallStatus = RCall::EStatusConnected;
       
  2602 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  2603 														 notifyCallStatusChangeStatus,
       
  2604 														 callStatus,
       
  2605 														 expectedCallStatus,
       
  2606 														 expectedStatus);		
       
  2607 								 												 
       
  2608 	// Check RCall::GetStatus returns EStatusConnected.
       
  2609 	ASSERT_EQUALS(voiceLine.GetStatus(callStatus), KErrNone,  
       
  2610 			_L("RLine::GetStatus returned an error"));
       
  2611 	ASSERT_EQUALS(callStatus, RCall::EStatusConnected,  
       
  2612 			_L("RLine::GetStatus did not return EStatusConnected as expected"));
       
  2613 
       
  2614 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  2615 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusDialling;
       
  2616 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  2617 																		notifyMobileCallChangeStatus,
       
  2618 																		mobileCallStatus,
       
  2619 																		expectedMobileCallStatus,
       
  2620 																		expectedStatus);
       
  2621 	
       
  2622 	expectedMobileCallStatus = RMobileCall::EStatusConnecting;
       
  2623 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);	
       
  2624 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  2625 																		notifyMobileCallChangeStatus,
       
  2626 																		mobileCallStatus,
       
  2627 																		expectedMobileCallStatus,
       
  2628 																		expectedStatus);
       
  2629 
       
  2630 	expectedMobileCallStatus = RMobileCall::EStatusConnected;
       
  2631 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);	
       
  2632 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  2633 																		notifyMobileCallChangeStatus,
       
  2634 																		mobileCallStatus,
       
  2635 																		expectedMobileCallStatus,
       
  2636 																		expectedStatus);
       
  2637 																	
       
  2638 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusConnected.
       
  2639 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  2640 			_L("RMobileCall::GetMobileCallStatus returned an error"));
       
  2641 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected,  
       
  2642 			_L("RMobileCall::GetMobileCallStatus did not set call status EStatusConnected as expected"));
       
  2643 	
       
  2644 	// ===  Get call parameters. ===
       
  2645 	RMobileCall::TMobileCallParamsV1 checkParams;
       
  2646 	RMobileCall::TMobileCallParamsV1Pckg checkParamsPkg(checkParams);
       
  2647 	call1.GetCallParams(checkParamsPkg);
       
  2648 	
       
  2649 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iSpeakerControl as that used for Dial.
       
  2650 	ASSERT_EQUALS(checkParams.iSpeakerControl,  mobileCallParams.iSpeakerControl,  
       
  2651 			_L("RCall::GetCallParams did not return the same iSpeakerControl as that used for Dial"));
       
  2652 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iSpeakerVolume as that used for Dial.
       
  2653 	ASSERT_EQUALS(checkParams.iSpeakerVolume, mobileCallParams.iSpeakerVolume,  
       
  2654 			_L("RCall::GetCallParams did not return the same iSpeakerVolume as that used for Dial"));
       
  2655 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iInterval as that used for Dial.
       
  2656 	ASSERT_EQUALS(checkParams.iInterval, mobileCallParams.iInterval,  
       
  2657 			_L("RCall::GetCallParams did not return the same iInterval as that used for Dial"));
       
  2658 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iWaitForDialTone as that used for Dial.
       
  2659 	ASSERT_EQUALS(checkParams.iWaitForDialTone, mobileCallParams.iWaitForDialTone,  
       
  2660 			_L("RCall::GetCallParams did not return the same iWaitForDialTone as that used for Dial"));
       
  2661 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iIdRestrict as that used for Dial.
       
  2662 	ASSERT_EQUALS(checkParams.iIdRestrict, mobileCallParams.iIdRestrict,  
       
  2663 			_L("RCall::GetCallParams did not return the same iIdRestrict as that used for Dial"));
       
  2664 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iCug.iExplicitInvoke as that used for Dial.
       
  2665 	ASSERT_EQUALS(checkParams.iCug.iExplicitInvoke, mobileCallParams.iCug.iExplicitInvoke,  
       
  2666 			_L("RCall::GetCallParams did not return the same iCug.iExplicitInvoke as that used for Dial"));
       
  2667 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iCug.iCugIndex as that used for Dial.
       
  2668 	ASSERT_EQUALS(checkParams.iCug.iCugIndex, mobileCallParams.iCug.iCugIndex,  
       
  2669 			_L("RCall::GetCallParams did not return the same iCug.iCugIndex as that used for Dial"));
       
  2670 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iCug.iSuppressPrefCug as that used for Dial.
       
  2671 	ASSERT_EQUALS(checkParams.iCug.iSuppressPrefCug, mobileCallParams.iCug.iSuppressPrefCug,  
       
  2672 			_L("RCall::GetCallParams did not return the same iCug.iSuppressPrefCug as that used for Dial"));
       
  2673 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iCug.iSuppressOA as that used for Dial.
       
  2674 	ASSERT_EQUALS(checkParams.iCug.iSuppressOA, mobileCallParams.iCug.iSuppressOA,  
       
  2675 			_L("RCall::GetCallParams did not return the same iCug.iSuppressOA as that used for Dial"));
       
  2676 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iAutoRedial as that used for Dial.
       
  2677 	ASSERT_EQUALS(checkParams.iAutoRedial, mobileCallParams.iAutoRedial,  
       
  2678 			_L("RCall::GetCallParams did not return the same iAutoRedial as that used for Dial"));
       
  2679 
       
  2680 	//------------ Post Notifiers ----------------------------
       
  2681 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  2682 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);	
       
  2683 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  2684 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);	
       
  2685 
       
  2686 	// Hang up call. 
       
  2687 	TCoreEtelRequestStatus<RCall> hangUpStatus (call1,&RCall::HangUpCancel);	
       
  2688 	CleanupStack::PushL(hangUpStatus);
       
  2689 	call1.HangUp(hangUpStatus);
       
  2690 	ASSERT_EQUALS(WaitForRequestWithTimeOut(hangUpStatus, ETimeMedium), KErrNone,  
       
  2691 			_L("RCall::HangUp timed-out"));
       
  2692 	ASSERT_EQUALS(hangUpStatus.Int(), KErrNone,  
       
  2693 			_L("RCall::HangUp returned an error"));
       
  2694 
       
  2695 	// ===  Check call status ===
       
  2696 
       
  2697 	// Check RCall::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle
       
  2698 	expectedCallStatus = RCall::EStatusHangingUp;
       
  2699 	const TInt wantedStatus = KErrNone;
       
  2700 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  2701 														 notifyStatusChangeStatus,
       
  2702 														 callStatus,
       
  2703 														 expectedCallStatus,
       
  2704 														 wantedStatus);
       
  2705 	
       
  2706 	call1.NotifyStatusChange(notifyStatusChangeStatus,callStatus);
       
  2707 	expectedCallStatus = RCall::EStatusIdle;
       
  2708 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  2709 													 notifyStatusChangeStatus,
       
  2710 													 callStatus,
       
  2711 													 expectedCallStatus,
       
  2712 													 wantedStatus);
       
  2713 	// Check RCall::GetStatus returns EStatusIdle.
       
  2714 	ASSERT_EQUALS(call1.GetStatus(callStatus),KErrNone,  
       
  2715 			_L("RCall::GetStatus returned an error"));
       
  2716 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle,  
       
  2717 			_L("RCall::GetStatus returned an unexpected call status"));
       
  2718 
       
  2719 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDisconnecting -> EStatusIdle
       
  2720 	expectedMobileCallStatus = RMobileCall::EStatusDisconnecting;
       
  2721 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  2722 															notifyMobileCallChangeStatus,
       
  2723 															mobileCallStatus,
       
  2724 															expectedMobileCallStatus,
       
  2725 															wantedStatus);
       
  2726 															
       
  2727 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  2728 	expectedMobileCallStatus = RMobileCall::EStatusIdle;
       
  2729 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  2730 															notifyMobileCallChangeStatus,
       
  2731 															mobileCallStatus,
       
  2732 															expectedMobileCallStatus,
       
  2733 															wantedStatus);
       
  2734 															
       
  2735 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
  2736 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  2737 			_L("RMobileCall::GetMobileStatus returned an error"));
       
  2738 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle,  
       
  2739 			_L("RMobileCall::GetMobileStatus did not return a status EStatusIdle"));
       
  2740 
       
  2741 	// ===  Check line status ===
       
  2742 
       
  2743 	// Check RLine::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle
       
  2744 	expectedLineStatus = RCall::EStatusHangingUp;
       
  2745 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  2746 														 notifyStatusChangeStatus,
       
  2747 														 lineStatus,
       
  2748 														 expectedLineStatus,
       
  2749 														 expectedStatus);
       
  2750 														 
       
  2751 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  2752 	expectedLineStatus = RCall::EStatusIdle;
       
  2753 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  2754 														 notifyStatusChangeStatus,
       
  2755 														 lineStatus,
       
  2756 														 expectedLineStatus,
       
  2757 														 expectedStatus);
       
  2758 														 
       
  2759 	// Check RLine::GetStatus returns EStatusIdle
       
  2760 	ASSERT_EQUALS(voiceLine.GetStatus(lineStatus), KErrNone,  
       
  2761 			_L("RLine::GetStatus returned an error"));
       
  2762 	ASSERT_EQUALS(lineStatus, RCall::EStatusIdle,  
       
  2763 			_L("RLine::GetStatus did not return EStatusIdle as expected"));
       
  2764 
       
  2765 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusDisconnecting -> EStatusIdle
       
  2766 	expectedMobileLineStatus = RMobileCall::EStatusDisconnecting;
       
  2767 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  2768 																		notifyMobileLineChangeStatus,
       
  2769 																		mobileLineStatus,
       
  2770 																		expectedMobileLineStatus,
       
  2771 																		expectedStatus);
       
  2772 
       
  2773 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  2774 	expectedMobileLineStatus = RMobileCall::EStatusIdle;
       
  2775 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  2776 																		notifyMobileLineChangeStatus,
       
  2777 																		mobileLineStatus,
       
  2778 																		expectedMobileLineStatus,
       
  2779 																		expectedStatus);
       
  2780 
       
  2781 	// Check RMobileLine::GetMobileLineStatus returns EStatusIdle
       
  2782 	ASSERT_EQUALS(voiceLine.GetMobileLineStatus(mobileLineStatus), KErrNone,  
       
  2783 			_L("RMobileLine::GetMobileLineStatus returned an error"));
       
  2784 	ASSERT_EQUALS(mobileLineStatus, RMobileCall::EStatusIdle,  
       
  2785 			_L("RMobileLine::GetMobileLineStatus did not set the status to EStatusIdle"));
       
  2786 
       
  2787 	
       
  2788 	////////////////////////////////////////////////////////////////
       
  2789 	// TEST END
       
  2790 	////////////////////////////////////////////////////////////////
       
  2791 
       
  2792     StartCleanup();
       
  2793 	
       
  2794 	// Pop
       
  2795 	// notifyCallStatusChangeStatus
       
  2796 	// notifyMobileCallChangeStatus
       
  2797 	// notifyStatusChangeStatus
       
  2798 	// notifyMobileLineChangeStatus
       
  2799     // dialStatus
       
  2800 	// hangUpStatus
       
  2801 	CleanupStack::PopAndDestroy(6,&notifyCallStatusChangeStatus);	
       
  2802 	
       
  2803 	return TestStepResult();
       
  2804 	}
       
  2805 
       
  2806 TPtrC CCTSYIntegrationTestCallControl0010::GetTestStepName()
       
  2807 /**
       
  2808  * @return The test step name.
       
  2809  */
       
  2810 	{
       
  2811 	return  _L("CCTSYIntegrationTestCallControl0010");
       
  2812 	}
       
  2813 
       
  2814 
       
  2815 
       
  2816 CCTSYIntegrationTestCallControl0011::CCTSYIntegrationTestCallControl0011(CEtelSessionMgr& aEtelSessionMgr)
       
  2817 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
  2818 /**
       
  2819  * Constructor.
       
  2820  */
       
  2821 	{
       
  2822 	SetTestStepName(CCTSYIntegrationTestCallControl0011::GetTestStepName());
       
  2823 	}
       
  2824 
       
  2825 CCTSYIntegrationTestCallControl0011::~CCTSYIntegrationTestCallControl0011()
       
  2826 /**
       
  2827  * Destructor.
       
  2828  */
       
  2829 	{
       
  2830 	}
       
  2831 
       
  2832 TVerdict CCTSYIntegrationTestCallControl0011::doTestStepL()
       
  2833 /**
       
  2834  * @SYMTestCaseID BA-CTSY-INT-CCON-0011
       
  2835  * @SYMFssID BA/CTSY/CCON-0011
       
  2836  * @SYMTestCaseDesc Dial and hang up a call specifying valid call parameters 03.
       
  2837  * @SYMTestPriority High
       
  2838  * @SYMTestActions RMobileCall::NotifyMobileCallStatusChange, RCall::NotifyStatusChange, RLine::NotifyStatusChange, RMobileLine::GetMobileLineStatus, RMobileLine::NotifyMobileLineStatusChange, RLine::GetStatus, RMobileCall::GetMobileCallStatus, RCall::GetCallParams, RCall::GetStatus, RCall::GetCallParams, RCall::GetStatus, RCall::HangUp
       
  2839  * @SYMTestExpectedResults Pass - Call connects and call parameters are correct.
       
  2840  * @SYMTestType CIT
       
  2841  * @SYMTestCaseDependencies live/automatic
       
  2842  *
       
  2843  * Reason for test: Verify call and line statuses and call params are correct.
       
  2844  *
       
  2845  * @return - TVerdict code
       
  2846  */
       
  2847 	{
       
  2848 
       
  2849 	////////////////////////////////////////////////////////////////
       
  2850 	// SET UP
       
  2851 	////////////////////////////////////////////////////////////////
       
  2852 
       
  2853 	
       
  2854 	// Check phone supports KCapsVoice
       
  2855 	// Get Voice line 1 
       
  2856 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
  2857 	// Get call 1 
       
  2858 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
  2859 
       
  2860 	RLine::TCaps lineCaps; 
       
  2861 	CHECK_EQUALS_L(voiceLine.GetCaps(lineCaps), KErrNone,  
       
  2862 			_L("RMobileLine::GetCaps returned an error"));
       
  2863 	CHECK_BITS_SET_L(lineCaps.iFlags, RLine::KCapsVoice, KNoUnwantedBits,  
       
  2864 			_L("RLine::GetCaps returned wrong caps"));
       
  2865 
       
  2866 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
  2867 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
  2868 	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
  2869 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
  2870 
       
  2871 	////////////////////////////////////////////////////////////////
       
  2872 	// SET UP END
       
  2873 	////////////////////////////////////////////////////////////////
       
  2874 	
       
  2875 	StartTest();
       
  2876 	
       
  2877 	////////////////////////////////////////////////////////////////
       
  2878 	// TEST START
       
  2879 	////////////////////////////////////////////////////////////////
       
  2880 	
       
  2881 	
       
  2882 	// Populate RMobileCall::TMobileCallParamsV1 with  
       
  2883 	RMobileCall::TMobileCallParamsV1 mobileCallParams;
       
  2884 	RMobileCall::TMobileCallParamsV1Pckg mobileCallParamsPkg(mobileCallParams);
       
  2885 	// ?iSpeakerControl = EMonitorSpeakerControlUnknown 
       
  2886 	mobileCallParams.iSpeakerControl = RCall::EMonitorSpeakerControlUnknown;
       
  2887 	// ?iSpeakerVolume = EMonitorSpeakerVolumeUnknown 
       
  2888 	mobileCallParams.iSpeakerVolume = RCall::EMonitorSpeakerVolumeUnknown;
       
  2889 	// ?iInterval = 0x03 
       
  2890 	mobileCallParams.iInterval = 0x03;
       
  2891 	// ?iWaitForDialTone = EDialToneWait 
       
  2892 	mobileCallParams.iWaitForDialTone = RCall::EDialToneWait;
       
  2893 	// ?iIdRestrict = EDontSendMyId 
       
  2894 	mobileCallParams.iIdRestrict = RMobileCall::EDontSendMyId;
       
  2895 	// ?iExplicitInvoke = TRUE 
       
  2896 	mobileCallParams.iCug.iExplicitInvoke = TRUE;
       
  2897 	// ?iCugIndex = 0x9c40 
       
  2898 	mobileCallParams.iCug.iCugIndex = 0x9c40 ;
       
  2899 	// ?iSuppressOA = FALSE 
       
  2900 	mobileCallParams.iCug.iSuppressOA = FALSE;
       
  2901 	// ?iSuppressPrefCug = TRUE 
       
  2902 	mobileCallParams.iCug.iSuppressPrefCug = TRUE;
       
  2903 	// ?iAutoRedial = TRUE 
       
  2904 	mobileCallParams.iAutoRedial = TRUE;
       
  2905 
       
  2906 
       
  2907 
       
  2908 	//=========Post Notifiers===============
       
  2909 		
       
  2910 	// post notifier for RCall::NotifyStatusChange
       
  2911 	TCoreEtelRequestStatus<RCall> notifyCallStatusChangeStatus (call1,&RCall::NotifyStatusChangeCancel);
       
  2912 	CleanupStack::PushL(notifyCallStatusChangeStatus);
       
  2913 	RCall::TStatus callStatus;
       
  2914 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  2915 
       
  2916 	// post a notifier for RMobileCall::NotifyMobileCallStatusChange
       
  2917 	TExtEtelRequestStatus notifyMobileCallChangeStatus(call1, EMobileCallNotifyMobileCallStatusChange);
       
  2918 	CleanupStack::PushL(notifyMobileCallChangeStatus);
       
  2919 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
  2920 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  2921 
       
  2922 	// post a notifier for RLine::NotifyStatusChange
       
  2923 	TCoreEtelRequestStatus<RLine> notifyStatusChangeStatus (voiceLine,&RLine::NotifyStatusChangeCancel);
       
  2924 	CleanupStack::PushL(notifyStatusChangeStatus);
       
  2925 	RCall::TStatus lineStatus;
       
  2926 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  2927 
       
  2928 	// post a notifier for RMobileLine::NotifyMobileLineStatusChange
       
  2929 	TExtEtelRequestStatus notifyMobileLineChangeStatus(voiceLine, EMobileLineNotifyMobileLineStatusChange);
       
  2930 	CleanupStack::PushL(notifyMobileLineChangeStatus);
       
  2931 	RMobileCall::TMobileCallStatus mobileLineStatus;
       
  2932 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  2933 		
       
  2934 	// Dial a number which answers using call params. 
       
  2935 	TCoreEtelRequestStatus<RMobileCall> dialStatus(call1, &RCall::DialCancel);
       
  2936 	CleanupStack::PushL(dialStatus);		
       
  2937 	TPtrC number;
       
  2938 	ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number) != EFalse,  
       
  2939 			_L("GetStringFromConfig did not complete as expected"));
       
  2940 	call1.Dial(dialStatus,mobileCallParamsPkg, number);
       
  2941 	// Wait for completion. 
       
  2942 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeMedium), KErrNone,  
       
  2943 			_L("RCall::Dial timed-out"));
       
  2944 	ASSERT_EQUALS(dialStatus.Int(), KErrNone,  
       
  2945 			_L("RCall::Dial returned an error"));
       
  2946 
       
  2947 	// ===  Check line status ===
       
  2948 	TInt expectedStatus = KErrNone;
       
  2949 	
       
  2950 	// Check RLine::NotifyStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  2951 	RCall::TStatus expectedLineStatus = RCall::EStatusDialling;
       
  2952 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  2953 														 notifyStatusChangeStatus,
       
  2954 														 lineStatus,
       
  2955 														 expectedLineStatus,
       
  2956 														 expectedStatus);
       
  2957 
       
  2958 	expectedLineStatus = RCall::EStatusConnecting;	
       
  2959 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus, lineStatus);
       
  2960 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  2961 														 notifyStatusChangeStatus,
       
  2962 														 lineStatus,
       
  2963 														 expectedLineStatus,
       
  2964 														 expectedStatus);
       
  2965 	
       
  2966 	expectedLineStatus = RCall::EStatusConnected;	
       
  2967 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus, lineStatus);	
       
  2968 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  2969 														 notifyStatusChangeStatus,
       
  2970 														 lineStatus,
       
  2971 														 expectedLineStatus,
       
  2972 														 expectedStatus);
       
  2973 	
       
  2974 	// Check RLine::GetStatus returns EStatusConnected
       
  2975 	ASSERT_EQUALS(voiceLine.GetStatus(lineStatus), KErrNone,  
       
  2976 			_L("RLine::GetStatus returned an error"));
       
  2977 	ASSERT_EQUALS(lineStatus, RCall::EStatusConnected,  
       
  2978 			_L("RLine::GetStatus did not set line status to EStatusConnected as expected"));
       
  2979 
       
  2980 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  2981 	RMobileCall::TMobileCallStatus expectedMobileLineStatus = RMobileCall::EStatusDialling;
       
  2982 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  2983 																		notifyMobileLineChangeStatus,
       
  2984 																		mobileLineStatus,
       
  2985 																		expectedMobileLineStatus,
       
  2986 																		expectedStatus);
       
  2987 
       
  2988 
       
  2989 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  2990 	expectedMobileLineStatus = RMobileCall::EStatusConnecting;
       
  2991 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  2992 																		notifyMobileLineChangeStatus,
       
  2993 																		mobileLineStatus,
       
  2994 																		expectedMobileLineStatus,
       
  2995 																		expectedStatus);
       
  2996 
       
  2997 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  2998 	expectedMobileLineStatus = RMobileCall::EStatusConnected;
       
  2999 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  3000 																		notifyMobileLineChangeStatus,
       
  3001 																		mobileLineStatus,
       
  3002 																		expectedMobileLineStatus,
       
  3003 																		expectedStatus);	
       
  3004 
       
  3005 	// Check RMobileLine::GetMobileLineStatus returns EStatusConnected
       
  3006 	ASSERT_EQUALS(voiceLine.GetMobileLineStatus(mobileLineStatus), KErrNone,  
       
  3007 			_L("RMobileLine::GetMobileLineStatus returned an error"));
       
  3008 	ASSERT_EQUALS(mobileLineStatus, RMobileCall::EStatusConnected,  
       
  3009 			_L("RMobileLine::GetMobileLineStatus did not set status to EStatusConnected"));
       
  3010 	
       
  3011 	// ===  Check call status ===
       
  3012 	
       
  3013 	// Check RCall::NotifyStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  3014 	RCall::TStatus expectedCallStatus = RCall::EStatusDialling;
       
  3015 
       
  3016 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  3017 														 notifyCallStatusChangeStatus,
       
  3018 														 callStatus,
       
  3019 														 expectedCallStatus,
       
  3020 														 expectedStatus);
       
  3021 	
       
  3022 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  3023 	expectedCallStatus = RCall::EStatusConnecting;
       
  3024 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  3025 														 notifyCallStatusChangeStatus,
       
  3026 														 callStatus,
       
  3027 														 expectedCallStatus,
       
  3028 														 expectedStatus);
       
  3029 
       
  3030 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  3031 	expectedCallStatus = RCall::EStatusConnected;
       
  3032 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  3033 														 notifyCallStatusChangeStatus,
       
  3034 														 callStatus,
       
  3035 														 expectedCallStatus,
       
  3036 														 expectedStatus);		
       
  3037 								 												 
       
  3038 	// Check RCall::GetStatus returns EStatusConnected.
       
  3039 	ASSERT_EQUALS(voiceLine.GetStatus(callStatus), KErrNone,  
       
  3040 			_L("RLine::GetStatus returned an error"));
       
  3041 	ASSERT_EQUALS(callStatus, RCall::EStatusConnected,  
       
  3042 			_L("RLine::GetStatus did not return EStatusConnected as expected"));
       
  3043 
       
  3044 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  3045 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusDialling;
       
  3046 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  3047 																		notifyMobileCallChangeStatus,
       
  3048 																		mobileCallStatus,
       
  3049 																		expectedMobileCallStatus,
       
  3050 																		expectedStatus);
       
  3051 	
       
  3052 	expectedMobileCallStatus = RMobileCall::EStatusConnecting;
       
  3053 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);	
       
  3054 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  3055 																		notifyMobileCallChangeStatus,
       
  3056 																		mobileCallStatus,
       
  3057 																		expectedMobileCallStatus,
       
  3058 																		expectedStatus);
       
  3059 
       
  3060 	expectedMobileCallStatus = RMobileCall::EStatusConnected;
       
  3061 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);	
       
  3062 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  3063 																		notifyMobileCallChangeStatus,
       
  3064 																		mobileCallStatus,
       
  3065 																		expectedMobileCallStatus,
       
  3066 																		expectedStatus);
       
  3067 																	
       
  3068 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusConnected.
       
  3069 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  3070 			_L("RMobileCall::GetMobileCallStatus returned an error"));
       
  3071 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected,  
       
  3072 			_L("RMobileCall::GetMobileCallStatus did not set call status EStatusConnected as expected"));
       
  3073 
       
  3074 	// ===  Get call parameters. ===
       
  3075 	RMobileCall::TMobileCallParamsV1 checkParams;
       
  3076 	RMobileCall::TMobileCallParamsV1Pckg checkParamsPkg(checkParams);
       
  3077 	call1.GetCallParams(checkParamsPkg);
       
  3078 	
       
  3079 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iSpeakerControl as that used for Dial.
       
  3080 	ASSERT_EQUALS(checkParams.iSpeakerControl,  mobileCallParams.iSpeakerControl,  
       
  3081 			_L("RCall::GetCallParams did not return the same iSpeakerControl as that used for Dial"));
       
  3082 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iSpeakerVolume as that used for Dial.
       
  3083 	ASSERT_EQUALS(checkParams.iSpeakerVolume, mobileCallParams.iSpeakerVolume,  
       
  3084 			_L("RCall::GetCallParams did not return the same iSpeakerVolume as that used for Dial"));
       
  3085 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iInterval as that used for Dial.
       
  3086 	ASSERT_EQUALS(checkParams.iInterval, mobileCallParams.iInterval,  
       
  3087 			_L("RCall::GetCallParams did not return the same iInterval as that used for Dial"));
       
  3088 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iWaitForDialTone as that used for Dial.
       
  3089 	ASSERT_EQUALS(checkParams.iWaitForDialTone, mobileCallParams.iWaitForDialTone,  
       
  3090 			_L("RCall::GetCallParams did not return the same iWaitForDialTone as that used for Dial"));
       
  3091 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iIdRestrict as that used for Dial.
       
  3092 	ASSERT_EQUALS(checkParams.iIdRestrict, mobileCallParams.iIdRestrict,  
       
  3093 			_L("RCall::GetCallParams did not return the same iIdRestrict as that used for Dial"));
       
  3094 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iCug.iExplicitInvoke as that used for Dial.
       
  3095 	ASSERT_EQUALS(checkParams.iCug.iExplicitInvoke, mobileCallParams.iCug.iExplicitInvoke,  
       
  3096 			_L("RCall::GetCallParams did not return the same iCug.iExplicitInvoke as that used for Dial"));
       
  3097 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iCug.iCugIndex as that used for Dial.
       
  3098 	ASSERT_EQUALS(checkParams.iCug.iCugIndex, mobileCallParams.iCug.iCugIndex,  
       
  3099 			_L("RCall::GetCallParams did not return the same iCug.iCugIndex as that used for Dial"));
       
  3100 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iCug.iSuppressPrefCug as that used for Dial.
       
  3101 	ASSERT_EQUALS(checkParams.iCug.iSuppressPrefCug, mobileCallParams.iCug.iSuppressPrefCug,  
       
  3102 			_L("RCall::GetCallParams did not return the same iCug.iSuppressPrefCug as that used for Dial"));
       
  3103 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iCug.iSuppressOA as that used for Dial.
       
  3104 	ASSERT_EQUALS(checkParams.iCug.iSuppressOA, mobileCallParams.iCug.iSuppressOA,  
       
  3105 			_L("RCall::GetCallParams did not return the same iCug.iSuppressOA as that used for Dial"));
       
  3106 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iAutoRedial as that used for Dial.
       
  3107 	ASSERT_EQUALS(checkParams.iAutoRedial, mobileCallParams.iAutoRedial,  
       
  3108 			_L("RCall::GetCallParams did not return the same iAutoRedial as that used for Dial"));
       
  3109 
       
  3110 	//------------ Post Notifiers ----------------------------
       
  3111 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  3112 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);	
       
  3113 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  3114 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);	
       
  3115 
       
  3116 	// Hang up call. 
       
  3117 	TCoreEtelRequestStatus<RCall> hangUpStatus (call1,&RCall::HangUpCancel);	
       
  3118 	CleanupStack::PushL(hangUpStatus);
       
  3119 	call1.HangUp(hangUpStatus);
       
  3120 	ASSERT_EQUALS(WaitForRequestWithTimeOut(hangUpStatus, ETimeMedium), KErrNone,  
       
  3121 			_L("RCall::HangUp timed-out"));
       
  3122 	ASSERT_EQUALS(hangUpStatus.Int(), KErrNone,  
       
  3123 			_L("RCall::HangUp returned an error"));
       
  3124 
       
  3125 	// ===  Check call status ===
       
  3126 	// Check RCall::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle
       
  3127 	expectedCallStatus = RCall::EStatusHangingUp;
       
  3128 	const TInt wantedStatus = KErrNone;
       
  3129 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  3130 														 notifyStatusChangeStatus,
       
  3131 														 callStatus,
       
  3132 														 expectedCallStatus,
       
  3133 														 wantedStatus);
       
  3134 	
       
  3135 	call1.NotifyStatusChange(notifyStatusChangeStatus,callStatus);
       
  3136 	expectedCallStatus = RCall::EStatusIdle;
       
  3137 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  3138 													 notifyStatusChangeStatus,
       
  3139 													 callStatus,
       
  3140 													 expectedCallStatus,
       
  3141 													 wantedStatus);
       
  3142 	// Check RCall::GetStatus returns EStatusIdle.
       
  3143 	ASSERT_EQUALS(call1.GetStatus(callStatus),KErrNone,  
       
  3144 			_L("RCall::GetStatus returned an error"));
       
  3145 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle,  
       
  3146 			_L("RCall::GetStatus returned an unexpected call status"));
       
  3147 
       
  3148 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDisconnecting -> EStatusIdle
       
  3149 	expectedMobileCallStatus = RMobileCall::EStatusDisconnecting;
       
  3150 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  3151 															notifyMobileCallChangeStatus,
       
  3152 															mobileCallStatus,
       
  3153 															expectedMobileCallStatus,
       
  3154 															wantedStatus);
       
  3155 															
       
  3156 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  3157 	expectedMobileCallStatus = RMobileCall::EStatusIdle;
       
  3158 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  3159 															notifyMobileCallChangeStatus,
       
  3160 															mobileCallStatus,
       
  3161 															expectedMobileCallStatus,
       
  3162 															wantedStatus);
       
  3163 															
       
  3164 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
  3165 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  3166 			_L("RMobileCall::GetMobileStatus returned an error"));
       
  3167 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle,  
       
  3168 			_L("RMobileCall::GetMobileStatus did not return a status EStatusIdle"));
       
  3169 
       
  3170 	// ===  Check line status ===
       
  3171 
       
  3172 	// Check RLine::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle
       
  3173 	expectedLineStatus = RCall::EStatusHangingUp;
       
  3174 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  3175 														 notifyStatusChangeStatus,
       
  3176 														 lineStatus,
       
  3177 														 expectedLineStatus,
       
  3178 														 expectedStatus);
       
  3179 														 
       
  3180 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  3181 	expectedLineStatus = RCall::EStatusIdle;
       
  3182 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  3183 														 notifyStatusChangeStatus,
       
  3184 														 lineStatus,
       
  3185 														 expectedLineStatus,
       
  3186 														 expectedStatus);
       
  3187 														 
       
  3188 	// Check RLine::GetStatus returns EStatusIdle
       
  3189 	ASSERT_EQUALS(voiceLine.GetStatus(lineStatus), KErrNone,  
       
  3190 			_L("RLine::GetStatus returned an error"));
       
  3191 	ASSERT_EQUALS(lineStatus, RCall::EStatusIdle,  
       
  3192 			_L("RLine::GetStatus did not return EStatusIdle as expected"));
       
  3193 
       
  3194 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusDisconnecting -> EStatusIdle
       
  3195 	expectedMobileLineStatus = RMobileCall::EStatusDisconnecting;
       
  3196 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  3197 																		notifyMobileLineChangeStatus,
       
  3198 																		mobileLineStatus,
       
  3199 																		expectedMobileLineStatus,
       
  3200 																		expectedStatus);
       
  3201 
       
  3202 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  3203 	expectedMobileLineStatus = RMobileCall::EStatusIdle;
       
  3204 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  3205 																		notifyMobileLineChangeStatus,
       
  3206 																		mobileLineStatus,
       
  3207 																		expectedMobileLineStatus,
       
  3208 																		expectedStatus);
       
  3209 
       
  3210 	// Check RMobileLine::GetMobileLineStatus returns EStatusIdle
       
  3211 	ASSERT_EQUALS(voiceLine.GetMobileLineStatus(mobileLineStatus), KErrNone,  
       
  3212 			_L("RMobileLine::GetMobileLineStatus returned an error"));
       
  3213 	ASSERT_EQUALS(mobileLineStatus, RMobileCall::EStatusIdle,  
       
  3214 			_L("RMobileLine::GetMobileLineStatus did not set the status to EStatusIdle"));
       
  3215 
       
  3216 	
       
  3217 	////////////////////////////////////////////////////////////////
       
  3218 	// TEST END
       
  3219 	////////////////////////////////////////////////////////////////
       
  3220 
       
  3221     StartCleanup();
       
  3222 	
       
  3223 	// Pop
       
  3224 	// notifyCallStatusChangeStatus
       
  3225 	// notifyMobileCallChangeStatus
       
  3226 	// notifyStatusChangeStatus
       
  3227 	// notifyMobileLineChangeStatus 
       
  3228     // dialStatus
       
  3229 	// hangUpStatus
       
  3230 	CleanupStack::PopAndDestroy(6,&notifyCallStatusChangeStatus);	
       
  3231 	
       
  3232 	return TestStepResult();
       
  3233 	}
       
  3234 
       
  3235 TPtrC CCTSYIntegrationTestCallControl0011::GetTestStepName()
       
  3236 /**
       
  3237  * @return The test step name.
       
  3238  */
       
  3239 	{
       
  3240 	return  _L("CCTSYIntegrationTestCallControl0011");
       
  3241 	}
       
  3242 
       
  3243 
       
  3244 
       
  3245 CCTSYIntegrationTestCallControl0012::CCTSYIntegrationTestCallControl0012(CEtelSessionMgr& aEtelSessionMgr)
       
  3246 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
  3247 /**
       
  3248  * Constructor.
       
  3249  */
       
  3250 	{
       
  3251 	SetTestStepName(CCTSYIntegrationTestCallControl0012::GetTestStepName());
       
  3252 	}
       
  3253 
       
  3254 CCTSYIntegrationTestCallControl0012::~CCTSYIntegrationTestCallControl0012()
       
  3255 /**
       
  3256  * Destructor.
       
  3257  */
       
  3258 	{
       
  3259 	}
       
  3260 
       
  3261 TVerdict CCTSYIntegrationTestCallControl0012::doTestStepL()
       
  3262 /**
       
  3263  * @SYMTestCaseID BA-CTSY-INT-CCON-0012
       
  3264  * @SYMFssID BA/CTSY/CCON-0012
       
  3265  * @SYMTestCaseDesc Dial and hang up a call specifying valid call parameters 04.
       
  3266  * @SYMTestPriority High
       
  3267  * @SYMTestActions RMobileCall::NotifyMobileCallStatusChange, RCall::NotifyStatusChange, RLine::NotifyStatusChange, RMobileLine::GetMobileLineStatus, RMobileLine::NotifyMobileLineStatusChange, RLine::GetStatus, RMobileCall::GetMobileCallStatus, RCall::GetCallParams, RCall::GetStatus, RCall::GetCallParams, RCall::GetStatus, RCall::HangUp
       
  3268  * @SYMTestExpectedResults Pass - Call connects and call parameters are correct.
       
  3269  * @SYMTestType CIT
       
  3270  * @SYMTestCaseDependencies live/automatic
       
  3271  *
       
  3272  * Reason for test: Verify call and line statuses and call params are correct.
       
  3273  *
       
  3274  * @return - TVerdict code
       
  3275  */
       
  3276 	{
       
  3277 
       
  3278 	////////////////////////////////////////////////////////////////
       
  3279 	// SET UP
       
  3280 	////////////////////////////////////////////////////////////////
       
  3281 
       
  3282 	
       
  3283 	// Check phone supports KCapsVoice
       
  3284 	// Get Voice line 1 
       
  3285 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
  3286 	// Get call 1 
       
  3287 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
  3288 
       
  3289 	RLine::TCaps lineCaps; 
       
  3290 	CHECK_EQUALS_L(voiceLine.GetCaps(lineCaps), KErrNone,  
       
  3291 			_L("RMobileLine::GetCaps returned an error"));
       
  3292 	CHECK_BITS_SET_L(lineCaps.iFlags, RLine::KCapsVoice, KNoUnwantedBits,  
       
  3293 			_L("RLine::GetCaps returned wrong caps"));
       
  3294 
       
  3295 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
  3296 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
  3297 	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
  3298 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
  3299 
       
  3300 	////////////////////////////////////////////////////////////////
       
  3301 	// SET UP END
       
  3302 	////////////////////////////////////////////////////////////////
       
  3303 	
       
  3304 	StartTest();
       
  3305 	
       
  3306 	////////////////////////////////////////////////////////////////
       
  3307 	// TEST START
       
  3308 	////////////////////////////////////////////////////////////////
       
  3309 	
       
  3310 	
       
  3311 	// Populate RMobileCall::TMobileCallParamsV1 with  
       
  3312 	RMobileCall::TMobileCallParamsV1 mobileCallParams;
       
  3313 	RMobileCall::TMobileCallParamsV1Pckg mobileCallParamsPkg(mobileCallParams);
       
  3314 
       
  3315 	// ?iSpeakerControl = EMonitorSpeakerControlOnExceptDuringDialling 
       
  3316 	mobileCallParams.iSpeakerControl = RCall::EMonitorSpeakerControlOnExceptDuringDialling;
       
  3317 	// ?iSpeakerVolume = EMonitorSpeakerVolumeUnknown 
       
  3318 	mobileCallParams.iSpeakerVolume = RCall::EMonitorSpeakerVolumeUnknown;
       
  3319 	// ?iInterval = 0x02 
       
  3320 	mobileCallParams.iInterval = 0x02;
       
  3321 	// ?iWaitForDialTone = EDialToneWait 
       
  3322 	mobileCallParams.iWaitForDialTone = RCall::EDialToneWait;
       
  3323 	// ?iIdRestrict = ESendMyId 
       
  3324 	mobileCallParams.iIdRestrict = RMobileCall::ESendMyId;	
       
  3325 	// ?iExplicitInvoke = FALSE 
       
  3326 	mobileCallParams.iCug.iExplicitInvoke = FALSE ;
       
  3327 	// ?iCugIndex = 0x00 
       
  3328 	mobileCallParams.iCug.iCugIndex = 0x0000;
       
  3329 	// ?iSuppressOA = FALSE 
       
  3330 	mobileCallParams.iCug.iSuppressOA = FALSE;
       
  3331 	// ?iSuppressPrefCug = FALSE 
       
  3332 	mobileCallParams.iCug.iSuppressPrefCug = FALSE;
       
  3333 	// ?iAutoRedial = FALSE 
       
  3334 	mobileCallParams.iAutoRedial = FALSE;
       
  3335 
       
  3336 	//=========Post Notifiers===============
       
  3337 		
       
  3338 	// post notifier for RCall::NotifyStatusChange
       
  3339 	TCoreEtelRequestStatus<RCall> notifyCallStatusChangeStatus (call1,&RCall::NotifyStatusChangeCancel);
       
  3340 	CleanupStack::PushL(notifyCallStatusChangeStatus);
       
  3341 	RCall::TStatus callStatus;
       
  3342 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  3343 
       
  3344 	// post a notifier for RMobileCall::NotifyMobileCallStatusChange
       
  3345 	TExtEtelRequestStatus notifyMobileCallChangeStatus(call1, EMobileCallNotifyMobileCallStatusChange);
       
  3346 	CleanupStack::PushL(notifyMobileCallChangeStatus);
       
  3347 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
  3348 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  3349 
       
  3350 	// post a notifier for RLine::NotifyStatusChange
       
  3351 	TCoreEtelRequestStatus<RLine> notifyStatusChangeStatus (voiceLine,&RLine::NotifyStatusChangeCancel);
       
  3352 	CleanupStack::PushL(notifyStatusChangeStatus);
       
  3353 	RCall::TStatus lineStatus;
       
  3354 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  3355 
       
  3356 	// post a notifier for RMobileLine::NotifyMobileLineStatusChange
       
  3357 	TExtEtelRequestStatus notifyMobileLineChangeStatus(voiceLine, EMobileLineNotifyMobileLineStatusChange);
       
  3358 	CleanupStack::PushL(notifyMobileLineChangeStatus);
       
  3359 	RMobileCall::TMobileCallStatus mobileLineStatus;
       
  3360 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  3361 		
       
  3362 	// Dial a number which answers using call params. 
       
  3363 	TCoreEtelRequestStatus<RMobileCall> dialStatus(call1, &RCall::DialCancel);
       
  3364 	CleanupStack::PushL(dialStatus);		
       
  3365 	TPtrC number;
       
  3366 	ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number) != EFalse,  
       
  3367 			_L("GetStringFromConfig did not complete as expected"));
       
  3368 	call1.Dial(dialStatus,mobileCallParamsPkg, number);
       
  3369 	// Wait for completion. 
       
  3370 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeMedium), KErrNone,  
       
  3371 			_L("RCall::Dial timed-out"));
       
  3372 	ASSERT_EQUALS(dialStatus.Int(), KErrNone,  
       
  3373 			_L("RCall::Dial returned an error"));
       
  3374 
       
  3375 	// ===  Check line status ===
       
  3376 
       
  3377 	TInt expectedStatus = KErrNone;
       
  3378 	
       
  3379 	// Check RLine::NotifyStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  3380 	RCall::TStatus expectedLineStatus = RCall::EStatusDialling;
       
  3381 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  3382 														 notifyStatusChangeStatus,
       
  3383 														 lineStatus,
       
  3384 														 expectedLineStatus,
       
  3385 														 expectedStatus);
       
  3386 
       
  3387 	expectedLineStatus = RCall::EStatusConnecting;	
       
  3388 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus, lineStatus);
       
  3389 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  3390 														 notifyStatusChangeStatus,
       
  3391 														 lineStatus,
       
  3392 														 expectedLineStatus,
       
  3393 														 expectedStatus);
       
  3394 	
       
  3395 	expectedLineStatus = RCall::EStatusConnected;	
       
  3396 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus, lineStatus);	
       
  3397 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  3398 														 notifyStatusChangeStatus,
       
  3399 														 lineStatus,
       
  3400 														 expectedLineStatus,
       
  3401 														 expectedStatus);
       
  3402 	
       
  3403 	// Check RLine::GetStatus returns EStatusConnected
       
  3404 	ASSERT_EQUALS(voiceLine.GetStatus(lineStatus), KErrNone,  
       
  3405 			_L("RLine::GetStatus returned an error"));
       
  3406 	ASSERT_EQUALS(lineStatus, RCall::EStatusConnected,  
       
  3407 			_L("RLine::GetStatus did not set line status to EStatusConnected as expected"));
       
  3408 
       
  3409 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  3410 	RMobileCall::TMobileCallStatus expectedMobileLineStatus = RMobileCall::EStatusDialling;
       
  3411 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  3412 																		notifyMobileLineChangeStatus,
       
  3413 																		mobileLineStatus,
       
  3414 																		expectedMobileLineStatus,
       
  3415 																		expectedStatus);
       
  3416 
       
  3417 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  3418 	expectedMobileLineStatus = RMobileCall::EStatusConnecting;
       
  3419 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  3420 																		notifyMobileLineChangeStatus,
       
  3421 																		mobileLineStatus,
       
  3422 																		expectedMobileLineStatus,
       
  3423 																		expectedStatus);
       
  3424 
       
  3425 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  3426 	expectedMobileLineStatus = RMobileCall::EStatusConnected;
       
  3427 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  3428 																		notifyMobileLineChangeStatus,
       
  3429 																		mobileLineStatus,
       
  3430 																		expectedMobileLineStatus,
       
  3431 																		expectedStatus);	
       
  3432 
       
  3433 	// Check RMobileLine::GetMobileLineStatus returns EStatusConnected
       
  3434 	ASSERT_EQUALS(voiceLine.GetMobileLineStatus(mobileLineStatus), KErrNone,  
       
  3435 			_L("RMobileLine::GetMobileLineStatus returned an error"));
       
  3436 	ASSERT_EQUALS(mobileLineStatus, RMobileCall::EStatusConnected,  
       
  3437 			_L("RMobileLine::GetMobileLineStatus did not set status to EStatusConnected"));
       
  3438 	
       
  3439 	// ===  Check call status ===
       
  3440 	
       
  3441 	// Check RCall::NotifyStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  3442 	RCall::TStatus expectedCallStatus = RCall::EStatusDialling;
       
  3443 
       
  3444 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  3445 														 notifyCallStatusChangeStatus,
       
  3446 														 callStatus,
       
  3447 														 expectedCallStatus,
       
  3448 														 expectedStatus);
       
  3449 	
       
  3450 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  3451 	expectedCallStatus = RCall::EStatusConnecting;
       
  3452 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  3453 														 notifyCallStatusChangeStatus,
       
  3454 														 callStatus,
       
  3455 														 expectedCallStatus,
       
  3456 														 expectedStatus);
       
  3457 
       
  3458 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  3459 	expectedCallStatus = RCall::EStatusConnected;
       
  3460 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  3461 														 notifyCallStatusChangeStatus,
       
  3462 														 callStatus,
       
  3463 														 expectedCallStatus,
       
  3464 														 expectedStatus);		
       
  3465 								 												 
       
  3466 	// Check RCall::GetStatus returns EStatusConnected.
       
  3467 	ASSERT_EQUALS(voiceLine.GetStatus(callStatus), KErrNone,  
       
  3468 			_L("RLine::GetStatus returned an error"));
       
  3469 	ASSERT_EQUALS(callStatus, RCall::EStatusConnected,  
       
  3470 			_L("RLine::GetStatus did not return EStatusConnected as expected"));
       
  3471 
       
  3472 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  3473 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusDialling;
       
  3474 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  3475 																		notifyMobileCallChangeStatus,
       
  3476 																		mobileCallStatus,
       
  3477 																		expectedMobileCallStatus,
       
  3478 																		expectedStatus);
       
  3479 	
       
  3480 	expectedMobileCallStatus = RMobileCall::EStatusConnecting;
       
  3481 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);	
       
  3482 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  3483 																		notifyMobileCallChangeStatus,
       
  3484 																		mobileCallStatus,
       
  3485 																		expectedMobileCallStatus,
       
  3486 																		expectedStatus);
       
  3487 
       
  3488 	expectedMobileCallStatus = RMobileCall::EStatusConnected;
       
  3489 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);	
       
  3490 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  3491 																		notifyMobileCallChangeStatus,
       
  3492 																		mobileCallStatus,
       
  3493 																		expectedMobileCallStatus,
       
  3494 																		expectedStatus);
       
  3495 																	
       
  3496 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusConnected.
       
  3497 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  3498 			_L("RMobileCall::GetMobileCallStatus returned an error"));
       
  3499 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected,  
       
  3500 			_L("RMobileCall::GetMobileCallStatus did not set call status EStatusConnected as expected"));
       
  3501 
       
  3502 	// ===  Get call parameters. ===
       
  3503 	RMobileCall::TMobileCallParamsV1 checkParams;
       
  3504 	RMobileCall::TMobileCallParamsV1Pckg checkParamsPkg(checkParams);
       
  3505 	call1.GetCallParams(checkParamsPkg);
       
  3506 	
       
  3507 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iSpeakerControl as that used for Dial.
       
  3508 	ASSERT_EQUALS(checkParams.iSpeakerControl,  mobileCallParams.iSpeakerControl,  
       
  3509 			_L("RCall::GetCallParams did not return the same iSpeakerControl as that used for Dial"));
       
  3510 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iSpeakerVolume as that used for Dial.
       
  3511 	ASSERT_EQUALS(checkParams.iSpeakerVolume, mobileCallParams.iSpeakerVolume,  
       
  3512 			_L("RCall::GetCallParams did not return the same iSpeakerVolume as that used for Dial"));
       
  3513 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iInterval as that used for Dial.
       
  3514 	ASSERT_EQUALS(checkParams.iInterval, mobileCallParams.iInterval,  
       
  3515 			_L("RCall::GetCallParams did not return the same iInterval as that used for Dial"));
       
  3516 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iWaitForDialTone as that used for Dial.
       
  3517 	ASSERT_EQUALS(checkParams.iWaitForDialTone, mobileCallParams.iWaitForDialTone,  
       
  3518 			_L("RCall::GetCallParams did not return the same iWaitForDialTone as that used for Dial"));
       
  3519 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iIdRestrict as that used for Dial.
       
  3520 	ASSERT_EQUALS(checkParams.iIdRestrict, mobileCallParams.iIdRestrict,  
       
  3521 			_L("RCall::GetCallParams did not return the same iIdRestrict as that used for Dial"));
       
  3522 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iCug.iExplicitInvoke as that used for Dial.
       
  3523 	ASSERT_EQUALS(checkParams.iCug.iExplicitInvoke, mobileCallParams.iCug.iExplicitInvoke,  
       
  3524 			_L("RCall::GetCallParams did not return the same iCug.iExplicitInvoke as that used for Dial"));
       
  3525 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iCug.iCugIndex as that used for Dial.
       
  3526 	ASSERT_EQUALS(checkParams.iCug.iCugIndex, mobileCallParams.iCug.iCugIndex,  
       
  3527 			_L("RCall::GetCallParams did not return the same iCug.iCugIndex as that used for Dial"));
       
  3528 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iCug.iSuppressPrefCug as that used for Dial.
       
  3529 	ASSERT_EQUALS(checkParams.iCug.iSuppressPrefCug, mobileCallParams.iCug.iSuppressPrefCug,  
       
  3530 			_L("RCall::GetCallParams did not return the same iCug.iSuppressPrefCug as that used for Dial"));
       
  3531 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iCug.iSuppressOA as that used for Dial.
       
  3532 	ASSERT_EQUALS(checkParams.iCug.iSuppressOA, mobileCallParams.iCug.iSuppressOA,  
       
  3533 			_L("RCall::GetCallParams did not return the same iCug.iSuppressOA as that used for Dial"));
       
  3534 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iAutoRedial as that used for Dial.
       
  3535 	ASSERT_EQUALS(checkParams.iAutoRedial, mobileCallParams.iAutoRedial,  
       
  3536 			_L("RCall::GetCallParams did not return the same iAutoRedial as that used for Dial"));
       
  3537 
       
  3538 	//------------ Post Notifiers ----------------------------
       
  3539 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  3540 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);	
       
  3541 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  3542 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);	
       
  3543 
       
  3544 	// Hang up call. 
       
  3545 	TCoreEtelRequestStatus<RCall> hangUpStatus (call1,&RCall::HangUpCancel);	
       
  3546 	CleanupStack::PushL(hangUpStatus);
       
  3547 	call1.HangUp(hangUpStatus);
       
  3548 	ASSERT_EQUALS(WaitForRequestWithTimeOut(hangUpStatus, ETimeMedium), KErrNone,  
       
  3549 			_L("RCall::HangUp timed-out"));
       
  3550 	ASSERT_EQUALS(hangUpStatus.Int(), KErrNone,  
       
  3551 			_L("RCall::HangUp returned an error"));
       
  3552 
       
  3553 	// ===  Check call status ===
       
  3554 	// Check RCall::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle
       
  3555 	expectedCallStatus = RCall::EStatusHangingUp;
       
  3556 	const TInt wantedStatus = KErrNone;
       
  3557 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  3558 														 notifyStatusChangeStatus,
       
  3559 														 callStatus,
       
  3560 														 expectedCallStatus,
       
  3561 														 wantedStatus);
       
  3562 	
       
  3563 	call1.NotifyStatusChange(notifyStatusChangeStatus,callStatus);
       
  3564 	expectedCallStatus = RCall::EStatusIdle;
       
  3565 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  3566 													 notifyStatusChangeStatus,
       
  3567 													 callStatus,
       
  3568 													 expectedCallStatus,
       
  3569 													 wantedStatus);
       
  3570 	// Check RCall::GetStatus returns EStatusIdle.
       
  3571 	ASSERT_EQUALS(call1.GetStatus(callStatus),KErrNone,  
       
  3572 			_L("RCall::GetStatus returned an error"));
       
  3573 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle,  
       
  3574 			_L("RCall::GetStatus returned an unexpected call status"));
       
  3575 
       
  3576 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDisconnecting -> EStatusIdle
       
  3577 	expectedMobileCallStatus = RMobileCall::EStatusDisconnecting;
       
  3578 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  3579 															notifyMobileCallChangeStatus,
       
  3580 															mobileCallStatus,
       
  3581 															expectedMobileCallStatus,
       
  3582 															wantedStatus);
       
  3583 															
       
  3584 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  3585 	expectedMobileCallStatus = RMobileCall::EStatusIdle;
       
  3586 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  3587 															notifyMobileCallChangeStatus,
       
  3588 															mobileCallStatus,
       
  3589 															expectedMobileCallStatus,
       
  3590 															wantedStatus);
       
  3591 															
       
  3592 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
  3593 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  3594 			_L("RMobileCall::GetMobileStatus returned an error"));
       
  3595 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle,  
       
  3596 			_L("RMobileCall::GetMobileStatus did not return a status EStatusIdle"));
       
  3597 
       
  3598 	// ===  Check line status ===
       
  3599 
       
  3600 	// Check RLine::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle
       
  3601 	expectedLineStatus = RCall::EStatusHangingUp;
       
  3602 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  3603 														 notifyStatusChangeStatus,
       
  3604 														 lineStatus,
       
  3605 														 expectedLineStatus,
       
  3606 														 expectedStatus);
       
  3607 														 
       
  3608 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  3609 	expectedLineStatus = RCall::EStatusIdle;
       
  3610 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  3611 														 notifyStatusChangeStatus,
       
  3612 														 lineStatus,
       
  3613 														 expectedLineStatus,
       
  3614 														 expectedStatus);
       
  3615 														 
       
  3616 	// Check RLine::GetStatus returns EStatusIdle
       
  3617 	ASSERT_EQUALS(voiceLine.GetStatus(lineStatus), KErrNone,  
       
  3618 			_L("RLine::GetStatus returned an error"));
       
  3619 	ASSERT_EQUALS(lineStatus, RCall::EStatusIdle,  
       
  3620 			_L("RLine::GetStatus did not return EStatusIdle as expected"));
       
  3621 
       
  3622 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusDisconnecting -> EStatusIdle
       
  3623 	expectedMobileLineStatus = RMobileCall::EStatusDisconnecting;
       
  3624 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  3625 																		notifyMobileLineChangeStatus,
       
  3626 																		mobileLineStatus,
       
  3627 																		expectedMobileLineStatus,
       
  3628 																		expectedStatus);
       
  3629 
       
  3630 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  3631 	expectedMobileLineStatus = RMobileCall::EStatusIdle;
       
  3632 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  3633 																		notifyMobileLineChangeStatus,
       
  3634 																		mobileLineStatus,
       
  3635 																		expectedMobileLineStatus,
       
  3636 																		expectedStatus);
       
  3637 
       
  3638 	// Check RMobileLine::GetMobileLineStatus returns EStatusIdle
       
  3639 	ASSERT_EQUALS(voiceLine.GetMobileLineStatus(mobileLineStatus), KErrNone,  
       
  3640 			_L("RMobileLine::GetMobileLineStatus returned an error"));
       
  3641 	ASSERT_EQUALS(mobileLineStatus, RMobileCall::EStatusIdle,  
       
  3642 			_L("RMobileLine::GetMobileLineStatus did not set the status to EStatusIdle"));
       
  3643 
       
  3644 
       
  3645 	
       
  3646 	////////////////////////////////////////////////////////////////
       
  3647 	// TEST END
       
  3648 	////////////////////////////////////////////////////////////////
       
  3649 
       
  3650     StartCleanup();
       
  3651 	
       
  3652 	// Pop
       
  3653 	// notifyCallStatusChangeStatus
       
  3654 	// notifyMobileCallChangeStatus
       
  3655 	// notifyStatusChangeStatus
       
  3656 	// notifyMobileLineChangeStatus 
       
  3657     // dialStatus
       
  3658 	// hangUpStatus
       
  3659 	CleanupStack::PopAndDestroy(6,&notifyCallStatusChangeStatus);	
       
  3660 	
       
  3661 	return TestStepResult();
       
  3662 	}
       
  3663 
       
  3664 TPtrC CCTSYIntegrationTestCallControl0012::GetTestStepName()
       
  3665 /**
       
  3666  * @return The test step name.
       
  3667  */
       
  3668 	{
       
  3669 	return  _L("CCTSYIntegrationTestCallControl0012");
       
  3670 	}
       
  3671 
       
  3672 
       
  3673 
       
  3674 CCTSYIntegrationTestCallControl0013::CCTSYIntegrationTestCallControl0013(CEtelSessionMgr& aEtelSessionMgr)
       
  3675 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
  3676 /**
       
  3677  * Constructor.
       
  3678  */
       
  3679 	{
       
  3680 	SetTestStepName(CCTSYIntegrationTestCallControl0013::GetTestStepName());
       
  3681 	}
       
  3682 
       
  3683 CCTSYIntegrationTestCallControl0013::~CCTSYIntegrationTestCallControl0013()
       
  3684 /**
       
  3685  * Destructor.
       
  3686  */
       
  3687 	{
       
  3688 	}
       
  3689 
       
  3690 TVerdict CCTSYIntegrationTestCallControl0013::doTestStepL()
       
  3691 /**
       
  3692  * @SYMTestCaseID BA-CTSY-INT-CCON-0013
       
  3693  * @SYMFssID BA/CTSY/CCON-0013
       
  3694  * @SYMTestCaseDesc Dial and hang up a call specifying valid call parameters 05.
       
  3695  * @SYMTestPriority High
       
  3696  * @SYMTestActions RMobileCall::NotifyMobileCallStatusChange, RCall::NotifyStatusChange, RLine::NotifyStatusChange, RMobileLine::GetMobileLineStatus, RMobileLine::NotifyMobileLineStatusChange, RLine::GetStatus, RMobileCall::GetMobileCallStatus, RCall::GetCallParams, RCall::GetStatus, RCall::GetCallParams, RCall::GetStatus, RCall::HangUp
       
  3697  * @SYMTestExpectedResults Pass - Call connects and call parameters are correct.
       
  3698  * @SYMTestType CIT
       
  3699  * @SYMTestCaseDependencies live/automatic
       
  3700  *
       
  3701  * Reason for test: Verify call and line statuses and call params are correct.
       
  3702  *
       
  3703  * @return - TVerdict code
       
  3704  */
       
  3705 	{
       
  3706 
       
  3707 	////////////////////////////////////////////////////////////////
       
  3708 	// SET UP
       
  3709 	////////////////////////////////////////////////////////////////
       
  3710 
       
  3711 	
       
  3712 	// Check phone supports KCapsVoice
       
  3713 	// Get Voice line 1 
       
  3714 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
  3715 	// Get call 1 
       
  3716 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
  3717 
       
  3718 	RLine::TCaps lineCaps; 
       
  3719 	CHECK_EQUALS_L(voiceLine.GetCaps(lineCaps), KErrNone,  
       
  3720 			_L("RMobileLine::GetCaps returned an error"));
       
  3721 	CHECK_BITS_SET_L(lineCaps.iFlags, RLine::KCapsVoice, KNoUnwantedBits,  
       
  3722 			_L("RLine::GetCaps returned wrong caps"));
       
  3723 
       
  3724 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
  3725 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
  3726 	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
  3727 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
  3728 
       
  3729 	////////////////////////////////////////////////////////////////
       
  3730 	// SET UP END
       
  3731 	////////////////////////////////////////////////////////////////
       
  3732 	
       
  3733 	StartTest();
       
  3734 	
       
  3735 	////////////////////////////////////////////////////////////////
       
  3736 	// TEST START
       
  3737 	////////////////////////////////////////////////////////////////
       
  3738 	
       
  3739 	
       
  3740 	// Populate RMobileCall::TMobileCallParamsV1 with  
       
  3741 	RMobileCall::TMobileCallParamsV1 mobileCallParams;
       
  3742 	RMobileCall::TMobileCallParamsV1Pckg mobileCallParamsPkg(mobileCallParams);
       
  3743 
       
  3744 	// ?iSpeakerControl = EMonitorSpeakerControlUnknown 
       
  3745 	mobileCallParams.iSpeakerControl = RCall::EMonitorSpeakerControlUnknown;
       
  3746 	// ?iSpeakerVolume = EMonitorSpeakerVolumeHigh 
       
  3747 	mobileCallParams.iSpeakerVolume = RCall::EMonitorSpeakerVolumeHigh;
       
  3748 	// ?iInterval = 0x01 
       
  3749 	mobileCallParams.iInterval = 0x01;
       
  3750 	// ?iWaitForDialTone = EDialToneWait 
       
  3751 	mobileCallParams.iWaitForDialTone = RCall::EDialToneWait;
       
  3752 	// ?iIdRestrict = EIdRestrictDefault 
       
  3753 	mobileCallParams.iIdRestrict = RMobileCall::EIdRestrictDefault;	
       
  3754 	// ?iExplicitInvoke = FALSE 
       
  3755 	mobileCallParams.iCug.iExplicitInvoke = FALSE ;
       
  3756 	// ?iCugIndex = 0x00 
       
  3757 	mobileCallParams.iCug.iCugIndex = 0x00;
       
  3758 	// ?iSuppressOA = FALSE 
       
  3759 	mobileCallParams.iCug.iSuppressOA = FALSE;
       
  3760 	// ?iSuppressPrefCug = FALSE 
       
  3761 	mobileCallParams.iCug.iSuppressPrefCug = FALSE;
       
  3762 	// ?iAutoRedial = FALSE 
       
  3763 	mobileCallParams.iAutoRedial = FALSE;
       
  3764 
       
  3765 	//=========Post Notifiers===============
       
  3766 		
       
  3767 	// post notifier for RCall::NotifyStatusChange
       
  3768 	TCoreEtelRequestStatus<RCall> notifyCallStatusChangeStatus (call1,&RCall::NotifyStatusChangeCancel);
       
  3769 	CleanupStack::PushL(notifyCallStatusChangeStatus);
       
  3770 	RCall::TStatus callStatus;
       
  3771 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  3772 
       
  3773 	// post a notifier for RMobileCall::NotifyMobileCallStatusChange
       
  3774 	TExtEtelRequestStatus notifyMobileCallChangeStatus(call1, EMobileCallNotifyMobileCallStatusChange);
       
  3775 	CleanupStack::PushL(notifyMobileCallChangeStatus);
       
  3776 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
  3777 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  3778 
       
  3779 	// post a notifier for RLine::NotifyStatusChange
       
  3780 	TCoreEtelRequestStatus<RLine> notifyStatusChangeStatus (voiceLine,&RLine::NotifyStatusChangeCancel);
       
  3781 	CleanupStack::PushL(notifyStatusChangeStatus);
       
  3782 	RCall::TStatus lineStatus;
       
  3783 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  3784 
       
  3785 	// post a notifier for RMobileLine::NotifyMobileLineStatusChange
       
  3786 	TExtEtelRequestStatus notifyMobileLineChangeStatus(voiceLine, EMobileLineNotifyMobileLineStatusChange);
       
  3787 	CleanupStack::PushL(notifyMobileLineChangeStatus);
       
  3788 	RMobileCall::TMobileCallStatus mobileLineStatus;
       
  3789 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  3790 		
       
  3791 	// Dial a number which answers using call params. 
       
  3792 	TCoreEtelRequestStatus<RMobileCall> dialStatus(call1, &RCall::DialCancel);
       
  3793 	CleanupStack::PushL(dialStatus);		
       
  3794 	TPtrC number;
       
  3795 	ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number) != EFalse,  
       
  3796 			_L("GetStringFromConfig did not complete as expected"));
       
  3797 	call1.Dial(dialStatus,mobileCallParamsPkg, number);
       
  3798 	// Wait for completion. 
       
  3799 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeMedium), KErrNone,  
       
  3800 			_L("RCall::Dial timed-out"));
       
  3801 	ASSERT_EQUALS(dialStatus.Int(), KErrNone,  
       
  3802 			_L("RCall::Dial returned an error"));
       
  3803 	
       
  3804 	// ===  Check line status ===
       
  3805 
       
  3806 	TInt expectedStatus = KErrNone;
       
  3807 	
       
  3808 	// Check RLine::NotifyStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  3809 	RCall::TStatus expectedLineStatus = RCall::EStatusDialling;
       
  3810 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  3811 														 notifyStatusChangeStatus,
       
  3812 														 lineStatus,
       
  3813 														 expectedLineStatus,
       
  3814 														 expectedStatus);
       
  3815 
       
  3816 	expectedLineStatus = RCall::EStatusConnecting;	
       
  3817 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus, lineStatus);
       
  3818 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  3819 														 notifyStatusChangeStatus,
       
  3820 														 lineStatus,
       
  3821 														 expectedLineStatus,
       
  3822 														 expectedStatus);
       
  3823 	
       
  3824 	expectedLineStatus = RCall::EStatusConnected;	
       
  3825 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus, lineStatus);	
       
  3826 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  3827 														 notifyStatusChangeStatus,
       
  3828 														 lineStatus,
       
  3829 														 expectedLineStatus,
       
  3830 														 expectedStatus);
       
  3831 	
       
  3832 	// Check RLine::GetStatus returns EStatusConnected
       
  3833 	ASSERT_EQUALS(voiceLine.GetStatus(lineStatus), KErrNone,  
       
  3834 			_L("RLine::GetStatus returned an error"));
       
  3835 	ASSERT_EQUALS(lineStatus, RCall::EStatusConnected,  
       
  3836 			_L("RLine::GetStatus did not set line status to EStatusConnected as expected"));
       
  3837 
       
  3838 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  3839 	RMobileCall::TMobileCallStatus expectedMobileLineStatus = RMobileCall::EStatusDialling;
       
  3840 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  3841 																		notifyMobileLineChangeStatus,
       
  3842 																		mobileLineStatus,
       
  3843 																		expectedMobileLineStatus,
       
  3844 																		expectedStatus);
       
  3845 
       
  3846 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  3847 	expectedMobileLineStatus = RMobileCall::EStatusConnecting;
       
  3848 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  3849 																		notifyMobileLineChangeStatus,
       
  3850 																		mobileLineStatus,
       
  3851 																		expectedMobileLineStatus,
       
  3852 																		expectedStatus);
       
  3853 
       
  3854 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  3855 	expectedMobileLineStatus = RMobileCall::EStatusConnected;
       
  3856 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  3857 																		notifyMobileLineChangeStatus,
       
  3858 																		mobileLineStatus,
       
  3859 																		expectedMobileLineStatus,
       
  3860 																		expectedStatus);	
       
  3861 
       
  3862 	// Check RMobileLine::GetMobileLineStatus returns EStatusConnected
       
  3863 	ASSERT_EQUALS(voiceLine.GetMobileLineStatus(mobileLineStatus), KErrNone,  
       
  3864 			_L("RMobileLine::GetMobileLineStatus returned an error"));
       
  3865 	ASSERT_EQUALS(mobileLineStatus, RMobileCall::EStatusConnected,  
       
  3866 			_L("RMobileLine::GetMobileLineStatus did not set status to EStatusConnected"));
       
  3867 	
       
  3868 	// ===  Check call status ===
       
  3869 	
       
  3870 	// Check RCall::NotifyStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  3871 	RCall::TStatus expectedCallStatus = RCall::EStatusDialling;
       
  3872 
       
  3873 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  3874 														 notifyCallStatusChangeStatus,
       
  3875 														 callStatus,
       
  3876 														 expectedCallStatus,
       
  3877 														 expectedStatus);
       
  3878 	
       
  3879 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  3880 	expectedCallStatus = RCall::EStatusConnecting;
       
  3881 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  3882 														 notifyCallStatusChangeStatus,
       
  3883 														 callStatus,
       
  3884 														 expectedCallStatus,
       
  3885 														 expectedStatus);
       
  3886 
       
  3887 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  3888 	expectedCallStatus = RCall::EStatusConnected;
       
  3889 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  3890 														 notifyCallStatusChangeStatus,
       
  3891 														 callStatus,
       
  3892 														 expectedCallStatus,
       
  3893 														 expectedStatus);		
       
  3894 								 												 
       
  3895 	// Check RCall::GetStatus returns EStatusConnected.
       
  3896 	ASSERT_EQUALS(voiceLine.GetStatus(callStatus), KErrNone,  
       
  3897 			_L("RLine::GetStatus returned an error"));
       
  3898 	ASSERT_EQUALS(callStatus, RCall::EStatusConnected,  
       
  3899 			_L("RLine::GetStatus did not return EStatusConnected as expected"));
       
  3900 
       
  3901 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  3902 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusDialling;
       
  3903 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  3904 																		notifyMobileCallChangeStatus,
       
  3905 																		mobileCallStatus,
       
  3906 																		expectedMobileCallStatus,
       
  3907 																		expectedStatus);
       
  3908 	
       
  3909 	expectedMobileCallStatus = RMobileCall::EStatusConnecting;
       
  3910 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);	
       
  3911 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  3912 																		notifyMobileCallChangeStatus,
       
  3913 																		mobileCallStatus,
       
  3914 																		expectedMobileCallStatus,
       
  3915 																		expectedStatus);
       
  3916 
       
  3917 	expectedMobileCallStatus = RMobileCall::EStatusConnected;
       
  3918 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);	
       
  3919 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  3920 																		notifyMobileCallChangeStatus,
       
  3921 																		mobileCallStatus,
       
  3922 																		expectedMobileCallStatus,
       
  3923 																		expectedStatus);
       
  3924 																	
       
  3925 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusConnected.
       
  3926 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  3927 			_L("RMobileCall::GetMobileCallStatus returned an error"));
       
  3928 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected,  
       
  3929 			_L("RMobileCall::GetMobileCallStatus did not set call status EStatusConnected as expected"));
       
  3930 
       
  3931 	// ===  Get call parameters. ===
       
  3932 	RMobileCall::TMobileCallParamsV1 checkParams;
       
  3933 	RMobileCall::TMobileCallParamsV1Pckg checkParamsPkg(checkParams);
       
  3934 	call1.GetCallParams(checkParamsPkg);
       
  3935 	
       
  3936 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iSpeakerControl as that used for Dial.
       
  3937 	ASSERT_EQUALS(checkParams.iSpeakerControl,  mobileCallParams.iSpeakerControl,  
       
  3938 			_L("RCall::GetCallParams did not return the same iSpeakerControl as that used for Dial"));
       
  3939 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iSpeakerVolume as that used for Dial.
       
  3940 	ASSERT_EQUALS(checkParams.iSpeakerVolume, mobileCallParams.iSpeakerVolume,  
       
  3941 			_L("RCall::GetCallParams did not return the same iSpeakerVolume as that used for Dial"));
       
  3942 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iInterval as that used for Dial.
       
  3943 	ASSERT_EQUALS(checkParams.iInterval, mobileCallParams.iInterval,  
       
  3944 			_L("RCall::GetCallParams did not return the same iInterval as that used for Dial"));
       
  3945 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iWaitForDialTone as that used for Dial.
       
  3946 	ASSERT_EQUALS(checkParams.iWaitForDialTone, mobileCallParams.iWaitForDialTone,  
       
  3947 			_L("RCall::GetCallParams did not return the same iWaitForDialTone as that used for Dial"));
       
  3948 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iIdRestrict as that used for Dial.
       
  3949 	ASSERT_EQUALS(checkParams.iIdRestrict, mobileCallParams.iIdRestrict,  
       
  3950 			_L("RCall::GetCallParams did not return the same iIdRestrict as that used for Dial"));
       
  3951 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iCug.iExplicitInvoke as that used for Dial.
       
  3952 	ASSERT_EQUALS(checkParams.iCug.iExplicitInvoke, mobileCallParams.iCug.iExplicitInvoke,  
       
  3953 			_L("RCall::GetCallParams did not return the same iCug.iExplicitInvoke as that used for Dial"));
       
  3954 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iCug.iCugIndex as that used for Dial.
       
  3955 	ASSERT_EQUALS(checkParams.iCug.iCugIndex, mobileCallParams.iCug.iCugIndex,  
       
  3956 			_L("RCall::GetCallParams did not return the same iCug.iCugIndex as that used for Dial"));
       
  3957 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iCug.iSuppressPrefCug as that used for Dial.
       
  3958 	ASSERT_EQUALS(checkParams.iCug.iSuppressPrefCug, mobileCallParams.iCug.iSuppressPrefCug,  
       
  3959 			_L("RCall::GetCallParams did not return the same iCug.iSuppressPrefCug as that used for Dial"));
       
  3960 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iCug.iSuppressOA as that used for Dial.
       
  3961 	ASSERT_EQUALS(checkParams.iCug.iSuppressOA, mobileCallParams.iCug.iSuppressOA,  
       
  3962 			_L("RCall::GetCallParams did not return the same iCug.iSuppressOA as that used for Dial"));
       
  3963 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iAutoRedial as that used for Dial.
       
  3964 	ASSERT_EQUALS(checkParams.iAutoRedial, mobileCallParams.iAutoRedial,  
       
  3965 			_L("RCall::GetCallParams did not return the same iAutoRedial as that used for Dial"));
       
  3966 
       
  3967 	//------------ Post Notifiers ----------------------------
       
  3968 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  3969 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);	
       
  3970 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  3971 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);	
       
  3972 
       
  3973 	// Hang up call. 
       
  3974 	TCoreEtelRequestStatus<RCall> hangUpStatus (call1,&RCall::HangUpCancel);	
       
  3975 	CleanupStack::PushL(hangUpStatus);
       
  3976 	call1.HangUp(hangUpStatus);
       
  3977 	ASSERT_EQUALS(WaitForRequestWithTimeOut(hangUpStatus, ETimeMedium), KErrNone,  
       
  3978 			_L("RCall::HangUp timed-out"));
       
  3979 	ASSERT_EQUALS(hangUpStatus.Int(), KErrNone,  
       
  3980 			_L("RCall::HangUp returned an error"));
       
  3981 
       
  3982 	// ===  Check call status ===
       
  3983 
       
  3984 	// Check RCall::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle
       
  3985 	expectedCallStatus = RCall::EStatusHangingUp;
       
  3986 	const TInt wantedStatus = KErrNone;
       
  3987 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  3988 														 notifyStatusChangeStatus,
       
  3989 														 callStatus,
       
  3990 														 expectedCallStatus,
       
  3991 														 wantedStatus);
       
  3992 	
       
  3993 	call1.NotifyStatusChange(notifyStatusChangeStatus,callStatus);
       
  3994 	expectedCallStatus = RCall::EStatusIdle;
       
  3995 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  3996 													 notifyStatusChangeStatus,
       
  3997 													 callStatus,
       
  3998 													 expectedCallStatus,
       
  3999 													 wantedStatus);
       
  4000 	// Check RCall::GetStatus returns EStatusIdle.
       
  4001 	ASSERT_EQUALS(call1.GetStatus(callStatus),KErrNone,  
       
  4002 			_L("RCall::GetStatus returned an error"));
       
  4003 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle,  
       
  4004 			_L("RCall::GetStatus returned an unexpected call status"));
       
  4005 
       
  4006 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDisconnecting -> EStatusIdle
       
  4007 	expectedMobileCallStatus = RMobileCall::EStatusDisconnecting;
       
  4008 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  4009 															notifyMobileCallChangeStatus,
       
  4010 															mobileCallStatus,
       
  4011 															expectedMobileCallStatus,
       
  4012 															wantedStatus);
       
  4013 															
       
  4014 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  4015 	expectedMobileCallStatus = RMobileCall::EStatusIdle;
       
  4016 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  4017 															notifyMobileCallChangeStatus,
       
  4018 															mobileCallStatus,
       
  4019 															expectedMobileCallStatus,
       
  4020 															wantedStatus);
       
  4021 															
       
  4022 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
  4023 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  4024 			_L("RMobileCall::GetMobileStatus returned an error"));
       
  4025 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle,  
       
  4026 			_L("RMobileCall::GetMobileStatus did not return a status EStatusIdle"));
       
  4027 
       
  4028 	// ===  Check line status ===
       
  4029 
       
  4030 	// Check RLine::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle
       
  4031 	expectedLineStatus = RCall::EStatusHangingUp;
       
  4032 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  4033 														 notifyStatusChangeStatus,
       
  4034 														 lineStatus,
       
  4035 														 expectedLineStatus,
       
  4036 														 expectedStatus);
       
  4037 														 
       
  4038 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  4039 	expectedLineStatus = RCall::EStatusIdle;
       
  4040 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  4041 														 notifyStatusChangeStatus,
       
  4042 														 lineStatus,
       
  4043 														 expectedLineStatus,
       
  4044 														 expectedStatus);
       
  4045 														 
       
  4046 	// Check RLine::GetStatus returns EStatusIdle
       
  4047 	ASSERT_EQUALS(voiceLine.GetStatus(lineStatus), KErrNone,  
       
  4048 			_L("RLine::GetStatus returned an error"));
       
  4049 	ASSERT_EQUALS(lineStatus, RCall::EStatusIdle,  
       
  4050 			_L("RLine::GetStatus did not return EStatusIdle as expected"));
       
  4051 
       
  4052 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusDisconnecting -> EStatusIdle
       
  4053 	expectedMobileLineStatus = RMobileCall::EStatusDisconnecting;
       
  4054 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  4055 																		notifyMobileLineChangeStatus,
       
  4056 																		mobileLineStatus,
       
  4057 																		expectedMobileLineStatus,
       
  4058 																		expectedStatus);
       
  4059 
       
  4060 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  4061 	expectedMobileLineStatus = RMobileCall::EStatusIdle;
       
  4062 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  4063 																		notifyMobileLineChangeStatus,
       
  4064 																		mobileLineStatus,
       
  4065 																		expectedMobileLineStatus,
       
  4066 																		expectedStatus);
       
  4067 
       
  4068 	// Check RMobileLine::GetMobileLineStatus returns EStatusIdle
       
  4069 	ASSERT_EQUALS(voiceLine.GetMobileLineStatus(mobileLineStatus), KErrNone,  
       
  4070 			_L("RMobileLine::GetMobileLineStatus returned an error"));
       
  4071 	ASSERT_EQUALS(mobileLineStatus, RMobileCall::EStatusIdle,  
       
  4072 			_L("RMobileLine::GetMobileLineStatus did not set the status to EStatusIdle"));
       
  4073 
       
  4074 	
       
  4075 	////////////////////////////////////////////////////////////////
       
  4076 	// TEST END
       
  4077 	////////////////////////////////////////////////////////////////
       
  4078 
       
  4079     StartCleanup();
       
  4080     
       
  4081 	// Pop
       
  4082 	// notifyCallStatusChangeStatus
       
  4083 	// notifyMobileCallChangeStatus
       
  4084 	// notifyStatusChangeStatus
       
  4085 	// notifyMobileLineChangeStatus 
       
  4086 	// dialStatus
       
  4087 	// hangUpStatus
       
  4088 	CleanupStack::PopAndDestroy(6,&notifyCallStatusChangeStatus);	
       
  4089 	
       
  4090 	return TestStepResult();
       
  4091 	}
       
  4092 
       
  4093 TPtrC CCTSYIntegrationTestCallControl0013::GetTestStepName()
       
  4094 /**
       
  4095  * @return The test step name.
       
  4096  */
       
  4097 	{
       
  4098 	return  _L("CCTSYIntegrationTestCallControl0013");
       
  4099 	}
       
  4100 
       
  4101 
       
  4102 
       
  4103 CCTSYIntegrationTestCallControl0014::CCTSYIntegrationTestCallControl0014(CEtelSessionMgr& aEtelSessionMgr)
       
  4104 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
  4105 /**
       
  4106  * Constructor.
       
  4107  */
       
  4108 	{
       
  4109 	SetTestStepName(CCTSYIntegrationTestCallControl0014::GetTestStepName());
       
  4110 	}
       
  4111 
       
  4112 CCTSYIntegrationTestCallControl0014::~CCTSYIntegrationTestCallControl0014()
       
  4113 /**
       
  4114  * Destructor.
       
  4115  */
       
  4116 	{
       
  4117 	}
       
  4118 
       
  4119 TVerdict CCTSYIntegrationTestCallControl0014::doTestStepL()
       
  4120 /**
       
  4121  * @SYMTestCaseID BA-CTSY-INT-CCON-0014
       
  4122  * @SYMFssID BA/CTSY/CCON-0014
       
  4123  * @SYMTestCaseDesc Dial and hang up a call specifying valid call parameters 06.
       
  4124  * @SYMTestPriority High
       
  4125  * @SYMTestActions RMobileCall::NotifyMobileCallStatusChange, RCall::NotifyStatusChange, RLine::NotifyStatusChange, RMobileLine::GetMobileLineStatus, RMobileLine::NotifyMobileLineStatusChange, RLine::GetStatus, RMobileCall::GetMobileCallStatus, RCall::GetCallParams, RCall::GetStatus, RCall::GetCallParams, RCall::GetStatus, RCall::HangUp
       
  4126  * @SYMTestExpectedResults Pass - Call connects and call parameters are correct.
       
  4127  * @SYMTestType CIT
       
  4128  * @SYMTestCaseDependencies live/automatic
       
  4129  *
       
  4130  * Reason for test: Verify call and line statuses and call params are correct.
       
  4131  *
       
  4132  * @return - TVerdict code
       
  4133  */
       
  4134 	{
       
  4135 
       
  4136 	////////////////////////////////////////////////////////////////
       
  4137 	// SET UP
       
  4138 	////////////////////////////////////////////////////////////////
       
  4139 
       
  4140 	// Check phone supports KCapsVoice
       
  4141 	// Get Voice line 1 
       
  4142 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
  4143 	// Get call 1 
       
  4144 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
  4145 
       
  4146 	RLine::TCaps lineCaps; 
       
  4147 	CHECK_EQUALS_L(voiceLine.GetCaps(lineCaps), KErrNone,  
       
  4148 			_L("RMobileLine::GetCaps returned an error"));
       
  4149 	CHECK_BITS_SET_L(lineCaps.iFlags, RLine::KCapsVoice, KNoUnwantedBits,  
       
  4150 			_L("RLine::GetCaps returned wrong caps"));
       
  4151 
       
  4152 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
  4153 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
  4154 	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
  4155 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
  4156 
       
  4157 	////////////////////////////////////////////////////////////////
       
  4158 	// SET UP END
       
  4159 	////////////////////////////////////////////////////////////////
       
  4160 	
       
  4161 	StartTest();
       
  4162 	
       
  4163 	////////////////////////////////////////////////////////////////
       
  4164 	// TEST START
       
  4165 	////////////////////////////////////////////////////////////////
       
  4166 	
       
  4167 	
       
  4168 	// Populate RMobileCall::TMobileCallParamsV1 with  
       
  4169 	RMobileCall::TMobileCallParamsV1 mobileCallParams;
       
  4170 	RMobileCall::TMobileCallParamsV1Pckg mobileCallParamsPkg(mobileCallParams);
       
  4171 
       
  4172 	// ?iSpeakerControl = EMonitorSpeakerControlUnknown 
       
  4173 	mobileCallParams.iSpeakerControl = RCall::EMonitorSpeakerControlUnknown;
       
  4174 	// ?iSpeakerVolume = EMonitorSpeakerVolumeHigh 
       
  4175 	mobileCallParams.iSpeakerVolume = RCall::EMonitorSpeakerVolumeHigh;
       
  4176 	// ?iInterval = 0x01 
       
  4177 	mobileCallParams.iInterval = 0x01;
       
  4178 	// ?iWaitForDialTone = EDialToneWait 
       
  4179 	mobileCallParams.iWaitForDialTone = RCall::EDialToneWait;
       
  4180 	// ?iIdRestrict = EIdRestrictDefault 
       
  4181 	mobileCallParams.iIdRestrict = RMobileCall::EIdRestrictDefault;	
       
  4182 	// ?iExplicitInvoke = FALSE 
       
  4183 	mobileCallParams.iCug.iExplicitInvoke = FALSE ;
       
  4184 	// ?iCugIndex = 0xffff 
       
  4185 	mobileCallParams.iCug.iCugIndex = 0xffff;
       
  4186 	// ?iSuppressOA = FALSE 
       
  4187 	mobileCallParams.iCug.iSuppressOA = FALSE;
       
  4188 	// ?iSuppressPrefCug = FALSE 
       
  4189 	mobileCallParams.iCug.iSuppressPrefCug = FALSE;
       
  4190 	// ?iAutoRedial = FALSE 
       
  4191 	mobileCallParams.iAutoRedial = FALSE;
       
  4192 
       
  4193 	//=========Post Notifiers===============
       
  4194 		
       
  4195 	// post notifier for RCall::NotifyStatusChange
       
  4196 	TCoreEtelRequestStatus<RCall> notifyCallStatusChangeStatus (call1,&RCall::NotifyStatusChangeCancel);
       
  4197 	CleanupStack::PushL(notifyCallStatusChangeStatus);
       
  4198 	RCall::TStatus callStatus;
       
  4199 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  4200 
       
  4201 	// post a notifier for RMobileCall::NotifyMobileCallStatusChange
       
  4202 	TExtEtelRequestStatus notifyMobileCallChangeStatus(call1, EMobileCallNotifyMobileCallStatusChange);
       
  4203 	CleanupStack::PushL(notifyMobileCallChangeStatus);
       
  4204 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
  4205 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  4206 
       
  4207 	// post a notifier for RLine::NotifyStatusChange
       
  4208 	TCoreEtelRequestStatus<RLine> notifyStatusChangeStatus (voiceLine,&RLine::NotifyStatusChangeCancel);
       
  4209 	CleanupStack::PushL(notifyStatusChangeStatus);
       
  4210 	RCall::TStatus lineStatus;
       
  4211 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  4212 
       
  4213 	// post a notifier for RMobileLine::NotifyMobileLineStatusChange
       
  4214 	TExtEtelRequestStatus notifyMobileLineChangeStatus(voiceLine, EMobileLineNotifyMobileLineStatusChange);
       
  4215 	CleanupStack::PushL(notifyMobileLineChangeStatus);
       
  4216 	RMobileCall::TMobileCallStatus mobileLineStatus;
       
  4217 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  4218 		
       
  4219 	// Dial a number which answers using call params. 
       
  4220 	TCoreEtelRequestStatus<RMobileCall> dialStatus(call1, &RCall::DialCancel);
       
  4221 	CleanupStack::PushL(dialStatus);		
       
  4222 	TPtrC number;
       
  4223 	ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number) != EFalse,  
       
  4224 			_L("GetStringFromConfig did not complete as expected"));
       
  4225 	call1.Dial(dialStatus,mobileCallParamsPkg, number);
       
  4226 	// Wait for completion. 
       
  4227 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeMedium), KErrNone,  
       
  4228 			_L("RCall::Dial timed-out"));
       
  4229 	ASSERT_EQUALS(dialStatus.Int(), KErrNone,  
       
  4230 			_L("RCall::Dial returned an error"));
       
  4231 
       
  4232 	// ===  Check line status ===
       
  4233 
       
  4234 	TInt expectedStatus = KErrNone;
       
  4235 	
       
  4236 	// Check RLine::NotifyStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  4237 	RCall::TStatus expectedLineStatus = RCall::EStatusDialling;
       
  4238 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  4239 														 notifyStatusChangeStatus,
       
  4240 														 lineStatus,
       
  4241 														 expectedLineStatus,
       
  4242 														 expectedStatus);
       
  4243 
       
  4244 	expectedLineStatus = RCall::EStatusConnecting;	
       
  4245 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus, lineStatus);
       
  4246 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  4247 														 notifyStatusChangeStatus,
       
  4248 														 lineStatus,
       
  4249 														 expectedLineStatus,
       
  4250 														 expectedStatus);
       
  4251 	
       
  4252 	expectedLineStatus = RCall::EStatusConnected;	
       
  4253 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus, lineStatus);	
       
  4254 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  4255 														 notifyStatusChangeStatus,
       
  4256 														 lineStatus,
       
  4257 														 expectedLineStatus,
       
  4258 														 expectedStatus);
       
  4259 	
       
  4260 	// Check RLine::GetStatus returns EStatusConnected
       
  4261 	ASSERT_EQUALS(voiceLine.GetStatus(lineStatus), KErrNone,  
       
  4262 			_L("RLine::GetStatus returned an error"));
       
  4263 	ASSERT_EQUALS(lineStatus, RCall::EStatusConnected,  
       
  4264 			_L("RLine::GetStatus did not set line status to EStatusConnected as expected"));
       
  4265 
       
  4266 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  4267 	RMobileCall::TMobileCallStatus expectedMobileLineStatus = RMobileCall::EStatusConnected;
       
  4268 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  4269 																		notifyMobileLineChangeStatus,
       
  4270 																		mobileLineStatus,
       
  4271 																		expectedMobileLineStatus,
       
  4272 																		expectedStatus);	
       
  4273 
       
  4274 	// Check RMobileLine::GetMobileLineStatus returns EStatusConnected
       
  4275 	ASSERT_EQUALS(voiceLine.GetMobileLineStatus(mobileLineStatus), KErrNone,  
       
  4276 			_L("RMobileLine::GetMobileLineStatus returned an error"));
       
  4277 	ASSERT_EQUALS(mobileLineStatus, RMobileCall::EStatusConnected,  
       
  4278 			_L("RMobileLine::GetMobileLineStatus did not set status to EStatusConnected"));
       
  4279 	
       
  4280 	// ===  Check call status ===
       
  4281 	
       
  4282 	// Check RCall::NotifyStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  4283 	RCall::TStatus expectedCallStatus = RCall::EStatusDialling;
       
  4284 
       
  4285 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  4286 														 notifyCallStatusChangeStatus,
       
  4287 														 callStatus,
       
  4288 														 expectedCallStatus,
       
  4289 														 expectedStatus);
       
  4290 	
       
  4291 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  4292 	expectedCallStatus = RCall::EStatusConnecting;
       
  4293 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  4294 														 notifyCallStatusChangeStatus,
       
  4295 														 callStatus,
       
  4296 														 expectedCallStatus,
       
  4297 														 expectedStatus);
       
  4298 
       
  4299 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  4300 	expectedCallStatus = RCall::EStatusConnected;
       
  4301 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  4302 														 notifyCallStatusChangeStatus,
       
  4303 														 callStatus,
       
  4304 														 expectedCallStatus,
       
  4305 														 expectedStatus);		
       
  4306 								 												 
       
  4307 	// Check RCall::GetStatus returns EStatusConnected.
       
  4308 	ASSERT_EQUALS(voiceLine.GetStatus(callStatus), KErrNone,  
       
  4309 			_L("RLine::GetStatus returned an error"));
       
  4310 	ASSERT_EQUALS(callStatus, RCall::EStatusConnected,  
       
  4311 			_L("RLine::GetStatus did not return EStatusConnected as expected"));
       
  4312 
       
  4313 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  4314 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusDialling;
       
  4315 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  4316 																		notifyMobileCallChangeStatus,
       
  4317 																		mobileCallStatus,
       
  4318 																		expectedMobileCallStatus,
       
  4319 																		expectedStatus);
       
  4320 	
       
  4321 	expectedMobileCallStatus = RMobileCall::EStatusConnecting;
       
  4322 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);	
       
  4323 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  4324 																		notifyMobileCallChangeStatus,
       
  4325 																		mobileCallStatus,
       
  4326 																		expectedMobileCallStatus,
       
  4327 																		expectedStatus);
       
  4328 
       
  4329 	expectedMobileCallStatus = RMobileCall::EStatusConnected;
       
  4330 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);	
       
  4331 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  4332 																		notifyMobileCallChangeStatus,
       
  4333 																		mobileCallStatus,
       
  4334 																		expectedMobileCallStatus,
       
  4335 																		expectedStatus);
       
  4336 																	
       
  4337 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusConnected.
       
  4338 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  4339 			_L("RMobileCall::GetMobileCallStatus returned an error"));
       
  4340 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected,  
       
  4341 			_L("RMobileCall::GetMobileCallStatus did not set call status EStatusConnected as expected"));
       
  4342 
       
  4343 	// ===  Get call parameters. ===
       
  4344 	RMobileCall::TMobileCallParamsV1 checkParams;
       
  4345 	RMobileCall::TMobileCallParamsV1Pckg checkParamsPkg(checkParams);
       
  4346 	call1.GetCallParams(checkParamsPkg);
       
  4347 	
       
  4348 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iSpeakerControl as that used for Dial.
       
  4349 	ASSERT_EQUALS(checkParams.iSpeakerControl,  mobileCallParams.iSpeakerControl,  
       
  4350 			_L("RCall::GetCallParams did not return the same iSpeakerControl as that used for Dial"));
       
  4351 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iSpeakerVolume as that used for Dial.
       
  4352 	ASSERT_EQUALS(checkParams.iSpeakerVolume, mobileCallParams.iSpeakerVolume,  
       
  4353 			_L("RCall::GetCallParams did not return the same iSpeakerVolume as that used for Dial"));
       
  4354 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iInterval as that used for Dial.
       
  4355 	ASSERT_EQUALS(checkParams.iInterval, mobileCallParams.iInterval,  
       
  4356 			_L("RCall::GetCallParams did not return the same iInterval as that used for Dial"));
       
  4357 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iWaitForDialTone as that used for Dial.
       
  4358 	ASSERT_EQUALS(checkParams.iWaitForDialTone, mobileCallParams.iWaitForDialTone,  
       
  4359 			_L("RCall::GetCallParams did not return the same iWaitForDialTone as that used for Dial"));
       
  4360 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iIdRestrict as that used for Dial.
       
  4361 	ASSERT_EQUALS(checkParams.iIdRestrict, mobileCallParams.iIdRestrict,  
       
  4362 			_L("RCall::GetCallParams did not return the same iIdRestrict as that used for Dial"));
       
  4363 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iCug.iExplicitInvoke as that used for Dial.
       
  4364 	ASSERT_EQUALS(checkParams.iCug.iExplicitInvoke, mobileCallParams.iCug.iExplicitInvoke,  
       
  4365 			_L("RCall::GetCallParams did not return the same iCug.iExplicitInvoke as that used for Dial"));
       
  4366 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iCug.iCugIndex as that used for Dial.
       
  4367 	ASSERT_EQUALS(checkParams.iCug.iCugIndex, mobileCallParams.iCug.iCugIndex,  
       
  4368 			_L("RCall::GetCallParams did not return the same iCug.iCugIndex as that used for Dial"));
       
  4369 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iCug.iSuppressPrefCug as that used for Dial.
       
  4370 	ASSERT_EQUALS(checkParams.iCug.iSuppressPrefCug, mobileCallParams.iCug.iSuppressPrefCug,  
       
  4371 			_L("RCall::GetCallParams did not return the same iCug.iSuppressPrefCug as that used for Dial"));
       
  4372 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iCug.iSuppressOA as that used for Dial.
       
  4373 	ASSERT_EQUALS(checkParams.iCug.iSuppressOA, mobileCallParams.iCug.iSuppressOA,  
       
  4374 			_L("RCall::GetCallParams did not return the same iCug.iSuppressOA as that used for Dial"));
       
  4375 	// Check RCall::GetCallParams with aParams as a packaged RMobileCall::TMobileCallParamsV1 returns same iAutoRedial as that used for Dial.
       
  4376 	ASSERT_EQUALS(checkParams.iAutoRedial, mobileCallParams.iAutoRedial,  
       
  4377 			_L("RCall::GetCallParams did not return the same iAutoRedial as that used for Dial"));
       
  4378 
       
  4379 	//------------ Post Notifiers ----------------------------
       
  4380 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  4381 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);	
       
  4382 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  4383 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);	
       
  4384 
       
  4385 	// Hang up call. 
       
  4386 	TCoreEtelRequestStatus<RCall> hangUpStatus (call1,&RCall::HangUpCancel);	
       
  4387 	CleanupStack::PushL(hangUpStatus);
       
  4388 	call1.HangUp(hangUpStatus);
       
  4389 	ASSERT_EQUALS(WaitForRequestWithTimeOut(hangUpStatus, ETimeMedium), KErrNone,  
       
  4390 			_L("RCall::HangUp timed-out"));
       
  4391 	ASSERT_EQUALS(hangUpStatus.Int(), KErrNone,  
       
  4392 			_L("RCall::HangUp returned an error"));
       
  4393 
       
  4394 	// ===  Check call status ===
       
  4395 	// Check RCall::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle
       
  4396 	expectedCallStatus = RCall::EStatusHangingUp;
       
  4397 	const TInt wantedStatus = KErrNone;
       
  4398 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  4399 														 notifyStatusChangeStatus,
       
  4400 														 callStatus,
       
  4401 														 expectedCallStatus,
       
  4402 														 wantedStatus);
       
  4403 	
       
  4404 	call1.NotifyStatusChange(notifyStatusChangeStatus,callStatus);
       
  4405 	expectedCallStatus = RCall::EStatusIdle;
       
  4406 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  4407 													 notifyStatusChangeStatus,
       
  4408 													 callStatus,
       
  4409 													 expectedCallStatus,
       
  4410 													 wantedStatus);
       
  4411 	// Check RCall::GetStatus returns EStatusIdle.
       
  4412 	ASSERT_EQUALS(call1.GetStatus(callStatus),KErrNone,  
       
  4413 			_L("RCall::GetStatus returned an error"));
       
  4414 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle,  
       
  4415 			_L("RCall::GetStatus returned an unexpected call status"));
       
  4416 
       
  4417 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDisconnecting -> EStatusIdle
       
  4418 	expectedMobileCallStatus = RMobileCall::EStatusDisconnecting;
       
  4419 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  4420 															notifyMobileCallChangeStatus,
       
  4421 															mobileCallStatus,
       
  4422 															expectedMobileCallStatus,
       
  4423 															wantedStatus);
       
  4424 															
       
  4425 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  4426 	expectedMobileCallStatus = RMobileCall::EStatusIdle;
       
  4427 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  4428 															notifyMobileCallChangeStatus,
       
  4429 															mobileCallStatus,
       
  4430 															expectedMobileCallStatus,
       
  4431 															wantedStatus);
       
  4432 															
       
  4433 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
  4434 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  4435 			_L("RMobileCall::GetMobileStatus returned an error"));
       
  4436 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle,  
       
  4437 			_L("RMobileCall::GetMobileStatus did not return a status EStatusIdle"));
       
  4438 
       
  4439 	// ===  Check line status ===
       
  4440 
       
  4441 	// Check RLine::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle
       
  4442 	expectedLineStatus = RCall::EStatusHangingUp;
       
  4443 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  4444 														 notifyStatusChangeStatus,
       
  4445 														 lineStatus,
       
  4446 														 expectedLineStatus,
       
  4447 														 expectedStatus);
       
  4448 														 
       
  4449 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  4450 	expectedLineStatus = RCall::EStatusIdle;
       
  4451 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  4452 														 notifyStatusChangeStatus,
       
  4453 														 lineStatus,
       
  4454 														 expectedLineStatus,
       
  4455 														 expectedStatus);
       
  4456 														 
       
  4457 	// Check RLine::GetStatus returns EStatusIdle
       
  4458 	ASSERT_EQUALS(voiceLine.GetStatus(lineStatus), KErrNone,  
       
  4459 			_L("RLine::GetStatus returned an error"));
       
  4460 	ASSERT_EQUALS(lineStatus, RCall::EStatusIdle,  
       
  4461 			_L("RLine::GetStatus did not return EStatusIdle as expected"));
       
  4462 
       
  4463 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusDisconnecting -> EStatusIdle
       
  4464 	expectedMobileLineStatus = RMobileCall::EStatusDisconnecting;
       
  4465 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  4466 																		notifyMobileLineChangeStatus,
       
  4467 																		mobileLineStatus,
       
  4468 																		expectedMobileLineStatus,
       
  4469 																		expectedStatus);
       
  4470 
       
  4471 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  4472 	expectedMobileLineStatus = RMobileCall::EStatusIdle;
       
  4473 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  4474 																		notifyMobileLineChangeStatus,
       
  4475 																		mobileLineStatus,
       
  4476 																		expectedMobileLineStatus,
       
  4477 																		expectedStatus);
       
  4478 
       
  4479 	// Check RMobileLine::GetMobileLineStatus returns EStatusIdle
       
  4480 	ASSERT_EQUALS(voiceLine.GetMobileLineStatus(mobileLineStatus), KErrNone,  
       
  4481 			_L("RMobileLine::GetMobileLineStatus returned an error"));
       
  4482 	ASSERT_EQUALS(mobileLineStatus, RMobileCall::EStatusIdle,  
       
  4483 			_L("RMobileLine::GetMobileLineStatus did not set the status to EStatusIdle"));
       
  4484 
       
  4485 
       
  4486 	
       
  4487 	////////////////////////////////////////////////////////////////
       
  4488 	// TEST END
       
  4489 	////////////////////////////////////////////////////////////////
       
  4490 
       
  4491     StartCleanup();
       
  4492 	
       
  4493 	// Pop
       
  4494 	// notifyCallStatusChangeStatus
       
  4495 	// notifyMobileCallChangeStatus
       
  4496 	// notifyStatusChangeStatus
       
  4497 	// notifyMobileLineChangeStatus 
       
  4498 	// dialStatus
       
  4499 	// hangUpStatus
       
  4500 	CleanupStack::PopAndDestroy(6,&notifyCallStatusChangeStatus);	
       
  4501 	
       
  4502 	return TestStepResult();
       
  4503 	}
       
  4504 
       
  4505 TPtrC CCTSYIntegrationTestCallControl0014::GetTestStepName()
       
  4506 /**
       
  4507  * @return The test step name.
       
  4508  */
       
  4509 	{
       
  4510 	return  _L("CCTSYIntegrationTestCallControl0014");
       
  4511 	}
       
  4512 
       
  4513 
       
  4514 
       
  4515 CCTSYIntegrationTestCallControl0015::CCTSYIntegrationTestCallControl0015(CEtelSessionMgr& aEtelSessionMgr)
       
  4516 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
  4517 /**
       
  4518  * Constructor.
       
  4519  */
       
  4520 	{
       
  4521 	SetTestStepName(CCTSYIntegrationTestCallControl0015::GetTestStepName());
       
  4522 	}
       
  4523 
       
  4524 CCTSYIntegrationTestCallControl0015::~CCTSYIntegrationTestCallControl0015()
       
  4525 /**
       
  4526  * Destructor.
       
  4527  */
       
  4528 	{
       
  4529 	}
       
  4530 
       
  4531 TVerdict CCTSYIntegrationTestCallControl0015::doTestStepL()
       
  4532 /**
       
  4533  * @SYMTestCaseID BA-CTSY-INT-CCON-0015
       
  4534  * @SYMFssID BA/CTSY/CCON-0015
       
  4535  * @SYMTestCaseDesc Hang up of call by remote user.
       
  4536  * @SYMTestPriority High
       
  4537  * @SYMTestActions RLine::NotifyStatusChange, RMobileLine::NotifyMobileLineStatusChange, RLine::GetCallInfo, RLine::GetStatus, RMobileLine::GetMobileLineStatus, RLine::GetInfo, RMobileCall::GetMobileCallStatus, RMobileCall::NotifyMobileCallCapsChange, RMobileCall::NotifyMobileCallStatusChange
       
  4538  * @SYMTestExpectedResults Pass - Call hung up. Call info correct.
       
  4539  * @SYMTestType CIT
       
  4540  * @SYMTestCaseDependencies live/manual
       
  4541  *
       
  4542  * Reason for test: Verify line status, hook status and line info is correctly reflected by RLine and RMobileLine
       
  4543  *
       
  4544  * This test tests that the line information is correct when the phone dials and the remote
       
  4545  * user hangs up.
       
  4546  * 
       
  4547  * @return - TVerdict code
       
  4548  */
       
  4549 	{
       
  4550 
       
  4551 	////////////////////////////////////////////////////////////////
       
  4552 	// SET UP
       
  4553 	////////////////////////////////////////////////////////////////
       
  4554 
       
  4555 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
  4556 	// Check phone supports KCapsVoice
       
  4557 	// Get Voice line 1 
       
  4558 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
  4559 	// Get call 1 
       
  4560 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
  4561 
       
  4562 	RLine::TCaps lineCaps; 
       
  4563 	CHECK_EQUALS_L(voiceLine.GetCaps(lineCaps), KErrNone,  
       
  4564 			_L("RMobileLine::GetCaps returned an error"));
       
  4565 	CHECK_BITS_SET_L(lineCaps.iFlags, RLine::KCapsVoice, KNoUnwantedBits,  
       
  4566 			_L("RLine::GetCaps returned wrong caps"));
       
  4567 
       
  4568 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
  4569 	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
  4570 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
  4571 
       
  4572 	////////////////////////////////////////////////////////////////
       
  4573 	// SET UP END
       
  4574 	////////////////////////////////////////////////////////////////
       
  4575 	
       
  4576 	StartTest();
       
  4577 	
       
  4578 	////////////////////////////////////////////////////////////////
       
  4579 	// TEST START
       
  4580 	////////////////////////////////////////////////////////////////
       
  4581 
       
  4582 	// post notifier for RLine::NotifyStatusChange
       
  4583 	TCoreEtelRequestStatus<RLine> notifyStatusChangeStatus (voiceLine,&RLine::NotifyStatusChangeCancel);
       
  4584 	CleanupStack::PushL(notifyStatusChangeStatus);
       
  4585 	RCall::TStatus lineStatus;
       
  4586 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  4587 
       
  4588 	// post a notifier for RMobileLine::NotifyMobileLineStatusChange
       
  4589 	TExtEtelRequestStatus notifyMobileLineChangeStatus(voiceLine, EMobileLineNotifyMobileLineStatusChange);
       
  4590 	CleanupStack::PushL(notifyMobileLineChangeStatus);
       
  4591 	RMobileCall::TMobileCallStatus mobileLineStatus;
       
  4592 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  4593 
       
  4594 	DisplayUserInteractionPromptL(_L("To run this test correctly, you should have set your own phone number to voice number 1 in the ini file. After you press a key, the test will call your phone, answer the call."), ETimeLong);
       
  4595 
       
  4596 	TPtrC number; 
       
  4597 	ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number) != EFalse,			  
       
  4598 			_L("CTestStep::GetStringFromConfig did not complete as expected"));
       
  4599 	TCoreEtelRequestStatus<RCall> dialStatus(call1, &RCall::DialCancel);
       
  4600 	CleanupStack::PushL(dialStatus);
       
  4601 	call1.Dial(dialStatus, number); 
       
  4602 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeMedium), KErrNone, 
       
  4603 			_L("RCall::Dial timed-out"));
       
  4604 	ASSERT_EQUALS(dialStatus.Int(), KErrNone,  
       
  4605 			_L("RCall::Dial returned with an error"));
       
  4606 	
       
  4607 	TEST_CHECK_POINT_L(_L("Couldn't dial a call, no point continuing."));
       
  4608 	
       
  4609 	// ===  Check line status ===
       
  4610 	// Check RLine::NotifyStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  4611 	const TInt expectedStatus = KErrNone;
       
  4612 	RCall::TStatus expectedLineStatus = RCall::EStatusDialling;
       
  4613 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  4614 														 notifyStatusChangeStatus,
       
  4615 														 lineStatus,
       
  4616 														 expectedLineStatus,
       
  4617 														 expectedStatus);
       
  4618 
       
  4619 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  4620 	expectedLineStatus = RCall::EStatusConnecting;	
       
  4621 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  4622 														 notifyStatusChangeStatus,
       
  4623 														 lineStatus,
       
  4624 														 expectedLineStatus,
       
  4625 														 expectedStatus);
       
  4626 														 															 
       
  4627 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  4628 	expectedLineStatus = RCall::EStatusConnected;	
       
  4629 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  4630 														 notifyStatusChangeStatus,
       
  4631 														 lineStatus,
       
  4632 														 expectedLineStatus,
       
  4633 														 expectedStatus);
       
  4634 														 
       
  4635 	// Check RLine::GetStatus returns EStatusConnected
       
  4636 	ASSERT_EQUALS(voiceLine.GetStatus(lineStatus), KErrNone,  
       
  4637 			_L("RLine::GetStatus returned an error"));
       
  4638 	ASSERT_EQUALS(lineStatus, RCall::EStatusConnected,  
       
  4639 			_L("RLine::GetStatus did not return EStatusConnected as expected"));
       
  4640 	
       
  4641 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  4642 	RMobileCall::TMobileCallStatus expectedMobileLineStatus = RMobileCall::EStatusDialling;
       
  4643 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  4644 																		notifyMobileLineChangeStatus,
       
  4645 																		mobileLineStatus,
       
  4646 																		expectedMobileLineStatus,
       
  4647 																		expectedStatus);
       
  4648 																		
       
  4649 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  4650 	expectedMobileLineStatus = RMobileCall::EStatusConnecting;
       
  4651 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  4652 																		notifyMobileLineChangeStatus,
       
  4653 																		mobileLineStatus,
       
  4654 																		expectedMobileLineStatus,
       
  4655 																		expectedStatus);
       
  4656 																		
       
  4657 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  4658 	expectedMobileLineStatus = RMobileCall::EStatusConnected;
       
  4659 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  4660 																		notifyMobileLineChangeStatus,
       
  4661 																		mobileLineStatus,
       
  4662 																		expectedMobileLineStatus,
       
  4663 																		expectedStatus);
       
  4664 																																					
       
  4665 	
       
  4666 	// Check RMobileLine::GetMobileLineStatus returns EStatusConnected
       
  4667 	ASSERT_EQUALS(voiceLine.GetMobileLineStatus(mobileLineStatus), KErrNone,  
       
  4668 			_L("RMobileLine::GetMobileLineStatus returned an error"));
       
  4669 	ASSERT_EQUALS(mobileLineStatus, RMobileCall::EStatusConnected,  
       
  4670 			_L("RMobileLine::GetMobileLineStatus did not set line status to EStatusConnected"));
       
  4671 
       
  4672 	// ===  Check line info ===
       
  4673 
       
  4674 	// Check RLine::GetCallInfo returns valid name.
       
  4675 	// Check RLine::GetCallInfo returns caps in set of KCapsHangUp.
       
  4676 	// Check RLine::GetCallInfo returns status of EStatusConnected.
       
  4677 	RLine::TCallInfo callInfo;
       
  4678 	ASSERT_EQUALS(voiceLine.GetCallInfo(0, callInfo), KErrNone,  
       
  4679 			_L("RLine::GetCallInfo returned an error"));
       
  4680 	ASSERT_TRUE(callInfo.iCallName.Length() >0,  
       
  4681 			_L("RLine::GetCallInfo returned an invalid  name"));
       
  4682 	ASSERT_BITS_SET(callInfo.iCallCapsFlags, RCall::KCapsHangUp, KNoUnwantedBits,  
       
  4683 			_L("RLine::GetCallInfo returned wrong caps"));	
       
  4684 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusConnected,  
       
  4685 			_L("RLine::GetCallInfo wrong iStatus, should be EStatusIdle"));
       
  4686 	
       
  4687 	// Check RLine::GetInfo returns status of EStatusConnected.
       
  4688 	RLine::TLineInfo lineInfo;
       
  4689 	ASSERT_EQUALS(voiceLine.GetInfo(lineInfo), KErrNone,  
       
  4690 			_L("RLine::GetInfo returned an error")); 
       
  4691 	ASSERT_EQUALS(lineInfo.iStatus, RCall::EStatusConnected, 
       
  4692 			_L("RLine::GetInfo did not return EStatusConnected"));
       
  4693 
       
  4694 	//===== Post notifiers==
       
  4695 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  4696 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  4697 
       
  4698 	// Instruct user to hang up the call
       
  4699 	DisplayUserInteractionPromptL(_L("Hang up the call now"), ETimeMedium);
       
  4700 	
       
  4701 	// ===  Check line status ===
       
  4702 
       
  4703 	// Check RLine::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle
       
  4704 	expectedLineStatus = RCall::EStatusHangingUp;
       
  4705 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  4706 														 notifyStatusChangeStatus,
       
  4707 														 lineStatus,
       
  4708 														 expectedLineStatus,
       
  4709 														 expectedStatus);
       
  4710 
       
  4711 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  4712 	expectedLineStatus = RCall::EStatusIdle;	
       
  4713 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  4714 														 notifyStatusChangeStatus,
       
  4715 														 lineStatus,
       
  4716 														 expectedLineStatus,
       
  4717 														 expectedStatus);
       
  4718 	// Check RLine::GetStatus returns EStatusIdle
       
  4719 	ASSERT_EQUALS(voiceLine.GetStatus(lineStatus), KErrNone,  
       
  4720 			_L("RLine::GetStatus returned an error"));
       
  4721 	ASSERT_EQUALS(lineStatus, RCall::EStatusIdle,  
       
  4722 			_L("RLine::GetStatus did not return EStatusConnected as expected"));
       
  4723 
       
  4724 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusDisconnecting -> EStatusIdle
       
  4725 	expectedMobileLineStatus = RMobileCall::EStatusDisconnecting;
       
  4726 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  4727 																		notifyMobileLineChangeStatus,
       
  4728 																		mobileLineStatus,
       
  4729 																		expectedMobileLineStatus,
       
  4730 																		expectedStatus);
       
  4731 																		
       
  4732 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  4733 	expectedMobileLineStatus = RMobileCall::EStatusIdle;
       
  4734 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  4735 																		notifyMobileLineChangeStatus,
       
  4736 																		mobileLineStatus,
       
  4737 																		expectedMobileLineStatus,
       
  4738 																		expectedStatus);
       
  4739 	// Check RMobileLine::GetMobileLineStatus returns EStatusIdle
       
  4740 	ASSERT_EQUALS(voiceLine.GetMobileLineStatus(mobileLineStatus), KErrNone,  
       
  4741 			_L("RMobileLine::GetMobileLineStatus returned an error"));
       
  4742 	ASSERT_EQUALS(mobileLineStatus, RMobileCall::EStatusIdle,  
       
  4743 			_L("RMobileLine::GetMobileLineStatus did not set line status to EStatusConnected"));
       
  4744 
       
  4745 	// ===  Check line info ===
       
  4746 
       
  4747 	// Check RLine::GetCallInfo returns valid name.
       
  4748 	// Check RLine::GetCallInfo returns caps in set of KCapsVoice | KCapsDial.
       
  4749 	// Check RLine::GetCallInfo returns status of EStatusIdle.
       
  4750 	ASSERT_EQUALS(voiceLine.GetCallInfo(0, callInfo), KErrNone,  
       
  4751 			_L("RLine::GetCallInfo returned an error"));
       
  4752 	ASSERT_TRUE(callInfo.iCallName.Length() >0,  
       
  4753 			_L("RLine::GetCallInfo returned an invalid  name"));
       
  4754 	ASSERT_BITS_SET(callInfo.iCallCapsFlags, RCall::KCapsVoice | RCall::KCapsDial, KNoUnwantedBits,  
       
  4755 			_L("RLine::GetCallInfo returned wrong caps"));	
       
  4756 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusIdle,  
       
  4757 			_L("RLine::GetCallInfo wrong iStatus, should be EStatusIdle"));
       
  4758 
       
  4759 	// Check RLine::GetInfo returns status of EStatusIdle.
       
  4760 	ASSERT_EQUALS(voiceLine.GetInfo(lineInfo), KErrNone,  
       
  4761 			_L("RLine::GetInfo returned an error")); 
       
  4762 	ASSERT_EQUALS(lineInfo.iStatus, RCall::EStatusIdle, 
       
  4763 			_L("RLine::GetInfo did not return EStatusConnected"));
       
  4764 
       
  4765 	
       
  4766 	////////////////////////////////////////////////////////////////
       
  4767 	// TEST END
       
  4768 	////////////////////////////////////////////////////////////////
       
  4769 
       
  4770     StartCleanup();
       
  4771     
       
  4772     // hang up the active call
       
  4773 	TCoreEtelRequestStatus<RCall> hangUpStatus (call1,&RCall::HangUpCancel);
       
  4774 	CleanupStack::PushL(hangUpStatus);		
       
  4775 	call1.HangUp(hangUpStatus);
       
  4776 	WaitForRequestWithTimeOut(hangUpStatus, ETimeMedium);	
       
  4777 
       
  4778 	// Pop 
       
  4779 	// notifyStatusChangeStatus
       
  4780 	// notifyMobileLineChangeStatus
       
  4781 	// dialStatus
       
  4782 	// hangUpStatus	
       
  4783 	CleanupStack::PopAndDestroy(4,&notifyStatusChangeStatus);
       
  4784 		
       
  4785 	return TestStepResult();
       
  4786 	}
       
  4787 
       
  4788 TPtrC CCTSYIntegrationTestCallControl0015::GetTestStepName()
       
  4789 /**
       
  4790  * @return The test step name.
       
  4791  */
       
  4792 	{
       
  4793 	return  _L("CCTSYIntegrationTestCallControl0015");
       
  4794 	}
       
  4795 
       
  4796 
       
  4797 
       
  4798 CCTSYIntegrationTestCallControl0016::CCTSYIntegrationTestCallControl0016(CEtelSessionMgr& aEtelSessionMgr)
       
  4799 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
  4800 /**
       
  4801  * Constructor.
       
  4802  */
       
  4803 	{
       
  4804 	SetTestStepName(CCTSYIntegrationTestCallControl0016::GetTestStepName());
       
  4805 	}
       
  4806 
       
  4807 CCTSYIntegrationTestCallControl0016::~CCTSYIntegrationTestCallControl0016()
       
  4808 /**
       
  4809  * Destructor.
       
  4810  */
       
  4811 	{
       
  4812 	}
       
  4813 
       
  4814 TVerdict CCTSYIntegrationTestCallControl0016::doTestStepL()
       
  4815 /**
       
  4816  * @SYMTestCaseID BA-CTSY-INT-CCON-0016
       
  4817  * @SYMFssID BA/CTSY/CCON-0016
       
  4818  * @SYMTestCaseDesc Hang up of call by remote user.
       
  4819  * @SYMTestPriority High
       
  4820  * @SYMTestActions RCall::GetCaps, RMobileCall::NotifyHookChange, RMobileCall::NotifyMobileCallCapsChange, RMobileCall::GetMobileCallStatus, RMobileCall::GetMobileCallInfo, RCall::GetInfo, RCall::NotifyStatusChange, RMobileCall::NotifyMobileCallStatusChange, RCall::NotifyCapsChange, RCall::GetStatus, RMobileCall::GetMobileCallCaps
       
  4821  * @SYMTestExpectedResults Pass - Call hung up. Line info correct.
       
  4822  * @SYMTestType CIT
       
  4823  * @SYMTestCaseDependencies live/automatic
       
  4824  *
       
  4825  * Reason for test: Verify call status, caps and call info is correctly reflected by RCall and RMobileCall
       
  4826  *
       
  4827  * @return - TVerdict code
       
  4828  */
       
  4829 	{
       
  4830 
       
  4831 	////////////////////////////////////////////////////////////////
       
  4832 	// SET UP
       
  4833 	////////////////////////////////////////////////////////////////
       
  4834 
       
  4835 	
       
  4836 	// Check phone supports KCapsVoice
       
  4837 	// Get Voice line 1 
       
  4838 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
  4839 	// Get call 1 
       
  4840 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
  4841 
       
  4842 	RLine::TCaps lineCaps; 
       
  4843 	CHECK_EQUALS_L(voiceLine.GetCaps(lineCaps), KErrNone,  
       
  4844 			_L("RMobileLine::GetCaps returned an error"));
       
  4845 	CHECK_BITS_SET_L(lineCaps.iFlags, RLine::KCapsVoice, KNoUnwantedBits,  
       
  4846 			_L("RLine::GetCaps returned wrong caps"));
       
  4847 
       
  4848 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
  4849 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
  4850 	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
  4851 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
  4852 				   
       
  4853 	////////////////////////////////////////////////////////////////
       
  4854 	// SET UP END
       
  4855 	////////////////////////////////////////////////////////////////
       
  4856 	
       
  4857 	StartTest();
       
  4858 	
       
  4859 	////////////////////////////////////////////////////////////////
       
  4860 	// TEST START
       
  4861 	////////////////////////////////////////////////////////////////
       
  4862 	
       
  4863 	
       
  4864 	// Post Notifier for RCall::NotifyCapsChange
       
  4865 	TCoreEtelRequestStatus<RCall> notifyCapsChangeStatus (call1,&RCall::NotifyCapsChangeCancel);	
       
  4866 	CleanupStack::PushL(notifyCapsChangeStatus);
       
  4867 	RCall::TCaps caps;
       
  4868 	call1.NotifyCapsChange(notifyCapsChangeStatus,caps);	
       
  4869 
       
  4870 	// post a notifier for RMobileCall::NotifyMobileCallCapsChange
       
  4871 	TExtEtelRequestStatus notifyMobileCallCapsChangeStatus(call1, EMobileCallNotifyMobileCallCapsChange);
       
  4872 	CleanupStack::PushL(notifyMobileCallCapsChangeStatus);
       
  4873 	RMobileCall::TMobileCallCapsV1 mobileCallCaps;
       
  4874 	RMobileCall::TMobileCallCapsV1Pckg mobileCallCapsPckg(mobileCallCaps);
       
  4875 	call1.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus, mobileCallCapsPckg);
       
  4876 	
       
  4877 	// post notifier for RCall::NotifyStatusChange
       
  4878 	TCoreEtelRequestStatus<RCall> notifyCallStatusChangeStatus (call1,&RCall::NotifyStatusChangeCancel);
       
  4879 	CleanupStack::PushL(notifyCallStatusChangeStatus);
       
  4880 	RCall::TStatus callStatus;
       
  4881 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  4882 
       
  4883 	// post a notifier for RMobileCall::NotifyMobileCallStatusChange
       
  4884 	TExtEtelRequestStatus notifyMobileCallChangeStatus(call1, EMobileCallNotifyMobileCallStatusChange);
       
  4885 	CleanupStack::PushL(notifyMobileCallChangeStatus);
       
  4886 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
  4887 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  4888 	
       
  4889 	// Dial RPS which answers 
       
  4890 	TPtrC number;
       
  4891 	GetRPSNumber(EVoiceLine,number);
       
  4892 	RPSAnswerNextCallL(EVoiceLine);
       
  4893 	
       
  4894 	TCoreEtelRequestStatus<RMobileCall> dialStatus(call1, &RCall::DialCancel);
       
  4895 	CleanupStack::PushL(dialStatus);											 
       
  4896 	call1.Dial(dialStatus, number);	
       
  4897 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeMedium), KErrNone,  
       
  4898 			_L("RCall::Dial timed-out"));
       
  4899 	ASSERT_EQUALS(dialStatus.Int(), KErrNone,  
       
  4900 			_L("RCall::Dial Expected KErrNone, but an error returned"));
       
  4901 
       
  4902 	// ===  Check call caps ===
       
  4903 	
       
  4904 	// Check RCall::NotifyCapsChange completes with caps in set of KCapsVoice | KCapsHangUp.
       
  4905 	RCall::TCaps wantedCaps, unwantedCaps;
       
  4906 	wantedCaps.iFlags = RCall::KCapsVoice | RCall::KCapsHangUp;
       
  4907 	unwantedCaps.iFlags = 0;
       
  4908 	const TInt wantedStatus = KErrNone;
       
  4909 	
       
  4910 	iCallControlTestHelper.WaitForCallNotifyCapsChange(call1,
       
  4911 													   notifyCapsChangeStatus,
       
  4912 													   caps,
       
  4913 													   wantedCaps,
       
  4914 													   unwantedCaps,
       
  4915 													   wantedStatus);
       
  4916 
       
  4917 	// Check RCall::GetCaps supports KCapsHangUp | KCapsVoice.
       
  4918 	ASSERT_EQUALS(call1.GetCaps(caps), KErrNone,   
       
  4919 			_L("RCall::GetCaps returned an Error"));
       
  4920 	ASSERT_BITS_SET(caps.iFlags, RCall::KCapsHangUp | RCall::KCapsVoice, KNoUnwantedBits,  
       
  4921 			_L("RCall::GetCaps returned wrong caps"));
       
  4922 
       
  4923 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice | KCapsHold | KCapsHangUp.
       
  4924 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallEventCaps in set of KCapsLocalHold | KCapsLocalTransfer | KCapsRemoteHold | KCapsRemoteTerminate | KCapsRemoteConferenceCreate.
       
  4925 	RMobileCall::TMobileCallCapsV1 wantedMobileCaps;
       
  4926 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsHold | RMobileCall::KCapsHangUp;
       
  4927 	wantedMobileCaps.iCallEventCaps = RMobileCall::KCapsLocalHold | RMobileCall::KCapsLocalTransfer | RMobileCall::KCapsRemoteHold | RMobileCall::KCapsRemoteTerminate | RMobileCall::KCapsRemoteConferenceCreate;
       
  4928 
       
  4929 	TCmpRMobileCallTMobileCallCaps mobileCapsComp(wantedMobileCaps, mobileCallCaps, *this);
       
  4930 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(call1,
       
  4931 																	   notifyMobileCallCapsChangeStatus,
       
  4932 																	   mobileCapsComp,
       
  4933 																	   wantedStatus);
       
  4934 
       
  4935 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsHold | KCapsHangUp.
       
  4936 	// Check RMobileCall::GetMobileCallCaps includes iCallEventCaps in set of KCapsLocalHold | KCapsLocalTransfer | KCapsRemoteHold | KCapsRemoteTerminate | KCapsRemoteConferenceCreate.
       
  4937 	ASSERT_EQUALS(call1.GetMobileCallCaps(mobileCallCapsPckg), KErrNone,  
       
  4938 			_L("RMobileCall::GetMobileCallCaps returned an error"));
       
  4939 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsHold | RMobileCall::KCapsHangUp;
       
  4940 	
       
  4941 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps, KNoUnwantedBits,
       
  4942 			_L("RMobileCall::GetMobileCallCaps returned unexpected iCallControlCaps"));	
       
  4943 	
       
  4944 	wantedMobileCaps.iCallEventCaps = 	RMobileCall::KCapsLocalHold | 
       
  4945 										RMobileCall::KCapsLocalTransfer |
       
  4946 										RMobileCall::KCapsRemoteHold | 
       
  4947 										RMobileCall::KCapsRemoteTerminate | 
       
  4948 										RMobileCall::KCapsRemoteConferenceCreate;
       
  4949 
       
  4950 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedMobileCaps.iCallEventCaps, KNoUnwantedBits,
       
  4951 			_L("RMobileCall::GetMobileCallCaps returned unexpected iCallEventCaps"));
       
  4952 
       
  4953 	// ===  Check call status ===
       
  4954 
       
  4955 	// Check RCall::NotifyStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  4956 	RCall::TStatus expectedCallStatus = RCall::EStatusDialling;
       
  4957 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  4958 														 notifyCallStatusChangeStatus,
       
  4959 														 callStatus,
       
  4960 														 expectedCallStatus,
       
  4961 														 wantedStatus);
       
  4962 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  4963 	expectedCallStatus = RCall::EStatusConnecting;
       
  4964 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  4965 													 notifyCallStatusChangeStatus,
       
  4966 													 callStatus,
       
  4967 													 expectedCallStatus,
       
  4968 													 wantedStatus);
       
  4969 
       
  4970 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  4971 	expectedCallStatus = RCall::EStatusConnected;
       
  4972 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  4973 													 notifyCallStatusChangeStatus,
       
  4974 													 callStatus,
       
  4975 													 expectedCallStatus,
       
  4976 													 wantedStatus);	
       
  4977 
       
  4978 	// Check RCall::GetStatus returns EStatusConnected.
       
  4979 	ASSERT_EQUALS(call1.GetStatus(callStatus),KErrNone,  
       
  4980 			_L("RCall::GetStatus returned an error"));
       
  4981 	ASSERT_EQUALS(callStatus, RCall::EStatusConnected,  
       
  4982 			_L("RCall::GetStatus returned an unexpected call status"));
       
  4983 
       
  4984 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  4985 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusDialling;
       
  4986 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  4987 															notifyMobileCallChangeStatus,
       
  4988 															mobileCallStatus,
       
  4989 															expectedMobileCallStatus,
       
  4990 															wantedStatus);
       
  4991 
       
  4992 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  4993 	expectedMobileCallStatus = RMobileCall::EStatusConnecting;
       
  4994 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  4995 															notifyMobileCallChangeStatus,
       
  4996 															mobileCallStatus,
       
  4997 															expectedMobileCallStatus,
       
  4998 															wantedStatus);
       
  4999 
       
  5000 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  5001 	expectedMobileCallStatus = RMobileCall::EStatusConnected;															
       
  5002 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  5003 															notifyMobileCallChangeStatus,
       
  5004 															mobileCallStatus,
       
  5005 															expectedMobileCallStatus,
       
  5006 															wantedStatus);
       
  5007 
       
  5008 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusConnected.
       
  5009 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  5010 			_L("RMobileCall::GetMobileStatus returned an error"));
       
  5011 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected,  
       
  5012 			_L("RMobileCall::GetMobileStatus did not return a status EStatusConnected"));
       
  5013 
       
  5014 	// ===  Check call info ===
       
  5015 
       
  5016 	User::After(2000000);	// Wait added for call duration
       
  5017 
       
  5018 	// Check RCall::GetInfo returns valid call name.
       
  5019 	// Check RCall::GetInfo returns valid voice line name.
       
  5020     // Check RCall::GetInfo returns call status of EStatusConnected.
       
  5021 	// Check RCall::GetInfo returns call duration of > 0.
       
  5022 	RCall::TCallInfo callInfo;
       
  5023 	ASSERT_EQUALS(call1.GetInfo(callInfo), KErrNone,  
       
  5024 			_L("RCall::GetInfo returned an error"));
       
  5025 	ASSERT_TRUE(callInfo.iCallName.Length() >0,  
       
  5026 			_L("RCall::GetInfo returned an invalid  name"));
       
  5027 	ASSERT_TRUE(callInfo.iLineName.Length() >0,  
       
  5028 			_L("RCall::GetInfo returned an invalid  Line name"));
       
  5029 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusConnected,  
       
  5030 			_L("RCall::GetInfo wrong iStatus, should be EStatusConnected"));
       
  5031 	ASSERT_TRUE(callInfo.iDuration.Int() > 0,  
       
  5032 			_L("RCall::GetInfo wrong iDuration, should be >0"));
       
  5033 
       
  5034 	// Check RMobileCall::GetMobileCallInfo returns iValid > 0.
       
  5035 	// Check RMobileCall::GetMobileCallInfo returns data for attributes makred as valid in iValid.
       
  5036 	// Check RMobileCall::GetMobileCallInfo returns valid line name.
       
  5037 	RMobileCall::TMobileCallInfoV1 mobileCallInfo;
       
  5038 	RMobileCall::TMobileCallInfoV1Pckg mobileCallInfoPckg(mobileCallInfo);
       
  5039 	ASSERT_EQUALS(call1.GetMobileCallInfo(mobileCallInfoPckg), KErrNone,  
       
  5040 			_L("RMobileCall::GetMobileCallInfo returned an error"));
       
  5041 	ASSERT_TRUE(mobileCallInfo.iLineName.Length() >0,  
       
  5042 			_L("RMobileCall::GetMobileCallInfo returned an invalid line name"));
       
  5043 	ASSERT_TRUE(mobileCallInfo.iValid > 0,  
       
  5044 			_L("RMobileCall::GetMobileCallInfo returned unexpected flags in iValid"));
       
  5045 
       
  5046 	iCallControlTestHelper.CheckForValidCallInfo(mobileCallInfo, number);
       
  5047 
       
  5048 	//==== Post Notifiers ========
       
  5049 	call1.NotifyCapsChange(notifyCapsChangeStatus,caps);
       
  5050 	call1.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus, mobileCallCapsPckg);
       
  5051 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  5052 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  5053 
       
  5054 	// RPS hangs up. 
       
  5055 	ASSERT_EQUALS(RPSHangupL(EVoiceLine,0), KErrNone, _L("CCTSYIntegrationTestSuiteStepBase::RPSHangup returned an error"));
       
  5056 	
       
  5057 	// ===  Check call caps ===
       
  5058 
       
  5059 	// Check RCall::NotifyCapsChange completes with caps in set of KCapsVoice | KCapsDial.
       
  5060 	wantedCaps.iFlags = RCall::KCapsVoice | RCall::KCapsDial;
       
  5061 	unwantedCaps.iFlags  = KNoUnwantedBits;
       
  5062 	ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10023);
       
  5063 	iCallControlTestHelper.WaitForCallNotifyCapsChange(call1,
       
  5064 													   notifyCapsChangeStatus,
       
  5065 													   caps,
       
  5066 													   wantedCaps,
       
  5067 													   unwantedCaps,
       
  5068 													   wantedStatus);
       
  5069 													   
       
  5070 	// Check RCall::GetCaps supports KCapsVoice | KCapsDial.
       
  5071 	ASSERT_EQUALS(call1.GetCaps(caps), KErrNone,   
       
  5072 			_L("RCall::GetCaps returned an Error"));
       
  5073 	ASSERT_BITS_SET(caps.iFlags, RCall::KCapsVoice | RCall::KCapsDial, KNoUnwantedBits,  
       
  5074 			_L("RCall::GetCaps returned wrong caps"));
       
  5075 
       
  5076 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice | KCapsDial.
       
  5077 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallEventCaps in set of 0.
       
  5078 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsDial;
       
  5079 	wantedMobileCaps.iCallEventCaps = 0;		
       
  5080 	TCmpRMobileCallTMobileCallCaps mobileCapsComp2(wantedMobileCaps, mobileCallCaps, *this);
       
  5081 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(call1,
       
  5082 																	   notifyMobileCallCapsChangeStatus,
       
  5083 																	   mobileCapsComp2,
       
  5084 																	   wantedStatus);
       
  5085 
       
  5086 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsDial.
       
  5087 	// Check RMobileCall::GetMobileCallCaps includes iCallEventCaps in set of 0.
       
  5088 	ASSERT_EQUALS(call1.GetMobileCallCaps(mobileCallCapsPckg), KErrNone,  
       
  5089 			_L("RMobileCall::GetMobileCallCaps returned an error"));	
       
  5090 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsDial;											   
       
  5091 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps, KNoUnwantedBits,  
       
  5092 			_L("RMobileCall::GetMobileCallCaps returned unexpected iCallControlCaps"));
       
  5093 	wantedMobileCaps.iCallEventCaps = 0;											 
       
  5094 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedMobileCaps.iCallEventCaps, KNoUnwantedBits, 
       
  5095 			_L("RMobileCall::GetMobileCallCaps returned unexpected iCallEventCaps"));										   
       
  5096 
       
  5097 	// ===  Check call status ===
       
  5098 
       
  5099 	// Check RCall::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle.
       
  5100 	expectedCallStatus = RCall::EStatusHangingUp;
       
  5101 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  5102 														 notifyCallStatusChangeStatus,
       
  5103 														 callStatus,
       
  5104 														 expectedCallStatus,
       
  5105 														 wantedStatus);
       
  5106 
       
  5107 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  5108 	expectedCallStatus = RCall::EStatusIdle;
       
  5109 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  5110 													 notifyCallStatusChangeStatus,
       
  5111 													 callStatus,
       
  5112 													 expectedCallStatus,
       
  5113 													 wantedStatus);
       
  5114 
       
  5115 	// Check RCall::GetStatus returns EStatusIdle.
       
  5116 	ASSERT_EQUALS(call1.GetStatus(callStatus),KErrNone,  
       
  5117 			_L("RCall::GetStatus returned an error"));
       
  5118 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle,  
       
  5119 			_L("RCall::GetStatus returned an unexpected call status"));
       
  5120 
       
  5121 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDisconnecting -> EStatusIdle.
       
  5122 	expectedMobileCallStatus = RMobileCall::EStatusDisconnecting;
       
  5123 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  5124 															notifyMobileCallChangeStatus,
       
  5125 															mobileCallStatus,
       
  5126 															expectedMobileCallStatus,
       
  5127 															wantedStatus);
       
  5128 
       
  5129 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  5130 	expectedMobileCallStatus = RMobileCall::EStatusIdle;
       
  5131 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  5132 															notifyMobileCallChangeStatus,
       
  5133 															mobileCallStatus,
       
  5134 															expectedMobileCallStatus,
       
  5135 															wantedStatus);
       
  5136 															
       
  5137 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
  5138 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  5139 			_L("RMobileCall::GetMobileStatus returned an error"));
       
  5140 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle,  
       
  5141 			_L("RMobileCall::GetMobileStatus did not return a status EStatusIdle"));
       
  5142 
       
  5143 	// ===  Check call info ===
       
  5144 
       
  5145 	// Check RCall::GetInfo returns valid call name.
       
  5146 	// Check RCall::GetInfo returns valid voice line name.
       
  5147     // Check RCall::GetInfo returns call status of EStatusIdle.
       
  5148 	// Check RCall::GetInfo returns call duration of > 0.
       
  5149 	ASSERT_EQUALS(call1.GetInfo(callInfo), KErrNone,  
       
  5150 			_L("RCall::GetInfo returned an error"));
       
  5151 	ASSERT_TRUE(callInfo.iCallName.Length() >0,  
       
  5152 			_L("RCall::GetInfo returned an invalid  name"));
       
  5153 	ASSERT_TRUE(callInfo.iLineName.Length() >0,  
       
  5154 			_L("RCall::GetInfo returned an invalid  Line name"));
       
  5155 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusIdle,  
       
  5156 			_L("RCall::GetInfo wrong iStatus, should be EStatusIdle"));
       
  5157 	ASSERT_TRUE(callInfo.iDuration.Int() > 0,  
       
  5158 			_L("RCall::GetInfo wrong iDuration, should be >0"));
       
  5159 
       
  5160 	// Check RMobileCall::GetMobileCallInfo returns iValid > 0.
       
  5161 	// Check RMobileCall::GetMobileCallInfo returns data for attributes makred as valid in iValid.
       
  5162 	// Check RMobileCall::GetMobileCallInfo returns valid line name.
       
  5163 	ASSERT_EQUALS(call1.GetMobileCallInfo(mobileCallInfoPckg), KErrNone,  
       
  5164 			_L("RMobileCall::GetMobileCallInfo returned an error"));
       
  5165 	ASSERT_TRUE(mobileCallInfo.iLineName.Length() >0,  
       
  5166 			_L("RMobileCall::GetMobileCallInfo returned an invalid line name"));
       
  5167 	ASSERT_TRUE(mobileCallInfo.iValid > 0,  
       
  5168 			_L("RMobileCall::GetMobileCallInfo returned unexpected flags in iValid"));
       
  5169 
       
  5170 //	iCallControlTestHelper.CheckForValidCallInfo(mobileCallInfo, number);
       
  5171 	// Note: not using TCallControlTsyTestHelper::CheckForValidCallInfo() as some checks would fail at this point
       
  5172 	ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10017);
       
  5173 	if(mobileCallInfo.iValid & RMobileCall::KCallRemoteParty)
       
  5174 		{
       
  5175 		ASSERT_TRUE(mobileCallInfo.iRemoteParty.iRemoteNumber.iTelNumber.Length() > 0,
       
  5176 					_L("RMobileCall::GetMobileCallInfo set bitmask for KCallRemoteParty to true, but iRemoteParty.iRemoteNumber.iTelNumber has invalid length"));
       
  5177 		}
       
  5178 	if(mobileCallInfo.iValid & RMobileCall::KCallDuration)
       
  5179 		{
       
  5180 		TTimeIntervalSeconds startTime = 0;
       
  5181 		TTimeIntervalSeconds durationTime(mobileCallInfo.iDuration);
       
  5182 		ASSERT_TRUE(durationTime > startTime,
       
  5183 					_L("RMobileCall::GetMobileCallInfo set bitmask for KCallDuration to true, but set iDuration to an invalid number"));
       
  5184 		}
       
  5185 		
       
  5186 	if(mobileCallInfo.iValid & RMobileCall::KCallId)
       
  5187 		{
       
  5188 		ASSERT_EQUALS( mobileCallInfo.iCallId, -1,
       
  5189 					_L("RMobileCall::GetMobileCallInfo set bitmask for KCallId to true, but set iCallId to an invalid number"));
       
  5190 		}
       
  5191 	
       
  5192 	////////////////////////////////////////////////////////////////
       
  5193 	// TEST END
       
  5194 	////////////////////////////////////////////////////////////////
       
  5195 
       
  5196     StartCleanup();	
       
  5197 	
       
  5198 	// Pop 
       
  5199 	// notifyCapsChangeStatus 	
       
  5200 	// notifyMobileCallCapsChangeStatus
       
  5201 	// notifyCallStatusChangeStatus
       
  5202 	// notifyMobileCallChangeStatus
       
  5203 	// dialStatus
       
  5204 	CleanupStack::PopAndDestroy(5,&notifyCapsChangeStatus);
       
  5205 	
       
  5206 	return TestStepResult();
       
  5207 	}
       
  5208 
       
  5209 TPtrC CCTSYIntegrationTestCallControl0016::GetTestStepName()
       
  5210 /**
       
  5211  * @return The test step name.
       
  5212  */
       
  5213 	{
       
  5214 	return  _L("CCTSYIntegrationTestCallControl0016");
       
  5215 	}
       
  5216 
       
  5217 
       
  5218 
       
  5219 CCTSYIntegrationTestCallControl0017::CCTSYIntegrationTestCallControl0017(CEtelSessionMgr& aEtelSessionMgr)
       
  5220 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
  5221 /**
       
  5222  * Constructor.
       
  5223  */
       
  5224 	{
       
  5225 	SetTestStepName(CCTSYIntegrationTestCallControl0017::GetTestStepName());
       
  5226 	}
       
  5227 
       
  5228 CCTSYIntegrationTestCallControl0017::~CCTSYIntegrationTestCallControl0017()
       
  5229 /**
       
  5230  * Destructor.
       
  5231  */
       
  5232 	{
       
  5233 	}
       
  5234 
       
  5235 TVerdict CCTSYIntegrationTestCallControl0017::doTestStepL()
       
  5236 /**
       
  5237  * @SYMTestCaseID BA-CTSY-INT-CCON-0017
       
  5238  * @SYMFssID BA/CTSY/CCON-0017
       
  5239  * @SYMTestCaseDesc Rejection of an incoming call
       
  5240  * @SYMTestPriority High
       
  5241  * @SYMTestActions RMobileLine::NotifyMobileLineStatusChange, RCall::HangUp, RMobileCall::GetMobileCallStatus, RLine::NotifyIncomingCall, RCall::NotifyStatusChange, RMobileCall::NotifyMobileCallStatusChange, RMobileLine::GetMobileLineStatus, RLine::GetStatus, RLine::NotifyHookChange, RLine::GetHookStatus, RCall::GetStatus
       
  5242  * @SYMTestExpectedResults Pass - Call, line and hook statuses return to idle.
       
  5243  * @SYMTestType CIT
       
  5244  * @SYMTestCaseDependencies live/automatic
       
  5245  *
       
  5246  * Reason for test: Verify call and line statuses return to
       
  5247  * idle.
       
  5248  *
       
  5249  * @return - TVerdict code
       
  5250  */
       
  5251 	{
       
  5252 
       
  5253 	////////////////////////////////////////////////////////////////
       
  5254 	// SET UP
       
  5255 	////////////////////////////////////////////////////////////////
       
  5256 	
       
  5257 	// Check phone supports KCapsVoice
       
  5258 	// Get Voice line 1 
       
  5259 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
  5260 	// Get call 1 
       
  5261 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
  5262 
       
  5263 	RLine::TCaps lineCaps; 
       
  5264 	CHECK_EQUALS_L(voiceLine.GetCaps(lineCaps), KErrNone,  
       
  5265 			_L("RMobileLine::GetCaps returned an error"));
       
  5266 	CHECK_BITS_SET_L(lineCaps.iFlags, RLine::KCapsVoice, KNoUnwantedBits,  
       
  5267 			_L("RLine::GetCaps returned wrong caps"));
       
  5268 
       
  5269 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
  5270 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
  5271 	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
  5272 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
  5273 				   
       
  5274 	////////////////////////////////////////////////////////////////
       
  5275 	// SET UP END
       
  5276 	////////////////////////////////////////////////////////////////
       
  5277 	
       
  5278 	StartTest();
       
  5279 	
       
  5280 	////////////////////////////////////////////////////////////////
       
  5281 	// TEST START
       
  5282 	////////////////////////////////////////////////////////////////
       
  5283 	
       
  5284 	// post notifier for RLine::NotifyIncomingCall
       
  5285 	TCoreEtelRequestStatus<RLine> notifyIncomingCallStatus (voiceLine,&RLine::NotifyIncomingCallCancel);
       
  5286 	CleanupStack::PushL(notifyIncomingCallStatus);
       
  5287 	TName name;
       
  5288 	voiceLine.NotifyIncomingCall(notifyIncomingCallStatus,name);
       
  5289 		
       
  5290 	// Request incoming call from RPS. 
       
  5291 	RPSRequestIncomingCallL(EVoiceLine);
       
  5292 
       
  5293 	// Check RLine::NotifyIncomingCall completes with call name.
       
  5294 	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyIncomingCallStatus,ETimeMedium),KErrNone, 
       
  5295 			_L("RLine::NotifyIncomingCall did not complete without error"));
       
  5296 	ASSERT_EQUALS(notifyIncomingCallStatus.Int(), KErrNone,  
       
  5297 			_L("RLine::NotifyIncomingCall set requestStatus to an error"));
       
  5298 	ASSERT_TRUE(name.Length() > 0,  
       
  5299 			_L("RLine::NotifyIncomingCall did not set a line name"));
       
  5300 
       
  5301 	// Get the incoming call
       
  5302 	TCallId incomingCallId;
       
  5303 	call1 = iEtelSessionMgr.GetIncomingCallL(KMainServer, KMainPhone, KVoiceLine, name, incomingCallId);
       
  5304 
       
  5305 	// post notifier for RCall::NotifyStatusChange
       
  5306 	TCoreEtelRequestStatus<RCall> notifyCallStatusChangeStatus (call1,&RCall::NotifyStatusChangeCancel);
       
  5307 	CleanupStack::PushL(notifyCallStatusChangeStatus);
       
  5308 	RCall::TStatus callStatus;
       
  5309 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  5310 
       
  5311 	// post a notifier for RMobileCall::NotifyMobileCallStatusChange
       
  5312 	TExtEtelRequestStatus notifyMobileCallChangeStatus(call1, EMobileCallNotifyMobileCallStatusChange);
       
  5313 	CleanupStack::PushL(notifyMobileCallChangeStatus);
       
  5314 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
  5315 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  5316 
       
  5317 	// post notifier for RLine::NotifyStatusChange
       
  5318 	TCoreEtelRequestStatus<RLine> notifyStatusChangeStatus (voiceLine,&RLine::NotifyStatusChangeCancel);
       
  5319 	CleanupStack::PushL(notifyStatusChangeStatus);
       
  5320 	RCall::TStatus lineStatus;
       
  5321 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
  5322 	
       
  5323 	// post a notifier for RMobileLine::NotifyMobileLineStatusChange
       
  5324 	TExtEtelRequestStatus notifyMobileLineChangeStatus(voiceLine, EMobileLineNotifyMobileLineStatusChange);
       
  5325 	CleanupStack::PushL(notifyMobileLineChangeStatus);
       
  5326 	RMobileCall::TMobileCallStatus mobileLineStatus;
       
  5327 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
  5328 
       
  5329 	// Reject call with RCall::HangUp 
       
  5330 	TCoreEtelRequestStatus<RCall> hangUpStatus (call1,&RCall::HangUpCancel);
       
  5331 	CleanupStack::PushL(hangUpStatus);	
       
  5332 	call1.HangUp(hangUpStatus);
       
  5333 	ASSERT_EQUALS(WaitForRequestWithTimeOut(hangUpStatus, ETimeMedium), KErrNone,  
       
  5334 			_L("RCall::HangUp returned an error"));	
       
  5335 	ASSERT_EQUALS(hangUpStatus.Int(), KErrNone,  
       
  5336 			_L("RCall::HangUp returned an error"));
       
  5337 
       
  5338 	const TInt expectedStatus = KErrNone;
       
  5339 
       
  5340 	// ===  Check call status ===
       
  5341 
       
  5342 	// Check RCall::NotifyStatusChange completes with EStatusIdle.
       
  5343 	RCall::TStatus expectedCallStatus = RCall::EStatusIdle;
       
  5344 	const TInt wantedStatus = KErrNone;
       
  5345 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  5346 														 notifyStatusChangeStatus,
       
  5347 														 callStatus,
       
  5348 														 expectedCallStatus,
       
  5349 														 wantedStatus);
       
  5350 	// Check RCall::GetStatus returns EStatusIdle.
       
  5351 	ASSERT_EQUALS(call1.GetStatus(callStatus),KErrNone,  
       
  5352 			_L("RCall::GetStatus returned an error"));
       
  5353 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle,  
       
  5354 			_L("RCall::GetStatus returned an unexpected call status"));
       
  5355 
       
  5356 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusIdle.
       
  5357 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusIdle;
       
  5358 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  5359 															notifyMobileCallChangeStatus,
       
  5360 															mobileCallStatus,
       
  5361 															expectedMobileCallStatus,
       
  5362 															wantedStatus);
       
  5363 
       
  5364 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
  5365 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  5366 			_L("RMobileCall::GetMobileStatus returned an error"));
       
  5367 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle,  
       
  5368 			_L("RMobileCall::GetMobileStatus did not return a status EStatusIdle"));
       
  5369 
       
  5370 	// ===  Check line status ===
       
  5371 
       
  5372 	// Check RLine::NotifyStatusChange completes with EStatusIdle
       
  5373 	RCall::TStatus expectedLineStatus = RCall::EStatusIdle;
       
  5374 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
  5375 														 notifyStatusChangeStatus,
       
  5376 														 lineStatus,
       
  5377 														 expectedLineStatus,
       
  5378 														 expectedStatus);
       
  5379 	// Check RLine::GetStatus returns EStatusIdle
       
  5380 	ASSERT_EQUALS(voiceLine.GetStatus(lineStatus), KErrNone,  
       
  5381 			_L("RLine::GetStatus returned an error"));
       
  5382 	ASSERT_EQUALS(lineStatus, RCall::EStatusIdle,  
       
  5383 			_L("RLine::GetStatus did not return EStatusIdle as expected"));
       
  5384 
       
  5385 	// Check RMobileLine::NotifyMobileLineStatusChange completes with EStatusIdle
       
  5386 	RMobileCall::TMobileCallStatus expectedMobileLineStatus = RMobileCall::EStatusIdle;
       
  5387 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  5388 																		notifyMobileLineChangeStatus,
       
  5389 																		mobileLineStatus,
       
  5390 																		expectedMobileLineStatus,
       
  5391 																		expectedStatus);
       
  5392 
       
  5393 	// Check RMobileLine::GetMobileLineStatus returns EStatusIdle
       
  5394 	ASSERT_EQUALS(voiceLine.GetMobileLineStatus(mobileLineStatus), KErrNone,  
       
  5395 			_L("RMobileLine::GetMobileLineStatus returned an error"));
       
  5396 	ASSERT_EQUALS(mobileLineStatus, RMobileCall::EStatusIdle,  
       
  5397 			_L("RMobileLine::GetMobileLineStatus did not set line status to EStatusIdle"));
       
  5398 	
       
  5399 	////////////////////////////////////////////////////////////////
       
  5400 	// TEST END
       
  5401 	////////////////////////////////////////////////////////////////
       
  5402 
       
  5403     StartCleanup();
       
  5404 	
       
  5405 	// PopAndDestroy
       
  5406 		// hangUpStatus
       
  5407 		// notifyMobileLineChangeStatus
       
  5408 		// notifyStatusChangeStatus
       
  5409 		// notifyMobileCallChangeStatus
       
  5410 		// notifyCallStatusChangeStatus
       
  5411 		// notifyIncomingCallStatus
       
  5412 	
       
  5413 	CleanupStack::PopAndDestroy(6,&notifyIncomingCallStatus);
       
  5414 	
       
  5415 	return TestStepResult();
       
  5416 	}
       
  5417 
       
  5418 TPtrC CCTSYIntegrationTestCallControl0017::GetTestStepName()
       
  5419 /**
       
  5420  * @return The test step name.
       
  5421  */
       
  5422 	{
       
  5423 	return  _L("CCTSYIntegrationTestCallControl0017");
       
  5424 	}
       
  5425 
       
  5426 
       
  5427 
       
  5428 CCTSYIntegrationTestCallControl0018::CCTSYIntegrationTestCallControl0018(CEtelSessionMgr& aEtelSessionMgr)
       
  5429 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
  5430 /**
       
  5431  * Constructor.
       
  5432  */
       
  5433 	{
       
  5434 	SetTestStepName(CCTSYIntegrationTestCallControl0018::GetTestStepName());
       
  5435 	}
       
  5436 
       
  5437 CCTSYIntegrationTestCallControl0018::~CCTSYIntegrationTestCallControl0018()
       
  5438 /**
       
  5439  * Destructor.
       
  5440  */
       
  5441 	{
       
  5442 	}
       
  5443 
       
  5444 TVerdict CCTSYIntegrationTestCallControl0018::doTestStepL()
       
  5445 /**
       
  5446  * @SYMTestCaseID BA-CTSY-INT-CCON-0018
       
  5447  * @SYMFssID BA/CTSY/CCON-0018
       
  5448  * @SYMTestCaseDesc Answer incoming call and hang up call.
       
  5449  * @SYMTestPriority High
       
  5450  * @SYMTestActions RCall::OpenExistingCall, RCall::AnswerIncomingCall, RCall::HangUp, RCall::NotifyStatusChange, RCall::GetStatus, RMobileCall::NotifyMobileCallStatusChange, RMobileCall::GetMobileCallStatus
       
  5451  * @SYMTestExpectedResults Pass - Call answered and then hung up.
       
  5452  * @SYMTestType CIT
       
  5453  * @SYMTestCaseDependencies live/automatic
       
  5454  *
       
  5455  * Reason for test: Verify call can be answered with specified params and call status, info and caps are correct.
       
  5456  *
       
  5457  * @return - TVerdict code
       
  5458  */
       
  5459 	{
       
  5460 	
       
  5461 	////////////////////////////////////////////////////////////////
       
  5462 	// SET UP
       
  5463 	////////////////////////////////////////////////////////////////
       
  5464 	
       
  5465 	// Check phone supports KCapsVoice
       
  5466 	// Get Voice line 1 
       
  5467 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
  5468 
       
  5469 	RLine::TCaps lineCaps; 
       
  5470 	CHECK_EQUALS_L(voiceLine.GetCaps(lineCaps), KErrNone,  
       
  5471 			_L("RMobileLine::GetCaps returned an error"));
       
  5472 	CHECK_BITS_SET_L(lineCaps.iFlags, RLine::KCapsVoice, KNoUnwantedBits,  
       
  5473 			_L("RLine::GetCaps returned wrong caps"));
       
  5474 
       
  5475 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
  5476 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
  5477  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
  5478 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
  5479 
       
  5480 	////////////////////////////////////////////////////////////////
       
  5481 	// SET UP END
       
  5482 	////////////////////////////////////////////////////////////////
       
  5483 	
       
  5484 	StartTest();
       
  5485 	
       
  5486 	////////////////////////////////////////////////////////////////
       
  5487 	// TEST START
       
  5488 	////////////////////////////////////////////////////////////////
       
  5489 
       
  5490 	// post notifier for RLine::NotifyIncomingCall
       
  5491 	TCoreEtelRequestStatus<RLine> notifyIncomingCallStatus (voiceLine,&RLine::NotifyIncomingCallCancel);
       
  5492 	CleanupStack::PushL(notifyIncomingCallStatus);
       
  5493 	TName name;
       
  5494 	voiceLine.NotifyIncomingCall(notifyIncomingCallStatus,name);	
       
  5495 
       
  5496 	// Request an incoming call from RPS. 
       
  5497 	RPSRequestIncomingCallL(EVoiceLine);
       
  5498 
       
  5499 	// Check RLine::NotifyIncomingCall completes with valid call name.
       
  5500 	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyIncomingCallStatus,ETimeMedium), KErrNone, 
       
  5501 			_L("RLine::NotifyIncomingCall did not complete without error"));
       
  5502 	ASSERT_EQUALS(notifyIncomingCallStatus.Int(), KErrNone,  
       
  5503 			_L("RLine::NotifyIncomingCall set requestStatus to an error"));
       
  5504 	ASSERT_TRUE(name.Length() > 0,  
       
  5505 			_L("RLine::NotifyIncomingCall did not set the name"));
       
  5506 
       
  5507 	TCallId incomingCallId;
       
  5508 	RMobileCall& incomingCall = iEtelSessionMgr.GetIncomingCallL(KMainServer, KMainPhone, KVoiceLine, name, incomingCallId);
       
  5509 
       
  5510 	// ===  Check call caps ===
       
  5511 
       
  5512 	// Check RCall::GetCaps supports caps in set of KCapsVoice | KCapsAnswer
       
  5513 	// Check RCall::GetCaps supports NOT in set of KCapsDial
       
  5514 	RCall::TCaps caps;
       
  5515 	ASSERT_EQUALS(incomingCall.GetCaps(caps), KErrNone,   
       
  5516 			_L("RCall::GetCaps returned an Error"));
       
  5517 	ASSERT_BITS_SET(caps.iFlags, RCall::KCapsVoice | RCall::KCapsAnswer, RCall::KCapsDial,  
       
  5518 			_L("RCall::GetCaps returned wrong caps"));
       
  5519 
       
  5520 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsDeflect | KCapsAnswer
       
  5521 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps NOT in set of KCapsDial
       
  5522 	RMobileCall::TMobileCallCapsV1 mobileCallCaps;
       
  5523 	RMobileCall::TMobileCallCapsV1Pckg capsPckg(mobileCallCaps);
       
  5524 	RMobileCall::TMobileCallCapsV1 wantedMobileCaps, unWantedMobileCaps;
       
  5525 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsDeflect | RMobileCall::KCapsAnswer;
       
  5526 	unWantedMobileCaps.iCallControlCaps = RMobileCall::KCapsDial;
       
  5527 	ASSERT_EQUALS(incomingCall.GetMobileCallCaps(capsPckg), KErrNone,  
       
  5528 			_L("RMobileCall::GetMobileCallCaps returned an error"));
       
  5529 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps, unWantedMobileCaps.iCallControlCaps,
       
  5530 			_L("RMobileCall::GetMobileCallCaps returned unexpected iCallControlCaps"));	
       
  5531 
       
  5532 	// ===  Check call status ===
       
  5533 
       
  5534 	// Check RCall::GetStatus returns EStatusRinging
       
  5535 	RCall::TStatus callStatus;
       
  5536 	ASSERT_EQUALS(incomingCall.GetStatus(callStatus), KErrNone,  
       
  5537 			_L("RCall::GetStatus returned an error"));
       
  5538 	ASSERT_EQUALS(callStatus, RCall::EStatusRinging,  
       
  5539 			_L("RCall::GetStatus did not return EStatusRinging as expected"));
       
  5540 
       
  5541 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusRinging
       
  5542 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
  5543 	ASSERT_EQUALS(incomingCall.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  5544 			_L("RMobileCall::GetMobileCallStatus returned an error"));
       
  5545 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusRinging,  
       
  5546 			_L("RMobileCall::GetMobileCallStatus did not set call status EStatusRinging as expected"));
       
  5547 
       
  5548 	// ===  Check call info ===
       
  5549 
       
  5550 	// Check RCall::GetInfo returns valid call name.
       
  5551 	// Check RCall::GetInfo returns valid voice line name.
       
  5552 	// Check RCall::GetInfo returns call status of EStatusRinging.
       
  5553 	// Check RCall::GetInfo returns call duration of 0.
       
  5554 	RCall::TCallInfo callInfo;
       
  5555 	ASSERT_EQUALS(incomingCall.GetInfo(callInfo), KErrNone,  
       
  5556 			_L("RCall::GetInfo returned an error"));
       
  5557 	ASSERT_TRUE(callInfo.iCallName.Length() >0,  
       
  5558 			_L("RCall::GetInfo returned an invalid  name"));
       
  5559 	ASSERT_TRUE(callInfo.iLineName.Length() >0,  
       
  5560 			_L("RCall::GetInfo returned an invalid  Line name"));
       
  5561 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusRinging,  
       
  5562 			_L("RCall::GetInfo wrong iStatus, should be EStatusRinging"));
       
  5563 	ASSERT_EQUALS(callInfo.iDuration.Int(), 0,  
       
  5564 			_L("RCall::GetInfo wrong iDuration, should be 0"));
       
  5565 
       
  5566 	// Check RMobileCall::GetMobileCallInfo returns iValid > 0.
       
  5567 	// Check RMobileCall::GetMobileCallInfo returns data for attributes makred as valid in iValid.
       
  5568 	// Check RMobileCall::GetMobileCallInfo returns valid line name.
       
  5569 	RMobileCall::TMobileCallInfoV1 mobileCallInfo;
       
  5570 	RMobileCall::TMobileCallInfoV1Pckg mobileCallInfoPckg(mobileCallInfo);
       
  5571 	User::After(KOneSecond*2);  // Give timers enough time to increment
       
  5572 	ASSERT_EQUALS(incomingCall.GetMobileCallInfo(mobileCallInfoPckg), KErrNone,  
       
  5573 			_L("RMobileCall::GetMobileCallInfo returned an error"));
       
  5574 	ASSERT_TRUE(mobileCallInfo.iLineName.Length() > 0,  
       
  5575 			_L("RMobileCall::GetMobileCallInfo returned an invalid line name"));
       
  5576 	ASSERT_TRUE(mobileCallInfo.iValid > 0,  
       
  5577 			_L("RMobileCall::GetMobileCallInfo returned unexpected flags in iValid"));
       
  5578 
       
  5579 	// Check RMobileCall::GetMobileCallInfo returns valid remote number.
       
  5580 	// Check RMobileCall::GetMobileCallInfo returns call duration=0
       
  5581 	// Check RMobileCall::GetMobileCallInfo returns valid callId
       
  5582 	// Note: not using TCallControlTsyTestHelper::CheckForValidCallInfo() as some checks would fail at this point
       
  5583 	if(mobileCallInfo.iValid & RMobileCall::KCallRemoteParty)
       
  5584 		{
       
  5585 		ASSERT_TRUE(mobileCallInfo.iRemoteParty.iRemoteNumber.iTelNumber.Length() > 0,
       
  5586 					_L("RMobileCall::GetMobileCallInfo set bitmask for KCallRemoteParty to true, but iRemoteParty.iRemoteNumber.iTelNumber has invalid length"))
       
  5587 		}
       
  5588 	if(mobileCallInfo.iValid & RMobileCall::KCallDuration)
       
  5589 		{
       
  5590 		TTimeIntervalSeconds startTime = 0;
       
  5591 		TTimeIntervalSeconds durationTime(mobileCallInfo.iDuration);
       
  5592 		ASSERT_EQUALS(durationTime.Int(), startTime.Int(),
       
  5593 					_L("RMobileCall::GetMobileCallInfo set bitmask for KCallDuration to true, but set iDuration to an invalid number"))
       
  5594 		}
       
  5595 	if(mobileCallInfo.iValid & RMobileCall::KCallId)
       
  5596 		{
       
  5597 		ASSERT_TRUE( mobileCallInfo.iCallId > -1,
       
  5598 					_L("RMobileCall::GetMobileCallInfo set bitmask for KCallId to true, but set iCallId to an invalid number"))
       
  5599 		DEBUG_PRINTF2(_L("call id=%d"), mobileCallInfo.iCallId);
       
  5600 		}
       
  5601 
       
  5602 	// Populate a RMobileCall::TMobileCallParamsV1 with: 
       
  5603 	RMobileCall::TMobileCallParamsV1 mobileCallParams;
       
  5604 	// ?iSpeakerControl = EMonitorSpeakerControlAlwaysOff 
       
  5605 	mobileCallParams.iSpeakerControl = RCall::EMonitorSpeakerControlAlwaysOff;
       
  5606 	// ?iSpeakerVolume = EMonitorSpeakerVolumeOff 
       
  5607 	mobileCallParams.iSpeakerVolume = RCall::EMonitorSpeakerVolumeOff;
       
  5608 	// ?iInterval = 0x01 
       
  5609 	mobileCallParams.iInterval = 0x01;
       
  5610 	// ?iWaitForDialTone = EDialToneWait 
       
  5611 	mobileCallParams.iWaitForDialTone = RCall::EDialToneWait;
       
  5612 	// ?iIdRestrict = EIdRestrictDefault 
       
  5613 	mobileCallParams.iIdRestrict = RMobileCall::EIdRestrictDefault;
       
  5614 	// ?iExplicitInvoke = TRUE 
       
  5615 	mobileCallParams.iCug.iExplicitInvoke = TRUE ;
       
  5616 	// ?iCugIndex = 0x0000 
       
  5617 	mobileCallParams.iCug.iCugIndex = 0x0000;
       
  5618 	// ?iSuppressOA = FALSE 
       
  5619 	mobileCallParams.iCug.iSuppressOA = FALSE;
       
  5620 	// ?iSuppressPrefCug = FALSE 
       
  5621 	mobileCallParams.iCug.iSuppressPrefCug = FALSE;
       
  5622 	// ?iAutoRedial = FALSE 
       
  5623 	mobileCallParams.iAutoRedial = FALSE;
       
  5624 	
       
  5625 	RMobileCall::TMobileCallParamsV1Pckg mobileCallParamsPckg(mobileCallParams);
       
  5626 
       
  5627 	// ==== Post Notifiers =====
       
  5628 	TCoreEtelRequestStatus<RCall> notifyCapsChangeStatus (incomingCall,&RCall::NotifyCapsChangeCancel);	
       
  5629 	CleanupStack::PushL(notifyCapsChangeStatus);
       
  5630 	incomingCall.NotifyCapsChange(notifyCapsChangeStatus,caps);
       
  5631 	
       
  5632 	// post notifier for RMobileCall::NotifyMobileCallCapsChange
       
  5633 	TExtEtelRequestStatus notifyMobileCallCapsChangeStatus(incomingCall, EMobileCallNotifyMobileCallCapsChange);
       
  5634 	CleanupStack::PushL(notifyMobileCallCapsChangeStatus);	
       
  5635 	incomingCall.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus, capsPckg);
       
  5636 
       
  5637 	// post notifier for RCall::NotifyStatusChange
       
  5638 	TCoreEtelRequestStatus<RCall> notifyCallStatusChangeStatus (incomingCall, &RCall::NotifyStatusChangeCancel);
       
  5639 	CleanupStack::PushL(notifyCallStatusChangeStatus);
       
  5640 	incomingCall.NotifyStatusChange(notifyCallStatusChangeStatus, callStatus);
       
  5641 	
       
  5642 	// post notifier for RMobileCall::NotifyMobileCallStatusChange
       
  5643 	TExtEtelRequestStatus notifyMobileCallChangeStatus(incomingCall, EMobileCallNotifyMobileCallStatusChange);
       
  5644 	CleanupStack::PushL(notifyMobileCallChangeStatus);
       
  5645 	incomingCall.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  5646 			
       
  5647 	// Answer incoming call by calling RCall::AnswerIncomingCall and using TMobileCallParamsV1 
       
  5648 	ASSERT_EQUALS(incomingCall.AnswerIncomingCall(mobileCallParamsPckg), KErrNone,
       
  5649 			_L("RCall::AnswerIncomingCall returned an error"));
       
  5650 	
       
  5651 	// ===  Check call caps ===
       
  5652 
       
  5653 	// Check RCall::NotifyCapsChange completes with caps in set of KCapsVoice | KCapsHangUp.
       
  5654 	RCall::TCaps wantedCaps, unwantedCaps;
       
  5655 	wantedCaps.iFlags  = RCall::KCapsVoice | RCall::KCapsHangUp;
       
  5656 	unwantedCaps.iFlags  = KNoUnwantedBits;
       
  5657 	const TInt wantedStatus = KErrNone;
       
  5658 	iCallControlTestHelper.WaitForCallNotifyCapsChange(incomingCall,
       
  5659 													   notifyCapsChangeStatus,
       
  5660 													   caps,
       
  5661 													   wantedCaps,
       
  5662 													   unwantedCaps,
       
  5663 													   wantedStatus);	
       
  5664 													   
       
  5665 	// Check RCall::GetCaps supports KCapsHangUp | KCapsVoice.
       
  5666 	ASSERT_EQUALS(incomingCall.GetCaps(caps), KErrNone,   
       
  5667 			_L("RCall::GetCaps returned an Error"));
       
  5668 	ASSERT_BITS_SET(caps.iFlags, RCall::KCapsHangUp | RCall::KCapsVoice, KNoUnwantedBits,  
       
  5669 			_L("RCall::GetCaps returned wrong caps"));
       
  5670 
       
  5671 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice | KCapsHold | KCapsHangUp.
       
  5672 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallEventCaps in set of KCapsLocalHold | KCapsLocalTransfer | KCapsRemoteHold | KCapsRemoteTerminate | KCapsRemoteConferenceCreate.
       
  5673 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsHold | RMobileCall::KCapsHangUp;
       
  5674 	wantedMobileCaps.iCallEventCaps = RMobileCall::KCapsLocalHold | RMobileCall::KCapsLocalTransfer | RMobileCall::KCapsRemoteHold | RMobileCall::KCapsRemoteTerminate | RMobileCall::KCapsRemoteConferenceCreate;
       
  5675 	TCmpRMobileCallTMobileCallCaps mobileCapsComp(wantedMobileCaps, mobileCallCaps, *this);
       
  5676 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(incomingCall,
       
  5677 																	   notifyMobileCallCapsChangeStatus,
       
  5678 																	   mobileCapsComp,
       
  5679 																	   wantedStatus);
       
  5680 
       
  5681 
       
  5682 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsHold | KCapsHangUp.
       
  5683 	// Check RMobileCall::GetMobileCallCaps includes iCallEventCaps in set of KCapsLocalHold | KCapsLocalTransfer | KCapsRemoteHold | KCapsRemoteTerminate | KCapsRemoteConferenceCreate.
       
  5684 	ASSERT_EQUALS(incomingCall.GetMobileCallCaps(capsPckg), KErrNone,  
       
  5685 			_L("RMobileCall::GetMobileCallCaps returned an error")); 
       
  5686 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsHold | RMobileCall::KCapsHangUp;											   
       
  5687 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps, KNoUnwantedBits,
       
  5688 			_L("RMobileCall::GetMobileCallCaps returned unexpected iCallControlCaps"));	
       
  5689 	wantedMobileCaps.iCallEventCaps = RMobileCall::KCapsLocalHold | RMobileCall::KCapsLocalTransfer |RMobileCall::KCapsRemoteHold | RMobileCall::KCapsRemoteTerminate |  RMobileCall::KCapsRemoteConferenceCreate;											 
       
  5690 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedMobileCaps.iCallEventCaps, KNoUnwantedBits,
       
  5691 			_L("RMobileCall::GetMobileCallCaps returned unexpected iCallEventCaps"));	
       
  5692 
       
  5693 	// ===  Check call status ===
       
  5694 
       
  5695 	// Check RCall::NotifyStatusChange completes with EStatusConnected
       
  5696 	RCall::TStatus expectedCallStatus = RCall::EStatusConnected;
       
  5697 	iCallControlTestHelper.WaitForCallNotifyStatusChange(incomingCall,
       
  5698 														 notifyCallStatusChangeStatus,
       
  5699 														 callStatus,
       
  5700 														 expectedCallStatus,
       
  5701 														 wantedStatus);
       
  5702 	
       
  5703 	// Check RCall::GetStatus returns EStatusConnected
       
  5704 	ASSERT_EQUALS(incomingCall.GetStatus(callStatus),KErrNone,  
       
  5705 			_L("RCall::GetStatus returned an error"));
       
  5706 	ASSERT_EQUALS(callStatus, RCall::EStatusConnected,  
       
  5707 			_L("RCall::GetStatus returned an unexpected call status"));
       
  5708 
       
  5709 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusConnected.
       
  5710 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusConnected;
       
  5711 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(incomingCall,
       
  5712 															notifyMobileCallChangeStatus,
       
  5713 															mobileCallStatus,
       
  5714 															expectedMobileCallStatus,
       
  5715 															wantedStatus);
       
  5716 
       
  5717 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusConnected.
       
  5718 	ASSERT_EQUALS(incomingCall.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  5719 			_L("RMobileCall::GetMobileStatus returned an error"));
       
  5720 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected,  
       
  5721 			_L("RMobileCall::GetMobileStatus did not return a status EStatusConnected"));
       
  5722 
       
  5723 	// ===  Check call info ===
       
  5724 
       
  5725 	// Check RCall::GetInfo returns valid call name.
       
  5726 	// Check RCall::GetInfo returns valid voice line name.
       
  5727 	// Check RCall::GetInfo returns call status of EStatusConnected.
       
  5728 	// Check RCall::GetInfo returns call duration of > 0.
       
  5729 	User::After(KOneSecond*2);  // Give timers enough time to increment
       
  5730 	ASSERT_EQUALS(incomingCall.GetInfo(callInfo), KErrNone,  
       
  5731 			_L("RCall::GetInfo returned an error"));
       
  5732 	ASSERT_TRUE(callInfo.iCallName.Length() > 0,  
       
  5733 			_L("RCall::GetInfo returned an invalid  name"));
       
  5734 	ASSERT_TRUE(callInfo.iLineName.Length() > 0,  
       
  5735 			_L("RCall::GetInfo returned an invalid  Line name"));	
       
  5736 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusConnected,  
       
  5737 			_L("RCall::GetInfo wrong iStatus, should be EStatusConnected"));
       
  5738 	ASSERT_TRUE(callInfo.iDuration.Int() > 0,  
       
  5739 			_L("RCall::GetInfo wrong iDuration, should be > 0"));
       
  5740 
       
  5741 	// Check RMobileCall::GetMobileCallInfo returns iValid > 0.
       
  5742 	// Check RMobileCall::GetMobileCallInfo returns data for attributes makred as valid in iValid.
       
  5743 	// Check RMobileCall::GetMobileCallInfo returns valid line name.
       
  5744 	ASSERT_EQUALS(incomingCall.GetMobileCallInfo(mobileCallInfoPckg), KErrNone,  
       
  5745 			_L("RMobileCall::GetMobileCallInfo returned an error"));
       
  5746 	ASSERT_TRUE(mobileCallInfo.iLineName.Length() > 0,  
       
  5747 			_L("RMobileCall::GetMobileCallInfo returned an invalid line name"));
       
  5748 	ASSERT_TRUE(mobileCallInfo.iValid > 0,  
       
  5749 			_L("RMobileCall::GetMobileCallInfo returned unexpected flags in iValid"));
       
  5750 
       
  5751 	iCallControlTestHelper.CheckForValidCallInfo(mobileCallInfo);
       
  5752 
       
  5753 	//==== Post some notifiers ====
       
  5754 	incomingCall.NotifyCapsChange(notifyCapsChangeStatus,caps);
       
  5755 	incomingCall.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus, capsPckg);
       
  5756 	incomingCall.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  5757 	incomingCall.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);	
       
  5758 	
       
  5759 	// Hang up the call 
       
  5760 
       
  5761 	TCoreEtelRequestStatus<RCall> hangUpStatus (incomingCall,&RCall::HangUpCancel);	
       
  5762 	CleanupStack::PushL(hangUpStatus);
       
  5763 	incomingCall.HangUp(hangUpStatus);
       
  5764 	ASSERT_EQUALS(WaitForRequestWithTimeOut(hangUpStatus, ETimeMedium), KErrNone,  
       
  5765 			_L("RCall::HangUp returned an error"));		
       
  5766 	ASSERT_EQUALS(hangUpStatus.Int(), KErrNone,  
       
  5767 			_L("RCall::HangUp returned an error"));
       
  5768 
       
  5769 	// ===  Check call caps ===
       
  5770 
       
  5771 	// Check RCall::NotifyCapsChange completes with caps in set of KCapsVoice | KCapsDial.
       
  5772 	wantedCaps.iFlags = RCall::KCapsVoice | RCall::KCapsDial;
       
  5773 	iCallControlTestHelper.WaitForCallNotifyCapsChange(incomingCall,
       
  5774 													   notifyCapsChangeStatus,
       
  5775 													   caps,
       
  5776 													   wantedCaps,
       
  5777 													   unwantedCaps,
       
  5778 													   wantedStatus);
       
  5779 													   
       
  5780 	// Check RCall::GetCaps supports KCapsVoice | KCapsDial.
       
  5781 	ASSERT_EQUALS(incomingCall.GetCaps(caps), KErrNone,   
       
  5782 			_L("RCall::GetCaps returned an Error"));
       
  5783 	ASSERT_BITS_SET(caps.iFlags, RCall::KCapsVoice | RCall::KCapsDial, KNoUnwantedBits,  
       
  5784 			_L("RCall::GetCaps returned wrong caps"));
       
  5785 
       
  5786 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice | KCapsDial.
       
  5787 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallEventCaps in set of 0.
       
  5788 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsDial;
       
  5789 	wantedMobileCaps.iCallEventCaps = 0;		
       
  5790 	TCmpRMobileCallTMobileCallCaps mobileCapsComp2(wantedMobileCaps, mobileCallCaps, *this);
       
  5791 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(incomingCall,
       
  5792 																	   notifyMobileCallCapsChangeStatus,
       
  5793 																	   mobileCapsComp2,
       
  5794 																	   wantedStatus);
       
  5795 
       
  5796 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsDial.
       
  5797 	// Check RMobileCall::GetMobileCallCaps includes iCallEventCaps in set of 0.
       
  5798 	ASSERT_EQUALS(incomingCall.GetMobileCallCaps(capsPckg), KErrNone,
       
  5799 			_L("RMobileCall::GetMobileCallCaps returned an error"));	
       
  5800 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsDial;											   
       
  5801 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps,KNoUnwantedBits,  
       
  5802 			_L("RMobileCall::GetMobileCallCaps returned unexpected iCallControlCaps"));
       
  5803 	wantedMobileCaps.iCallEventCaps = 0;											 
       
  5804 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedMobileCaps.iCallEventCaps,KNoUnwantedBits, 
       
  5805 			_L("RMobileCall::GetMobileCallCaps returned unexpected iCallEventCaps"));										   
       
  5806 
       
  5807 	// ===  Check call status ===
       
  5808 
       
  5809 	// Check RCall::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle.
       
  5810 	expectedCallStatus = RCall::EStatusHangingUp;
       
  5811 	iCallControlTestHelper.WaitForCallNotifyStatusChange(incomingCall,
       
  5812 														 notifyCallStatusChangeStatus,
       
  5813 														 callStatus,
       
  5814 														 expectedCallStatus,
       
  5815 														 wantedStatus);
       
  5816 										 
       
  5817 	incomingCall.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  5818 	expectedCallStatus = RCall::EStatusIdle;
       
  5819 	iCallControlTestHelper.WaitForCallNotifyStatusChange(incomingCall,
       
  5820 														 notifyCallStatusChangeStatus,
       
  5821 														 callStatus,
       
  5822 														 expectedCallStatus,
       
  5823 														 wantedStatus);
       
  5824 
       
  5825 	// Check RCall::GetStatus returns EStatusIdle.
       
  5826 	ASSERT_EQUALS(incomingCall.GetStatus(callStatus),KErrNone,  
       
  5827 			_L("RCall::GetStatus returned an error"));
       
  5828 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle,  
       
  5829 			_L("RCall::GetStatus returned an unexpected call status"));
       
  5830 
       
  5831 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDisconnecting -> EStatusIdle.
       
  5832 	expectedMobileCallStatus = RMobileCall::EStatusDisconnecting;
       
  5833 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(incomingCall,
       
  5834 															notifyMobileCallChangeStatus,
       
  5835 															mobileCallStatus,
       
  5836 															expectedMobileCallStatus,
       
  5837 															wantedStatus);
       
  5838 
       
  5839 	incomingCall.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  5840 	expectedMobileCallStatus = RMobileCall::EStatusIdle;
       
  5841 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(incomingCall,
       
  5842 															notifyMobileCallChangeStatus,
       
  5843 															mobileCallStatus,
       
  5844 															expectedMobileCallStatus,
       
  5845 															wantedStatus);
       
  5846 
       
  5847 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
  5848 	ASSERT_EQUALS(incomingCall.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  5849 			_L("RMobileCall::GetMobileStatus returned an error"));
       
  5850 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle,  
       
  5851 			_L("RMobileCall::GetMobileStatus did not return a status EStatusIdle"));
       
  5852 
       
  5853 	// ===  Check call info ===
       
  5854 
       
  5855 	// Check RCall::GetInfo returns valid call name.
       
  5856 	// Check RCall::GetInfo returns valid voice line name.
       
  5857 	// Check RCall::GetInfo returns call status of EStatusIdle.
       
  5858 	// Check RCall::GetInfo returns call duration of > 0.
       
  5859 	ASSERT_EQUALS(incomingCall.GetInfo(callInfo), KErrNone,  
       
  5860 			_L("RCall::GetInfo returned an error"));
       
  5861 	ASSERT_TRUE(callInfo.iCallName.Length() > 0,  
       
  5862 			_L("RCall::GetInfo returned an invalid  name"));
       
  5863 	ASSERT_TRUE(callInfo.iLineName.Length() > 0,  
       
  5864 			_L("RCall::GetInfo returned an invalid  Line name"));
       
  5865 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusIdle,  
       
  5866 			_L("RCall::GetInfo wrong iStatus, should be EStatusIdle"));
       
  5867 	ASSERT_TRUE(callInfo.iDuration.Int() > 0,  
       
  5868 			_L("RCall::GetInfo wrong iDuration, should be >0"));
       
  5869 
       
  5870 	// Check RMobileCall::GetMobileCallInfo returns iValid > 0.
       
  5871 	// Check RMobileCall::GetMobileCallInfo returns data for attributes makred as valid in iValid.
       
  5872 	// Check RMobileCall::GetMobileCallInfo returns valid line name.
       
  5873 	ASSERT_EQUALS(incomingCall.GetMobileCallInfo(mobileCallInfoPckg), KErrNone,  
       
  5874 			_L("RMobileCall::GetMobileCallInfo returned an error"));
       
  5875 	ASSERT_TRUE(mobileCallInfo.iLineName.Length() >0,  
       
  5876 			_L("RMobileCall::GetMobileCallInfo returned an invalid line name"));
       
  5877 	ASSERT_TRUE(mobileCallInfo.iValid > 0,  
       
  5878 			_L("RMobileCall::GetMobileCallInfo returned unexpected flags in iValid"));
       
  5879 	
       
  5880 	// Note: not using TCallControlTsyTestHelper::CheckForValidCallInfo() as some checks would fail at this point
       
  5881 	if(mobileCallInfo.iValid & RMobileCall::KCallRemoteParty)
       
  5882 		{
       
  5883 		ASSERT_TRUE(mobileCallInfo.iRemoteParty.iRemoteNumber.iTelNumber.Length() > 0,
       
  5884 					_L("RMobileCall::GetMobileCallInfo set bitmask for KCallRemoteParty to true, but iRemoteParty.iRemoteNumber.iTelNumber has invalid length"));
       
  5885 		}
       
  5886 	if(mobileCallInfo.iValid & RMobileCall::KCallDuration)
       
  5887 		{
       
  5888 		TTimeIntervalSeconds startTime = 0;
       
  5889 		TTimeIntervalSeconds durationTime(mobileCallInfo.iDuration);
       
  5890 		ASSERT_TRUE(durationTime > startTime,
       
  5891 					_L("RMobileCall::GetMobileCallInfo set bitmask for KCallDuration to true, but set iDuration to an invalid number"));
       
  5892 		}
       
  5893 		
       
  5894 	if(mobileCallInfo.iValid & RMobileCall::KCallId)
       
  5895 		{
       
  5896 		ASSERT_EQUALS( mobileCallInfo.iCallId, -1,
       
  5897 					_L("RMobileCall::GetMobileCallInfo set bitmask for KCallId to true, but set iCallId to an invalid number"));
       
  5898 		DEBUG_PRINTF2(_L("RMobileCall::GetMobileCallInfo returns callId of: %d"), mobileCallInfo.iCallId);
       
  5899 		}
       
  5900 	if(mobileCallInfo.iValid & RMobileCall::KCallExitCode)
       
  5901 		{
       
  5902 		ASSERT_EQUALS( mobileCallInfo.iExitCode, KErrNone, _L("RMobileCall::GetMobileCallInfo set bitmask for KCallExitCode to true, but did not set iExitCode to KErrNone"))
       
  5903 		}
       
  5904 	
       
  5905 	////////////////////////////////////////////////////////////////
       
  5906 	// TEST END
       
  5907 	////////////////////////////////////////////////////////////////
       
  5908 
       
  5909     StartCleanup();
       
  5910 	
       
  5911 	CleanupStack::PopAndDestroy(6,&notifyIncomingCallStatus);
       
  5912 						// notifyIncomingCallStatus
       
  5913 						// notifyCapsChangeStatus 	
       
  5914 						// notifyMobileCallCapsChangeStatus
       
  5915 						// notifyCallStatusChangeStatus
       
  5916 						// notifyMobileCallChangeStatus
       
  5917 						// hangUpStatus
       
  5918 						
       
  5919 	return TestStepResult();
       
  5920 	}
       
  5921 
       
  5922 TPtrC CCTSYIntegrationTestCallControl0018::GetTestStepName()
       
  5923 /**
       
  5924  * @return The test step name.
       
  5925  */
       
  5926 	{
       
  5927 	return  _L("CCTSYIntegrationTestCallControl0018");
       
  5928 	}
       
  5929 
       
  5930 
       
  5931 
       
  5932 CCTSYIntegrationTestCallControl0019::CCTSYIntegrationTestCallControl0019(CEtelSessionMgr& aEtelSessionMgr)
       
  5933 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
  5934 /**
       
  5935  * Constructor.
       
  5936  */
       
  5937 	{
       
  5938 	SetTestStepName(CCTSYIntegrationTestCallControl0019::GetTestStepName());
       
  5939 	}
       
  5940 
       
  5941 CCTSYIntegrationTestCallControl0019::~CCTSYIntegrationTestCallControl0019()
       
  5942 /**
       
  5943  * Destructor.
       
  5944  */
       
  5945 	{
       
  5946 	}
       
  5947 
       
  5948 TVerdict CCTSYIntegrationTestCallControl0019::doTestStepL()
       
  5949 /**
       
  5950  * @SYMTestCaseID BA-CTSY-INT-CCON-0019
       
  5951  * @SYMFssID BA/CTSY/CCON-0019
       
  5952  * @SYMTestCaseDesc Answer incoming call then have remote party hang up.
       
  5953  * @SYMTestPriority High
       
  5954  * @SYMTestActions RCall::OpenExistingCall, RCall::AnswerIncomingCall, RCall::HangUp, RCall::NotifyStatusChange, RCall::GetStatus, RMobileCall::NotifyMobileCallStatusChange, RMobileCall::GetMobileCallStatus
       
  5955  * @SYMTestExpectedResults Pass - Call answered.  Mobile call status correct.
       
  5956  * @SYMTestType CIT
       
  5957  * @SYMTestCaseDependencies live/automatic
       
  5958  *
       
  5959  * Reason for test: Verify call can be answered with specified params and call status, info and caps are correct.
       
  5960  *
       
  5961  * @return - TVerdict code
       
  5962  */
       
  5963 	{
       
  5964 
       
  5965 	////////////////////////////////////////////////////////////////
       
  5966 	// SET UP
       
  5967 	////////////////////////////////////////////////////////////////
       
  5968 
       
  5969 	
       
  5970 	// Check phone supports KCapsVoice
       
  5971 
       
  5972 	// Get Voice line 1 
       
  5973 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
  5974 
       
  5975 	RLine::TCaps lineCaps; 
       
  5976 	CHECK_EQUALS_L(voiceLine.GetCaps(lineCaps), KErrNone,  
       
  5977 			_L("RMobileLine::GetCaps returned an error"));
       
  5978 	CHECK_BITS_SET_L(lineCaps.iFlags, RLine::KCapsVoice, KNoUnwantedBits,  
       
  5979 			_L("RLine::GetCaps returned wrong caps"));
       
  5980 
       
  5981 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
  5982 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
  5983 	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
  5984 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
  5985 				   
       
  5986 	////////////////////////////////////////////////////////////////
       
  5987 	// SET UP END
       
  5988 	////////////////////////////////////////////////////////////////
       
  5989 	
       
  5990 	StartTest();
       
  5991 	
       
  5992 	////////////////////////////////////////////////////////////////
       
  5993 	// TEST START
       
  5994 	////////////////////////////////////////////////////////////////
       
  5995 
       
  5996 	// post notifier for RLine::NotifyIncomingCall
       
  5997 	TCoreEtelRequestStatus<RLine> notifyIncomingCallStatus (voiceLine,&RLine::NotifyIncomingCallCancel);
       
  5998 	CleanupStack::PushL(notifyIncomingCallStatus);
       
  5999 	TName name;
       
  6000 	voiceLine.NotifyIncomingCall(notifyIncomingCallStatus,name);	
       
  6001 
       
  6002 	// Request an incoming call from RPS. 
       
  6003 	RPSRequestIncomingCallL(EVoiceLine);
       
  6004 	
       
  6005 	// Check RLine::NotifyIncomingCall completes.
       
  6006 	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyIncomingCallStatus,ETimeMedium),KErrNone, 
       
  6007 			_L("RLine::NotifyIncomingCall did not complete without error"));
       
  6008 	ASSERT_EQUALS(notifyIncomingCallStatus.Int(), KErrNone,  
       
  6009 			_L("RLine::NotifyIncomingCall set requestStatus to an error"));
       
  6010 	ASSERT_TRUE(name.Length() > 0,  
       
  6011 			_L("RLine::NotifyIncomingCall did not set the name"));	
       
  6012 
       
  6013 	TCallId incomingCallId;
       
  6014 	RMobileCall& incomingCall = iEtelSessionMgr.GetIncomingCallL(KMainServer, KMainPhone, KVoiceLine, name, incomingCallId);
       
  6015 
       
  6016 	// ===  Check call caps ===
       
  6017 													   
       
  6018 	// Check RCall::GetCaps supports caps in set of KCapsVoice | KCapsAnswer
       
  6019 	// Check RCall::GetCaps supports NOT in set of KCapsDial
       
  6020 	RCall::TCaps caps;
       
  6021 	ASSERT_EQUALS(incomingCall.GetCaps(caps), KErrNone,   
       
  6022 			_L("RCall::GetCaps returned an Error"));
       
  6023 	ASSERT_BITS_SET(caps.iFlags, RCall::KCapsVoice | RCall::KCapsAnswer, RCall::KCapsDial,  
       
  6024 			_L("RCall::GetCaps returned wrong caps"));
       
  6025 
       
  6026 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsDeflect | KCapsAnswer
       
  6027 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps NOT in set of KCapsDial
       
  6028 	RMobileCall::TMobileCallCapsV1 mobileCallCaps;
       
  6029 	RMobileCall::TMobileCallCapsV1Pckg capsPckg(mobileCallCaps);
       
  6030 	RMobileCall::TMobileCallCapsV1 wantedMobileCaps, unwantedMobileCaps;
       
  6031 	ASSERT_EQUALS(incomingCall.GetMobileCallCaps(capsPckg), KErrNone,  
       
  6032 			_L("RMobileCall::GetMobileCallCaps returned an error"));
       
  6033 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsDeflect | RMobileCall::KCapsAnswer;											   
       
  6034 	unwantedMobileCaps.iCallControlCaps = RMobileCall::KCapsDial;
       
  6035 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps,unwantedMobileCaps.iCallControlCaps,  
       
  6036 			_L("RMobileCall::GetMobileCallCaps returned unexpected iCallControlCaps"));
       
  6037 
       
  6038 	// ===  Check call status ===
       
  6039 
       
  6040 	// Check RCall::GetStatus returns EStatusRinging
       
  6041 	RCall::TStatus callStatus;
       
  6042 	ASSERT_EQUALS(incomingCall.GetStatus(callStatus),KErrNone,  
       
  6043 			_L("RCall::GetStatus returned an error"));
       
  6044 	ASSERT_EQUALS(callStatus, RCall::EStatusRinging,  
       
  6045 			_L("RCall::GetStatus returned an unexpected call status"));
       
  6046 
       
  6047 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusRinging
       
  6048 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
  6049 	ASSERT_EQUALS(incomingCall.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  6050 			_L("RMobileCall::GetMobileStatus returned an error"));
       
  6051 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusRinging,  
       
  6052 			_L("RMobileCall::GetMobileStatus did not return a status EStatusConnected"));
       
  6053 
       
  6054 	// ===  Check call info ===
       
  6055 
       
  6056 	// Check RCall::GetInfo returns valid call name.
       
  6057 	// Check RCall::GetInfo returns valid voice line name.
       
  6058 	// Check RCall::GetInfo returns call status of EStatusRinging.
       
  6059 	// Check RCall::GetInfo returns call duration of 0.
       
  6060 	RCall::TCallInfo callInfo;
       
  6061 	ASSERT_EQUALS(incomingCall.GetInfo(callInfo), KErrNone,  
       
  6062 			_L("RCall::GetInfo returned an error"));
       
  6063 	ASSERT_TRUE(callInfo.iCallName.Length() >0,  
       
  6064 			_L("RCall::GetInfo returned an invalid  name"));
       
  6065 	ASSERT_TRUE(callInfo.iLineName.Length() >0,  
       
  6066 			_L("RCall::GetInfo returned an invalid  Line name"));	
       
  6067 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusRinging,  
       
  6068 			_L("RCall::GetInfo wrong iStatus, should be EStatusRinging"));
       
  6069 	ASSERT_EQUALS(callInfo.iDuration.Int(), 0,  
       
  6070 			_L("RCall::GetInfo wrong iDuration, should be 0"));
       
  6071 
       
  6072 	// Check RMobileCall::GetMobileCallInfo returns iValid > 0.
       
  6073 	// Check RMobileCall::GetMobileCallInfo returns data for attributes makred as valid in iValid.
       
  6074 	// Check RMobileCall::GetMobileCallInfo returns valid line name.
       
  6075 	RMobileCall::TMobileCallInfoV1 mobileCallInfo;
       
  6076 	RMobileCall::TMobileCallInfoV1Pckg mobileCallInfoPckg(mobileCallInfo);
       
  6077 	User::After(KOneSecond*2);  // Give timers enough time to increment
       
  6078 	ASSERT_EQUALS(incomingCall.GetMobileCallInfo(mobileCallInfoPckg), KErrNone,  
       
  6079 			_L("RMobileCall::GetMobileCallInfo returned an error"));
       
  6080 	ASSERT_TRUE(mobileCallInfo.iLineName.Length() > 0,  
       
  6081 			_L("RMobileCall::GetMobileCallInfo returned an invalid line name"));
       
  6082 	ASSERT_TRUE(mobileCallInfo.iValid > 0,  
       
  6083 			_L("RMobileCall::GetMobileCallInfo returned unexpected flags in iValid"));
       
  6084 			
       
  6085 	// Check RMobileCall::GetMobileCallInfo returns valid remote number.
       
  6086 	// Check RMobileCall::GetMobileCallInfo returns call duration=0
       
  6087 	// Check RMobileCall::GetMobileCallInfo returns valid callId
       
  6088 	// Note: not using TCallControlTsyTestHelper::CheckForValidCallInfo() as some checks would fail at this point
       
  6089 	if(mobileCallInfo.iValid & RMobileCall::KCallRemoteParty)
       
  6090 		{
       
  6091 		ASSERT_TRUE(mobileCallInfo.iRemoteParty.iRemoteNumber.iTelNumber.Length() > 0,
       
  6092 					_L("RMobileCall::GetMobileCallInfo set bitmask for KCallRemoteParty to true, but iRemoteParty.iRemoteNumber.iTelNumber has invalid length"))
       
  6093 		}
       
  6094 	if(mobileCallInfo.iValid & RMobileCall::KCallDuration)
       
  6095 		{
       
  6096 		TTimeIntervalSeconds startTime = 0;
       
  6097 		TTimeIntervalSeconds durationTime(mobileCallInfo.iDuration);
       
  6098 		ASSERT_EQUALS(durationTime.Int(), startTime.Int(),
       
  6099 					_L("RMobileCall::GetMobileCallInfo set bitmask for KCallDuration to true, but set iDuration to an invalid number"))
       
  6100 		}
       
  6101 	if(mobileCallInfo.iValid & RMobileCall::KCallId)
       
  6102 		{
       
  6103 		ASSERT_TRUE( mobileCallInfo.iCallId > -1,
       
  6104 					_L("RMobileCall::GetMobileCallInfo set bitmask for KCallId to true, but set iCallId to an invalid number"))
       
  6105 		}
       
  6106 
       
  6107 	// Populate a RMobileCall::TMobileCallParamsV1 with: 
       
  6108 	RMobileCall::TMobileCallParamsV1 mobileCallParams;
       
  6109 	// ?iSpeakerControl = EMonitorSpeakerControlAlwaysOff 
       
  6110 	mobileCallParams.iSpeakerControl = RCall::EMonitorSpeakerControlAlwaysOff;
       
  6111 	// ?iSpeakerVolume = EMonitorSpeakerVolumeOff 
       
  6112 	mobileCallParams.iSpeakerVolume = RCall::EMonitorSpeakerVolumeOff;
       
  6113 	// ?iInterval = 0x01 
       
  6114 	mobileCallParams.iInterval = 0x01;
       
  6115 	// ?iWaitForDialTone = EDialToneWait 
       
  6116 	mobileCallParams.iWaitForDialTone = RCall::EDialToneWait;
       
  6117 	// ?iIdRestrict = EIdRestrictDefault 
       
  6118 	mobileCallParams.iIdRestrict = RMobileCall::EIdRestrictDefault;
       
  6119 	// ?iExplicitInvoke = TRUE 
       
  6120 	mobileCallParams.iCug.iExplicitInvoke = TRUE ;
       
  6121 	// ?iCugIndex = 0x0000 
       
  6122 	mobileCallParams.iCug.iCugIndex = 0x0000;
       
  6123 	// ?iSuppressOA = FALSE 
       
  6124 	mobileCallParams.iCug.iSuppressOA = FALSE;
       
  6125 	// ?iSuppressPrefCug = FALSE 
       
  6126 	mobileCallParams.iCug.iSuppressPrefCug = FALSE;
       
  6127 	// ?iAutoRedial = FALSE 
       
  6128 	mobileCallParams.iAutoRedial = FALSE;
       
  6129 
       
  6130 	RMobileCall::TMobileCallParamsV1Pckg mobileCallParamsPkg(mobileCallParams);
       
  6131 
       
  6132 	// ==== Post Notifiers =====
       
  6133 
       
  6134 	// post notifier for RCall::NotifyCapsChange
       
  6135 	TCoreEtelRequestStatus<RCall> notifyCapsChangeStatus (incomingCall,&RCall::NotifyCapsChangeCancel);	
       
  6136 	CleanupStack::PushL(notifyCapsChangeStatus);
       
  6137 	incomingCall.NotifyCapsChange(notifyCapsChangeStatus,caps);	
       
  6138 
       
  6139 	// post notifier for RMobileCall::NotifyMobileCallCapsChange
       
  6140 	TExtEtelRequestStatus notifyMobileCallCapsChangeStatus(incomingCall, EMobileCallNotifyMobileCallCapsChange);
       
  6141 	CleanupStack::PushL(notifyMobileCallCapsChangeStatus);
       
  6142 	incomingCall.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus, capsPckg);
       
  6143 
       
  6144 	// post notifier for RCall::NotifyStatusChange
       
  6145 	TCoreEtelRequestStatus<RCall> notifyCallStatusChangeStatus (incomingCall,&RCall::NotifyStatusChangeCancel);
       
  6146 	CleanupStack::PushL(notifyCallStatusChangeStatus);
       
  6147 	incomingCall.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  6148 
       
  6149 	// post notifier for RMobileCall::NotifyMobileCallStatusChange
       
  6150 	TExtEtelRequestStatus notifyMobileCallChangeStatus(incomingCall, EMobileCallNotifyMobileCallStatusChange);
       
  6151 	CleanupStack::PushL(notifyMobileCallChangeStatus);
       
  6152 	incomingCall.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  6153 	
       
  6154 	// Answer incoming call with call params defined above 
       
  6155 	ASSERT_EQUALS(incomingCall.AnswerIncomingCall(mobileCallParamsPkg),KErrNone,
       
  6156 			_L("RCall::AnswerIncomingCall errored when answering with defined params"));
       
  6157 		
       
  6158 	// ===  Check call caps ===
       
  6159 	
       
  6160 	// Check RCall::NotifyCapsChange completes with caps in set of KCapsVoice | KCapsHangUp.
       
  6161 	RCall::TCaps wantedCaps, unwantedCaps;
       
  6162 	wantedCaps.iFlags = RCall::KCapsVoice | RCall::KCapsHangUp;
       
  6163 	unwantedCaps.iFlags = KNoUnwantedBits;
       
  6164 	const TInt wantedStatus = KErrNone;
       
  6165 	iCallControlTestHelper.WaitForCallNotifyCapsChange(incomingCall,
       
  6166 													   notifyCapsChangeStatus,
       
  6167 													   caps,
       
  6168 													   wantedCaps,
       
  6169 													   unwantedCaps,
       
  6170 													   wantedStatus);
       
  6171 													   
       
  6172 	// Check RCall::GetCaps supports KCapsHangUp | KCapsVoice.
       
  6173 	ASSERT_EQUALS(incomingCall.GetCaps(caps), KErrNone,   
       
  6174 			_L("RCall::GetCaps returned an Error"));
       
  6175 	ASSERT_BITS_SET(caps.iFlags, RCall::KCapsHangUp | RCall::KCapsVoice, KNoUnwantedBits,  
       
  6176 			_L("RCall::GetCaps returned wrong caps"));
       
  6177 
       
  6178 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice | KCapsHold | KCapsHangUp.
       
  6179 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallEventCaps in set of KCapsLocalHold | KCapsLocalTransfer | KCapsRemoteHold | KCapsRemoteTerminate | KCapsRemoteConferenceCreate.
       
  6180 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsHold | RMobileCall::KCapsHangUp;
       
  6181 	wantedMobileCaps.iCallEventCaps = RMobileCall::KCapsLocalHold | RMobileCall::KCapsLocalTransfer | RMobileCall::KCapsRemoteHold | RMobileCall::KCapsRemoteTerminate | RMobileCall::KCapsRemoteConferenceCreate;
       
  6182 	TCmpRMobileCallTMobileCallCaps mobileCapsComp(wantedMobileCaps, mobileCallCaps, *this);
       
  6183 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(incomingCall,
       
  6184 																	   notifyMobileCallCapsChangeStatus,
       
  6185 																	   mobileCapsComp,
       
  6186 																	   wantedStatus);
       
  6187 
       
  6188 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsHold | KCapsHangUp.
       
  6189 	// Check RMobileCall::GetMobileCallCaps includes iCallEventCaps in set of KCapsLocalHold | KCapsLocalTransfer | KCapsRemoteHold | KCapsRemoteTerminate | KCapsRemoteConferenceCreate.
       
  6190 	ASSERT_EQUALS(incomingCall.GetMobileCallCaps(capsPckg), KErrNone,  
       
  6191 			_L("RMobileCall::GetMobileCallCaps returned an error"));
       
  6192 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsHold | RMobileCall::KCapsHangUp;
       
  6193 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps, KNoUnwantedBits,
       
  6194 			_L("RMobileCall::GetMobileCallCaps returned unexpected iCallControlCaps"));	
       
  6195 	wantedMobileCaps.iCallEventCaps = RMobileCall::KCapsLocalHold | RMobileCall::KCapsLocalTransfer |RMobileCall::KCapsRemoteHold | RMobileCall::KCapsRemoteTerminate |  RMobileCall::KCapsRemoteConferenceCreate;											 
       
  6196 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedMobileCaps.iCallEventCaps, KNoUnwantedBits,
       
  6197 			_L("RMobileCall::GetMobileCallCaps returned unexpected iCallEventCaps"));										   
       
  6198 
       
  6199 	// ===  Check call status ===
       
  6200 
       
  6201 	// Check RCall::NotifyStatusChange completes with EStatusConnected
       
  6202 	RCall::TStatus expectedCallStatus = RCall::EStatusConnected;
       
  6203 	iCallControlTestHelper.WaitForCallNotifyStatusChange(incomingCall,
       
  6204 														 notifyCallStatusChangeStatus,
       
  6205 														 callStatus,
       
  6206 														 expectedCallStatus,
       
  6207 														 wantedStatus);
       
  6208 														 
       
  6209 	// Check RCall::GetStatus returns EStatusConnected
       
  6210 	ASSERT_EQUALS(incomingCall.GetStatus(callStatus),KErrNone,  
       
  6211 			_L("RCall::GetStatus returned an error"));
       
  6212 	ASSERT_EQUALS(callStatus, RCall::EStatusConnected,  
       
  6213 			_L("RCall::GetStatus returned an unexpected call status"));
       
  6214 
       
  6215 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusConnected.
       
  6216 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusConnected;
       
  6217 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(incomingCall,
       
  6218 															notifyMobileCallChangeStatus,
       
  6219 															mobileCallStatus,
       
  6220 															expectedMobileCallStatus,
       
  6221 															wantedStatus);
       
  6222 
       
  6223 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusConnected.
       
  6224 	ASSERT_EQUALS(incomingCall.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  6225 			_L("RMobileCall::GetMobileStatus returned an error"));
       
  6226 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected,  
       
  6227 			_L("RMobileCall::GetMobileStatus did not return a status EStatusConnected"));
       
  6228 
       
  6229 	// ===  Check call info ===
       
  6230 
       
  6231 	// Check RCall::GetInfo returns valid call name.
       
  6232 	// Check RCall::GetInfo returns valid voice line name.
       
  6233 	// Check RCall::GetInfo returns call status of EStatusConnected.
       
  6234 	// Check RCall::GetInfo returns call duration of > 0.
       
  6235 	User::After(KOneSecond*2);  // Give timers enough time to increment
       
  6236 	ASSERT_EQUALS(incomingCall.GetInfo(callInfo), KErrNone,  
       
  6237 			_L("RCall::GetInfo returned an error"));
       
  6238 	ASSERT_TRUE(callInfo.iCallName.Length() > 0,  
       
  6239 			_L("RCall::GetInfo returned an invalid  name"));
       
  6240 	ASSERT_TRUE(callInfo.iLineName.Length() > 0,  
       
  6241 			_L("RCall::GetInfo returned an invalid  Line name"));	
       
  6242 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusConnected,  
       
  6243 			_L("RCall::GetInfo wrong iStatus, should be EStatusConnected"));
       
  6244 	ASSERT_TRUE(callInfo.iDuration.Int() > 0,  
       
  6245 			_L("RCall::GetInfo wrong iDuration, should be > 0"));
       
  6246 
       
  6247 	// Check RMobileCall::GetMobileCallInfo returns iValid > 0.
       
  6248 	// Check RMobileCall::GetMobileCallInfo returns data for attributes makred as valid in iValid.
       
  6249 	// Check RMobileCall::GetMobileCallInfo returns valid line name.
       
  6250 	ASSERT_EQUALS(incomingCall.GetMobileCallInfo(mobileCallInfoPckg), KErrNone,  
       
  6251 			_L("RMobileCall::GetMobileCallInfo returned an error"));
       
  6252 	ASSERT_TRUE(mobileCallInfo.iLineName.Length() > 0,  
       
  6253 			_L("RMobileCall::GetMobileCallInfo returned an invalid line name"));
       
  6254 	ASSERT_TRUE(mobileCallInfo.iValid > 0,  
       
  6255 			_L("RMobileCall::GetMobileCallInfo returned unexpected flags in iValid"));
       
  6256 
       
  6257 	iCallControlTestHelper.CheckForValidCallInfo(mobileCallInfo);
       
  6258 	
       
  6259 	//==== Post some notifiers ====
       
  6260 	incomingCall.NotifyCapsChange(notifyCapsChangeStatus,caps);
       
  6261 	incomingCall.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus, capsPckg);
       
  6262 	incomingCall.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  6263 	incomingCall.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  6264 	
       
  6265 	// Post notifier for line status to indicate when hangup completes
       
  6266 	TExtEtelRequestStatus notifyMobileLineStatusChangeStatus(voiceLine, EMobileLineNotifyMobileLineStatusChange);
       
  6267 	CleanupStack::PushL(notifyMobileLineStatusChangeStatus);
       
  6268 	RMobileCall::TMobileCallStatus mobileLineStatus;
       
  6269 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineStatusChangeStatus, mobileLineStatus);	
       
  6270 
       
  6271 	// RPS hangs up the call. 
       
  6272 	ASSERT_EQUALS(RPSHangupL(EVoiceLine,0), KErrNone,  
       
  6273 			_L("CCTSYIntegrationTestSuiteStepBase::RPSHangup returned an error"));
       
  6274 			
       
  6275 	// Wait for line status to be idle
       
  6276 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
  6277 																		 notifyMobileLineStatusChangeStatus,
       
  6278 																		 mobileLineStatus,
       
  6279 																		 RMobileCall::EStatusDisconnecting,
       
  6280 																		 KErrNone);	
       
  6281 	
       
  6282 	// ===  Check call caps ===
       
  6283 
       
  6284 	// Check RCall::NotifyCapsChange completes with caps in set of KCapsVoice | KCapsDial.
       
  6285 	wantedCaps.iFlags = RCall::KCapsVoice | RCall::KCapsDial;
       
  6286 	ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10023);
       
  6287 	iCallControlTestHelper.WaitForCallNotifyCapsChange(incomingCall,
       
  6288 													   notifyCapsChangeStatus,
       
  6289 													   caps,
       
  6290 													   wantedCaps,
       
  6291 													   unwantedCaps,
       
  6292 													   wantedStatus);
       
  6293 
       
  6294 	// Check RCall::GetCaps supports KCapsVoice | KCapsDial.
       
  6295 	ASSERT_EQUALS(incomingCall.GetCaps(caps), KErrNone,   
       
  6296 			_L("RCall::GetCaps returned an Error"));
       
  6297 	ASSERT_BITS_SET(caps.iFlags, RCall::KCapsVoice | RCall::KCapsDial, KNoUnwantedBits,  
       
  6298 			_L("RCall::GetCaps returned wrong caps"));
       
  6299 
       
  6300 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice | KCapsDial.
       
  6301 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallEventCaps in set of 0.
       
  6302 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsDial;
       
  6303 	wantedMobileCaps.iCallEventCaps = 0;		
       
  6304 	TCmpRMobileCallTMobileCallCaps mobileCapsComp2(wantedMobileCaps, mobileCallCaps, *this);
       
  6305 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(incomingCall,
       
  6306 																	   notifyMobileCallCapsChangeStatus,
       
  6307 																	   mobileCapsComp2,
       
  6308 																	   wantedStatus);
       
  6309 
       
  6310 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsDial.
       
  6311 	// Check RMobileCall::GetMobileCallCaps includes iCallEventCaps in set of 0.
       
  6312 	ASSERT_EQUALS(incomingCall.GetMobileCallCaps(capsPckg), KErrNone,  
       
  6313 			_L("RMobileCall::GetMobileCallCaps returned an error"));	
       
  6314 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsDial;											   
       
  6315 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps,KNoUnwantedBits,  
       
  6316 			_L("RMobileCall::GetMobileCallCaps returned unexpected iCallControlCaps"));
       
  6317 	wantedMobileCaps.iCallEventCaps = 0;											 
       
  6318 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedMobileCaps.iCallEventCaps,KNoUnwantedBits, 
       
  6319 			_L("RMobileCall::GetMobileCallCaps returned unexpected iCallEventCaps"));
       
  6320 
       
  6321 	// ===  Check call status ===
       
  6322 
       
  6323 	// Check RCall::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle.
       
  6324 	expectedCallStatus = RCall::EStatusHangingUp;
       
  6325 	iCallControlTestHelper.WaitForCallNotifyStatusChange(incomingCall,
       
  6326 														 notifyCallStatusChangeStatus,
       
  6327 														 callStatus,
       
  6328 														 expectedCallStatus,
       
  6329 														 wantedStatus);
       
  6330 														 
       
  6331 	incomingCall.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
  6332 	expectedCallStatus = RCall::EStatusIdle;
       
  6333 	iCallControlTestHelper.WaitForCallNotifyStatusChange(incomingCall,
       
  6334 														 notifyCallStatusChangeStatus,
       
  6335 														 callStatus,
       
  6336 														 expectedCallStatus,
       
  6337 														 wantedStatus);
       
  6338 														 	
       
  6339 	// Check RCall::GetStatus returns EStatusIdle.
       
  6340 	ASSERT_EQUALS(incomingCall.GetStatus(callStatus),KErrNone,  
       
  6341 			_L("RCall::GetStatus returned an error"));
       
  6342 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle,  
       
  6343 			_L("RCall::GetStatus returned an unexpected call status"));
       
  6344 
       
  6345 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDisconnecting -> EStatusIdle.
       
  6346 	expectedMobileCallStatus = RMobileCall::EStatusDisconnecting;
       
  6347 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(incomingCall,
       
  6348 															notifyMobileCallChangeStatus,
       
  6349 															mobileCallStatus,
       
  6350 															expectedMobileCallStatus,
       
  6351 															wantedStatus);
       
  6352 															
       
  6353 	incomingCall.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  6354 	expectedMobileCallStatus = RMobileCall::EStatusIdle;
       
  6355 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(incomingCall,
       
  6356 															notifyMobileCallChangeStatus,
       
  6357 															mobileCallStatus,
       
  6358 															expectedMobileCallStatus,
       
  6359 															wantedStatus);
       
  6360 
       
  6361 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
  6362 	ASSERT_EQUALS(incomingCall.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  6363 			_L("RMobileCall::GetMobileStatus returned an error"));
       
  6364 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle,  
       
  6365 			_L("RMobileCall::GetMobileStatus did not return a status EStatusIdle"));
       
  6366 
       
  6367 	// ===  Check call info ===
       
  6368 
       
  6369 	// Check RCall::GetInfo returns valid call name.
       
  6370 	// Check RCall::GetInfo returns valid voice line name.
       
  6371 	// Check RCall::GetInfo returns call status of EStatusIdle.
       
  6372 	// Check RCall::GetInfo returns call duration of > 0.
       
  6373 	ASSERT_EQUALS(incomingCall.GetInfo(callInfo), KErrNone,  
       
  6374 			_L("RCall::GetInfo returned an error"));
       
  6375 	ASSERT_TRUE(callInfo.iCallName.Length() > 0,  
       
  6376 			_L("RCall::GetInfo returned an invalid  name"));
       
  6377 	ASSERT_TRUE(callInfo.iLineName.Length() > 0,  
       
  6378 			_L("RCall::GetInfo returned an invalid  Line name"));	
       
  6379 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusIdle,  
       
  6380 			_L("RCall::GetInfo wrong iStatus, should be EStatusIdle"));
       
  6381 	ASSERT_TRUE(callInfo.iDuration.Int() > 0,  
       
  6382 			_L("RCall::GetInfo wrong iDuration, should be >0"));
       
  6383 
       
  6384 	// Check RMobileCall::GetMobileCallInfo returns iValid > 0.
       
  6385 	// Check RMobileCall::GetMobileCallInfo returns data for attributes makred as valid in iValid.
       
  6386 	// Check RMobileCall::GetMobileCallInfo returns valid line name.
       
  6387 	ASSERT_EQUALS(incomingCall.GetMobileCallInfo(mobileCallInfoPckg), KErrNone,  
       
  6388 			_L("RMobileCall::GetMobileCallInfo returned an error"));
       
  6389 	ASSERT_TRUE(mobileCallInfo.iLineName.Length() > 0,  
       
  6390 			_L("RMobileCall::GetMobileCallInfo returned an invalid line name"));
       
  6391 	ASSERT_TRUE(mobileCallInfo.iValid > 0,  
       
  6392 			_L("RMobileCall::GetMobileCallInfo returned unexpected flags in iValid"));
       
  6393 
       
  6394 	// Note: not using TCallControlTsyTestHelper::CheckForValidCallInfo() as some checks would fail at this point
       
  6395 	if(mobileCallInfo.iValid & RMobileCall::KCallRemoteParty)
       
  6396 		{
       
  6397 		ASSERT_TRUE(mobileCallInfo.iRemoteParty.iRemoteNumber.iTelNumber.Length() > 0,
       
  6398 					_L("RMobileCall::GetMobileCallInfo set bitmask for KCallRemoteParty to true, but iRemoteParty.iRemoteNumber.iTelNumber has invalid length"));
       
  6399 		}
       
  6400 	if(mobileCallInfo.iValid & RMobileCall::KCallDuration)
       
  6401 		{
       
  6402 		TTimeIntervalSeconds startTime = 0;
       
  6403 		TTimeIntervalSeconds durationTime(mobileCallInfo.iDuration);
       
  6404 		ASSERT_TRUE(durationTime > startTime,
       
  6405 					_L("RMobileCall::GetMobileCallInfo set bitmask for KCallDuration to true, but set iDuration to an invalid number"));
       
  6406 		}
       
  6407 		
       
  6408 	ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10017);
       
  6409 	if(mobileCallInfo.iValid & RMobileCall::KCallId)
       
  6410 		{
       
  6411 		ASSERT_EQUALS( mobileCallInfo.iCallId, -1,
       
  6412 					_L("RMobileCall::GetMobileCallInfo set bitmask for KCallId to true, but set iCallId to an invalid number"));
       
  6413 		}
       
  6414 	if(mobileCallInfo.iValid & RMobileCall::KCallExitCode)
       
  6415 		{
       
  6416 		ASSERT_EQUALS( mobileCallInfo.iExitCode, KErrNone, _L("RMobileCall::GetMobileCallInfo set bitmask for KCallExitCode to true, but did not set iExitCode to KErrNone"))
       
  6417 		}
       
  6418 
       
  6419 	////////////////////////////////////////////////////////////////
       
  6420 	// TEST END
       
  6421 	////////////////////////////////////////////////////////////////
       
  6422 
       
  6423     StartCleanup();
       
  6424 	
       
  6425 	// PopAndDestroy 
       
  6426 	// notifyIncomingCallStatus
       
  6427 	// notifyCapsChangeStatus 	
       
  6428 	// notifyMobileCallCapsChangeStatus
       
  6429 	// notifyCallStatusChangeStatus
       
  6430 	// notifyMobileCallChangeStatus
       
  6431 	// notifyMobileLineStatusChangeStatus
       
  6432 	
       
  6433 	CleanupStack::PopAndDestroy(6,&notifyIncomingCallStatus);
       
  6434 	
       
  6435 	return TestStepResult();
       
  6436 	}
       
  6437 
       
  6438 TPtrC CCTSYIntegrationTestCallControl0019::GetTestStepName()
       
  6439 /**
       
  6440  * @return The test step name.
       
  6441  */
       
  6442 	{
       
  6443 	return  _L("CCTSYIntegrationTestCallControl0019");
       
  6444 	}
       
  6445 
       
  6446 
       
  6447 
       
  6448 CCTSYIntegrationTestCallControl0020::CCTSYIntegrationTestCallControl0020(CEtelSessionMgr& aEtelSessionMgr)
       
  6449 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
  6450 /**
       
  6451  * Constructor.
       
  6452  */
       
  6453 	{
       
  6454 	SetTestStepName(CCTSYIntegrationTestCallControl0020::GetTestStepName());
       
  6455 	}
       
  6456 
       
  6457 CCTSYIntegrationTestCallControl0020::~CCTSYIntegrationTestCallControl0020()
       
  6458 /**
       
  6459  * Destructor.
       
  6460  */
       
  6461 	{
       
  6462 	}
       
  6463 
       
  6464 TVerdict CCTSYIntegrationTestCallControl0020::doTestStepL()
       
  6465 /**
       
  6466  * @SYMTestCaseID BA-CTSY-INT-CCON-0020
       
  6467  * @SYMFssID BA/CTSY/CCON-0020
       
  6468  * @SYMTestCaseDesc Cancel dialling a call.
       
  6469  * @SYMTestPriority High
       
  6470  * @SYMTestActions RMobileCall::GetMobileCallStatus, RCall::Dial, RCall::NotifyStatusChange, RMobileCall::NotifyMobileCallStatusChange, RCall::GetStatus, RCall::DialCancel, RMobileCall::GetMobileCallCaps
       
  6471  * @SYMTestExpectedResults Pass - KErrCancel returned on cancellation of dial.
       
  6472  * @SYMTestType CIT
       
  6473  * @SYMTestCaseDependencies live/automatic
       
  6474  *
       
  6475  * Reason for test: Verify Dial can be cancelled at different periods of time into dialling and caps and status correct.
       
  6476  *
       
  6477  * @return - TVerdict code
       
  6478  */
       
  6479 	{
       
  6480 
       
  6481 	////////////////////////////////////////////////////////////////
       
  6482 	// SET UP
       
  6483 	////////////////////////////////////////////////////////////////
       
  6484 
       
  6485 	
       
  6486 	// Check phone supports KCapsVoice
       
  6487 
       
  6488 	// Get Voice line 1 
       
  6489 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
  6490 	// Get call 1 
       
  6491 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
  6492 
       
  6493 	RLine::TCaps lineCaps; 
       
  6494 	CHECK_EQUALS_L(voiceLine.GetCaps(lineCaps), KErrNone,  
       
  6495 			_L("RMobileLine::GetCaps returned an error"));
       
  6496 	CHECK_BITS_SET_L(lineCaps.iFlags, RLine::KCapsVoice, KNoUnwantedBits,  
       
  6497 			_L("RLine::GetCaps returned wrong caps"));
       
  6498 
       
  6499 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
  6500 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
  6501 	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
  6502 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
  6503 
       
  6504 	////////////////////////////////////////////////////////////////
       
  6505 	// SET UP END
       
  6506 	////////////////////////////////////////////////////////////////
       
  6507 	
       
  6508 	StartTest();
       
  6509 	
       
  6510 	////////////////////////////////////////////////////////////////
       
  6511 	// TEST START
       
  6512 	////////////////////////////////////////////////////////////////
       
  6513 
       
  6514 	// post notifier for RCall::NotifyStatusChange
       
  6515 	TCoreEtelRequestStatus<RCall> notifyStatusChangeStatus (call1,&RCall::NotifyStatusChangeCancel);
       
  6516 	CleanupStack::PushL(notifyStatusChangeStatus);
       
  6517 	RCall::TStatus callStatus;
       
  6518 	call1.NotifyStatusChange(notifyStatusChangeStatus,callStatus);	
       
  6519 
       
  6520 	// post notifier for RMobileCall::NotifyMobileCallStatusChange
       
  6521 	TExtEtelRequestStatus notifyMobileCallStatusChangeStatus(call1, EMobileCallNotifyMobileCallStatusChange);
       
  6522 	CleanupStack::PushL(notifyMobileCallStatusChangeStatus);
       
  6523 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
  6524 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallStatus);
       
  6525 
       
  6526 	// post notifier for RMobileCall::NotifyMobileCallCapsChange
       
  6527 	TExtEtelRequestStatus notifyMobileCallCapsChangeStatus(call1, EMobileCallNotifyMobileCallCapsChange);
       
  6528 	CleanupStack::PushL(notifyMobileCallCapsChangeStatus);
       
  6529 	RMobileCall::TMobileCallCapsV1 mobileCallCaps;
       
  6530 	RMobileCall::TMobileCallCapsV1Pckg capsPckg(mobileCallCaps);
       
  6531 	call1.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus,capsPckg);
       
  6532 	
       
  6533 	// post notifier for RCall::NotifyCapsChange
       
  6534 	TCoreEtelRequestStatus<RCall> notifyCapsChangeStatus (call1,&RCall::NotifyCapsChangeCancel);	
       
  6535 	CleanupStack::PushL(notifyCapsChangeStatus);
       
  6536 	RCall::TCaps callCaps;
       
  6537 	call1.NotifyCapsChange(notifyCapsChangeStatus,callCaps);
       
  6538 			
       
  6539 	// ===  Dial then cancel after 3 seconds ===
       
  6540 
       
  6541 	DisplayUserInteractionPromptL(
       
  6542 		_L("Ensure your own phone number has already been set in the ini file.\nAfter you press a key, the test will call this phone."), ETimeLong);
       
  6543 
       
  6544 	// Dial RPS which won't answer.
       
  6545 	TPtrC RPSnumber;
       
  6546 	
       
  6547 	// Dialling own phone instead of the RPS
       
  6548 	/*
       
  6549 	ASSERT_EQUALS(RPSIgnoreNextCallL(EVoiceLine), KErrNone,  
       
  6550 			_L("cctsyintegraiontestsuitebase::RPSIgnoreNextCallL returned an error"));
       
  6551 	GetRPSNumber(EVoiceLine, RPSnumber);
       
  6552 	*/
       
  6553 	DEBUG_PRINTF1(_L("Voice mail must be switched off for this test to pass!"));
       
  6554 	
       
  6555 	ASSERT_TRUE(GetStringFromConfig(KIniOwnNumSection, KIniOwnVoiceNumber1, RPSnumber) != EFalse,			  
       
  6556 				_L("CTestStep::GetStringFromConfig did not complete as expected"));
       
  6557 
       
  6558 	DEBUG_PRINTF1(_L("Board Now Dialling (1)"));
       
  6559 	TCoreEtelRequestStatus<RMobileCall> dialStatus(call1, &RCall::DialCancel);
       
  6560 	CleanupStack::PushL(dialStatus);
       
  6561 	call1.Dial(dialStatus, RPSnumber); 
       
  6562 		
       
  6563 	// Wait for 3 seconds. 
       
  6564 	User::After(3*KOneSecond);
       
  6565 		
       
  6566 	// ===  Check call status and caps ===
       
  6567 
       
  6568 	// Check RCall::NotifyStatusChange completes with EStatusDialling
       
  6569 	RCall::TStatus expectedCallStatus = RCall::EStatusDialling;
       
  6570 	const TInt wantedStatus = KErrNone;
       
  6571 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  6572 														 notifyStatusChangeStatus,
       
  6573 														 callStatus,
       
  6574 														 expectedCallStatus,
       
  6575 														 wantedStatus);
       
  6576 
       
  6577 	// Check RCall::GetStatus returns EStatusDialling.
       
  6578 	ASSERT_EQUALS(call1.GetStatus(callStatus),KErrNone,  
       
  6579 			_L("RCall::GetStatus returned an error"));
       
  6580 	ASSERT_EQUALS(callStatus, RCall::EStatusDialling,  
       
  6581 			_L("RCall::GetStatus returned an unexpected call status"));
       
  6582 
       
  6583 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDialling
       
  6584 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusDialling;
       
  6585 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  6586 															notifyMobileCallStatusChangeStatus,
       
  6587 															mobileCallStatus,
       
  6588 															expectedMobileCallStatus,
       
  6589 															wantedStatus);
       
  6590 
       
  6591 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusDialling
       
  6592 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  6593 			_L("RMobileCall::GetMobileStatus returned an error"));
       
  6594 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusDialling,  
       
  6595 			_L("RMobileCall::GetMobileStatus did not return a status EStatusDialling"));
       
  6596 
       
  6597 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice
       
  6598 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps NOT in set of KCapsDial
       
  6599 
       
  6600 	RMobileCall::TMobileCallCapsV1 wantedMobileCaps, unwantedMobileCaps;
       
  6601 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice;
       
  6602 	wantedMobileCaps.iCallEventCaps = KNoWantedBits;
       
  6603 	TCmpRMobileCallTMobileCallCaps mobileCapsComp(wantedMobileCaps,mobileCallCaps, *this);
       
  6604 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(call1, 
       
  6605 																	   notifyMobileCallCapsChangeStatus,
       
  6606 																	   mobileCapsComp,
       
  6607 																	   wantedStatus);
       
  6608 
       
  6609 	unwantedMobileCaps.iCallControlCaps = RMobileCall::KCapsDial;
       
  6610 	
       
  6611 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps, unwantedMobileCaps.iCallControlCaps,  
       
  6612 			_L("RMobileCall::NotifyMobileCallCapsChange did not set expected iCallControlCaps"));
       
  6613 																	   
       
  6614 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice
       
  6615 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in NOT set of KCapsDial
       
  6616 	ASSERT_EQUALS(call1.GetMobileCallCaps(capsPckg), KErrNone,  
       
  6617 			_L("RMobileCall::GetMobileCallCaps returned an error"));
       
  6618 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice;
       
  6619 	unwantedMobileCaps.iCallControlCaps = RMobileCall::KCapsDial;
       
  6620 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps,unwantedMobileCaps.iCallControlCaps, 
       
  6621 			_L("RMobileCall::GetMobileCallCaps returned unexpected iCallControlCaps"));										   
       
  6622 
       
  6623 	// === Post Notifiers ======
       
  6624 	call1.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus,capsPckg);
       
  6625 	call1.NotifyStatusChange(notifyStatusChangeStatus,callStatus);		
       
  6626 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallStatus);
       
  6627 		
       
  6628 	// Cancel dialling with RCall::DialCancel 
       
  6629 	call1.DialCancel();
       
  6630 
       
  6631 	// Check RCall::Dial request completes with KErrCancel
       
  6632 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeShort), KErrNone,
       
  6633 				  _L("RCall::DialCancel timed-out"));
       
  6634 	ASSERT_EQUALS(dialStatus.Int(), KErrCancel,  
       
  6635 			_L("RCall::Dial Request status was not set to KErrCancel"));
       
  6636 
       
  6637 	// ===  Check call status and caps ===
       
  6638 
       
  6639 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice | KCapsDial.
       
  6640 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallEventCaps in set of 0.
       
  6641 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsDial;
       
  6642 	wantedMobileCaps.iCallEventCaps = 0;
       
  6643 	TCmpRMobileCallTMobileCallCaps mobileCapsComp2(wantedMobileCaps,mobileCallCaps, *this);
       
  6644 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(call1, 
       
  6645 																	   notifyMobileCallCapsChangeStatus,
       
  6646 																	   mobileCapsComp2,
       
  6647 																	   wantedStatus);
       
  6648 
       
  6649 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsDial.
       
  6650 	ASSERT_EQUALS(call1.GetMobileCallCaps(capsPckg), KErrNone,  
       
  6651 			_L("RMobileCall::GetMobileCallCaps returned an error"));
       
  6652 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsDial;
       
  6653 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps,KNoUnwantedBits, 
       
  6654 			_L("RMobileCall::GetMobileCallCaps returned unexpected iCallControlCaps"));
       
  6655 
       
  6656 	// Check RMobileCall::GetMobileCallCaps includes iCallEventCaps in set of 0.	
       
  6657 	wantedMobileCaps.iCallEventCaps = 0;	
       
  6658 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedMobileCaps.iCallEventCaps,KNoUnwantedBits, 
       
  6659 			_L("RMobileCall::GetMobileCallCaps returned unexpected iCallEventCaps"));										   
       
  6660 
       
  6661 	// Check RCall::NotifyStatusChange completes with EStatusIdle.
       
  6662 	expectedCallStatus = RCall::EStatusIdle;
       
  6663 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  6664 														 notifyStatusChangeStatus,
       
  6665 														 callStatus,
       
  6666 														 expectedCallStatus,
       
  6667 														 wantedStatus);
       
  6668 	// Check RCall::GetStatus returns EStatusIdle.
       
  6669 	ASSERT_EQUALS(call1.GetStatus(callStatus),KErrNone,  
       
  6670 			_L("RCall::GetStatus returned an error"));
       
  6671 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle,  
       
  6672 			_L("RCall::GetStatus returned an unexpected call status"));
       
  6673 
       
  6674 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusIdle.
       
  6675 	expectedMobileCallStatus = RMobileCall::EStatusIdle;
       
  6676 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  6677 															notifyMobileCallStatusChangeStatus,
       
  6678 															mobileCallStatus,
       
  6679 															expectedMobileCallStatus,
       
  6680 															wantedStatus);
       
  6681 
       
  6682 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
  6683 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  6684 			_L("RMobileCall::GetMobileStatus returned an error"));
       
  6685 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle,  
       
  6686 			_L("RMobileCall::GetMobileStatus did not return a status EStatusIdle"));
       
  6687 
       
  6688 	// Wait for 2 seconds 
       
  6689 	User::After(2*KOneSecond);
       
  6690 	
       
  6691 	// Release call 1. 
       
  6692 	iEtelSessionMgr.ReleaseCall(KMainServer,KMainPhone,KVoiceLine,KCall1);
       
  6693 	
       
  6694 	// Get call 1. 
       
  6695 	call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
  6696 
       
  6697 	// ===  Dial then cancel after 5 seconds ===
       
  6698 
       
  6699 	// -- Post Notifiers ---
       
  6700 	call1.NotifyStatusChange(notifyStatusChangeStatus,callStatus);
       
  6701 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallStatus);
       
  6702 	call1.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus,capsPckg);
       
  6703 			
       
  6704 	// Dial RPS which won't answer.
       
  6705 	// Dialling own phone instead of the RPS
       
  6706 	/*
       
  6707 	ASSERT_EQUALS(RPSIgnoreNextCallL(EVoiceLine), KErrNone,  
       
  6708 			_L("cctsyintegraiontestsuitebase::RPSIgnoreNextCallL returned an error"));
       
  6709 	*/ 
       
  6710 	DEBUG_PRINTF1(_L("Board Now Dialling: "));
       
  6711 	call1.Dial(dialStatus, RPSnumber); 
       
  6712 
       
  6713 	// Wait for 5 seconds. 
       
  6714 	User::After(5*KOneSecond);
       
  6715 	
       
  6716 	// ===  Check call status and caps ===
       
  6717 
       
  6718 	// Check RCall::NotifyStatusChange completes with EStatusDialling
       
  6719 	expectedCallStatus = RCall::EStatusDialling;
       
  6720 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  6721 														 notifyStatusChangeStatus,
       
  6722 														 callStatus,
       
  6723 														 expectedCallStatus,
       
  6724 														 wantedStatus);
       
  6725 
       
  6726 	// Check RCall::GetStatus returns EStatusDialling.
       
  6727 	ASSERT_EQUALS(call1.GetStatus(callStatus),KErrNone,  
       
  6728 			_L("RCall::GetStatus returned an error"));
       
  6729 	ASSERT_EQUALS(callStatus, RCall::EStatusDialling,  
       
  6730 			_L("RCall::GetStatus returned an unexpected call status"));
       
  6731 
       
  6732 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDialling
       
  6733 	expectedMobileCallStatus = RMobileCall::EStatusDialling;
       
  6734 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  6735 															notifyMobileCallStatusChangeStatus,
       
  6736 															mobileCallStatus,
       
  6737 															expectedMobileCallStatus,
       
  6738 															wantedStatus);
       
  6739 
       
  6740 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusDialling
       
  6741 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  6742 			_L("RMobileCall::GetMobileStatus returned an error"));
       
  6743 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusDialling,  
       
  6744 			_L("RMobileCall::GetMobileStatus did not return a status EStatusDialling"));
       
  6745 
       
  6746 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice
       
  6747 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps NOT in set of KCapsDial
       
  6748 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice;
       
  6749 	wantedMobileCaps.iCallEventCaps = KNoWantedBits;
       
  6750 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(call1, 
       
  6751 																	   notifyMobileCallCapsChangeStatus,
       
  6752 																	   mobileCapsComp,
       
  6753 																	   wantedStatus);
       
  6754 
       
  6755 	unwantedMobileCaps.iCallControlCaps = RMobileCall::KCapsDial;	
       
  6756 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps, unwantedMobileCaps.iCallControlCaps,  
       
  6757 			_L("RMobileCall::NotifyMobileCallCapsChange did not set expected iCallControlCaps"));
       
  6758 
       
  6759 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice
       
  6760 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in NOT set of KCapsDial
       
  6761 	ASSERT_EQUALS(call1.GetMobileCallCaps(capsPckg), KErrNone,  
       
  6762 			_L("RMobileCall::GetMobileCallCaps returned an error"));
       
  6763 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice;
       
  6764 	unwantedMobileCaps.iCallControlCaps = RMobileCall::KCapsDial;
       
  6765 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps,unwantedMobileCaps.iCallControlCaps, 
       
  6766 			_L("RMobileCall::GetMobileCallCaps returned unexpected iCallControlCaps"));										   
       
  6767 
       
  6768 	// -- Post Notifiers ---
       
  6769 	call1.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus,capsPckg);
       
  6770 	call1.NotifyStatusChange(notifyStatusChangeStatus,callStatus);
       
  6771 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallStatus);
       
  6772 				
       
  6773 	// Cancel dialling with RCall::DialCancel 
       
  6774 	call1.DialCancel();
       
  6775 	
       
  6776 	// Check RCall::Dial request completes with KErrCancel
       
  6777 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeShort), KErrNone,
       
  6778 				  _L("RCall::DialCancel timed-out"));
       
  6779 	ASSERT_EQUALS(dialStatus.Int(), KErrCancel,  
       
  6780 			_L("RCall::Dial Request status was not set to KErrCancel"));
       
  6781 	
       
  6782 	// ===  Check call status and caps ===
       
  6783 
       
  6784 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice | KCapsDial.
       
  6785 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallEventCaps in set of 0.
       
  6786 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsDial;
       
  6787 	wantedMobileCaps.iCallEventCaps = 0;
       
  6788 	TCmpRMobileCallTMobileCallCaps mobileCapsComp3(wantedMobileCaps,mobileCallCaps, *this);
       
  6789 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(call1, 
       
  6790 																	   notifyMobileCallCapsChangeStatus,
       
  6791 																	   mobileCapsComp3,
       
  6792 																	   wantedStatus);
       
  6793 	
       
  6794 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps, KNoUnwantedBits,  
       
  6795 			_L("RMobileCall::NotifyMobileCallCapsChange did not set expected iCallControlCaps"));
       
  6796 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedMobileCaps.iCallEventCaps, KNoUnwantedBits,  
       
  6797 			_L("RMobileCall::NotifyMobileCallCapsChange did not set expected iCallEventCaps"));
       
  6798 
       
  6799 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsDial.
       
  6800 	// Check RMobileCall::GetMobileCallCaps includes iCallEventCaps in set of 0.
       
  6801 	ASSERT_EQUALS(call1.GetMobileCallCaps(capsPckg), KErrNone,  
       
  6802 			_L("RMobileCall::GetMobileCallCaps returned an error"));
       
  6803 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice| RMobileCall::KCapsDial;
       
  6804 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps,KNoUnwantedBits, 
       
  6805 			_L("RMobileCall::GetMobileCallCaps returned unexpected iCallControlCaps"));										   
       
  6806 	wantedMobileCaps.iCallEventCaps = 0;
       
  6807 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedMobileCaps.iCallEventCaps,KNoUnwantedBits, 
       
  6808 			_L("RMobileCall::GetMobileCallCaps returned unexpected iCallEventCaps"));										   
       
  6809 
       
  6810 	// Check RCall::NotifyStatusChange completes with EStatusIdle.
       
  6811 	expectedCallStatus = RCall::EStatusIdle;
       
  6812 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  6813 														 notifyStatusChangeStatus,
       
  6814 														 callStatus,
       
  6815 														 expectedCallStatus,
       
  6816 														 wantedStatus);
       
  6817 
       
  6818 	// Check RCall::GetStatus returns EStatusIdle.
       
  6819 	ASSERT_EQUALS(call1.GetStatus(callStatus),KErrNone,  
       
  6820 			_L("RCall::GetStatus returned an error"));
       
  6821 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle,  
       
  6822 			_L("RCall::GetStatus returned an unexpected call status"));
       
  6823 
       
  6824 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusIdle.
       
  6825 	expectedMobileCallStatus = RMobileCall::EStatusIdle;
       
  6826 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  6827 															notifyMobileCallStatusChangeStatus,
       
  6828 															mobileCallStatus,
       
  6829 															expectedMobileCallStatus,
       
  6830 															wantedStatus);
       
  6831 
       
  6832 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
  6833 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  6834 			_L("RMobileCall::GetMobileStatus returned an error"));
       
  6835 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle,  
       
  6836 			_L("RMobileCall::GetMobileStatus did not return a status EStatusIdle"));
       
  6837 
       
  6838 	// Wait for 2 seconds 
       
  6839 	User::After(2*KOneSecond);
       
  6840 	
       
  6841 	// Release call 1. 
       
  6842 	iEtelSessionMgr.ReleaseCall(KMainServer,KMainPhone,KVoiceLine,KCall1);
       
  6843 
       
  6844 	// Get call 1. 
       
  6845 	call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
  6846 
       
  6847 	// ===  Dial then cancel after 15 seconds ===
       
  6848 
       
  6849 	// -- Post Notifiers ---
       
  6850 	call1.NotifyStatusChange(notifyStatusChangeStatus,callStatus);
       
  6851 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallStatus);
       
  6852 	call1.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus,capsPckg);
       
  6853 
       
  6854 	// Dial RPS which won't answer.
       
  6855 	// Dialling own phone instead of the RPS
       
  6856 	/*
       
  6857 	ASSERT_EQUALS(RPSIgnoreNextCallL(EVoiceLine), KErrNone,  
       
  6858 			_L("cctsyintegraiontestsuitebase::RPSIgnoreNextCallL returned an error"));
       
  6859 	*/
       
  6860 	DEBUG_PRINTF1(_L("Board Now Dialling"));
       
  6861 	call1.Dial(dialStatus, RPSnumber); 
       
  6862 	
       
  6863 	// Wait for 15 seconds. 
       
  6864 	User::After(15*KOneSecond);
       
  6865 	
       
  6866 	// ===  Check call status and caps ===
       
  6867 
       
  6868 	// Check RCall::NotifyStatusChange completes with EStatusDialling
       
  6869 	expectedCallStatus = RCall::EStatusDialling;
       
  6870 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  6871 														 notifyStatusChangeStatus,
       
  6872 														 callStatus,
       
  6873 														 expectedCallStatus,
       
  6874 														 wantedStatus);
       
  6875 	// Check RCall::GetStatus returns EStatusDialling.
       
  6876 	ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10025);
       
  6877 	ASSERT_EQUALS(call1.GetStatus(callStatus),KErrNone,  
       
  6878 			_L("RCall::GetStatus returned an error"));
       
  6879 	ASSERT_EQUALS(callStatus, RCall::EStatusDialling,
       
  6880 			_L("RCall::GetStatus returned an unexpected call status"));
       
  6881 
       
  6882 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDialling
       
  6883 	expectedMobileCallStatus = RMobileCall::EStatusDialling;
       
  6884 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  6885 															notifyMobileCallStatusChangeStatus,
       
  6886 															mobileCallStatus,
       
  6887 															expectedMobileCallStatus,
       
  6888 															wantedStatus);
       
  6889 
       
  6890 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusDialling
       
  6891 	ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10025);
       
  6892 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,
       
  6893 			_L("RMobileCall::GetMobileStatus returned an error"));
       
  6894 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusDialling,
       
  6895 			_L("RMobileCall::GetMobileStatus did not return a status EStatusDialling"));
       
  6896 
       
  6897 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice
       
  6898 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps NOT in set of KCapsDial
       
  6899 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice;
       
  6900 	wantedMobileCaps.iCallEventCaps = KNoWantedBits;
       
  6901 	TCmpRMobileCallTMobileCallCaps mobileCapsComp4(wantedMobileCaps,mobileCallCaps, *this);
       
  6902 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(call1, 
       
  6903 																	   notifyMobileCallCapsChangeStatus,
       
  6904 																	   mobileCapsComp4,
       
  6905 																	   wantedStatus);
       
  6906 
       
  6907 	unwantedMobileCaps.iCallControlCaps = RMobileCall::KCapsDial;	
       
  6908 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps, unwantedMobileCaps.iCallControlCaps,  
       
  6909 			_L("RMobileCall::NotifyMobileCallCapsChange did not set expected iCallControlCaps"));
       
  6910 
       
  6911 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice
       
  6912 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in NOT set of KCapsDial
       
  6913 	ASSERT_EQUALS(call1.GetMobileCallCaps(capsPckg), KErrNone,  
       
  6914 			_L("RMobileCall::GetMobileCallCaps returned an error"));
       
  6915 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice;
       
  6916 	unwantedMobileCaps.iCallControlCaps = RMobileCall::KCapsDial;
       
  6917 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps,unwantedMobileCaps.iCallControlCaps, 
       
  6918 			_L("RMobileCall::GetMobileCallCaps returned unexpected iCallControlCaps"));										   
       
  6919 
       
  6920 	// -- Post Notifiers ---
       
  6921 	call1.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus,capsPckg);
       
  6922 	call1.NotifyStatusChange(notifyStatusChangeStatus,callStatus);
       
  6923 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallStatus);
       
  6924 
       
  6925 	// Cancel dialling with RCall::DialCancel 
       
  6926 	call1.DialCancel();
       
  6927 	
       
  6928 	// Check RCall::Dial request completes with KErrCancel
       
  6929 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeShort), KErrNone,
       
  6930 				  _L("RCall::DialCancel timed-out"));
       
  6931 	ASSERT_EQUALS(dialStatus.Int(), KErrCancel,  
       
  6932 			_L("RCall::Dial REequest status was not set to KErrCancel"));
       
  6933 
       
  6934 	// ===  Check call status and caps ===
       
  6935 
       
  6936 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice | KCapsDial.
       
  6937 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallEventCaps in set of 0.
       
  6938 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsDial;	
       
  6939 	wantedMobileCaps.iCallEventCaps = 0;
       
  6940 	TCmpRMobileCallTMobileCallCaps mobileCapsComp5(wantedMobileCaps,mobileCallCaps, *this);
       
  6941 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(call1, 
       
  6942 																	   notifyMobileCallCapsChangeStatus,
       
  6943 																	   mobileCapsComp5,
       
  6944 																	   wantedStatus);
       
  6945 	
       
  6946 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps, KNoUnwantedBits,  
       
  6947 			_L("RMobileCall::NotifyMobileCallCapsChange did not set expected iCallControlCaps"));
       
  6948 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedMobileCaps.iCallEventCaps, KNoUnwantedBits,  
       
  6949 			_L("RMobileCall::NotifyMobileCallCapsChange did not set expected iCallEventCaps"));
       
  6950 
       
  6951 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsDial.
       
  6952 	// Check RMobileCall::GetMobileCallCaps includes iCallEventCaps in set of 0.
       
  6953 	ASSERT_EQUALS(call1.GetMobileCallCaps(capsPckg), KErrNone,  
       
  6954 			_L("RMobileCall::GetMobileCallCaps returned an error"));
       
  6955 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice| RMobileCall::KCapsDial;
       
  6956 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps,KNoUnwantedBits, 
       
  6957 			_L("RMobileCall::GetMobileCallCaps returned unexpected iCallControlCaps"));										   
       
  6958 	wantedMobileCaps.iCallEventCaps = 0;
       
  6959 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedMobileCaps.iCallEventCaps,KNoUnwantedBits, 
       
  6960 			_L("RMobileCall::GetMobileCallCaps returned unexpected iCallEventCaps"));										   
       
  6961 
       
  6962 	// Check RCall::NotifyStatusChange completes with EStatusIdle.
       
  6963 	expectedCallStatus = RCall::EStatusIdle;
       
  6964 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  6965 														 notifyStatusChangeStatus,
       
  6966 														 callStatus,
       
  6967 														 expectedCallStatus,
       
  6968 														 wantedStatus);
       
  6969 														 
       
  6970 	// Check RCall::GetStatus returns EStatusIdle.
       
  6971 	ASSERT_EQUALS(call1.GetStatus(callStatus),KErrNone,  
       
  6972 			_L("RCall::GetStatus returned an error"));
       
  6973 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle,  
       
  6974 			_L("RCall::GetStatus returned an unexpected call status"));
       
  6975 
       
  6976 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusIdle.
       
  6977 	expectedMobileCallStatus = RMobileCall::EStatusIdle;
       
  6978 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  6979 															notifyMobileCallStatusChangeStatus,
       
  6980 															mobileCallStatus,
       
  6981 															expectedMobileCallStatus,
       
  6982 															wantedStatus);
       
  6983 
       
  6984 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
  6985 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  6986 			_L("RMobileCall::GetMobileStatus returned an error"));
       
  6987 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle,  
       
  6988 			_L("RMobileCall::GetMobileStatus did not return a status EStatusIdle"));
       
  6989 
       
  6990 	
       
  6991 	////////////////////////////////////////////////////////////////
       
  6992 	// TEST END
       
  6993 	////////////////////////////////////////////////////////////////
       
  6994 
       
  6995     StartCleanup();
       
  6996 	
       
  6997 	// PopAndDestroy
       
  6998 		// dialStatus
       
  6999 		// notifyCapsChangeStatus
       
  7000 		// notifyMobileCallCapsChangeStatus
       
  7001 		// notifyMobileCallStatusChangeStatus
       
  7002 		// notifyStatusChangeStatus
       
  7003 
       
  7004 	CleanupStack::PopAndDestroy(5, &notifyStatusChangeStatus);
       
  7005 	
       
  7006 	return TestStepResult();
       
  7007 	}
       
  7008 
       
  7009 TPtrC CCTSYIntegrationTestCallControl0020::GetTestStepName()
       
  7010 /**
       
  7011  * @return The test step name.
       
  7012  */
       
  7013 	{
       
  7014 	return  _L("CCTSYIntegrationTestCallControl0020");
       
  7015 	}
       
  7016 
       
  7017 
       
  7018 
       
  7019 CCTSYIntegrationTestCallControl0021::CCTSYIntegrationTestCallControl0021(CEtelSessionMgr& aEtelSessionMgr)
       
  7020 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
  7021 /**
       
  7022  * Constructor.
       
  7023  */
       
  7024 	{
       
  7025 	SetTestStepName(CCTSYIntegrationTestCallControl0021::GetTestStepName());
       
  7026 	}
       
  7027 
       
  7028 CCTSYIntegrationTestCallControl0021::~CCTSYIntegrationTestCallControl0021()
       
  7029 /**
       
  7030  * Destructor.
       
  7031  */
       
  7032 	{
       
  7033 	}
       
  7034 
       
  7035 TVerdict CCTSYIntegrationTestCallControl0021::doTestStepL()
       
  7036 /**
       
  7037  * @SYMTestCaseID BA-CTSY-INT-CCON-0021
       
  7038  * @SYMFssID BA/CTSY/CCON-0021
       
  7039  * @SYMTestCaseDesc Hang up MO call before it gets connected.
       
  7040  * @SYMTestPriority High
       
  7041  * @SYMTestActions RCall::GetCaps, RMobileCall::NotifyMobileCallCapsChange, RMobileCall::GetMobileCallStatus, RMobileCall::GetMobileCallInfo, RLine::NotifyIncomingCall, RCall::GetInfo, RCall::NotifyStatusChange, RMobileCall::NotifyMobileCallStatusChange, RCall::OpenExistingCall, RCall::NotifyCapsChange, RCall::GetStatus, RMobileCall::GetMobileCallCaps
       
  7042  * @SYMTestExpectedResults Pass - Call is hung up and call status returns to idle.
       
  7043  * @SYMTestType CIT
       
  7044  * @SYMTestCaseDependencies live/automatic
       
  7045  *
       
  7046  * Reason for test: Verify call caps and call status correct and call is hung up.
       
  7047  *
       
  7048  * @return - TVerdict code
       
  7049  */
       
  7050 	{
       
  7051 
       
  7052 	////////////////////////////////////////////////////////////////
       
  7053 	// SET UP
       
  7054 	////////////////////////////////////////////////////////////////
       
  7055 	
       
  7056 	// Check phone supports KCapsVoice
       
  7057 
       
  7058 	// Get Voice line 1 
       
  7059 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
  7060 	// Get call 1 
       
  7061 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
  7062 
       
  7063 	RLine::TCaps lineCaps; 
       
  7064 	CHECK_EQUALS_L(voiceLine.GetCaps(lineCaps), KErrNone,  
       
  7065 				   _L("RMobileLine::GetCaps returned an error."));
       
  7066 	CHECK_BITS_SET_L(lineCaps.iFlags, RLine::KCapsVoice, KNoUnwantedBits,  
       
  7067 					 _L("RLine::GetCaps did not return KCapsVoice."));
       
  7068 					 
       
  7069 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
  7070 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
  7071 	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
  7072 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
  7073 
       
  7074 	////////////////////////////////////////////////////////////////
       
  7075 	// SET UP END
       
  7076 	////////////////////////////////////////////////////////////////
       
  7077 	
       
  7078 	StartTest();
       
  7079 	
       
  7080 	////////////////////////////////////////////////////////////////
       
  7081 	// TEST START
       
  7082 	////////////////////////////////////////////////////////////////
       
  7083 	
       
  7084 	// Post notification for RCall::NotifyStatusChange
       
  7085 	TCoreEtelRequestStatus<RCall> notifyStatusChangeStatus(call1, &RCall::NotifyStatusChangeCancel);
       
  7086 	CleanupStack::PushL(notifyStatusChangeStatus);
       
  7087 	RCall::TStatus callStatus;
       
  7088 	call1.NotifyStatusChange(notifyStatusChangeStatus, callStatus);
       
  7089 
       
  7090 	// Post notification for RMobileCall::NotifyMobileCallStatusChange
       
  7091 	TExtEtelRequestStatus notifyMobileCallChangeStatus(call1, EMobileCallNotifyMobileCallStatusChange);
       
  7092 	CleanupStack::PushL(notifyMobileCallChangeStatus);
       
  7093 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
  7094 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  7095 
       
  7096 	// Post notifier for RMobileCall::NotifyMobileCallCapsChange
       
  7097 	TExtEtelRequestStatus notifyMobileCallCapsChangeStatus(call1, EMobileCallNotifyMobileCallCapsChange);
       
  7098 	CleanupStack::PushL(notifyMobileCallCapsChangeStatus);
       
  7099 	RMobileCall::TMobileCallCapsV1 mobileCallCaps;
       
  7100 	RMobileCall::TMobileCallCapsV1Pckg mobileCallCapsPckg(mobileCallCaps);
       
  7101 	call1.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus, mobileCallCapsPckg);
       
  7102 
       
  7103 	// Dial RPS which will not answer.
       
  7104 	TPtrC rpsNumber;
       
  7105 	
       
  7106 	GetRPSNumber(EVoiceLine, rpsNumber);
       
  7107 	
       
  7108 	TCoreEtelRequestStatus<RMobileCall> dialStatus(call1, &RCall::DialCancel);
       
  7109 	CleanupStack::PushL(dialStatus);
       
  7110 	call1.Dial(dialStatus, rpsNumber);		
       
  7111 
       
  7112 	// Wait for 3000ms. NB: Using 3000 microSeconds
       
  7113 	User::After(3000); 
       
  7114 
       
  7115 	// ===  Check call status and caps ===
       
  7116 
       
  7117 	// Check RCall::NotifyStatusChange completes with EStatusDialling
       
  7118 	RCall::TStatus expectedCallStatus = RCall::EStatusDialling;
       
  7119 	const TInt wantedStatus = KErrNone;
       
  7120 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  7121 														 notifyStatusChangeStatus,
       
  7122 														 callStatus,
       
  7123 														 expectedCallStatus,
       
  7124 														 wantedStatus);
       
  7125 
       
  7126 	// Check RCall::GetStatus returns EStatusDialling.
       
  7127 	ASSERT_EQUALS(call1.GetStatus(callStatus), KErrNone,  
       
  7128 				  _L("RCall::GetStatus returned an error."));
       
  7129 	ASSERT_EQUALS(callStatus, RCall::EStatusDialling, 
       
  7130 				  _L("RCall::GetStatus did not return EStatusDialling."));
       
  7131 
       
  7132 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDialling
       
  7133 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusDialling;
       
  7134 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  7135 															notifyMobileCallChangeStatus,
       
  7136 															mobileCallStatus,
       
  7137 															expectedMobileCallStatus,
       
  7138 															wantedStatus);
       
  7139 	
       
  7140 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusDialling
       
  7141 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,
       
  7142 				  _L("RMobileCall::GetMobileCallStatus returned error."));
       
  7143 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusDialling,
       
  7144 				  _L("RMobileCall::GetMobileCallStatus's status did not return EStatusDialling."));
       
  7145 
       
  7146 	//*** NB: NotifyMobileCallCapsChange and GetMobileCallCaps not returning correct values on H2
       
  7147 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice
       
  7148 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps NOT in set of KCapsDial
       
  7149 	RMobileCall::TMobileCallCapsV1 wantedMobileCaps, unwantedMobileCaps;
       
  7150 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice;
       
  7151 	wantedMobileCaps.iCallEventCaps = KNoWantedBits;
       
  7152 	TCmpRMobileCallTMobileCallCaps mobileCapsComp(wantedMobileCaps, mobileCallCaps, *this);
       
  7153 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(call1, 
       
  7154 																	   notifyMobileCallCapsChangeStatus,
       
  7155 																	   mobileCapsComp,
       
  7156 																	   wantedStatus);
       
  7157 
       
  7158 	unwantedMobileCaps.iCallControlCaps = RMobileCall::KCapsDial;
       
  7159 	
       
  7160 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps, unwantedMobileCaps.iCallControlCaps,  
       
  7161 			_L("RMobileCall::NotifyMobileCallCapsChange did not set expected iCallControlCaps"));
       
  7162 
       
  7163 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsHangUp
       
  7164 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in NOT set of KCapsDial
       
  7165 	ASSERT_EQUALS(call1.GetMobileCallCaps(mobileCallCapsPckg), KErrNone,
       
  7166 				  _L("RMobileCall::GetMobileCallCaps returned error."));
       
  7167 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, RCall::KCapsVoice | RCall::KCapsHangUp, RCall::KCapsDial,
       
  7168 					_L("RMobileCall::GetMobileCallCaps returned wrong caps."));
       
  7169 
       
  7170 	// Hang up call.
       
  7171 
       
  7172 	// Post notifier for RMobileCall::NotifyMobileCallCapsChange
       
  7173 	call1.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus, mobileCallCapsPckg);
       
  7174 	
       
  7175 	// Post notification for RCall::NotifyStatusChange
       
  7176 	call1.NotifyStatusChange(notifyStatusChangeStatus, callStatus);
       
  7177 	
       
  7178 	// Post notification for RMobileCall::NotifyMobileCallStatusChange
       
  7179 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  7180 	
       
  7181 	ASSERT_EQUALS(call1.HangUp(), KErrNone, _L("RMobileCall::HangUp returned error."));
       
  7182 	
       
  7183 //******** DO WE NEED TO WAIT FOR dialStatus TO change at this point ??  ************//
       
  7184 
       
  7185 	// ===  Check call status and caps ===
       
  7186 
       
  7187 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice | KCapsDial.
       
  7188 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallEventCaps in set of 0.
       
  7189 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsDial;
       
  7190 	wantedMobileCaps.iCallEventCaps = KNoUnwantedBits;
       
  7191 	TCmpRMobileCallTMobileCallCaps mobileCapsComp2(wantedMobileCaps,mobileCallCaps, *this);
       
  7192 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(call1, 
       
  7193 																	   notifyMobileCallCapsChangeStatus,
       
  7194 																	   mobileCapsComp2,
       
  7195 																	   wantedStatus);	
       
  7196 
       
  7197 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsDial.
       
  7198 	// Check RMobileCall::GetMobileCallCaps includes iCallEventCaps in set of 0.
       
  7199 	ASSERT_EQUALS(call1.GetMobileCallCaps(mobileCallCapsPckg), KErrNone,
       
  7200 				  _L("RMobileCall::GetMobileCallCaps returned error."));
       
  7201 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, RCall::KCapsVoice | RCall::KCapsDial, KNoUnwantedBits,
       
  7202 					_L("RMobileCall::GetMobileCallCaps returned wrong caps."));
       
  7203 
       
  7204 	// Check RCall::NotifyStatusChange completes with EStatusIdle.
       
  7205 	expectedCallStatus = RCall::EStatusIdle;
       
  7206 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  7207 														 notifyStatusChangeStatus,
       
  7208 														 callStatus,
       
  7209 														 expectedCallStatus,
       
  7210 														 wantedStatus);	
       
  7211 
       
  7212 	// Check RCall::GetStatus returns EStatusIdle.
       
  7213 	ASSERT_EQUALS(call1.GetStatus(callStatus), KErrNone,  
       
  7214 				  _L("RCall::GetStatus returned an error."));
       
  7215 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle, 
       
  7216 				  _L("RCall::GetStatus did not return EStatusIdle."));
       
  7217 
       
  7218 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusIdle.
       
  7219 	expectedMobileCallStatus = RMobileCall::EStatusIdle;
       
  7220 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  7221 															notifyMobileCallChangeStatus,
       
  7222 															mobileCallStatus,
       
  7223 															expectedMobileCallStatus,
       
  7224 															wantedStatus);
       
  7225 
       
  7226 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
  7227 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,
       
  7228 				  _L("RMobileCall::GetMobileCallStatus returned error."));
       
  7229 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle,
       
  7230 				  _L("RMobileCall::GetMobileCallStatus's status did not return EStatusIdle."));
       
  7231 
       
  7232 	// Release call 1. 
       
  7233 	iEtelSessionMgr.ReleaseCall(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
  7234 
       
  7235 	// Get call 1. 
       
  7236 	call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
  7237 
       
  7238 	// Post notification for RCall::NotifyStatusChange
       
  7239 	call1.NotifyStatusChange(notifyStatusChangeStatus, callStatus);
       
  7240 
       
  7241 	// Post notification for RMobileCall::NotifyMobileCallStatusChange
       
  7242 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  7243 
       
  7244 	// Post notifier for RMobileCall::NotifyMobileCallCapsChange
       
  7245 	call1.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus, mobileCallCapsPckg);
       
  7246 	
       
  7247 	// Dial RPS which will not answer. 
       
  7248 	call1.Dial(dialStatus, rpsNumber);
       
  7249 	
       
  7250 	// Wait for 6000ms. 
       
  7251 	User::After(6000);
       
  7252 	
       
  7253 	// ===  Check call status and caps ===
       
  7254 
       
  7255 	// Check RCall::NotifyStatusChange completes with EStatusDialling
       
  7256 	expectedCallStatus = RCall::EStatusDialling;
       
  7257 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  7258 														 notifyStatusChangeStatus,
       
  7259 														 callStatus,
       
  7260 														 expectedCallStatus,
       
  7261 														 wantedStatus);
       
  7262 
       
  7263 	// Check RCall::GetStatus returns EStatusDialling.
       
  7264 	ASSERT_EQUALS(call1.GetStatus(callStatus), KErrNone,  
       
  7265 				  _L("RCall::GetStatus returned an error."));
       
  7266 	ASSERT_EQUALS(callStatus, RCall::EStatusDialling, 
       
  7267 				  _L("RCall::GetStatus did not return EStatusDialling."));
       
  7268 				  
       
  7269 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDialling
       
  7270 	expectedMobileCallStatus = RMobileCall::EStatusDialling;
       
  7271 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  7272 															notifyMobileCallChangeStatus,
       
  7273 															mobileCallStatus,
       
  7274 															expectedMobileCallStatus,
       
  7275 															wantedStatus);
       
  7276 
       
  7277 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusDialling
       
  7278 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,
       
  7279 				  _L("RMobileCall::GetMobileCallStatus returned error."));
       
  7280 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusDialling,
       
  7281 				  _L("RMobileCall::GetMobileCallStatus's status did not return EStatusDialling."));
       
  7282 
       
  7283 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice
       
  7284 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps NOT in set of KCapsDial
       
  7285 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice;
       
  7286 	wantedMobileCaps.iCallEventCaps = KNoWantedBits;
       
  7287 	TCmpRMobileCallTMobileCallCaps mobileCapsComp1(wantedMobileCaps, mobileCallCaps, *this);
       
  7288 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(call1, 
       
  7289 																	   notifyMobileCallCapsChangeStatus,
       
  7290 																	   mobileCapsComp1,
       
  7291 																	   wantedStatus);
       
  7292 
       
  7293 	unwantedMobileCaps.iCallControlCaps = RMobileCall::KCapsDial;
       
  7294 	
       
  7295 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps, unwantedMobileCaps.iCallControlCaps,  
       
  7296 			_L("RMobileCall::NotifyMobileCallCapsChange did not set expected iCallControlCaps"));
       
  7297 
       
  7298 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsHangUp
       
  7299 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in NOT set of KCapsDial
       
  7300 	ASSERT_EQUALS(call1.GetMobileCallCaps(mobileCallCapsPckg), KErrNone,
       
  7301 				  _L("RMobileCall::GetMobileCallCaps returned error."));
       
  7302 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, RCall::KCapsVoice | RCall::KCapsHangUp, RCall::KCapsDial,
       
  7303 					_L("RMobileCall::GetMobileCallCaps returned wrong caps."));
       
  7304 
       
  7305 	// Hang up call.
       
  7306 	
       
  7307 	// Post notifier for RMobileCall::NotifyMobileCallCapsChange
       
  7308 	call1.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus, mobileCallCapsPckg);
       
  7309 	
       
  7310 	// Post notification for RCall::NotifyStatusChange
       
  7311 	call1.NotifyStatusChange(notifyStatusChangeStatus, callStatus);
       
  7312 	
       
  7313 	// Post notification for RMobileCall::NotifyMobileCallStatusChange
       
  7314 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  7315 	
       
  7316 	ASSERT_EQUALS(call1.HangUp(), KErrNone, _L("RMobileCall::HangUp returned error."));
       
  7317 	
       
  7318 	// ===  Check call status and caps ===
       
  7319 
       
  7320 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice | KCapsDial.
       
  7321 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallEventCaps in set of 0.
       
  7322 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsDial;
       
  7323 	wantedMobileCaps.iCallEventCaps = KNoUnwantedBits;
       
  7324 	TCmpRMobileCallTMobileCallCaps mobileCapsComp3(wantedMobileCaps,mobileCallCaps, *this);
       
  7325 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(call1, 
       
  7326 																	   notifyMobileCallCapsChangeStatus,
       
  7327 																	   mobileCapsComp3,
       
  7328 																	   wantedStatus);
       
  7329 
       
  7330 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsDial.
       
  7331 	// Check RMobileCall::GetMobileCallCaps includes iCallEventCaps in set of 0.
       
  7332 	ASSERT_EQUALS(call1.GetMobileCallCaps(mobileCallCapsPckg), KErrNone,
       
  7333 				  _L("RMobileCall::GetMobileCallCaps returned error."));
       
  7334 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, RCall::KCapsVoice | RCall::KCapsDial, KNoUnwantedBits,
       
  7335 					_L("RMobileCall::GetMobileCallCaps returned wrong caps."));
       
  7336 
       
  7337 	// Check RCall::NotifyStatusChange completes with EStatusIdle.
       
  7338 	expectedCallStatus = RCall::EStatusIdle;
       
  7339 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  7340 														 notifyStatusChangeStatus,
       
  7341 														 callStatus,
       
  7342 														 expectedCallStatus,
       
  7343 														 wantedStatus);	
       
  7344 
       
  7345 	// Check RCall::GetStatus returns EStatusIdle.
       
  7346 	ASSERT_EQUALS(call1.GetStatus(callStatus), KErrNone,  
       
  7347 				  _L("RCall::GetStatus returned an error."));
       
  7348 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle, 
       
  7349 				  _L("RCall::GetStatus did not return EStatusIdle."));
       
  7350 	
       
  7351 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusIdle.
       
  7352 	expectedMobileCallStatus = RMobileCall::EStatusIdle;
       
  7353 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  7354 															notifyMobileCallChangeStatus,
       
  7355 															mobileCallStatus,
       
  7356 															expectedMobileCallStatus,
       
  7357 															wantedStatus);
       
  7358 
       
  7359 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
  7360 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,
       
  7361 				  _L("RMobileCall::GetMobileCallStatus returned error."));
       
  7362 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle,
       
  7363 				  _L("RMobileCall::GetMobileCallStatus's status did not return EStatusIdle."));
       
  7364 
       
  7365 	// Release call 1. 
       
  7366 	iEtelSessionMgr.ReleaseCall(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
  7367 	
       
  7368 	// Get call 1. 
       
  7369 	call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
  7370 
       
  7371 	// Post notification for RCall::NotifyStatusChange
       
  7372 	call1.NotifyStatusChange(notifyStatusChangeStatus, callStatus);
       
  7373 
       
  7374 	// Post notification for RMobileCall::NotifyMobileCallStatusChange
       
  7375 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  7376 
       
  7377 	// Post notifier for RMobileCall::NotifyMobileCallCapsChange
       
  7378 	call1.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus, mobileCallCapsPckg);
       
  7379 
       
  7380 	// Dial RPS which will not answer. 
       
  7381 	call1.Dial(dialStatus, rpsNumber);
       
  7382 
       
  7383 	// Wait for 15000ms. 
       
  7384 	User::After(15000);
       
  7385 	
       
  7386 	// ===  Check call status and caps ===
       
  7387 
       
  7388 	// Check RCall::NotifyStatusChange completes with EStatusDialling
       
  7389 	expectedCallStatus = RCall::EStatusDialling;
       
  7390 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  7391 														 notifyStatusChangeStatus,
       
  7392 														 callStatus,
       
  7393 														 expectedCallStatus,
       
  7394 														 wantedStatus);
       
  7395 
       
  7396   	// Check RCall::GetStatus returns EStatusDialling.
       
  7397 	ASSERT_EQUALS(call1.GetStatus(callStatus), KErrNone,  
       
  7398 				  _L("RCall::GetStatus returned an error."));
       
  7399 	ASSERT_EQUALS(callStatus, RCall::EStatusDialling, 
       
  7400 				  _L("RCall::GetStatus did not return EStatusDialling."));
       
  7401 
       
  7402 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDialling
       
  7403 	expectedMobileCallStatus = RMobileCall::EStatusDialling;
       
  7404 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  7405 															notifyMobileCallChangeStatus,
       
  7406 															mobileCallStatus,
       
  7407 															expectedMobileCallStatus,
       
  7408 															wantedStatus);
       
  7409 
       
  7410 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusDialling
       
  7411 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,
       
  7412 				  _L("RMobileCall::GetMobileCallStatus returned error."));
       
  7413 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusDialling,
       
  7414 				  _L("RMobileCall::GetMobileCallStatus's status did not return EStatusDialling."));
       
  7415 
       
  7416 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice
       
  7417 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps NOT in set of KCapsDial
       
  7418 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice;
       
  7419 	wantedMobileCaps.iCallEventCaps = KNoWantedBits;
       
  7420 	TCmpRMobileCallTMobileCallCaps mobileCapsComp4(wantedMobileCaps, mobileCallCaps, *this);
       
  7421 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(call1, 
       
  7422 																	   notifyMobileCallCapsChangeStatus,
       
  7423 																	   mobileCapsComp4,
       
  7424 																	   wantedStatus);
       
  7425 
       
  7426 	unwantedMobileCaps.iCallControlCaps = RMobileCall::KCapsDial;
       
  7427 	
       
  7428 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps, unwantedMobileCaps.iCallControlCaps,  
       
  7429 			_L("RMobileCall::NotifyMobileCallCapsChange did not set expected iCallControlCaps"));
       
  7430 
       
  7431 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsHangUp
       
  7432 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in NOT set of KCapsDial
       
  7433 	ASSERT_EQUALS(call1.GetMobileCallCaps(mobileCallCapsPckg), KErrNone,
       
  7434 				  _L("RMobileCall::GetMobileCallCaps returned error."));
       
  7435 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, RCall::KCapsVoice | RCall::KCapsHangUp, RCall::KCapsDial,
       
  7436 					_L("RMobileCall::GetMobileCallCaps returned wrong caps."));
       
  7437 
       
  7438 	// Hang up call. 
       
  7439 
       
  7440 	// Post notifier for RMobileCall::NotifyMobileCallCapsChange
       
  7441 	call1.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus, mobileCallCapsPckg);
       
  7442 	
       
  7443 	// Post notification for RCall::NotifyStatusChange
       
  7444 	call1.NotifyStatusChange(notifyStatusChangeStatus, callStatus);
       
  7445 	
       
  7446 	// Post notification for RMobileCall::NotifyMobileCallStatusChange
       
  7447 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  7448 	
       
  7449 	ASSERT_EQUALS(call1.HangUp(), KErrNone, _L("RMobileCall::HangUp returned error."));
       
  7450 	
       
  7451 	// ===  Check call status and caps ===
       
  7452 
       
  7453 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice | KCapsDial.
       
  7454 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallEventCaps in set of 0.
       
  7455 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsDial;
       
  7456 	wantedMobileCaps.iCallEventCaps = KNoUnwantedBits;
       
  7457 	TCmpRMobileCallTMobileCallCaps mobileCapsComp5(wantedMobileCaps,mobileCallCaps, *this);
       
  7458 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(call1, 
       
  7459 																	   notifyMobileCallCapsChangeStatus,
       
  7460 																	   mobileCapsComp5,
       
  7461 																	   wantedStatus);
       
  7462 
       
  7463 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsDial.
       
  7464 	// Check RMobileCall::GetMobileCallCaps includes iCallEventCaps in set of 0.
       
  7465 	ASSERT_EQUALS(call1.GetMobileCallCaps(mobileCallCapsPckg), KErrNone,
       
  7466 				  _L("RMobileCall::GetMobileCallCaps returned error."));
       
  7467 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, RCall::KCapsVoice | RCall::KCapsDial, KNoUnwantedBits,
       
  7468 					_L("RMobileCall::GetMobileCallCaps returned wrong caps."));
       
  7469 
       
  7470 	// Check RCall::NotifyStatusChange completes with EStatusIdle.
       
  7471 	expectedCallStatus = RCall::EStatusIdle;
       
  7472 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  7473 														 notifyStatusChangeStatus,
       
  7474 														 callStatus,
       
  7475 														 expectedCallStatus,
       
  7476 														 wantedStatus);
       
  7477 
       
  7478 	// Check RCall::GetStatus returns EStatusIdle.
       
  7479 	ASSERT_EQUALS(call1.GetStatus(callStatus), KErrNone,  
       
  7480 				  _L("RCall::GetStatus returned an error."));
       
  7481 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle, 
       
  7482 				  _L("RCall::GetStatus did not return EStatusIdle."));
       
  7483 	
       
  7484 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusIdle.
       
  7485 	expectedMobileCallStatus = RMobileCall::EStatusIdle;
       
  7486 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  7487 															notifyMobileCallChangeStatus,
       
  7488 															mobileCallStatus,
       
  7489 															expectedMobileCallStatus,
       
  7490 															wantedStatus);
       
  7491 
       
  7492 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
  7493 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,
       
  7494 				  _L("RMobileCall::GetMobileCallStatus returned error."));
       
  7495 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle,
       
  7496 				  _L("RMobileCall::GetMobileCallStatus's status did not return EStatusIdle."));
       
  7497 
       
  7498 	
       
  7499 	////////////////////////////////////////////////////////////////
       
  7500 	// TEST END
       
  7501 	////////////////////////////////////////////////////////////////
       
  7502 
       
  7503     StartCleanup();
       
  7504 	
       
  7505 	CleanupStack::PopAndDestroy(4);
       
  7506 									// dialStatus
       
  7507 									// notifyMobileCallCapsChangeStatus
       
  7508 									// notifyMobileCallChangeStatus
       
  7509 									// notifyStatusChangeStatus
       
  7510 								
       
  7511 	
       
  7512 	return TestStepResult();
       
  7513 	}
       
  7514 
       
  7515 TPtrC CCTSYIntegrationTestCallControl0021::GetTestStepName()
       
  7516 /**
       
  7517  * @return The test step name.
       
  7518  */
       
  7519 	{
       
  7520 	return  _L("CCTSYIntegrationTestCallControl0021");
       
  7521 	}
       
  7522 
       
  7523 
       
  7524 
       
  7525 CCTSYIntegrationTestCallControl0022::CCTSYIntegrationTestCallControl0022(CEtelSessionMgr& aEtelSessionMgr)
       
  7526 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
  7527 /**
       
  7528  * Constructor.
       
  7529  */
       
  7530 	{
       
  7531 	SetTestStepName(CCTSYIntegrationTestCallControl0022::GetTestStepName());
       
  7532 	}
       
  7533 
       
  7534 CCTSYIntegrationTestCallControl0022::~CCTSYIntegrationTestCallControl0022()
       
  7535 /**
       
  7536  * Destructor.
       
  7537  */
       
  7538 	{
       
  7539 	}
       
  7540 
       
  7541 TVerdict CCTSYIntegrationTestCallControl0022::doTestStepL()
       
  7542 /**
       
  7543  * @SYMTestCaseID BA-CTSY-INT-CCON-0022
       
  7544  * @SYMFssID BA/CTSY/CCON-0022
       
  7545  * @SYMTestCaseDesc Hang up MT call before it gets connected.
       
  7546  * @SYMTestPriority High
       
  7547  * @SYMTestActions RCall::GetCaps, RMobileCall::NotifyMobileCallCapsChange, RMobileCall::GetMobileCallStatus, RMobileCall::GetMobileCallInfo, RLine::NotifyIncomingCall, RCall::GetInfo, RCall::NotifyStatusChange, RMobileCall::NotifyMobileCallStatusChange, RCall::OpenExistingCall, RCall::NotifyCapsChange, RCall::GetStatus, RMobileCall::GetMobileCallCaps
       
  7548  * @SYMTestExpectedResults Pass - Call hung up.
       
  7549  * @SYMTestType CIT
       
  7550  * @SYMTestCaseDependencies live/automatic
       
  7551  *
       
  7552  * Reason for test: Create a mobile terminated call and hang it up 3000 ms, 5000 ms, and 10000 ms after the mobile terminated call notification.
       
  7553  *
       
  7554  * @return - TVerdict code
       
  7555  */
       
  7556 	{
       
  7557 
       
  7558 	////////////////////////////////////////////////////////////////
       
  7559 	// SET UP
       
  7560 	////////////////////////////////////////////////////////////////
       
  7561 
       
  7562 	// Check phone supports KCapsVoice
       
  7563 
       
  7564 	// Get Voice line 1 
       
  7565 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
  7566 
       
  7567 	RLine::TCaps lineCaps; 
       
  7568 	CHECK_EQUALS_L(voiceLine.GetCaps(lineCaps), KErrNone,  
       
  7569 				   _L("RMobileLine::GetCaps returned an error"));
       
  7570 	CHECK_BITS_SET_L(lineCaps.iFlags, RLine::KCapsVoice, KNoUnwantedBits,  
       
  7571 					 _L("RLine::GetCaps returned wrong caps"));
       
  7572 
       
  7573 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
  7574 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
  7575 	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
  7576 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
  7577 
       
  7578 	////////////////////////////////////////////////////////////////
       
  7579 	// SET UP END
       
  7580 	////////////////////////////////////////////////////////////////
       
  7581 	
       
  7582 	StartTest();
       
  7583 	
       
  7584 	////////////////////////////////////////////////////////////////
       
  7585 	// TEST START
       
  7586 	////////////////////////////////////////////////////////////////
       
  7587 	
       
  7588 	// Post notifier for RLine::NotifyIncomingCall
       
  7589 	TCoreEtelRequestStatus<RLine> notifyIncomingCallStatus(voiceLine, &RLine::NotifyIncomingCallCancel);
       
  7590 	CleanupStack::PushL(notifyIncomingCallStatus);
       
  7591 	TName name;
       
  7592 	voiceLine.NotifyIncomingCall(notifyIncomingCallStatus, name);
       
  7593 	
       
  7594 	// Request for incoming call from RPS. 
       
  7595 	ASSERT_EQUALS(RPSRequestIncomingCallL(EVoiceLine), KErrNone, _L("RPSRequestIncomingCallL returned error."));
       
  7596 	
       
  7597 	// Check RLine::NotifyIncomingCall completes with valid call name.
       
  7598 	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyIncomingCallStatus, ETimeMedium), KErrNone, 
       
  7599 				 _L("RLine::NotifyIncomingCall timed out."));
       
  7600 	ASSERT_EQUALS(notifyIncomingCallStatus.Int(), KErrNone,  
       
  7601 				 _L("RLine::NotifyIncomingCall returned with error status."));
       
  7602 	ASSERT_TRUE(name.Length() > 0,  
       
  7603 				_L("RLine::NotifyIncomingCall did not set a line name"));
       
  7604 
       
  7605 	// Get the incoming call
       
  7606 	TCallId incomingCallId;
       
  7607 	RMobileCall& incomingCall = iEtelSessionMgr.GetIncomingCallL(KMainServer, KMainPhone, KVoiceLine, name, incomingCallId);
       
  7608 
       
  7609 	// ===  Check call caps ===
       
  7610 
       
  7611 	/************************* NOTE ************************
       
  7612 	The following notifications will not be checked, since you
       
  7613 	can not post notifications on an unassigned call object.
       
  7614 
       
  7615 	// Check RCall::NotifyCapsChange completes with caps in set of KCapsVoice | KCapsAnswer.
       
  7616 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice | KCapsHold | KCapsAnswer | KCapsTransfer.
       
  7617 	// Check RCall::NotifyStatusChange completes with EStatusRinging
       
  7618 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusRinging
       
  7619 	********************************************************/
       
  7620 
       
  7621 	
       
  7622 	// Check RCall::GetCaps supports KCapsAnswer | KCapsVoice.
       
  7623 	//*** Note: H2 returns the KCapsHangUp bit as well as KCapsAnswer | KCapsVoice.
       
  7624 	RCall::TCaps callCaps;
       
  7625 	ASSERT_EQUALS(incomingCall.GetCaps(callCaps), KErrNone,
       
  7626 				  _L("RMobileCall::GetCaps returned error."));
       
  7627 	ASSERT_BITS_SET(callCaps.iFlags, RCall::KCapsAnswer | RCall::KCapsVoice, KNoUnwantedBits,
       
  7628 					_L("RCall::GetCaps returned wrong caps"));
       
  7629 	
       
  7630 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsHold | KCapsAnswer | KCapsTransfer.
       
  7631 	TUint32 wantedCallControlCaps = RMobileCall::KCapsVoice | 
       
  7632 									RMobileCall::KCapsHold | 
       
  7633 									RMobileCall::KCapsAnswer | 
       
  7634 									RMobileCall::KCapsTransfer;
       
  7635 	TUint32 wantedCallEventCaps = 0;
       
  7636 	RMobileCall::TMobileCallCapsV1 mobileCallCaps;
       
  7637 	RMobileCall::TMobileCallCapsV1Pckg mobileCallCapsPckg(mobileCallCaps);
       
  7638 	
       
  7639 	ASSERT_EQUALS(incomingCall.GetMobileCallCaps(mobileCallCapsPckg), KErrNone,   
       
  7640 				  _L("RMobileCall::GetMobileCallCaps returned an error"));
       
  7641 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedCallControlCaps, KNoUnwantedBits,   
       
  7642 					_L("RMobileCall::GetMobileCallCaps returned wrong caps"));
       
  7643 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedCallEventCaps, KNoUnwantedBits,   
       
  7644 					_L("RMobileCall::GetMobileCallCaps returned wrong caps"));
       
  7645 
       
  7646 	// ===  Check call status ===
       
  7647 
       
  7648 	// Check RCall::GetStatus returns EStatusRinging
       
  7649 	RCall::TStatus callStatus;
       
  7650 	ASSERT_EQUALS(incomingCall.GetStatus(callStatus), KErrNone,  
       
  7651 				  _L("RCall::GetStatus returned an error."));
       
  7652 	ASSERT_EQUALS(callStatus, RCall::EStatusRinging, 
       
  7653 				  _L("RCall::GetStatus did not return EStatusRinging."));
       
  7654 
       
  7655 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusRinging
       
  7656 	RMobileCall::TMobileCallStatus  mobileCallStatus;
       
  7657 	ASSERT_EQUALS(incomingCall.GetMobileCallStatus(mobileCallStatus), KErrNone, _L("RMobileCall::GetMobileCallStatus returned error."));
       
  7658 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusRinging, _L("RMobileCall::GetMobileCallStatus returned error."));
       
  7659 	
       
  7660 	// ===  Check call info ===
       
  7661 
       
  7662 	// Check RCall::GetInfo returns valid call name.
       
  7663 	// Check RCall::GetInfo returns valid voice line name.
       
  7664 	// Check RCall::GetInfo returns call status of EStatusRinging.
       
  7665 	// Check RCall::GetInfo returns call duration of 0.
       
  7666 	RCall::TCallInfo callInfo;
       
  7667 	ASSERT_EQUALS(incomingCall.GetInfo(callInfo), KErrNone,  
       
  7668 				  _L("RCall::GetInfo returned an error."));
       
  7669 	ASSERT_TRUE(callInfo.iCallName.Length() >0,  
       
  7670 				_L("RCall::GetInfo returned an invalid Call name."));
       
  7671 	ASSERT_TRUE(callInfo.iLineName.Length() >0,  
       
  7672 				_L("RCall::GetInfo returned an invalid Line name."));
       
  7673 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusRinging,    
       
  7674 				  _L("RCall::GetInfo did not return iStatus of EStatusRinging."));
       
  7675 	ASSERT_EQUALS(callInfo.iDuration.Int(), 0,    
       
  7676 				  _L("RCall::GetInfo did not return iDuration of 0."));
       
  7677 
       
  7678 	// Check RMobileCall::GetMobileCallInfo returns iValid > 0.
       
  7679 	// Check RMobileCall::GetMobileCallInfo returns data for attributes makred as valid in iValid. ** How to do this? **
       
  7680 	// Check RMobileCall::GetMobileCallInfo returns valid line name.
       
  7681 	RMobileCall::TMobileCallInfoV1 mobileCallInfo;
       
  7682 	RMobileCall::TMobileCallInfoV1Pckg callInfoPckg(mobileCallInfo);
       
  7683 	ASSERT_EQUALS(incomingCall.GetMobileCallInfo(callInfoPckg), KErrNone, 
       
  7684 				  _L("RMobileCall::GetMobileCallInfo returned an error"));
       
  7685 	ASSERT_TRUE(mobileCallInfo.iLineName.Length() > 0, 
       
  7686 				_L("RMobileCall::GetMobileCallInfo returned an invalid line name"));
       
  7687 	ASSERT_TRUE(mobileCallInfo.iValid > 0, 
       
  7688 				_L("RMobileCall::GetMobileCallInfo returned unexpected flags in iValid"));
       
  7689 				
       
  7690 	iCallControlTestHelper.CheckForValidCallInfo(mobileCallInfo);
       
  7691 
       
  7692 	// Wait for 3000ms. 
       
  7693 	User::After(3000);   // Note assuming microseconds, not milliseconds
       
  7694 
       
  7695 	// Hang up call.
       
  7696 	
       
  7697 	// Post notification for RCall::NotifyCapsChange
       
  7698 	TCoreEtelRequestStatus<RCall> notifyCapsChangeStatus(incomingCall, &RCall::NotifyCapsChangeCancel);	
       
  7699 	CleanupStack::PushL(notifyCapsChangeStatus);
       
  7700 	RCall::TCaps caps;
       
  7701 	incomingCall.NotifyCapsChange(notifyCapsChangeStatus, caps);
       
  7702 	
       
  7703 	// Post notification for RMobileCall::NotifyMobileCallCapsChange
       
  7704 	TExtEtelRequestStatus notifyMobileCallCapsChangeStatus(incomingCall, EMobileCallNotifyMobileCallCapsChange);
       
  7705 	CleanupStack::PushL(notifyMobileCallCapsChangeStatus);
       
  7706 	incomingCall.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus, mobileCallCapsPckg);
       
  7707 	
       
  7708 	// Post notification for RCall::NotifyStatusChange
       
  7709 	TCoreEtelRequestStatus<RCall> notifyCallStatusChangeStatus(incomingCall, &RCall::NotifyStatusChangeCancel);
       
  7710 	CleanupStack::PushL(notifyCallStatusChangeStatus);
       
  7711 	incomingCall.NotifyStatusChange(notifyCallStatusChangeStatus, callStatus);
       
  7712 	
       
  7713 	// Post notification for RMobileCall::NotifyMobileCallStatusChange 
       
  7714 	TExtEtelRequestStatus notifyMobileCallChangeStatus(incomingCall, EMobileCallNotifyMobileCallStatusChange);
       
  7715 	CleanupStack::PushL(notifyMobileCallChangeStatus);
       
  7716 	incomingCall.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  7717 	
       
  7718 	
       
  7719 	//*************** NOTE *******************
       
  7720 	// As we have not answered the call, I seem to recall TRP TSY does not allow you to hang up locally.
       
  7721 	// So (assuming the network hasn't answered the call yet) we need to request RPS to hang up.
       
  7722 	// Note: The new CTSY & board combo *may* allow you to hang up locally.
       
  7723 	//
       
  7724 /*	ASSERT_EQUALS(RPSHangupL(EVoiceLine, 0), KErrNone, _L("RPSHangupL returned an error")); */
       
  7725 	
       
  7726 	//*************** BUT *******************
       
  7727 	// Are WE supposed to hang-up the call? ie NOT Rps ?? If so have to see if CTSY allows us to use HangUp, or if we have to 
       
  7728 	// answer the call first before calling HangUp !!!
       
  7729 	//
       
  7730 	TCoreEtelRequestStatus<RCall> hangUpStatus(incomingCall, &RCall::HangUpCancel);  // If HangUp fails, try Answering the call first !!
       
  7731 	CleanupStack::PushL(hangUpStatus);
       
  7732 	incomingCall.HangUp(hangUpStatus);
       
  7733 	ASSERT_EQUALS(WaitForRequestWithTimeOut(hangUpStatus, ETimeMedium), KErrNone,  
       
  7734 				  _L("RCall::HangUp timed-out"));
       
  7735 	ASSERT_EQUALS(hangUpStatus.Int(), KErrNone,  
       
  7736 				  _L("RCall::HangUp returned and error"));
       
  7737 
       
  7738 
       
  7739 	// ===  Check call caps ===
       
  7740 
       
  7741 	// Check RCall::NotifyCapsChange completes with caps in set of KCapsVoice | KCapsDial.
       
  7742 	RCall::TCaps wantedCaps, unwantedCaps;
       
  7743 	wantedCaps.iFlags = RCall::KCapsVoice | RCall::KCapsDial;
       
  7744 	unwantedCaps.iFlags = 0;
       
  7745 	const TInt wantedStatus = KErrNone;
       
  7746 	
       
  7747 	iCallControlTestHelper.WaitForCallNotifyCapsChange(incomingCall,
       
  7748 													   notifyCapsChangeStatus,
       
  7749 													   caps,
       
  7750 													   wantedCaps,
       
  7751 													   unwantedCaps,
       
  7752 													   wantedStatus);
       
  7753 													   
       
  7754 	// Check RCall::GetCaps supports KCapsVoice | KCapsHangUp.
       
  7755 	ASSERT_EQUALS(incomingCall.GetCaps(caps), KErrNone,   
       
  7756 				  _L("RCall::GetCaps returned an Error"));
       
  7757 	ASSERT_BITS_SET(caps.iFlags, RCall::KCapsHangUp | RCall::KCapsVoice, KNoUnwantedBits,  
       
  7758 					_L("RCall::GetCaps returned wrong caps"));
       
  7759 			
       
  7760 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice | KCapsDial.
       
  7761 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallEventCaps in set of 0.
       
  7762 	RMobileCall::TMobileCallCapsV1 wantedMobileCaps;
       
  7763 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsDial;
       
  7764 	wantedMobileCaps.iCallEventCaps = 0;
       
  7765 
       
  7766 	TCmpRMobileCallTMobileCallCaps mobileCapsComp(wantedMobileCaps, mobileCallCaps, *this);
       
  7767 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(incomingCall,
       
  7768 																	   notifyMobileCallCapsChangeStatus,
       
  7769 																	   mobileCapsComp,
       
  7770 																	   wantedStatus);
       
  7771 																	   
       
  7772 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsDial.
       
  7773 	// Check RMobileCall::GetMobileCallCaps includes iCallEventCaps in set of 0.
       
  7774 	ASSERT_EQUALS(incomingCall.GetMobileCallCaps(mobileCallCapsPckg), KErrNone,  
       
  7775 				  _L("RMobileCall::GetMobileCallCaps returned an error"));
       
  7776 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsDial;
       
  7777 						
       
  7778 
       
  7779 	// ===  Check call status ===
       
  7780 
       
  7781 	// Check RCall::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle.
       
  7782 	RCall::TStatus expectedCallStatus = RCall::EStatusHangingUp;
       
  7783 	iCallControlTestHelper.WaitForCallNotifyStatusChange(incomingCall,
       
  7784 														 notifyCallStatusChangeStatus,
       
  7785 														 callStatus,
       
  7786 														 expectedCallStatus,
       
  7787 														 wantedStatus);
       
  7788 	
       
  7789 	incomingCall.NotifyStatusChange(notifyCallStatusChangeStatus, callStatus);
       
  7790 	expectedCallStatus = RCall::EStatusIdle;
       
  7791 	iCallControlTestHelper.WaitForCallNotifyStatusChange(incomingCall,
       
  7792 														 notifyCallStatusChangeStatus,
       
  7793 														 callStatus,
       
  7794 														 expectedCallStatus,
       
  7795 														 wantedStatus);
       
  7796 
       
  7797 	// Check RCall::GetStatus returns EStatusIdle.
       
  7798 	ASSERT_EQUALS(incomingCall.GetStatus(callStatus),KErrNone,  
       
  7799 				  _L("RCall::GetStatus returned an error."));
       
  7800 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle,  
       
  7801 				  _L("RCall::GetStatus did not return EStatusIdle."));
       
  7802 			
       
  7803 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDisconnecting -> EStatusIdle.
       
  7804 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusDisconnecting;
       
  7805 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(incomingCall,
       
  7806 																		notifyMobileCallChangeStatus,
       
  7807 																		mobileCallStatus,
       
  7808 																		expectedMobileCallStatus,
       
  7809 																		wantedStatus);
       
  7810 															
       
  7811 	incomingCall.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  7812 	expectedMobileCallStatus = RMobileCall::EStatusIdle;
       
  7813 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(incomingCall,
       
  7814 																		notifyMobileCallChangeStatus,
       
  7815 																		mobileCallStatus,
       
  7816 																		expectedMobileCallStatus,
       
  7817 																		wantedStatus);
       
  7818 															
       
  7819 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
  7820 	ASSERT_EQUALS(incomingCall.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  7821 				  _L("RMobileCall::GetMobileStatus returned an error."));
       
  7822 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle,  
       
  7823 				  _L("RMobileCall::GetMobileStatus did not return a status EStatusIdle."));
       
  7824 
       
  7825 	// ===  Check call info ===
       
  7826 
       
  7827 	// Check RCall::GetInfo returns valid call name.
       
  7828 	// Check RCall::GetInfo returns valid voice line name.
       
  7829 	// Check RCall::GetInfo returns call status of EStatusConnected.  *** Is this correct ? should be EStatusIdle ***
       
  7830 	// Check RCall::GetInfo returns call duration of > 0.
       
  7831 	ASSERT_EQUALS(incomingCall.GetInfo(callInfo), KErrNone,  
       
  7832 				  _L("RCall::GetInfo returned an error"));
       
  7833 	ASSERT_TRUE(callInfo.iCallName.Length() > 0,  
       
  7834 				_L("RCall::GetInfo returned an invalid  name"));
       
  7835 	ASSERT_TRUE(callInfo.iLineName.Length() > 0,  
       
  7836 				_L("RCall::GetInfo returned an invalid  Line name"));
       
  7837 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusConnected,  
       
  7838 				  _L("RCall::GetInfo wrong iStatus, should be EStatusConnected"));
       
  7839 	ASSERT_TRUE(callInfo.iDuration.Int() > 0,  
       
  7840 				_L("RCall::GetInfo wrong iDuration, should be >0"));
       
  7841 
       
  7842 	// Check RMobileCall::GetMobileCallInfo returns iValid > 0.
       
  7843 	// Check RMobileCall::GetMobileCallInfo returns data for attributes makred as valid in iValid.
       
  7844 	// Check RMobileCall::GetMobileCallInfo returns valid line name.
       
  7845 	RMobileCall::TMobileCallInfoV1Pckg mobileCallInfoPckg(mobileCallInfo);
       
  7846 	ASSERT_EQUALS(incomingCall.GetMobileCallInfo(mobileCallInfoPckg), KErrNone,  
       
  7847 				  _L("RMobileCall::GetMobileCallInfo returned an error"));
       
  7848 	ASSERT_TRUE(mobileCallInfo.iLineName.Length() > 0,  
       
  7849 				_L("RMobileCall::GetMobileCallInfo returned an invalid line name"));
       
  7850 	ASSERT_TRUE(mobileCallInfo.iValid > 0,  
       
  7851 				_L("RMobileCall::GetMobileCallInfo returned unexpected flags in iValid"));
       
  7852 
       
  7853 	iCallControlTestHelper.CheckForValidCallInfo(mobileCallInfo);
       
  7854 	
       
  7855 	// Release call 1. *** No *** - Release the incoming call
       
  7856 	iEtelSessionMgr.ReleaseCall(KMainServer, KMainPhone, KVoiceLine, incomingCallId);
       
  7857 
       
  7858 	// Get call 1. ** No need **
       
  7859 //	call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
  7860 
       
  7861 	// Repeat test pausing for 5000ms and 10000ms instead. 
       
  7862 
       
  7863 	// ===  Repeating test with 5000ms pause ===
       
  7864 
       
  7865 	// Post notifier for RLine::NotifyIncomingCall
       
  7866 	voiceLine.NotifyIncomingCall(notifyIncomingCallStatus, name);
       
  7867 	
       
  7868 	// Request for incoming call from RPS. 
       
  7869 	ASSERT_EQUALS(RPSRequestIncomingCallL(EVoiceLine), KErrNone, _L("RPSRequestIncomingCallL returned error."));
       
  7870 	
       
  7871 	// Check RLine::NotifyIncomingCall completes with valid call name.
       
  7872 	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyIncomingCallStatus, ETimeMedium), KErrNone, 
       
  7873 				 _L("RLine::NotifyIncomingCall timed out."));
       
  7874 	ASSERT_EQUALS(notifyIncomingCallStatus.Int(), KErrNone,  
       
  7875 				 _L("RLine::NotifyIncomingCall returned with error status."));
       
  7876 	ASSERT_TRUE(name.Length() > 0,  
       
  7877 				_L("RLine::NotifyIncomingCall did not set a line name"));
       
  7878 
       
  7879 	// Get the call
       
  7880 	incomingCall = iEtelSessionMgr.GetIncomingCallL(KMainServer, KMainPhone, KVoiceLine, name, incomingCallId);
       
  7881 
       
  7882 	// ===  Check call caps ===
       
  7883 
       
  7884 	/************************* NOTE ************************
       
  7885 	As commented above, notifications will not to checked.
       
  7886 	********************************************************/
       
  7887 	
       
  7888 	// Check RCall::GetCaps supports KCapsAnswer | KCapsVoice.
       
  7889 	//*** Note: H2 returns the KCapsHangUp bit as well as KCapsAnswer | KCapsVoice.
       
  7890 	ASSERT_EQUALS(incomingCall.GetCaps(callCaps), KErrNone,
       
  7891 				  _L("RMobileCall::GetCaps returned error."));
       
  7892 	ASSERT_BITS_SET(callCaps.iFlags, RCall::KCapsAnswer | RCall::KCapsVoice, KNoUnwantedBits,
       
  7893 					_L("RCall::GetCaps returned wrong caps"));
       
  7894 	 
       
  7895 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsHold | KCapsAnswer | KCapsTransfer.
       
  7896 	wantedCallControlCaps = RMobileCall::KCapsVoice | 
       
  7897 									RMobileCall::KCapsHold | 
       
  7898 									RMobileCall::KCapsAnswer | 
       
  7899 									RMobileCall::KCapsTransfer;
       
  7900 	wantedCallEventCaps = 0;
       
  7901 	ASSERT_EQUALS(incomingCall.GetMobileCallCaps(mobileCallCapsPckg), KErrNone,   
       
  7902 				  _L("RMobileCall::GetMobileCallCaps returned an error"));
       
  7903 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedCallControlCaps, KNoUnwantedBits,   
       
  7904 					_L("RMobileCall::GetMobileCallCaps returned wrong caps"));
       
  7905 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedCallEventCaps, KNoUnwantedBits,   
       
  7906 					_L("RMobileCall::GetMobileCallCaps returned wrong caps"));
       
  7907 
       
  7908 	// ===  Check call status ===
       
  7909 
       
  7910 	// Check RCall::GetStatus returns EStatusRinging
       
  7911 	ASSERT_EQUALS(incomingCall.GetStatus(callStatus), KErrNone,  
       
  7912 				  _L("RCall::GetStatus returned an error."));
       
  7913 	ASSERT_EQUALS(callStatus, RCall::EStatusRinging, 
       
  7914 				  _L("RCall::GetStatus did not return EStatusRinging."));
       
  7915 
       
  7916 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusRinging
       
  7917 	ASSERT_EQUALS(incomingCall.GetMobileCallStatus(mobileCallStatus), KErrNone, _L("RMobileCall::GetMobileCallStatus returned error."));
       
  7918 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusRinging, _L("RMobileCall::GetMobileCallStatus returned error."));
       
  7919 	
       
  7920 	// ===  Check call info ===
       
  7921 
       
  7922 	// Check RCall::GetInfo returns valid call name.
       
  7923 	// Check RCall::GetInfo returns valid voice line name.
       
  7924 	// Check RCall::GetInfo returns call status of EStatusRinging.
       
  7925 	// Check RCall::GetInfo returns call duration of 0.
       
  7926 	ASSERT_EQUALS(incomingCall.GetInfo(callInfo), KErrNone,  
       
  7927 				  _L("RCall::GetInfo returned an error."));
       
  7928 	ASSERT_TRUE(callInfo.iCallName.Length() >0,  
       
  7929 				_L("RCall::GetInfo returned an invalid Call name."));
       
  7930 	ASSERT_TRUE(callInfo.iLineName.Length() >0,  
       
  7931 				_L("RCall::GetInfo returned an invalid Line name."));
       
  7932 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusRinging,    
       
  7933 				  _L("RCall::GetInfo did not return iStatus of EStatusRinging."));
       
  7934 	ASSERT_EQUALS(callInfo.iDuration.Int(), 0,    
       
  7935 				  _L("RCall::GetInfo did not return iDuration of 0."));
       
  7936 
       
  7937 	// Check RMobileCall::GetMobileCallInfo returns iValid > 0.
       
  7938 	// Check RMobileCall::GetMobileCallInfo returns data for attributes makred as valid in iValid. ** How to do this? **
       
  7939 	// Check RMobileCall::GetMobileCallInfo returns valid line name.
       
  7940 	ASSERT_EQUALS(incomingCall.GetMobileCallInfo(callInfoPckg), KErrNone, 
       
  7941 				  _L("RMobileCall::GetMobileCallInfo returned an error"));
       
  7942 	ASSERT_TRUE(mobileCallInfo.iLineName.Length() > 0, 
       
  7943 				_L("RMobileCall::GetMobileCallInfo returned an invalid line name"));
       
  7944 	ASSERT_TRUE(mobileCallInfo.iValid > 0, 
       
  7945 				_L("RMobileCall::GetMobileCallInfo returned unexpected flags in iValid"));
       
  7946 				
       
  7947 	iCallControlTestHelper.CheckForValidCallInfo(mobileCallInfo);
       
  7948 
       
  7949 	// Wait for 5000ms. 
       
  7950 	User::After(5000);   // Note assuming microseconds, not milliseconds
       
  7951 
       
  7952 	// Hang up call.
       
  7953 	
       
  7954 	// Post notification for RCall::NotifyCapsChange
       
  7955 	incomingCall.NotifyCapsChange(notifyCapsChangeStatus, caps);
       
  7956 	
       
  7957 	// Post notification for RMobileCall::NotifyMobileCallCapsChange
       
  7958 	incomingCall.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus, mobileCallCapsPckg);
       
  7959 	
       
  7960 	// Post notification for RCall::NotifyStatusChange
       
  7961 	incomingCall.NotifyStatusChange(notifyCallStatusChangeStatus, callStatus);
       
  7962 	
       
  7963 	// Post notification for RMobileCall::NotifyMobileCallStatusChange 
       
  7964 	incomingCall.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  7965 	
       
  7966 
       
  7967 	
       
  7968 	//*************** NOTE *******************
       
  7969 	// As we have not answered the call, I seem to recall TRP TSY does not allow you to hang up locally.
       
  7970 	// So (assuming the network hasn't answered the call yet) we need to request RPS to hang up.
       
  7971 	// Note: The new CTSY board combo *may* allow you to hang up locally.
       
  7972 	//
       
  7973 /*	ASSERT_EQUALS(RPSHangupL(EVoiceLine, 0), KErrNone, _L("RPSHangupL returned an error")); */
       
  7974 	
       
  7975 	//*************** BUT *******************
       
  7976 	// Are WE supposed to hang-up the call? ie NOT Rps ?? If so have to see if CTSY allows us to use HangUp, or if we have to 
       
  7977 	// answer the call first before calling HangUp !!!
       
  7978 	//
       
  7979 	incomingCall.HangUp(hangUpStatus);   // If HangUp fails, try Answering the call first !!
       
  7980 	ASSERT_EQUALS(WaitForRequestWithTimeOut(hangUpStatus, ETimeMedium), KErrNone,  
       
  7981 				  _L("RCall::HangUp timed-out"));
       
  7982 	ASSERT_EQUALS(hangUpStatus.Int(), KErrNone,  
       
  7983 				  _L("RCall::HangUp returned and error"));
       
  7984 				  
       
  7985 
       
  7986 	// ===  Check call caps ===
       
  7987 
       
  7988 	// Check RCall::NotifyCapsChange completes with caps in set of KCapsVoice | KCapsDial.
       
  7989 	wantedCaps.iFlags = RCall::KCapsVoice | RCall::KCapsDial;
       
  7990 	unwantedCaps.iFlags = 0;
       
  7991 	
       
  7992 	iCallControlTestHelper.WaitForCallNotifyCapsChange(incomingCall,
       
  7993 													   notifyCapsChangeStatus,
       
  7994 													   caps,
       
  7995 													   wantedCaps,
       
  7996 													   unwantedCaps,
       
  7997 													   wantedStatus);
       
  7998 													   
       
  7999 	// Check RCall::GetCaps supports KCapsVoice | KCapsHangUp.
       
  8000 	ASSERT_EQUALS(incomingCall.GetCaps(caps), KErrNone,   
       
  8001 				  _L("RCall::GetCaps returned an Error"));
       
  8002 	ASSERT_BITS_SET(caps.iFlags, RCall::KCapsHangUp | RCall::KCapsVoice, KNoUnwantedBits,  
       
  8003 					_L("RCall::GetCaps returned wrong caps"));
       
  8004 			
       
  8005 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice | KCapsDial.
       
  8006 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallEventCaps in set of 0.
       
  8007 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsDial;
       
  8008 	wantedMobileCaps.iCallEventCaps = 0;
       
  8009 
       
  8010 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(incomingCall,
       
  8011 																	   notifyMobileCallCapsChangeStatus,
       
  8012 																	   mobileCapsComp,
       
  8013 																	   wantedStatus);
       
  8014 																	   
       
  8015 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsDial.
       
  8016 	// Check RMobileCall::GetMobileCallCaps includes iCallEventCaps in set of 0.
       
  8017 	ASSERT_EQUALS(incomingCall.GetMobileCallCaps(mobileCallCapsPckg), KErrNone,  
       
  8018 				  _L("RMobileCall::GetMobileCallCaps returned an error"));
       
  8019 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsDial;
       
  8020 
       
  8021 	// ===  Check call status ===
       
  8022 
       
  8023 	// Check RCall::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle.
       
  8024 	expectedCallStatus = RCall::EStatusHangingUp;
       
  8025 	iCallControlTestHelper.WaitForCallNotifyStatusChange(incomingCall,
       
  8026 														 notifyCallStatusChangeStatus,
       
  8027 														 callStatus,
       
  8028 														 expectedCallStatus,
       
  8029 														 wantedStatus);
       
  8030 	
       
  8031 	incomingCall.NotifyStatusChange(notifyCallStatusChangeStatus, callStatus);
       
  8032 	expectedCallStatus = RCall::EStatusIdle;
       
  8033 	iCallControlTestHelper.WaitForCallNotifyStatusChange(incomingCall,
       
  8034 														 notifyCallStatusChangeStatus,
       
  8035 														 callStatus,
       
  8036 														 expectedCallStatus,
       
  8037 														 wantedStatus);
       
  8038 
       
  8039 	// Check RCall::GetStatus returns EStatusIdle.
       
  8040 	ASSERT_EQUALS(incomingCall.GetStatus(callStatus),KErrNone,  
       
  8041 				  _L("RCall::GetStatus returned an error."));
       
  8042 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle,  
       
  8043 				  _L("RCall::GetStatus did not return EStatusIdle."));
       
  8044 			
       
  8045 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDisconnecting -> EStatusIdle.
       
  8046 	expectedMobileCallStatus = RMobileCall::EStatusDisconnecting;
       
  8047 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(incomingCall,
       
  8048 																		notifyMobileCallChangeStatus,
       
  8049 																		mobileCallStatus,
       
  8050 																		expectedMobileCallStatus,
       
  8051 																		wantedStatus);
       
  8052 															
       
  8053 	incomingCall.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  8054 	expectedMobileCallStatus = RMobileCall::EStatusIdle;
       
  8055 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(incomingCall,
       
  8056 																		notifyMobileCallChangeStatus,
       
  8057 																		mobileCallStatus,
       
  8058 																		expectedMobileCallStatus,
       
  8059 																		wantedStatus);
       
  8060 															
       
  8061 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
  8062 	ASSERT_EQUALS(incomingCall.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  8063 				  _L("RMobileCall::GetMobileStatus returned an error."));
       
  8064 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle,  
       
  8065 				  _L("RMobileCall::GetMobileStatus did not return a status EStatusIdle."));
       
  8066 
       
  8067 	// ===  Check call info ===
       
  8068 
       
  8069 	// Check RCall::GetInfo returns valid call name.
       
  8070 	// Check RCall::GetInfo returns valid voice line name.
       
  8071 	// Check RCall::GetInfo returns call status of EStatusConnected.  *** Is this correct ? should be EStatusIdle ***
       
  8072 	// Check RCall::GetInfo returns call duration of > 0.
       
  8073 	ASSERT_EQUALS(incomingCall.GetInfo(callInfo), KErrNone,  
       
  8074 				  _L("RCall::GetInfo returned an error"));
       
  8075 	ASSERT_TRUE(callInfo.iCallName.Length() > 0,  
       
  8076 				_L("RCall::GetInfo returned an invalid  name"));
       
  8077 	ASSERT_TRUE(callInfo.iLineName.Length() > 0,  
       
  8078 				_L("RCall::GetInfo returned an invalid  Line name"));
       
  8079 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusConnected,  
       
  8080 				  _L("RCall::GetInfo wrong iStatus, should be EStatusConnected"));
       
  8081 	ASSERT_TRUE(callInfo.iDuration.Int() > 0,  
       
  8082 				_L("RCall::GetInfo wrong iDuration, should be >0"));
       
  8083 
       
  8084 	// Check RMobileCall::GetMobileCallInfo returns iValid > 0.
       
  8085 	// Check RMobileCall::GetMobileCallInfo returns data for attributes makred as valid in iValid.
       
  8086 	// Check RMobileCall::GetMobileCallInfo returns valid line name.
       
  8087 	ASSERT_EQUALS(incomingCall.GetMobileCallInfo(mobileCallInfoPckg), KErrNone,  
       
  8088 				  _L("RMobileCall::GetMobileCallInfo returned an error"));
       
  8089 	ASSERT_TRUE(mobileCallInfo.iLineName.Length() > 0,  
       
  8090 				_L("RMobileCall::GetMobileCallInfo returned an invalid line name"));
       
  8091 	ASSERT_TRUE(mobileCallInfo.iValid > 0,  
       
  8092 				_L("RMobileCall::GetMobileCallInfo returned unexpected flags in iValid"));
       
  8093 
       
  8094 	iCallControlTestHelper.CheckForValidCallInfo(mobileCallInfo);
       
  8095 	
       
  8096 	// Release call 1. *** No *** - Release the incoming call
       
  8097 	iEtelSessionMgr.ReleaseCall(KMainServer, KMainPhone, KVoiceLine, incomingCallId);
       
  8098 
       
  8099 	// Get call 1. ** No need **
       
  8100 //	call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
  8101 
       
  8102 	// ===  Repeating test with 10000ms pause ===
       
  8103 
       
  8104 	// Post notifier for RLine::NotifyIncomingCall
       
  8105 	voiceLine.NotifyIncomingCall(notifyIncomingCallStatus, name);
       
  8106 	
       
  8107 	// Request for incoming call from RPS. 
       
  8108 	ASSERT_EQUALS(RPSRequestIncomingCallL(EVoiceLine), KErrNone, _L("RPSRequestIncomingCallL returned error."));
       
  8109 	
       
  8110 	// Check RLine::NotifyIncomingCall completes with valid call name.
       
  8111 	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyIncomingCallStatus, ETimeMedium), KErrNone, 
       
  8112 				 _L("RLine::NotifyIncomingCall timed out."));
       
  8113 	ASSERT_EQUALS(notifyIncomingCallStatus.Int(), KErrNone,  
       
  8114 				 _L("RLine::NotifyIncomingCall returned with error status."));
       
  8115 	ASSERT_TRUE(name.Length() > 0,  
       
  8116 				_L("RLine::NotifyIncomingCall did not set a line name"));
       
  8117 
       
  8118 	// Get the call
       
  8119 	incomingCall = iEtelSessionMgr.GetIncomingCallL(KMainServer, KMainPhone, KVoiceLine, name, incomingCallId);
       
  8120 	
       
  8121 	// ===  Check call caps ===
       
  8122 
       
  8123 	/************************* NOTE ************************
       
  8124 	As commented above, notifications will not to checked.
       
  8125 	********************************************************/
       
  8126 	
       
  8127 	// Check RCall::GetCaps supports KCapsAnswer | KCapsVoice.
       
  8128 	//*** Note: H2 returns the KCapsHangUp bit as well as KCapsAnswer | KCapsVoice.
       
  8129 	ASSERT_EQUALS(incomingCall.GetCaps(callCaps), KErrNone,
       
  8130 				  _L("RMobileCall::GetCaps returned error."));
       
  8131 	ASSERT_BITS_SET(callCaps.iFlags, RCall::KCapsAnswer | RCall::KCapsVoice, KNoUnwantedBits,
       
  8132 					_L("RCall::GetCaps returned wrong caps"));
       
  8133 	 
       
  8134 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsHold | KCapsAnswer | KCapsTransfer.
       
  8135 	wantedCallControlCaps = RMobileCall::KCapsVoice | 
       
  8136 							RMobileCall::KCapsHold | 
       
  8137 							RMobileCall::KCapsAnswer | 
       
  8138 							RMobileCall::KCapsTransfer;
       
  8139 	wantedCallEventCaps = 0;
       
  8140 	ASSERT_EQUALS(incomingCall.GetMobileCallCaps(mobileCallCapsPckg), KErrNone,   
       
  8141 				  _L("RMobileCall::GetMobileCallCaps returned an error"));
       
  8142 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedCallControlCaps, KNoUnwantedBits,   
       
  8143 					_L("RMobileCall::GetMobileCallCaps returned wrong caps"));
       
  8144 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedCallEventCaps, KNoUnwantedBits,   
       
  8145 					_L("RMobileCall::GetMobileCallCaps returned wrong caps"));
       
  8146 	
       
  8147 	// ===  Check call status ===
       
  8148 
       
  8149 	// Check RCall::GetStatus returns EStatusRinging
       
  8150 	ASSERT_EQUALS(incomingCall.GetStatus(callStatus), KErrNone,  
       
  8151 				  _L("RCall::GetStatus returned an error."));
       
  8152 	ASSERT_EQUALS(callStatus, RCall::EStatusRinging, 
       
  8153 				  _L("RCall::GetStatus did not return EStatusRinging."));
       
  8154 
       
  8155 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusRinging
       
  8156 	ASSERT_EQUALS(incomingCall.GetMobileCallStatus(mobileCallStatus), KErrNone, _L("RMobileCall::GetMobileCallStatus returned error."));
       
  8157 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusRinging, _L("RMobileCall::GetMobileCallStatus returned error."));
       
  8158 	
       
  8159 	// ===  Check call info ===
       
  8160 
       
  8161 	// Check RCall::GetInfo returns valid call name.
       
  8162 	// Check RCall::GetInfo returns valid voice line name.
       
  8163 	// Check RCall::GetInfo returns call status of EStatusRinging.
       
  8164 	// Check RCall::GetInfo returns call duration of 0.
       
  8165 	ASSERT_EQUALS(incomingCall.GetInfo(callInfo), KErrNone,  
       
  8166 				  _L("RCall::GetInfo returned an error."));
       
  8167 	ASSERT_TRUE(callInfo.iCallName.Length() >0,  
       
  8168 				_L("RCall::GetInfo returned an invalid Call name."));
       
  8169 	ASSERT_TRUE(callInfo.iLineName.Length() >0,  
       
  8170 				_L("RCall::GetInfo returned an invalid Line name."));
       
  8171 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusRinging,    
       
  8172 				  _L("RCall::GetInfo did not return iStatus of EStatusRinging."));
       
  8173 	ASSERT_EQUALS(callInfo.iDuration.Int(), 0,    
       
  8174 				  _L("RCall::GetInfo did not return iDuration of 0.")); 
       
  8175 
       
  8176 	// Check RMobileCall::GetMobileCallInfo returns iValid > 0.
       
  8177 	// Check RMobileCall::GetMobileCallInfo returns data for attributes makred as valid in iValid. ** How to do this? **
       
  8178 	// Check RMobileCall::GetMobileCallInfo returns valid line name.
       
  8179 	ASSERT_EQUALS(incomingCall.GetMobileCallInfo(callInfoPckg), KErrNone, 
       
  8180 				  _L("RMobileCall::GetMobileCallInfo returned an error"));
       
  8181 	ASSERT_TRUE(mobileCallInfo.iLineName.Length() > 0, 
       
  8182 				_L("RMobileCall::GetMobileCallInfo returned an invalid line name"));
       
  8183 	ASSERT_TRUE(mobileCallInfo.iValid > 0, 
       
  8184 				_L("RMobileCall::GetMobileCallInfo returned unexpected flags in iValid"));
       
  8185 				
       
  8186 	iCallControlTestHelper.CheckForValidCallInfo(mobileCallInfo);
       
  8187 
       
  8188 	// Wait for 10000ms. 
       
  8189 	User::After(10000);   // Note assuming microseconds, not milliseconds
       
  8190 
       
  8191 	// Hang up call.
       
  8192 	
       
  8193 	// Post notification for RCall::NotifyCapsChange
       
  8194 	incomingCall.NotifyCapsChange(notifyCapsChangeStatus, caps);
       
  8195 	
       
  8196 	// Post notification for RMobileCall::NotifyMobileCallCapsChange
       
  8197 	incomingCall.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus, mobileCallCapsPckg);
       
  8198 	
       
  8199 	// Post notification for RCall::NotifyStatusChange
       
  8200 	incomingCall.NotifyStatusChange(notifyCallStatusChangeStatus, callStatus);
       
  8201 	
       
  8202 	// Post notification for RMobileCall::NotifyMobileCallStatusChange 
       
  8203 	incomingCall.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  8204 	
       
  8205 	//*************** NOTE *******************
       
  8206 	// As we have not answered the call, I seem to recall TRP TSY does not allow you to hang up locally.
       
  8207 	// So (assuming the network hasn't answered the call yet) we need to request RPS to hang up.
       
  8208 	// Note: The new CTSY & board combo *may* allow you to hang up locally.
       
  8209 	//
       
  8210 /*	ASSERT_EQUALS(RPSHangupL(EVoiceLine, 0), KErrNone, _L("RPSHangupL returned an error")); */
       
  8211 	
       
  8212 	//*************** BUT *******************
       
  8213 	// Are WE supposed to hang-up the call? ie NOT Rps ?? If so have to see if CTSY allows us to use HangUp, or if we have to 
       
  8214 	// answer the call first before calling HangUp !!!
       
  8215 	//
       
  8216 	incomingCall.HangUp(hangUpStatus);			// If HangUp fails, try Answering the call first !!
       
  8217 	ASSERT_EQUALS(WaitForRequestWithTimeOut(hangUpStatus, ETimeMedium), KErrNone,  
       
  8218 				  _L("RCall::HangUp timed-out"));
       
  8219 	ASSERT_EQUALS(hangUpStatus.Int(), KErrNone,  
       
  8220 				  _L("RCall::HangUp returned and error"));
       
  8221 	
       
  8222 
       
  8223 	// ===  Check call caps ===
       
  8224 
       
  8225 	// Check RCall::NotifyCapsChange completes with caps in set of KCapsVoice | KCapsDial.
       
  8226 	wantedCaps.iFlags = RCall::KCapsVoice | RCall::KCapsDial;
       
  8227 	unwantedCaps.iFlags = 0;
       
  8228 	
       
  8229 	iCallControlTestHelper.WaitForCallNotifyCapsChange(incomingCall,
       
  8230 													   notifyCapsChangeStatus,
       
  8231 													   caps,
       
  8232 													   wantedCaps,
       
  8233 													   unwantedCaps,
       
  8234 													   wantedStatus);
       
  8235 													   
       
  8236 	// Check RCall::GetCaps supports KCapsVoice | KCapsHangUp.
       
  8237 	ASSERT_EQUALS(incomingCall.GetCaps(caps), KErrNone,   
       
  8238 				  _L("RCall::GetCaps returned an Error"));
       
  8239 	ASSERT_BITS_SET(caps.iFlags, RCall::KCapsHangUp | RCall::KCapsVoice, KNoUnwantedBits,  
       
  8240 					_L("RCall::GetCaps returned wrong caps"));
       
  8241 			
       
  8242 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice | KCapsDial.
       
  8243 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallEventCaps in set of 0.
       
  8244 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsDial;
       
  8245 	wantedMobileCaps.iCallEventCaps = 0;
       
  8246 
       
  8247 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(incomingCall,
       
  8248 																	   notifyMobileCallCapsChangeStatus,
       
  8249 																	   mobileCapsComp,
       
  8250 																	   wantedStatus);
       
  8251 																	   
       
  8252 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsDial.
       
  8253 	// Check RMobileCall::GetMobileCallCaps includes iCallEventCaps in set of 0.
       
  8254 	ASSERT_EQUALS(incomingCall.GetMobileCallCaps(mobileCallCapsPckg), KErrNone,  
       
  8255 				  _L("RMobileCall::GetMobileCallCaps returned an error"));
       
  8256 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsDial;
       
  8257 
       
  8258 	// ===  Check call status ===
       
  8259 
       
  8260 	// Check RCall::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle.
       
  8261 	expectedCallStatus = RCall::EStatusHangingUp;
       
  8262 	iCallControlTestHelper.WaitForCallNotifyStatusChange(incomingCall,
       
  8263 														 notifyCallStatusChangeStatus,
       
  8264 														 callStatus,
       
  8265 														 expectedCallStatus,
       
  8266 														 wantedStatus);
       
  8267 	
       
  8268 	incomingCall.NotifyStatusChange(notifyCallStatusChangeStatus, callStatus);
       
  8269 	expectedCallStatus = RCall::EStatusIdle;
       
  8270 	iCallControlTestHelper.WaitForCallNotifyStatusChange(incomingCall,
       
  8271 														 notifyCallStatusChangeStatus,
       
  8272 														 callStatus,
       
  8273 														 expectedCallStatus,
       
  8274 														 wantedStatus);
       
  8275 
       
  8276 	// Check RCall::GetStatus returns EStatusIdle.
       
  8277 	ASSERT_EQUALS(incomingCall.GetStatus(callStatus),KErrNone,  
       
  8278 				  _L("RCall::GetStatus returned an error."));
       
  8279 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle,  
       
  8280 				  _L("RCall::GetStatus did not return EStatusIdle."));
       
  8281 			
       
  8282 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDisconnecting -> EStatusIdle.
       
  8283 	expectedMobileCallStatus = RMobileCall::EStatusDisconnecting;
       
  8284 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(incomingCall,
       
  8285 																		notifyMobileCallChangeStatus,
       
  8286 																		mobileCallStatus,
       
  8287 																		expectedMobileCallStatus,
       
  8288 																		wantedStatus);
       
  8289 															
       
  8290 	incomingCall.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  8291 	expectedMobileCallStatus = RMobileCall::EStatusIdle;
       
  8292 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(incomingCall,
       
  8293 																		notifyMobileCallChangeStatus,
       
  8294 																		mobileCallStatus,
       
  8295 																		expectedMobileCallStatus,
       
  8296 																		wantedStatus);
       
  8297 															
       
  8298 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
  8299 	ASSERT_EQUALS(incomingCall.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  8300 				  _L("RMobileCall::GetMobileStatus returned an error."));
       
  8301 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle,  
       
  8302 				  _L("RMobileCall::GetMobileStatus did not return a status EStatusIdle."));
       
  8303 
       
  8304 	// ===  Check call info ===
       
  8305 
       
  8306 	// Check RCall::GetInfo returns valid call name.
       
  8307 	// Check RCall::GetInfo returns valid voice line name.
       
  8308 	// Check RCall::GetInfo returns call status of EStatusConnected.  *** Is this correct ? should be EStatusIdle ***
       
  8309 	// Check RCall::GetInfo returns call duration of > 0.
       
  8310 	ASSERT_EQUALS(incomingCall.GetInfo(callInfo), KErrNone,  
       
  8311 				  _L("RCall::GetInfo returned an error"));
       
  8312 	ASSERT_TRUE(callInfo.iCallName.Length() > 0,  
       
  8313 				_L("RCall::GetInfo returned an invalid  name"));
       
  8314 	ASSERT_TRUE(callInfo.iLineName.Length() > 0,  
       
  8315 				_L("RCall::GetInfo returned an invalid  Line name"));
       
  8316 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusConnected,  
       
  8317 				  _L("RCall::GetInfo wrong iStatus, should be EStatusConnected"));
       
  8318 	ASSERT_TRUE(callInfo.iDuration.Int() > 0,  
       
  8319 				_L("RCall::GetInfo wrong iDuration, should be >0"));
       
  8320 
       
  8321 	// Check RMobileCall::GetMobileCallInfo returns iValid > 0.
       
  8322 	// Check RMobileCall::GetMobileCallInfo returns data for attributes makred as valid in iValid.
       
  8323 	// Check RMobileCall::GetMobileCallInfo returns valid line name.
       
  8324 	ASSERT_EQUALS(incomingCall.GetMobileCallInfo(mobileCallInfoPckg), KErrNone,  
       
  8325 				  _L("RMobileCall::GetMobileCallInfo returned an error"));
       
  8326 	ASSERT_TRUE(mobileCallInfo.iLineName.Length() > 0,  
       
  8327 				_L("RMobileCall::GetMobileCallInfo returned an invalid line name"));
       
  8328 	ASSERT_TRUE(mobileCallInfo.iValid > 0,  
       
  8329 				_L("RMobileCall::GetMobileCallInfo returned unexpected flags in iValid"));
       
  8330 
       
  8331 	iCallControlTestHelper.CheckForValidCallInfo(mobileCallInfo);
       
  8332 	
       
  8333 	// Release call 1. *** No *** - Release the incoming call
       
  8334 	iEtelSessionMgr.ReleaseCall(KMainServer, KMainPhone, KVoiceLine, incomingCallId);
       
  8335 	
       
  8336 	////////////////////////////////////////////////////////////////
       
  8337 	// TEST END
       
  8338 	////////////////////////////////////////////////////////////////
       
  8339 
       
  8340     StartCleanup();
       
  8341 	
       
  8342 	CleanupStack::PopAndDestroy(6);
       
  8343 									// hangUpStatus
       
  8344                                     // notifyMobileCallChangeStatus
       
  8345 									// notifyCallStatusChangeStatus
       
  8346 									// notifyMobileCallCapsChangeStatus
       
  8347 									// notifyCapsChangeStatus
       
  8348 									// notifyIncomingCallStatus
       
  8349 	
       
  8350 	return TestStepResult();
       
  8351 	}
       
  8352 
       
  8353 TPtrC CCTSYIntegrationTestCallControl0022::GetTestStepName()
       
  8354 /**
       
  8355  * @return The test step name.
       
  8356  */
       
  8357 	{
       
  8358 	return  _L("CCTSYIntegrationTestCallControl0022");
       
  8359 	}
       
  8360 
       
  8361 
       
  8362 
       
  8363 CCTSYIntegrationTestCallControl0023::CCTSYIntegrationTestCallControl0023(CEtelSessionMgr& aEtelSessionMgr)
       
  8364 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
  8365 /**
       
  8366  * Constructor.
       
  8367  */
       
  8368 	{
       
  8369 	SetTestStepName(CCTSYIntegrationTestCallControl0023::GetTestStepName());
       
  8370 	}
       
  8371 
       
  8372 CCTSYIntegrationTestCallControl0023::~CCTSYIntegrationTestCallControl0023()
       
  8373 /**
       
  8374  * Destructor.
       
  8375  */
       
  8376 	{
       
  8377 	}
       
  8378 
       
  8379 TVerdict CCTSYIntegrationTestCallControl0023::doTestStepL()
       
  8380 /**
       
  8381  * @SYMTestCaseID BA-CTSY-INT-CCON-0023
       
  8382  * @SYMFssID BA/CTSY/CCON-0023
       
  8383  * @SYMTestCaseDesc Hold a call then dial a second call.
       
  8384  * @SYMTestPriority High
       
  8385  * @SYMTestActions RMobileCall::NotifyMobileCallStatusChange, RMobileCall::GetMobileCallStatus, RMobileCall::Hold, RCall::HangUp, RMobileCall::NotifyCallEvent, RCall::NotifyStatusChange, RCall::GetStatus
       
  8386  * @SYMTestExpectedResults Pass - Call 2 is can be made when call 1 is held
       
  8387  * @SYMTestType CIT
       
  8388  * @SYMTestCaseDependencies live/automatic
       
  8389  *
       
  8390  * Reason for test: Verify second call can be made when first one is held and call statuses is correct.
       
  8391  *
       
  8392  * @return - TVerdict code
       
  8393  */
       
  8394 	{
       
  8395 
       
  8396 	////////////////////////////////////////////////////////////////
       
  8397 	// SET UP
       
  8398 	////////////////////////////////////////////////////////////////
       
  8399 
       
  8400 	
       
  8401 	// Check phone supports KCapsVoice
       
  8402 
       
  8403 	// Get Voice line 1 
       
  8404 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
  8405 	// Get call 1 
       
  8406 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
  8407 
       
  8408 	RLine::TCaps lineCaps; 
       
  8409 	CHECK_EQUALS_L(voiceLine.GetCaps(lineCaps), KErrNone,  
       
  8410 				 _L("RMobileLine::GetCaps returned an error."));
       
  8411 	CHECK_BITS_SET_L(lineCaps.iFlags, RLine::KCapsVoice, KNoUnwantedBits,  
       
  8412 					 _L("RLine::GetCaps did not return KCapsVoice."));
       
  8413 
       
  8414 	// Get call 2
       
  8415 	RMobileCall& call2 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall2);
       
  8416 
       
  8417 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
  8418 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
  8419 	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
  8420 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
  8421 
       
  8422 	////////////////////////////////////////////////////////////////
       
  8423 	// SET UP END
       
  8424 	////////////////////////////////////////////////////////////////
       
  8425 	
       
  8426 	StartTest();
       
  8427 	
       
  8428 	////////////////////////////////////////////////////////////////
       
  8429 	// TEST START
       
  8430 	////////////////////////////////////////////////////////////////
       
  8431 	
       
  8432 	// Post Notifier for RCall::NotifyStatusChange
       
  8433 	TCoreEtelRequestStatus<RCall> notifyStatusChangeStatus(call1, &RCall::NotifyStatusChangeCancel);
       
  8434 	CleanupStack::PushL(notifyStatusChangeStatus);
       
  8435 	RCall::TStatus callStatus;
       
  8436 	call1.NotifyStatusChange(notifyStatusChangeStatus, callStatus);
       
  8437 	
       
  8438 	// Post Notifier for RMobileCall::NotifyMobileCallStatusChange
       
  8439 	TExtEtelRequestStatus notifyMobileCallStatusChangeStatus(call1, EMobileCallNotifyMobileCallStatusChange);
       
  8440 	CleanupStack::PushL(notifyMobileCallStatusChangeStatus);
       
  8441 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
  8442 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallStatus);
       
  8443 	
       
  8444 	// Dial a number that answers with call 1.
       
  8445 	TPtrC number; 
       
  8446 	ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number) != EFalse,
       
  8447 				_L("GetStringFromConfig did not complete as expected"));
       
  8448 	DEBUG_PRINTF1(_L("Board Now Dialling: "));
       
  8449 	TCoreEtelRequestStatus<RCall> dialStatus(call1, &RCall::DialCancel);
       
  8450 	CleanupStack::PushL(dialStatus);
       
  8451 	call1.Dial(dialStatus, number); 
       
  8452 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeMedium), KErrNone, _L("RCall::Dial timed-out"));
       
  8453 	ASSERT_EQUALS(dialStatus.Int(), KErrNone, _L("RCall::Dial returned with an error"));
       
  8454 
       
  8455 	// Check RCall::NotifyStatusChange for call 1 completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  8456 	TInt expectedStatus = KErrNone;
       
  8457 	RCall::TStatus expectedCallStatus = RCall::EStatusDialling;
       
  8458 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  8459 														 notifyStatusChangeStatus,
       
  8460 														 callStatus,
       
  8461 														 expectedCallStatus,
       
  8462 														 expectedStatus);
       
  8463 														 
       
  8464 	call1.NotifyStatusChange(notifyStatusChangeStatus, callStatus);
       
  8465 	expectedCallStatus = RCall::EStatusConnecting;
       
  8466 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  8467 														 notifyStatusChangeStatus,
       
  8468 														 callStatus,
       
  8469 														 expectedCallStatus,
       
  8470 														 expectedStatus);
       
  8471 
       
  8472 	call1.NotifyStatusChange(notifyStatusChangeStatus, callStatus);
       
  8473 	expectedCallStatus = RCall::EStatusConnected;
       
  8474 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  8475 														 notifyStatusChangeStatus,
       
  8476 														 callStatus,
       
  8477 														 expectedCallStatus,
       
  8478 														 expectedStatus);
       
  8479 														 
       
  8480 	// Check RCall::GetStatus for call 1 returns EStatusConnected.
       
  8481 	ASSERT_EQUALS(call1.GetStatus(callStatus), KErrNone,  
       
  8482 				  _L("RCall::GetStatus returned an error."));
       
  8483 	ASSERT_EQUALS(callStatus, RCall::EStatusConnected, 
       
  8484 				  _L("RCall::GetStatus did not return EStatusConnected."));
       
  8485 				  
       
  8486 	// Check RMobileCall::NotifyMobileCallStatusChange for call 1 completes with EStatusDialling->EStatusConnecting->EStatusConnected
       
  8487 	const TInt wantedStatus = KErrNone;
       
  8488 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusDialling;
       
  8489 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  8490 															notifyMobileCallStatusChangeStatus,
       
  8491 															mobileCallStatus,
       
  8492 															expectedMobileCallStatus,
       
  8493 															wantedStatus);
       
  8494 															
       
  8495 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallStatus);
       
  8496 	expectedMobileCallStatus = RMobileCall::EStatusConnecting;
       
  8497 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  8498 															notifyMobileCallStatusChangeStatus,
       
  8499 															mobileCallStatus,
       
  8500 															expectedMobileCallStatus,
       
  8501 															wantedStatus);
       
  8502 															
       
  8503 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallStatus);
       
  8504 	expectedMobileCallStatus = RMobileCall::EStatusConnected;															
       
  8505 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  8506 															notifyMobileCallStatusChangeStatus,
       
  8507 															mobileCallStatus,
       
  8508 															expectedMobileCallStatus,
       
  8509 															wantedStatus);
       
  8510 															
       
  8511 	// Check RMobileCall::GetMobileCallStatus for call 1 returns EStatusConnected
       
  8512 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone, 
       
  8513 				  _L("RMobileCall::GetMobileStatus returned an error."));
       
  8514 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected, 
       
  8515 				  _L("RMobileCall::GetMobileStatus did not return a status EStatusConnected."));
       
  8516 			
       
  8517 			
       
  8518 	// Post notifier for RMobileCall::NotifyCallEvent
       
  8519 	TExtEtelRequestStatus notifyCallEventStatus(call1, EMobileCallNotifyCallEvent);
       
  8520 	CleanupStack::PushL(notifyCallEventStatus);
       
  8521 	RMobileCall::TMobileCallEvent event;
       
  8522 	call1.NotifyCallEvent(notifyCallEventStatus, event);
       
  8523 	
       
  8524 	// Post Notifier for RMobileCall::NotifyMobileCallStatusChange
       
  8525 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallStatus);
       
  8526 	
       
  8527 	// Hold call 1.
       
  8528 	TExtEtelRequestStatus holdStatus(call1, EMobileCallHold);
       
  8529 	CleanupStack::PushL(holdStatus);
       
  8530 	call1.Hold(holdStatus);
       
  8531 	
       
  8532 	// Wait for hold completion. 
       
  8533 	ASSERT_EQUALS(WaitForRequestWithTimeOut(holdStatus, ETimeShort), KErrNone, 
       
  8534 				  _L("RMobileCall::Hold timed-out."));
       
  8535 	ASSERT_EQUALS(dialStatus.Int(), KErrNone,  
       
  8536 				  _L("RMobileCall::Hold problem holding the call."));
       
  8537 
       
  8538 	// Check RMobileCall::NotifyCallEvent for call 1 completes with ELocalHold
       
  8539 	iCallControlTestHelper.WaitForMobileCallNotifyCallEvent( 
       
  8540 									call1,
       
  8541 									notifyCallEventStatus,
       
  8542 									event, 
       
  8543 									RMobileCall::ELocalHold,
       
  8544 									wantedStatus);
       
  8545 
       
  8546 	// Check RMobileCall::NotifyMobileCallStatusChange for call 1 completes with EStatusHold
       
  8547 	expectedMobileCallStatus = RMobileCall::EStatusHold;
       
  8548 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  8549 															notifyMobileCallStatusChangeStatus,
       
  8550 															mobileCallStatus,
       
  8551 															expectedMobileCallStatus,
       
  8552 															wantedStatus);
       
  8553 															
       
  8554 	// Check RMobileCall::GetMobileCallStatus for call 1 returns status of EStatusHold
       
  8555 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  8556 				  _L("RMobileCall::GetMobileCallStatus returned an error"));
       
  8557 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusHold,  
       
  8558 				  _L("RMobileCall::GetMobileCallStatus did not return EStatusHold"));
       
  8559 
       
  8560 
       
  8561 	// Post Notifier for RCall::NotifyStatusChange for call2
       
  8562 	TCoreEtelRequestStatus<RCall> notifyStatusChangeStatus2(call2, &RCall::NotifyStatusChangeCancel);
       
  8563 	CleanupStack::PushL(notifyStatusChangeStatus2);
       
  8564 	call2.NotifyStatusChange(notifyStatusChangeStatus2, callStatus);
       
  8565 	
       
  8566 	// Post Notifier for RMobileCall::NotifyMobileCallStatusChange for call2
       
  8567 	TExtEtelRequestStatus notifyMobileCallStatusChangeStatus2(call2, EMobileCallNotifyMobileCallStatusChange);
       
  8568 	CleanupStack::PushL(notifyMobileCallStatusChangeStatus2);
       
  8569 	call2.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus2, mobileCallStatus);
       
  8570 	
       
  8571 	// Dial a number that answers with call 2.
       
  8572 	DEBUG_PRINTF1(_L("Board Now Dialling: "));
       
  8573 	call2.Dial(dialStatus, number); 
       
  8574 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeMedium), KErrNone, _L("RCall::Dial timed-out"));
       
  8575 	ASSERT_EQUALS(dialStatus.Int(), KErrNone, _L("RCall::Dial returned with an error"));
       
  8576 	
       
  8577 	// Check RCall::NotifyStatusChange for call 2 completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  8578 	expectedCallStatus = RCall::EStatusDialling;
       
  8579 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call2,
       
  8580 														 notifyStatusChangeStatus2,
       
  8581 														 callStatus,
       
  8582 														 expectedCallStatus,
       
  8583 														 expectedStatus);
       
  8584 														 
       
  8585 	call2.NotifyStatusChange(notifyStatusChangeStatus2, callStatus);
       
  8586 	expectedCallStatus = RCall::EStatusConnecting;
       
  8587 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call2,
       
  8588 														 notifyStatusChangeStatus2,
       
  8589 														 callStatus,
       
  8590 														 expectedCallStatus,
       
  8591 														 expectedStatus);
       
  8592 
       
  8593 	call2.NotifyStatusChange(notifyStatusChangeStatus2, callStatus);
       
  8594 	expectedCallStatus = RCall::EStatusConnected;
       
  8595 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call2,
       
  8596 														 notifyStatusChangeStatus2,
       
  8597 														 callStatus,
       
  8598 														 expectedCallStatus,
       
  8599 														 expectedStatus);
       
  8600 														 
       
  8601 	// Check RCall::GetStatus for call 2 returns EStatusConnected.
       
  8602 	ASSERT_EQUALS(call2.GetStatus(callStatus), KErrNone,  
       
  8603 				  _L("RCall::GetStatus returned an Error"));
       
  8604 	ASSERT_EQUALS(callStatus, RCall::EStatusConnected,  
       
  8605 				  _L("RCall::GetStatus did not return EStatusConnected"));
       
  8606 
       
  8607 	// Check RMobileCall::NotifyMobileCallStatusChange for call 2 completes with EStatusDialling->EStatusConnecting->EStatusConnected
       
  8608 	expectedMobileCallStatus = RMobileCall::EStatusDialling;
       
  8609 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call2,
       
  8610 																		notifyMobileCallStatusChangeStatus2,
       
  8611 																		mobileCallStatus,
       
  8612 																		expectedMobileCallStatus,
       
  8613 																		wantedStatus);
       
  8614 															
       
  8615 	call2.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus2, mobileCallStatus);
       
  8616 	expectedMobileCallStatus = RMobileCall::EStatusConnecting;
       
  8617 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call2,
       
  8618 																		notifyMobileCallStatusChangeStatus2,
       
  8619 																		mobileCallStatus,
       
  8620 																		expectedMobileCallStatus,
       
  8621 																		wantedStatus);
       
  8622 
       
  8623 	call2.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus2, mobileCallStatus);
       
  8624 	expectedMobileCallStatus = RMobileCall::EStatusConnected;
       
  8625 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call2,
       
  8626 																		notifyMobileCallStatusChangeStatus2,
       
  8627 																		mobileCallStatus,
       
  8628 																		expectedMobileCallStatus,
       
  8629 																		wantedStatus);
       
  8630 											
       
  8631 	// Check RMobileCall::GetMobileCallStatus for call 2 returns EStatusConnected
       
  8632 	ASSERT_EQUALS(call2.GetMobileCallStatus(mobileCallStatus), KErrNone, 
       
  8633 				  _L("RMobileCall::GetMobileStatus returned an error."));
       
  8634 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected, 
       
  8635 				  _L("RMobileCall::GetMobileStatus did not return a status EStatusConnected."));
       
  8636 
       
  8637 	// Check RMobileCall::GetMobileCallStatus for call 1 returns status of EStatusHold
       
  8638 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  8639 				  _L("RMobileCall::GetMobileCallStatus returned an error"));
       
  8640 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusHold,  
       
  8641 				  _L("RMobileCall::GetMobileCallStatus did not return EStatusHold"));
       
  8642 
       
  8643 
       
  8644 	// Post Notifier for RMobileCall::NotifyMobileCallStatusChange
       
  8645 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallStatus);
       
  8646 	
       
  8647 	// Hang up call 1.
       
  8648 	ASSERT_EQUALS(call1.HangUp(), KErrNone, _L("RMobileCall::HangUp returned error."));
       
  8649 
       
  8650 	// Check RMobileCall::NotifyMobileCallStatusChange for call 1 completes with EStatusDisconnecting->EStatusIdle
       
  8651 	expectedMobileCallStatus = RMobileCall::EStatusDisconnecting;
       
  8652 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  8653 															notifyMobileCallStatusChangeStatus,
       
  8654 															mobileCallStatus,
       
  8655 															expectedMobileCallStatus,
       
  8656 															wantedStatus);
       
  8657 
       
  8658 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallStatus);
       
  8659 	expectedMobileCallStatus = RMobileCall::EStatusIdle;
       
  8660 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  8661 															notifyMobileCallStatusChangeStatus,
       
  8662 															mobileCallStatus,
       
  8663 															expectedMobileCallStatus,
       
  8664 															wantedStatus);
       
  8665 
       
  8666 	// Check RMobileCall::GetMobileCallStatus for call 1 returns EStatusIdle
       
  8667 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  8668 				  _L("RMobileCall::GetMobileCallStatus returned an error"));
       
  8669 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle,  
       
  8670 				  _L("RMobileCall::GetMobileCallStatus did not return EStatusIdle"));
       
  8671 
       
  8672 	// Check RMobileCall::GetMobileCallStatus for call 2 returns EStatusConnected
       
  8673 	ASSERT_EQUALS(call2.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  8674 				  _L("RMobileCall::GetMobileCallStatus returned an error"));
       
  8675 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected,  
       
  8676 				  _L("RMobileCall::GetMobileCallStatus did not return EStatusConnected"));
       
  8677 
       
  8678 
       
  8679 	// Post Notifier for RMobileCall::NotifyMobileCallStatusChange for call2
       
  8680 	call2.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus2, mobileCallStatus);
       
  8681 
       
  8682 	// Hang up call 2. 
       
  8683 	ASSERT_EQUALS(call2.HangUp(), KErrNone, _L("RMobileCall::HangUp returned error."));
       
  8684 	
       
  8685 	// Check RMobileCall::NotifyMobileCallStatusChange for call 2 completes with EStatusDisconnecting->EStatusIdle
       
  8686 	expectedMobileCallStatus = RMobileCall::EStatusDisconnecting;
       
  8687 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call2,
       
  8688 																		notifyMobileCallStatusChangeStatus2,
       
  8689 																		mobileCallStatus,
       
  8690 																		expectedMobileCallStatus,
       
  8691 																		wantedStatus);
       
  8692 															
       
  8693 	call2.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus2, mobileCallStatus);
       
  8694 	expectedMobileCallStatus = RMobileCall::EStatusIdle;
       
  8695 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call2,
       
  8696 																		notifyMobileCallStatusChangeStatus2,
       
  8697 																		mobileCallStatus,
       
  8698 																		expectedMobileCallStatus,
       
  8699 																		wantedStatus);
       
  8700 																		
       
  8701 	// Check RMobileCall::GetMobileCallStatus for call 2 returns EStatusIdle
       
  8702 	ASSERT_EQUALS(call2.GetMobileCallStatus(mobileCallStatus), KErrNone, 
       
  8703 				  _L("RMobileCall::GetMobileStatus returned an error."));
       
  8704 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle, 
       
  8705 				  _L("RMobileCall::GetMobileStatus did not return a status EStatusIdle."));
       
  8706 	
       
  8707 	////////////////////////////////////////////////////////////////
       
  8708 	// TEST END
       
  8709 	////////////////////////////////////////////////////////////////
       
  8710 
       
  8711     StartCleanup();
       
  8712 	
       
  8713 	CleanupStack::PopAndDestroy(7);
       
  8714 									// notifyMobileCallStatusChangeStatus2
       
  8715 									// notifyStatusChangeStatus2
       
  8716 									// holdStatus
       
  8717 									// notifyCallEventStatus
       
  8718 									// dialStatus
       
  8719 									// notifyMobileCallStatusChangeStatus
       
  8720 									// notifyStatusChangeStatus
       
  8721 	
       
  8722 	return TestStepResult();
       
  8723 	}
       
  8724 
       
  8725 TPtrC CCTSYIntegrationTestCallControl0023::GetTestStepName()
       
  8726 /**
       
  8727  * @return The test step name.
       
  8728  */
       
  8729 	{
       
  8730 	return  _L("CCTSYIntegrationTestCallControl0023");
       
  8731 	}
       
  8732 
       
  8733 
       
  8734 
       
  8735 CCTSYIntegrationTestCallControl0024::CCTSYIntegrationTestCallControl0024(CEtelSessionMgr& aEtelSessionMgr)
       
  8736 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
  8737 /**
       
  8738  * Constructor.
       
  8739  */
       
  8740 	{
       
  8741 	SetTestStepName(CCTSYIntegrationTestCallControl0024::GetTestStepName());
       
  8742 	}
       
  8743 
       
  8744 CCTSYIntegrationTestCallControl0024::~CCTSYIntegrationTestCallControl0024()
       
  8745 /**
       
  8746  * Destructor.
       
  8747  */
       
  8748 	{
       
  8749 	}
       
  8750 
       
  8751 TVerdict CCTSYIntegrationTestCallControl0024::doTestStepL()
       
  8752 /**
       
  8753  * @SYMTestCaseID BA-CTSY-INT-CCON-0024
       
  8754  * @SYMFssID BA/CTSY/CCON-0024
       
  8755  * @SYMTestCaseDesc Hold a call then resume it.
       
  8756  * @SYMTestPriority High
       
  8757  * @SYMTestActions RMobileCall::NotifyMobileCallCapsChange, RMobileCall::NotifyCallEvent, RMobileCall::NotifyRemotePartyInfoChange, RCall::Dial, RMobileCall::GetMobileCallCaps, RMobileCall::Hold, RMobileCall::Resume, RMobileCall::GetMobileCallStatus, RMobilePhone::NotifyStopInDTMFString, RMobilePhone::NotifyDTMFCapsChange
       
  8758  * @SYMTestExpectedResults Pass - Call held and resumed. Call event, caps and status correct.
       
  8759  * @SYMTestType CIT
       
  8760  * @SYMTestCaseDependencies live/automatic
       
  8761  *
       
  8762  * Reason for test: Verify call status, call event, call caps, remote party info and DTMF caps correct.
       
  8763  *
       
  8764  * @return - TVerdict code
       
  8765  */
       
  8766 	{
       
  8767 
       
  8768 	////////////////////////////////////////////////////////////////
       
  8769 	// SET UP
       
  8770 	////////////////////////////////////////////////////////////////
       
  8771 
       
  8772 	// Check phone supports KCapsVoice
       
  8773 
       
  8774 	// Get phone
       
  8775 	RMobilePhone& mobilePhone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
       
  8776 
       
  8777 	// Get Voice line 1 
       
  8778 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
  8779 	// Get call 1 
       
  8780 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
  8781 
       
  8782 	RLine::TCaps lineCaps; 
       
  8783 	CHECK_EQUALS_L(voiceLine.GetCaps(lineCaps), KErrNone,  
       
  8784 				 _L("RMobileLine::GetCaps returned an error."));
       
  8785 	CHECK_BITS_SET_L(lineCaps.iFlags, RLine::KCapsVoice, KNoUnwantedBits,  
       
  8786 					 _L("RLine::GetCaps did not return KCapsVoice."));
       
  8787 
       
  8788 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
  8789 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
  8790 	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
  8791 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
  8792 
       
  8793 	////////////////////////////////////////////////////////////////
       
  8794 	// SET UP END
       
  8795 	////////////////////////////////////////////////////////////////
       
  8796 	
       
  8797 	StartTest();
       
  8798 	
       
  8799 	////////////////////////////////////////////////////////////////
       
  8800 	// TEST START
       
  8801 	////////////////////////////////////////////////////////////////
       
  8802 	
       
  8803 	// Post Notifier for RCall::NotifyCapsChange
       
  8804 	TCoreEtelRequestStatus<RCall> notifyCapsChangeStatus(call1, &RCall::NotifyCapsChangeCancel);	
       
  8805 	CleanupStack::PushL(notifyCapsChangeStatus);
       
  8806 	RCall::TCaps caps;
       
  8807 	call1.NotifyCapsChange(notifyCapsChangeStatus, caps);
       
  8808 
       
  8809 	// post a notifier for RMobileCall::NotifyMobileCallCapsChange
       
  8810 	TExtEtelRequestStatus notifyMobileCallCapsChangeStatus(call1, EMobileCallNotifyMobileCallCapsChange);
       
  8811 	CleanupStack::PushL(notifyMobileCallCapsChangeStatus);
       
  8812 	RMobileCall::TMobileCallCapsV1 mobileCallCaps;
       
  8813 	RMobileCall::TMobileCallCapsV1Pckg mobileCallCapsPckg(mobileCallCaps);
       
  8814 	call1.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus, mobileCallCapsPckg);
       
  8815 	
       
  8816 	// Post notifier for RCall::NotifyStatusChange
       
  8817 	TCoreEtelRequestStatus<RCall> notifyCallStatusChangeStatus (call1, &RCall::NotifyStatusChangeCancel);
       
  8818 	CleanupStack::PushL(notifyCallStatusChangeStatus);
       
  8819 	RCall::TStatus callStatus;
       
  8820 	call1.NotifyStatusChange(notifyCallStatusChangeStatus, callStatus);
       
  8821 	
       
  8822 	// post a notifier for RMobileCall::NotifyMobileCallStatusChange
       
  8823 	TExtEtelRequestStatus notifyMobileCallChangeStatus(call1, EMobileCallNotifyMobileCallStatusChange);
       
  8824 	CleanupStack::PushL(notifyMobileCallChangeStatus);
       
  8825 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
  8826 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  8827 	
       
  8828 	// Post a notifier for RMobileCall::NotifyRemotePartyInfoChange
       
  8829 	TExtEtelRequestStatus notifyRemotePartyInfoChangeStatus(call1, EMobileCallNotifyRemotePartyInfoChange);
       
  8830 	CleanupStack::PushL(notifyRemotePartyInfoChangeStatus);
       
  8831 	RMobileCall::TMobileCallRemotePartyInfoV1 rpInfo;
       
  8832 
       
  8833 	RMobileCall::TMobileCallRemotePartyInfoV1Pckg rpInfoPckg(rpInfo);
       
  8834 	call1.NotifyRemotePartyInfoChange(notifyRemotePartyInfoChangeStatus, rpInfoPckg);
       
  8835 
       
  8836 	// Dial a number that answers 
       
  8837 	TPtrC number; 
       
  8838 	ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number) != EFalse,
       
  8839 				_L("GetStringFromConfig did not complete as expected"));
       
  8840 	DEBUG_PRINTF1(_L("Board Now Dialling: "));
       
  8841 	TCoreEtelRequestStatus<RCall> dialStatus(call1, &RCall::DialCancel);
       
  8842 	CleanupStack::PushL(dialStatus);
       
  8843 	call1.Dial(dialStatus, number); 
       
  8844 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeMedium), KErrNone, _L("RCall::Dial timed-out"));
       
  8845 	ASSERT_EQUALS(dialStatus.Int(), KErrNone, _L("RCall::Dial returned with an error"));
       
  8846 
       
  8847 	// ===  Check call caps ===
       
  8848 
       
  8849 	// Check RCall::NotifyCapsChange completes with caps in set of KCapsVoice | KCapsHangUp.
       
  8850 	RCall::TCaps wantedCaps, unwantedCaps;
       
  8851 	wantedCaps.iFlags = RCall::KCapsVoice | RCall::KCapsHangUp;
       
  8852 	unwantedCaps.iFlags = 0;
       
  8853 	const TInt wantedStatus = KErrNone;
       
  8854 	iCallControlTestHelper.WaitForCallNotifyCapsChange(call1,
       
  8855 													   notifyCapsChangeStatus,
       
  8856 													   caps,
       
  8857 													   wantedCaps,
       
  8858 													   unwantedCaps,
       
  8859 													   wantedStatus);
       
  8860 												   
       
  8861 	// Check RCall::GetCaps supports KCapsHangUp | KCapsVoice.
       
  8862 	ASSERT_EQUALS(call1.GetCaps(caps), KErrNone,   
       
  8863 				  _L("RCall::GetCaps returned an Error"));
       
  8864 	ASSERT_BITS_SET(caps.iFlags, RCall::KCapsHangUp | RCall::KCapsVoice, KNoUnwantedBits,  
       
  8865 					_L("RCall::GetCaps returned wrong caps"));
       
  8866 
       
  8867 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice | KCapsHold | KCapsHangUp
       
  8868 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallEventCaps in set of KCapsLocalHold | KCapsRemoteHold | KCapsRemoteTerminate | KCapsRemoteConferenceCreate.
       
  8869 	RMobileCall::TMobileCallCapsV1 wantedMobileCaps;
       
  8870 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsHold | RMobileCall::KCapsHangUp;
       
  8871 	wantedMobileCaps.iCallEventCaps = RMobileCall::KCapsLocalHold | RMobileCall::KCapsRemoteHold | RMobileCall::KCapsRemoteTerminate | RMobileCall::KCapsRemoteConferenceCreate;
       
  8872 
       
  8873 	TCmpRMobileCallTMobileCallCaps mobileCapsComp(wantedMobileCaps, mobileCallCaps, *this);
       
  8874 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(call1,
       
  8875 																	   notifyMobileCallCapsChangeStatus,
       
  8876 																	   mobileCapsComp,
       
  8877 																	   wantedStatus);
       
  8878 
       
  8879 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsHold | KCapsHangUp.
       
  8880 	// Check RMobileCall::GetMobileCallCaps includes iCallEventCaps in set of KCapsLocalHold | KCapsRemoteHold | KCapsRemoteTerminate | KCapsRemoteConferenceCreate.
       
  8881 	ASSERT_EQUALS(call1.GetMobileCallCaps(mobileCallCapsPckg), KErrNone,  
       
  8882 				  _L("RMobileCall::GetMobileCallCaps returned an error"));
       
  8883 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | 
       
  8884 										RMobileCall::KCapsHold | 
       
  8885 										RMobileCall::KCapsHangUp;
       
  8886 
       
  8887 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps, KNoUnwantedBits,
       
  8888 					_L("RMobileCall::GetMobileCallCaps returned unexpected iCallControlCaps"));
       
  8889 	
       
  8890 	wantedMobileCaps.iCallEventCaps = RMobileCall::KCapsLocalHold |
       
  8891 									  RMobileCall::KCapsRemoteHold | 
       
  8892 									  RMobileCall::KCapsRemoteTerminate | 
       
  8893 									  RMobileCall::KCapsRemoteConferenceCreate;
       
  8894 
       
  8895 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedMobileCaps.iCallEventCaps, KNoUnwantedBits,
       
  8896 				 	_L("RMobileCall::GetMobileCallCaps returned unexpected iCallEventCaps"));
       
  8897 
       
  8898 	// ===  Check call status ===
       
  8899 
       
  8900 	// Check RCall::NotifyStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  8901 	RCall::TStatus expectedCallStatus = RCall::EStatusDialling;
       
  8902 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  8903 														 notifyCallStatusChangeStatus,
       
  8904 														 callStatus,
       
  8905 														 expectedCallStatus,
       
  8906 														 wantedStatus);
       
  8907 	
       
  8908 	call1.NotifyStatusChange(notifyCallStatusChangeStatus, callStatus);
       
  8909 	expectedCallStatus = RCall::EStatusConnecting;
       
  8910 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  8911 													 notifyCallStatusChangeStatus,
       
  8912 													 callStatus,
       
  8913 													 expectedCallStatus,
       
  8914 													 wantedStatus);
       
  8915 
       
  8916 	call1.NotifyStatusChange(notifyCallStatusChangeStatus, callStatus);
       
  8917 	expectedCallStatus = RCall::EStatusConnected;
       
  8918 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  8919 													 notifyCallStatusChangeStatus,
       
  8920 													 callStatus,
       
  8921 													 expectedCallStatus,
       
  8922 													 wantedStatus);
       
  8923 
       
  8924 	// Check RCall::GetStatus returns EStatusConnected.
       
  8925 	ASSERT_EQUALS(call1.GetStatus(callStatus), KErrNone,  
       
  8926 				  _L("RCall::GetStatus returned an error"));
       
  8927 	ASSERT_EQUALS(callStatus, RCall::EStatusConnected,  
       
  8928 				  _L("RCall::GetStatus returned an unexpected call status"));
       
  8929 			
       
  8930 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  8931 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusDialling;
       
  8932 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  8933 															notifyMobileCallChangeStatus,
       
  8934 															mobileCallStatus,
       
  8935 															expectedMobileCallStatus,
       
  8936 															wantedStatus);
       
  8937 															
       
  8938 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  8939 	expectedMobileCallStatus = RMobileCall::EStatusConnecting;
       
  8940 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  8941 															notifyMobileCallChangeStatus,
       
  8942 															mobileCallStatus,
       
  8943 															expectedMobileCallStatus,
       
  8944 															wantedStatus);
       
  8945 
       
  8946 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  8947 	expectedMobileCallStatus = RMobileCall::EStatusConnected;															
       
  8948 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  8949 															notifyMobileCallChangeStatus,
       
  8950 															mobileCallStatus,
       
  8951 															expectedMobileCallStatus,
       
  8952 															wantedStatus);
       
  8953 
       
  8954 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusConnected.
       
  8955 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  8956 				  _L("RMobileCall::GetMobileStatus returned an error"));
       
  8957 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected,  
       
  8958 				  _L("RMobileCall::GetMobileStatus did not return a status EStatusConnected"));
       
  8959 
       
  8960 	// ===  Check remote party info ===
       
  8961 
       
  8962 	// Check RMobileCall::NotifyRemotePartyInfoChange completes with direction of EMobileOriginated
       
  8963 	RMobileCall::TMobileCallRemotePartyInfoV1 wanted;
       
  8964 	wanted.iDirection = RMobileCall::EMobileOriginated;
       
  8965 	TCmpRMobileCallTMobileCallRemotePartyInfo rpInfoComp(wanted, rpInfo, *this);
       
  8966 	iCallControlTestHelper.WaitForMobileCallNotifyRemotePartyInfoChange( 
       
  8967 														call1,
       
  8968 														notifyRemotePartyInfoChangeStatus,
       
  8969 														rpInfoComp,
       
  8970 														wantedStatus);
       
  8971 
       
  8972 	// post a notifier for RMobileCall::NotifyMobileCallCapsChange
       
  8973 	call1.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus, mobileCallCapsPckg);
       
  8974 
       
  8975 	// Post a notifier for RMobileCall::NotifyMobileCallStatusChange
       
  8976 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  8977 	
       
  8978 	// Post notifier for RMobileCall::NotifyCallEvent
       
  8979 	TExtEtelRequestStatus notifyCallEventStatus(call1, EMobileCallNotifyCallEvent);
       
  8980 	CleanupStack::PushL(notifyCallEventStatus);
       
  8981 	RMobileCall::TMobileCallEvent event;
       
  8982 	call1.NotifyCallEvent(notifyCallEventStatus, event);
       
  8983 
       
  8984 	// Post notification RMobilePhone::NotifyDTMFCapsChange
       
  8985 	TExtEtelRequestStatus notifyDTMFCapsChangeStatus(mobilePhone, EMobilePhoneNotifyDTMFCapsChange);	
       
  8986 	CleanupStack::PushL(notifyDTMFCapsChangeStatus);
       
  8987 	TUint32 dTMFcaps;
       
  8988 	mobilePhone.NotifyDTMFCapsChange(notifyDTMFCapsChangeStatus, dTMFcaps);
       
  8989 
       
  8990 	// Hold the call
       
  8991 	TExtEtelRequestStatus holdStatus(call1, EMobileCallHold);
       
  8992 	CleanupStack::PushL(holdStatus);
       
  8993 	call1.Hold(holdStatus);
       
  8994 	ASSERT_EQUALS(WaitForRequestWithTimeOut(holdStatus, ETimeMedium), KErrNone,  
       
  8995 				  _L("RMobileCall::Hold timed-out"));
       
  8996 	ASSERT_EQUALS(holdStatus.Int(), KErrNone,  
       
  8997 				  _L("RMobileCall::Hold did not set status to KErrNone"));
       
  8998 
       
  8999 	// ===  Check call caps ===
       
  9000 
       
  9001 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice | KCapsResume | KCapsHangUp
       
  9002 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps NOT in set of KCapsOneToOne | KCapsHold
       
  9003 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallEventCaps in set of KCapsLocalResume | KCapsRemoteHold | KCapsRemoteTerminate | KCapsRemoteConferenceCreate.
       
  9004 	TUint32 wantedMobCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsResume | RMobileCall::KCapsHangUp;
       
  9005 	TUint32 unWantedMobCallControlCaps = RMobileCall::KCapsOneToOne | RMobileCall::KCapsHold;
       
  9006 	TUint32 wantedMobCallEventCaps = RMobileCall::KCapsLocalResume | RMobileCall::KCapsRemoteHold | RMobileCall::KCapsRemoteTerminate | RMobileCall::KCapsRemoteConferenceCreate;
       
  9007 	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyMobileCallCapsChangeStatus, ETimeShort), KErrNone, 
       
  9008 				  _L("RMobileCall::NotifyMobileCallCapsChange timed out."));
       
  9009 	ASSERT_EQUALS(notifyMobileCallCapsChangeStatus.Int(), KErrNone,
       
  9010 				  _L("RMobileCall::NotifyMobileCallCapsChange returned with error status."));
       
  9011 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobCallControlCaps, unWantedMobCallControlCaps,
       
  9012 					_L("RMobileCall::NotifyMobileCallCapsChange returned wrong control caps."));
       
  9013 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedMobCallEventCaps, KNoUnwantedBits,
       
  9014 					_L("RMobileCall::NotifyMobileCallCapsChange returned wrong event caps."));
       
  9015 
       
  9016 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsResume | KCapsHangUp
       
  9017 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps NOT in set of KCapsOneToOne | KCapsHold
       
  9018 	// Check RMobileCall::GetMobileCallCaps includes iCallEventCaps in set of KCapsLocalResume | KCapsRemoteHold | KCapsRemoteTerminate | KCapsRemoteConferenceCreate.
       
  9019 	ASSERT_EQUALS(call1.GetMobileCallCaps(mobileCallCapsPckg), KErrNone,  
       
  9020 				  _L("RMobileCall::GetMobileCallCaps returned an error"));
       
  9021 
       
  9022 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | 
       
  9023 										RMobileCall::KCapsResume | 
       
  9024 										RMobileCall::KCapsHangUp;
       
  9025 	RMobileCall::TMobileCallCapsV1 unWantedMobileCaps;
       
  9026 	unWantedMobileCaps.iCallControlCaps = RMobileCall::KCapsOneToOne |
       
  9027 										  RMobileCall::KCapsHold;
       
  9028 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps, unWantedMobileCaps.iCallControlCaps,
       
  9029 					_L("RMobileCall::GetMobileCallCaps returned unexpected iCallControlCaps"));
       
  9030 	
       
  9031 	wantedMobileCaps.iCallEventCaps = RMobileCall::KCapsLocalResume |
       
  9032 									  RMobileCall::KCapsRemoteHold | 
       
  9033 									  RMobileCall::KCapsRemoteTerminate | 
       
  9034 									  RMobileCall::KCapsRemoteConferenceCreate;
       
  9035 											 
       
  9036 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedMobileCaps.iCallEventCaps, KNoUnwantedBits,
       
  9037 				    _L("RMobileCall::GetMobileCallCaps returned unexpected iCallEventCaps"));
       
  9038 
       
  9039 
       
  9040 	// ===  Check call status ===
       
  9041 
       
  9042 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusHold
       
  9043 	expectedMobileCallStatus = RMobileCall::EStatusHold;
       
  9044 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  9045 															notifyMobileCallChangeStatus,
       
  9046 															mobileCallStatus,
       
  9047 															expectedMobileCallStatus,
       
  9048 															wantedStatus);
       
  9049 
       
  9050 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusHold
       
  9051 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  9052 				  _L("RMobileCall::GetMobileStatus returned an error"));
       
  9053 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusHold,  
       
  9054 				  _L("RMobileCall::GetMobileStatus did not return a status EStatusHold"));
       
  9055 
       
  9056 	// ===  Check call event completes ===
       
  9057 
       
  9058 	// Check RMobileCall::NotifyCallEvent completes with ELocalHold
       
  9059 	iCallControlTestHelper.WaitForMobileCallNotifyCallEvent(
       
  9060 									call1,
       
  9061 									notifyCallEventStatus,
       
  9062 									event, 
       
  9063 									RMobileCall::ELocalHold,
       
  9064 									wantedStatus);
       
  9065 
       
  9066 	// ===  Check DTMF caps ===
       
  9067 
       
  9068 	// Check RMobilePhone::NotifyDTMFCapsChange completes with of 0
       
  9069 	iCallControlTestHelper.WaitForMobilePhoneNotifyDTMFCapsChange(
       
  9070 										mobilePhone,
       
  9071 									  	notifyDTMFCapsChangeStatus,
       
  9072 									  	dTMFcaps, 
       
  9073 									  	KNoWantedBits,
       
  9074 									  	KNoUnwantedBits,
       
  9075 									  	wantedStatus);
       
  9076 
       
  9077 	// Check RMobilePhone::GetDTMFCaps returns 0
       
  9078     TUint32 dtmfCaps2;
       
  9079 	ASSERT_EQUALS(mobilePhone.GetDTMFCaps(dtmfCaps2), KErrNone, _L("RMobilePhone::GetDTMFCaps returned with an error"));
       
  9080 	ASSERT_BITS_SET(dtmfCaps2, KNoWantedBits, KNoUnwantedBits, _L("RMobilePhone::GetDTMFCaps returned wrong dynamic caps"));
       
  9081 
       
  9082 	// post a notifier for RMobileCall::NotifyMobileCallCapsChange
       
  9083 	call1.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus, mobileCallCapsPckg);
       
  9084 
       
  9085 	// Post a notifier for RMobileCall::NotifyMobileCallStatusChange
       
  9086 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  9087 
       
  9088 	// Post notifier for RMobileCall::NotifyCallEvent
       
  9089 	call1.NotifyCallEvent(notifyCallEventStatus, event);
       
  9090 
       
  9091 	// Post notification RMobilePhone::NotifyDTMFCapsChange
       
  9092 	mobilePhone.NotifyDTMFCapsChange(notifyDTMFCapsChangeStatus, dTMFcaps);
       
  9093 	// Resume the call 
       
  9094 	TExtEtelRequestStatus resumeStatus(call1, EMobileCallResume);
       
  9095 	CleanupStack::PushL(resumeStatus);
       
  9096 	call1.Resume(resumeStatus);
       
  9097 	ASSERT_EQUALS(WaitForRequestWithTimeOut(resumeStatus, ETimeMedium), KErrNone,  
       
  9098 				  _L("RMobileCall::Resume timed-out"));
       
  9099 	ASSERT_EQUALS(resumeStatus.Int(), KErrNone,  
       
  9100 				  _L("RMobileCall::Resume did not set status to KErrNone"));
       
  9101 
       
  9102 	// ===  Check call caps ===
       
  9103 
       
  9104 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice | KCapsHold | KCapsHangUp
       
  9105 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallEventCaps in set of KCapsLocalHold | KCapsRemoteHold | KCapsRemoteTerminate | KCapsRemoteConferenceCreate.
       
  9106 	wantedMobCallControlCaps =  RMobileCall::KCapsVoice |
       
  9107 								RMobileCall::KCapsHold |
       
  9108 								RMobileCall::KCapsHangUp;
       
  9109 	wantedMobCallEventCaps = RMobileCall::KCapsLocalHold |
       
  9110 							 RMobileCall::KCapsRemoteHold |
       
  9111 							 RMobileCall::KCapsRemoteTerminate |
       
  9112 							 RMobileCall::KCapsRemoteConferenceCreate;
       
  9113 	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyMobileCallCapsChangeStatus, ETimeShort), KErrNone, 
       
  9114 				  _L("RMobileCall::NotifyMobileCallCapsChange timed out."));
       
  9115 	ASSERT_EQUALS(notifyMobileCallCapsChangeStatus.Int(), KErrNone,
       
  9116 				  _L("RMobileCall::NotifyMobileCallCapsChange returned with error status."));
       
  9117 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobCallControlCaps, KNoUnwantedBits,
       
  9118 					_L("RMobileCall::NotifyMobileCallCapsChange returned wrong control caps."));
       
  9119 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedMobCallEventCaps, KNoUnwantedBits,
       
  9120 					_L("RMobileCall::NotifyMobileCallCapsChange returned wrong event caps."));
       
  9121 
       
  9122 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsHold | KCapsHangUp.
       
  9123 	// Check RMobileCall::GetMobileCallCaps includes iCallEventCaps in set of KCapsLocalHold | KCapsRemoteHold | KCapsRemoteTerminate | KCapsRemoteConferenceCreate.
       
  9124 	ASSERT_EQUALS(call1.GetMobileCallCaps(mobileCallCapsPckg), KErrNone,  
       
  9125 				  _L("RMobileCall::GetMobileCallCaps returned an error"));
       
  9126 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | 
       
  9127 										RMobileCall::KCapsHold | 
       
  9128 										RMobileCall::KCapsHangUp;
       
  9129 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps, KNoUnwantedBits,
       
  9130 					_L("RMobileCall::GetMobileCallCaps returned unexpected iCallControlCaps"));
       
  9131 	
       
  9132 	wantedMobileCaps.iCallEventCaps = RMobileCall::KCapsLocalHold |
       
  9133 									  RMobileCall::KCapsRemoteHold | 
       
  9134 									  RMobileCall::KCapsRemoteTerminate | 
       
  9135 									  RMobileCall::KCapsRemoteConferenceCreate;
       
  9136 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedMobileCaps.iCallEventCaps, KNoUnwantedBits,
       
  9137 				    _L("RMobileCall::GetMobileCallCaps returned unexpected iCallEventCaps"));
       
  9138 
       
  9139 	// ===  Check call status ===
       
  9140 
       
  9141 	// Check RCall::NotifyStatusChange completes with EStatusConnected.
       
  9142 	expectedCallStatus = RCall::EStatusConnected;
       
  9143 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  9144 														 notifyCallStatusChangeStatus,
       
  9145 														 callStatus,
       
  9146 														 expectedCallStatus,
       
  9147 														 wantedStatus);
       
  9148 
       
  9149 	// Check RCall::GetStatus returns EStatusConnected.
       
  9150 	ASSERT_EQUALS(call1.GetStatus(callStatus), KErrNone,  
       
  9151 				  _L("RCall::GetStatus returned an error"));
       
  9152 	ASSERT_EQUALS(callStatus, RCall::EStatusConnected,  
       
  9153 				  _L("RCall::GetStatus returned an unexpected call status"));
       
  9154 
       
  9155 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusConnected.
       
  9156 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  9157 															notifyMobileCallChangeStatus,
       
  9158 															mobileCallStatus,
       
  9159 															RMobileCall::EStatusConnected,
       
  9160 															wantedStatus);
       
  9161 
       
  9162 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusConnected.
       
  9163 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  9164 				  _L("RMobileCall::GetMobileStatus returned an error"));
       
  9165 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected,  
       
  9166 				  _L("RMobileCall::GetMobileStatus did not return a status EStatusConnected"));
       
  9167 
       
  9168 	// ===  Check call event completes ===
       
  9169 
       
  9170 	// Check RMobileCall::NotifyCallEvent completes with ELocalResume
       
  9171 	iCallControlTestHelper.WaitForMobileCallNotifyCallEvent(
       
  9172 									call1,
       
  9173 									notifyCallEventStatus,
       
  9174 									event, 
       
  9175 									RMobileCall::ELocalResume,
       
  9176 									wantedStatus);
       
  9177 
       
  9178 	// ===  Check DTMF caps ===
       
  9179 
       
  9180     ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10024);
       
  9181 	// Check RMobilePhone::NotifyDTMFCapsChange completes with caps in set of KCapsSendDTMFString | KCapsSendDTMFSingleTone
       
  9182 	TUint32 wantedDtmfCaps = RMobilePhone::KCapsSendDTMFString | RMobilePhone::KCapsSendDTMFSingleTone;
       
  9183 	iCallControlTestHelper.WaitForMobilePhoneNotifyDTMFCapsChange(
       
  9184 										mobilePhone,
       
  9185 									  	notifyDTMFCapsChangeStatus,
       
  9186 									  	dTMFcaps, 
       
  9187 									  	wantedDtmfCaps,
       
  9188 									  	KNoUnwantedBits,
       
  9189 									  	wantedStatus);
       
  9190 
       
  9191 	// Check RMobilePhone::GetDTMFCaps returns KCapsSendDTMFString | KCapsSendDTMFSingleTone
       
  9192 	ASSERT_EQUALS(mobilePhone.GetDTMFCaps(dtmfCaps2), KErrNone, _L("RMobilePhone::GetDTMFCaps returned with an error"));
       
  9193 	ASSERT_BITS_SET(dtmfCaps2, wantedDtmfCaps, KNoUnwantedBits, _L("RMobilePhone::GetDTMFCaps returned wrong dynamic caps"));
       
  9194 
       
  9195 
       
  9196 	// Post Notifier for RCall::NotifyCapsChange
       
  9197 	call1.NotifyCapsChange(notifyCapsChangeStatus, caps);
       
  9198 
       
  9199 	// post a notifier for RMobileCall::NotifyMobileCallCapsChange
       
  9200 	call1.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus, mobileCallCapsPckg);
       
  9201 
       
  9202 	// Post notifier for RCall::NotifyStatusChange
       
  9203 	call1.NotifyStatusChange(notifyCallStatusChangeStatus, callStatus);
       
  9204 
       
  9205 	// Post a notifier for RMobileCall::NotifyMobileCallStatusChange
       
  9206 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  9207 	
       
  9208 	// Post notification RMobilePhone::NotifyDTMFCapsChange
       
  9209 	mobilePhone.NotifyDTMFCapsChange(notifyDTMFCapsChangeStatus, dTMFcaps);
       
  9210 
       
  9211 	// Hang up call
       
  9212 	ASSERT_EQUALS(call1.HangUp(), KErrNone, _L("RMobileCall::HangUp returned error."));
       
  9213 
       
  9214 	// ===  Check call caps ===
       
  9215 
       
  9216 	// Check RCall::NotifyCapsChange completes with caps in set of KCapsVoice | KCapsDial.
       
  9217 	wantedCaps.iFlags = RCall::KCapsVoice | RCall::KCapsDial;
       
  9218 	unwantedCaps.iFlags = 0;
       
  9219 	iCallControlTestHelper.WaitForCallNotifyCapsChange(call1,
       
  9220 													   notifyCapsChangeStatus,
       
  9221 													   caps,
       
  9222 													   wantedCaps,
       
  9223 													   unwantedCaps,
       
  9224 													   wantedStatus);
       
  9225 
       
  9226 	// Check RCall::GetCaps supports KCapsVoice | KCapsDial.
       
  9227 	ASSERT_EQUALS(call1.GetCaps(caps), KErrNone,   
       
  9228 				  _L("RCall::GetCaps returned an Error"));
       
  9229 	ASSERT_BITS_SET(caps.iFlags, RCall::KCapsVoice | RCall::KCapsDial, KNoUnwantedBits, 
       
  9230 					_L("RCall::GetCaps returned wrong caps"));
       
  9231 
       
  9232 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice | KCapsDial.
       
  9233 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsDial;
       
  9234 	wantedMobileCaps.iCallEventCaps = 0;
       
  9235 	TCmpRMobileCallTMobileCallCaps mobileCapsComp2(wantedMobileCaps, mobileCallCaps, *this);
       
  9236 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(call1, 
       
  9237 																	   notifyMobileCallCapsChangeStatus,
       
  9238 																	   mobileCapsComp2,
       
  9239 																	   KErrNone);
       
  9240 
       
  9241 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsDial.
       
  9242 	ASSERT_EQUALS(call1.GetMobileCallCaps(mobileCallCapsPckg), KErrNone,  
       
  9243 				  _L("RMobileCall::GetMobileCallCaps returned an error"));
       
  9244 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsDial;
       
  9245 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps, KNoUnwantedBits,
       
  9246 					_L("RMobileCall::GetMobileCallCaps returned unexpected iCallControlCaps"));
       
  9247 
       
  9248 	// ===  Check call status ===
       
  9249 
       
  9250 	// Check RCall::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle.
       
  9251 	expectedCallStatus = RCall::EStatusHangingUp;
       
  9252 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  9253 														 notifyCallStatusChangeStatus,
       
  9254 														 callStatus,
       
  9255 														 expectedCallStatus,
       
  9256 														 wantedStatus);
       
  9257 														 
       
  9258 	call1.NotifyStatusChange(notifyCallStatusChangeStatus, callStatus);
       
  9259 	expectedCallStatus = RCall::EStatusIdle;
       
  9260 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
  9261 														 notifyCallStatusChangeStatus,
       
  9262 														 callStatus,
       
  9263 														 expectedCallStatus,
       
  9264 														 wantedStatus);
       
  9265 
       
  9266 	// Check RCall::GetStatus returns EStatusIdle.
       
  9267 	ASSERT_EQUALS(call1.GetStatus(callStatus), KErrNone,  
       
  9268 				  _L("RCall::GetStatus returned an error"));
       
  9269 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle,  
       
  9270 				  _L("RCall::GetStatus returned an unexpected call status"));
       
  9271 
       
  9272 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDisconnecting -> EStatusIdle.
       
  9273 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  9274 															notifyMobileCallChangeStatus,
       
  9275 															mobileCallStatus,
       
  9276 															RMobileCall::EStatusDisconnecting,
       
  9277 															wantedStatus);
       
  9278 	
       
  9279 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
  9280 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  9281 															notifyMobileCallChangeStatus,
       
  9282 															mobileCallStatus,
       
  9283 															RMobileCall::EStatusIdle,
       
  9284 															wantedStatus);
       
  9285 
       
  9286 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
  9287 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
  9288 				  _L("RMobileCall::GetMobileStatus returned an error"));
       
  9289 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle,  
       
  9290 				  _L("RMobileCall::GetMobileStatus did not return a status EStatusIdle"));
       
  9291 
       
  9292 	// ===  Check DTMF caps ===
       
  9293 
       
  9294 	// Check RMobilePhone::NotifyDTMFCapsChange completes with caps equal to 0
       
  9295 	iCallControlTestHelper.WaitForMobilePhoneNotifyDTMFCapsChange(
       
  9296 										mobilePhone,
       
  9297 									  	notifyDTMFCapsChangeStatus,
       
  9298 									  	dTMFcaps, 
       
  9299 									  	KNoWantedBits,
       
  9300 									  	KNoUnwantedBits,
       
  9301 									  	wantedStatus);
       
  9302 
       
  9303 	// Check RMobilePhone::GetDTMFCaps returns caps of 0
       
  9304 	ASSERT_EQUALS(mobilePhone.GetDTMFCaps(dtmfCaps2), KErrNone, _L("RMobilePhone::GetDTMFCaps returned with an error"));
       
  9305 	ASSERT_BITS_SET(dtmfCaps2, KNoWantedBits, KNoUnwantedBits, _L("RMobilePhone::GetDTMFCaps returned wrong dynamic caps"));
       
  9306 
       
  9307 	////////////////////////////////////////////////////////////////
       
  9308 	// TEST END
       
  9309 	////////////////////////////////////////////////////////////////
       
  9310 
       
  9311     StartCleanup();
       
  9312 	
       
  9313 	CleanupStack::PopAndDestroy(10);
       
  9314 									// resumeStatus
       
  9315 									// holdStatus
       
  9316 									// notifyDTMFCapsChangeStatus
       
  9317 									// notifyCallEventStatus
       
  9318 									// dialStatus
       
  9319 									// notifyRemotePartyInfoChangeStatus
       
  9320 									// notifyMobileCallChangeStatus
       
  9321 									// notifyCallStatusChangeStatus
       
  9322 									// notifyMobileCallCapsChangeStatus
       
  9323 									// notifyCapsChangeStatus
       
  9324 
       
  9325 	return TestStepResult();
       
  9326 	}
       
  9327 
       
  9328 TPtrC CCTSYIntegrationTestCallControl0024::GetTestStepName()
       
  9329 /**
       
  9330  * @return The test step name.
       
  9331  */
       
  9332 	{
       
  9333 	return  _L("CCTSYIntegrationTestCallControl0024");
       
  9334 	}
       
  9335 
       
  9336 
       
  9337 
       
  9338 CCTSYIntegrationTestCallControl0025::CCTSYIntegrationTestCallControl0025(CEtelSessionMgr& aEtelSessionMgr)
       
  9339 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
  9340 /**
       
  9341  * Constructor.
       
  9342  */
       
  9343 	{
       
  9344 	SetTestStepName(CCTSYIntegrationTestCallControl0025::GetTestStepName());
       
  9345 	}
       
  9346 
       
  9347 CCTSYIntegrationTestCallControl0025::~CCTSYIntegrationTestCallControl0025()
       
  9348 /**
       
  9349  * Destructor.
       
  9350  */
       
  9351 	{
       
  9352 	}
       
  9353 
       
  9354 TVerdict CCTSYIntegrationTestCallControl0025::doTestStepL()
       
  9355 /**
       
  9356  * @SYMTestCaseID BA-CTSY-INT-CCON-0025
       
  9357  * @SYMFssID BA/CTSY/CCON-0025
       
  9358  * @SYMTestCaseDesc Swap between an active call and a held call
       
  9359  * @SYMTestPriority High
       
  9360  * @SYMTestActions RMobileCall::NotifyMobileCallCapsChange, RMobileCall::GetMobileCallStatus, RMobileCall::NotifyCallEvent, RCall::NotifyStatusChange, RMobileCall::NotifyMobileCallStatusChange, RCall::NotifyCapsChange, RMobileCall::NotifyRemotePartyInfoChange, RCall::GetStatus,RMobileCall::GetMobileCallCaps, RCall::Dial, RCall::HangUp, RCall::GetCallDuration, RMobileCall::Swap
       
  9361  * @SYMTestExpectedResults Pass - Active call goes on hold and held call becomes active.
       
  9362  * @SYMTestType CIT
       
  9363  * @SYMTestCaseDependencies live/automatic
       
  9364  *
       
  9365  * Reason for test: Verify call status, call event, call caps, remote party info , call duration and DTMF caps correct.
       
  9366  *
       
  9367  * @return - TVerdict code
       
  9368  */
       
  9369 	{
       
  9370 
       
  9371 	////////////////////////////////////////////////////////////////
       
  9372 	// SET UP
       
  9373 	////////////////////////////////////////////////////////////////
       
  9374 	
       
  9375 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
       
  9376 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
       
  9377 	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
  9378 				 	_L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
  9379 	
       
  9380 	// Get Voice line 1 
       
  9381 	RMobileLine& voiceLine1 = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
  9382 
       
  9383 	// Get call 1 
       
  9384 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
  9385 	
       
  9386 	// Check phone supports KCapsVoice
       
  9387 	RLine::TCaps lineCaps; 
       
  9388 	CHECK_EQUALS_L(voiceLine1.GetCaps(lineCaps), KErrNone, _L("RMobileLine::GetCaps returned with an error"));
       
  9389 	CHECK_BITS_SET_L(lineCaps.iFlags, RLine::KCapsVoice, 0, _L("RLine::GetCaps returned wrong caps"));
       
  9390 		
       
  9391 	// Get call 2 
       
  9392 	RMobileCall& call2 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall2);
       
  9393 	
       
  9394 	// Dial a number that answers on call 1 
       
  9395 	TPtrC number1; 
       
  9396 	CHECK_TRUE_L(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number1) != EFalse, _L("GetStringFromConfig did not complete as expected"));
       
  9397 	DEBUG_PRINTF1(_L("Board Now Dialling: "));
       
  9398 	TCoreEtelRequestStatus<RCall> dialStatus(call1, &RCall::DialCancel);
       
  9399 	CleanupStack::PushL(dialStatus);
       
  9400 	call1.Dial(dialStatus, number1); 
       
  9401 	CHECK_EQUALS_L(WaitForRequestWithTimeOut(dialStatus, ETimeMedium), KErrNone, _L("RCall::Dial timed-out"));
       
  9402 	CHECK_EQUALS_L(dialStatus.Int(), KErrNone, _L("RCall::Dial returned with an error"));
       
  9403 	
       
  9404 	// Hold call 1 
       
  9405 	TExtEtelRequestStatus holdStatus(call1, EMobileCallHold);
       
  9406 	CleanupStack::PushL(holdStatus);
       
  9407 	call1.Hold(holdStatus);
       
  9408 	CHECK_EQUALS_L(WaitForRequestWithTimeOut(holdStatus, ETimeMedium),KErrNone, _L("RMobileCall::Hold timed out"));
       
  9409 	CHECK_EQUALS_L(holdStatus.Int(), KErrNone, _L("RMobileCall::Hold returned with an error"));		
       
  9410 
       
  9411 	// Ensure RMobileCall::GetMobileCallStatus for call 1 is EStatusHold 
       
  9412 	RMobileCall::TMobileCallStatus status;
       
  9413 	CHECK_EQUALS_L(call1.GetMobileCallStatus(status), KErrNone, _L("RMobileCall::GetMobileCallStatus returned with an error"));
       
  9414 	CHECK_EQUALS_L(status, RMobileCall::EStatusHold, _L("RMobileCall::GetMobileCallStatus did not return EStatusHold as expected"));
       
  9415 
       
  9416     ////////////////////////////////////////////////////////////////
       
  9417 	// SET UP END
       
  9418 	////////////////////////////////////////////////////////////////
       
  9419 	
       
  9420 	StartTest();
       
  9421 	
       
  9422 	////////////////////////////////////////////////////////////////
       
  9423 	// TEST START
       
  9424 	////////////////////////////////////////////////////////////////
       
  9425 	
       
  9426 	// Post notifier for RCall::NotifyCapsChange
       
  9427 	RCall::TCaps callCaps;
       
  9428 	TCoreEtelRequestStatus<RCall> notifyCapsChangeStatus (call2,&RCall::NotifyCapsChangeCancel);	
       
  9429 	CleanupStack::PushL(notifyCapsChangeStatus);
       
  9430 	call2.NotifyCapsChange(notifyCapsChangeStatus,callCaps);
       
  9431 	
       
  9432 	// Post notifier for RMobileCall::NotifyMobileCallCapsChange
       
  9433 	RMobileCall::TMobileCallCapsV1 mobileCallCaps;
       
  9434 	RMobileCall::TMobileCallCapsV1Pckg mobileCallCapsPckg(mobileCallCaps);
       
  9435 	TExtEtelRequestStatus notifyMobileCallCapsChangeStatus(call2, EMobileCallNotifyMobileCallCapsChange);
       
  9436 	CleanupStack::PushL(notifyMobileCallCapsChangeStatus);
       
  9437 	call2.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus,mobileCallCapsPckg);
       
  9438 		
       
  9439 	// Post notifier for RCall::NotifyStatusChange
       
  9440 	RCall::TStatus callStatus;
       
  9441 	TCoreEtelRequestStatus<RCall> notifyStatusChangeStatus (call2,&RCall::NotifyStatusChangeCancel);
       
  9442 	CleanupStack::PushL(notifyStatusChangeStatus);
       
  9443 	call2.NotifyStatusChange(notifyStatusChangeStatus,callStatus);
       
  9444 	
       
  9445 	// Post notifier for RMobileCall::NotifyMobileCallStatusChange
       
  9446 	RMobileCall::TMobileCallStatus mobileCallStatus2;
       
  9447 	TExtEtelRequestStatus notifyMobileCallStatusChangeStatus2(call2, EMobileCallNotifyMobileCallStatusChange);
       
  9448 	CleanupStack::PushL(notifyMobileCallStatusChangeStatus2);
       
  9449 	call2.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus2, mobileCallStatus2);
       
  9450 	
       
  9451 	// Post notifier for RMobileCall::NotifyRemotePartyInfoChange
       
  9452 	RMobileCall:: TMobileCallRemotePartyInfoV1  rpInfo;
       
  9453     RMobileCall:: TMobileCallRemotePartyInfoV1Pckg  rpInfoPkg(rpInfo);
       
  9454    	TExtEtelRequestStatus notifyRemotePartyInfoChangeStatus(call2, EMobileCallNotifyRemotePartyInfoChange);
       
  9455 	CleanupStack::PushL(notifyRemotePartyInfoChangeStatus);
       
  9456 	call2.NotifyRemotePartyInfoChange(notifyRemotePartyInfoChangeStatus, rpInfoPkg);
       
  9457 	
       
  9458 	// Dial a number that answers on call 2 
       
  9459 	TPtrC number2; 
       
  9460 	ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number2) != EFalse, _L("GetStringFromConfig did not complete as expected"));
       
  9461 	DEBUG_PRINTF1(_L("Board Now Dialling Call 2: "));
       
  9462 	TCoreEtelRequestStatus<RCall> dialStatus2(call2, &RCall::DialCancel);
       
  9463 	CleanupStack::PushL(dialStatus2);
       
  9464 	call2.Dial(dialStatus2, number2); 
       
  9465 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus2, ETimeMedium), KErrNone, _L("RCall::Dial timed-out"));
       
  9466 	ASSERT_EQUALS(dialStatus2.Int(), KErrNone, _L("RCall::Dial returned with an error"));
       
  9467 
       
  9468 	// ===  Check call caps ===
       
  9469 	
       
  9470 	// Check RCall::NotifyCapsChange on call 2 completes with caps in set of KCapsVoice | KCapsHangUp.
       
  9471 	RCall::TCaps wantedCallCaps, unwantedCallCaps;
       
  9472 	wantedCallCaps.iFlags = RCall::KCapsVoice | RCall::KCapsHangUp; 
       
  9473 	unwantedCallCaps.iFlags = 0;
       
  9474 	const TInt wantedStatus = KErrNone;
       
  9475 	iCallControlTestHelper.WaitForCallNotifyCapsChange(call2, 
       
  9476 													   notifyCapsChangeStatus,
       
  9477 													   callCaps,
       
  9478 													   wantedCallCaps,
       
  9479 													   unwantedCallCaps,
       
  9480 													   wantedStatus);
       
  9481 	
       
  9482 	// Check RCall::GetCaps on call 2 supports KCapsHangUp | KCapsVoice.
       
  9483 	ASSERT_EQUALS(call2.GetCaps(callCaps), KErrNone, _L("RCall::GetCaps returned an error"));
       
  9484 	ASSERT_BITS_SET(callCaps.iFlags, wantedCallCaps.iFlags, KNoUnwantedBits, _L("RCall::GetCaps returned wrong caps"));
       
  9485 
       
  9486 	// Check RMobileCall::NotifyMobileCallCapsChange on call 2 completes with iCallControlCaps in set of KCapsVoice | KCapsSwap | KCapsHangUp | KCapsTransfer | KCapsJoin.
       
  9487 	// Check RMobileCall::NotifyMobileCallCapsChange on call 2 completes with iCallEventCaps in set of KCapsLocalHold | KCapsLocalTransfer | KCapsRemoteHold | KCapsRemoteTerminate | KCapsRemoteConferenceCreate.
       
  9488 	RMobileCall::TMobileCallCapsV1 wantedMobileCaps;
       
  9489 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice |
       
  9490 										RMobileCall::KCapsSwap  |
       
  9491 										RMobileCall::KCapsHangUp |
       
  9492 										RMobileCall::KCapsTransfer |
       
  9493 										RMobileCall::KCapsJoin;
       
  9494 	wantedMobileCaps.iCallEventCaps = RMobileCall::KCapsLocalHold |
       
  9495 									  RMobileCall::KCapsLocalTransfer |
       
  9496 									  RMobileCall::KCapsRemoteHold |
       
  9497 									  RMobileCall::KCapsRemoteTerminate |
       
  9498 									  RMobileCall::KCapsRemoteConferenceCreate;
       
  9499 	TCmpRMobileCallTMobileCallCaps mobileCapsComp(wantedMobileCaps,mobileCallCaps, *this);
       
  9500 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(call2, 
       
  9501 																	   notifyMobileCallCapsChangeStatus,
       
  9502 																	   mobileCapsComp,
       
  9503 																	   wantedStatus);
       
  9504 	
       
  9505 
       
  9506 	// Check RMobileCall::GetMobileCallCaps on call 2 includes iCallControlCaps in set of KCapsVoice | KCapsSwap | KCapsHangUp | KCapsTransfer | KCapsJoin.
       
  9507 	// Check RMobileCall::GetMobileCallCaps on call 2 includes iCallEventCaps in set of KCapsLocalHold | KCapsLocalTransfer | KCapsRemoteHold | KCapsRemoteTerminate | KCapsRemoteConferenceCreate.
       
  9508 	ASSERT_EQUALS(call2.GetMobileCallCaps(mobileCallCapsPckg), KErrNone, _L("RMobileCall::GetMobileCallCaps returned with an error"))
       
  9509 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | 
       
  9510 										RMobileCall::KCapsSwap  |
       
  9511 								    	RMobileCall::KCapsHangUp |
       
  9512 										RMobileCall::KCapsTransfer|
       
  9513 										RMobileCall::KCapsJoin;
       
  9514 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps,KNoUnwantedBits,
       
  9515 											   _L("RMobileCall::GetMobileCallCaps returned unexpected iCallControlCaps"));
       
  9516 	
       
  9517 	wantedMobileCaps.iCallEventCaps = RMobileCall::KCapsLocalHold | 
       
  9518 									  RMobileCall::KCapsLocalTransfer |
       
  9519 									  RMobileCall::KCapsRemoteHold | 
       
  9520 									  RMobileCall::KCapsRemoteTerminate | 
       
  9521 									  RMobileCall::KCapsRemoteConferenceCreate;
       
  9522 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedMobileCaps.iCallEventCaps,KNoUnwantedBits,
       
  9523 											 _L("RMobileCall::GetMobileCallCaps returned unexpected iCallEventCaps"))										   
       
  9524 
       
  9525 	// ===  Check call status ===
       
  9526 
       
  9527 	// Check RCall::NotifyStatusChange on call 2 completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  9528 	RCall::TStatus expectedCallStatus = RCall::EStatusDialling;
       
  9529 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call2,
       
  9530 														 notifyStatusChangeStatus,
       
  9531 														 callStatus,
       
  9532 														 expectedCallStatus,
       
  9533 														 wantedStatus);
       
  9534 	
       
  9535 	call2.NotifyStatusChange(notifyStatusChangeStatus,callStatus);
       
  9536 	expectedCallStatus = RCall::EStatusConnecting;
       
  9537 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call2,
       
  9538 													 notifyStatusChangeStatus,
       
  9539 													 callStatus,
       
  9540 													 expectedCallStatus,
       
  9541 													 wantedStatus);
       
  9542 
       
  9543 	call2.NotifyStatusChange(notifyStatusChangeStatus,callStatus);
       
  9544 	expectedCallStatus = RCall::EStatusConnected;
       
  9545 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call2,
       
  9546 													 notifyStatusChangeStatus,
       
  9547 													 callStatus,
       
  9548 													 expectedCallStatus,
       
  9549 													 wantedStatus);	
       
  9550 															
       
  9551 	// Check RCall::GetStatus on call 2 returns EStatusConnected.
       
  9552 	ASSERT_EQUALS(call2.GetStatus(callStatus),KErrNone, _L("RCall::GetStatus returned an error"));
       
  9553 	ASSERT_EQUALS(callStatus, RCall::EStatusConnected, _L("RCall::GetStatus returned an unexpected call status"));
       
  9554 	
       
  9555 	
       
  9556 	// Check RMobileCall::NotifyMobileCallStatusChange on call 2 completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  9557 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusDialling;
       
  9558 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call2,
       
  9559 															notifyMobileCallStatusChangeStatus2,
       
  9560 															mobileCallStatus2,
       
  9561 															expectedMobileCallStatus,
       
  9562 															wantedStatus);
       
  9563 															
       
  9564 	call2.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus2, mobileCallStatus2);
       
  9565 	expectedMobileCallStatus = RMobileCall::EStatusConnecting;
       
  9566 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call2,
       
  9567 															notifyMobileCallStatusChangeStatus2,
       
  9568 															mobileCallStatus2,
       
  9569 															expectedMobileCallStatus,
       
  9570 															wantedStatus);
       
  9571 															
       
  9572 	call2.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus2, mobileCallStatus2);
       
  9573 	expectedMobileCallStatus = RMobileCall::EStatusConnected;															
       
  9574 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call2,
       
  9575 															notifyMobileCallStatusChangeStatus2,
       
  9576 															mobileCallStatus2,
       
  9577 															expectedMobileCallStatus,
       
  9578 															wantedStatus);
       
  9579 
       
  9580 	// Check RMobileCall::GetMobileCallStatus on call 2 returns status of EStatusConnected.
       
  9581 	ASSERT_EQUALS(call2.GetMobileCallStatus(mobileCallStatus2), KErrNone, _L("RMobileCall::GetMobileStatus returned an error"));
       
  9582 	ASSERT_EQUALS(mobileCallStatus2, RMobileCall::EStatusConnected, _L("RMobileCall::GetMobileStatus did not return a status EStatusConnected"));
       
  9583 	
       
  9584 	// ===  Check remote party info ===
       
  9585 
       
  9586 	// Check RMobileCall::NotifyRemotePartyInfoChange on call 2 completes with direction of EMobileOriginated
       
  9587 	TPtrC remoteNumber;
       
  9588 	RMobileCall:: TMobileCallRemotePartyInfoV1 wantedRpInfo;
       
  9589 	wantedRpInfo.iDirection= RMobileCall::EMobileOriginated ;
       
  9590 	TCmpRMobileCallTMobileCallRemotePartyInfo rpInfoComp(wantedRpInfo,rpInfo, *this);
       
  9591 	iCallControlTestHelper.WaitForMobileCallNotifyRemotePartyInfoChange(call2,
       
  9592 																		notifyRemotePartyInfoChangeStatus,
       
  9593 																		rpInfoComp,
       
  9594 																		wantedStatus);
       
  9595 
       
  9596 	// Post notifier for Call2 RMobileCall::NotifyMobileCallStatusChange
       
  9597 	call2.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus2, mobileCallStatus2);
       
  9598 	
       
  9599 	// Post notifier for Call1 RMobileCall::NotifyMobileCallStatusChange
       
  9600 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
  9601 	TExtEtelRequestStatus notifyMobileCallStatusChangeStatus(call1, EMobileCallNotifyMobileCallStatusChange);
       
  9602 	CleanupStack::PushL(notifyMobileCallStatusChangeStatus);
       
  9603 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallStatus);
       
  9604 	
       
  9605 	// Post notifier for event2 RMobileCall::NotifyCallEvent
       
  9606 	RMobileCall::TMobileCallEvent event2;
       
  9607 	TExtEtelRequestStatus notifyCallEventStatus2(call2, EMobileCallNotifyCallEvent);
       
  9608 	CleanupStack::PushL(notifyCallEventStatus2);
       
  9609 	call2.NotifyCallEvent(notifyCallEventStatus2,event2);
       
  9610 	
       
  9611 	// Post notifier for event1 RMobileCall::NotifyCallEvent
       
  9612 	RMobileCall::TMobileCallEvent event;
       
  9613 	TExtEtelRequestStatus notifyCallEventStatus(call1, EMobileCallNotifyCallEvent);
       
  9614 	CleanupStack::PushL(notifyCallEventStatus);
       
  9615 	call1.NotifyCallEvent(notifyCallEventStatus,event);
       
  9616 
       
  9617 	// Swap call 2 
       
  9618 	TExtEtelRequestStatus swapStatus(call2, EMobileCallSwap);
       
  9619 	CleanupStack::PushL(swapStatus);
       
  9620 	call2.Swap(swapStatus);
       
  9621 	ASSERT_EQUALS(WaitForRequestWithTimeOut(swapStatus, ETimeMedium),KErrNone, _L("RMobileCall::Swap timed out"));
       
  9622 	ASSERT_EQUALS(swapStatus.Int(), KErrNone, _L("RMobileCall::Swap returned with an error"));		
       
  9623 	
       
  9624 	// ===  Check call status for calls 1 and 2 ===
       
  9625 
       
  9626 	// Check RMobileCall::NotifyMobileCallStatusChange on call 2 completes with EStatusHold
       
  9627 	expectedMobileCallStatus = RMobileCall::EStatusHold;
       
  9628 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call2,
       
  9629 															notifyMobileCallStatusChangeStatus2,
       
  9630 															mobileCallStatus2,
       
  9631 															expectedMobileCallStatus,
       
  9632 															wantedStatus);
       
  9633 
       
  9634 	// Check RMobileCall::GetMobileCallStatus on call 2 returns status of EStatusHold
       
  9635 	ASSERT_EQUALS(call2.GetMobileCallStatus(mobileCallStatus2), KErrNone, _L("RMobileCall::GetMobileStatus returned an error"));
       
  9636 	ASSERT_EQUALS(mobileCallStatus2, RMobileCall::EStatusHold, _L("RMobileCall::GetMobileStatus did not return a status EStatusHold"));
       
  9637 
       
  9638 	// Check RMobileCall::NotifyMobileCallStatusChange on call 1 completes with EStatusResume
       
  9639 	expectedMobileCallStatus = RMobileCall::EStatusConnected;
       
  9640 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
  9641 															notifyMobileCallStatusChangeStatus,
       
  9642 															mobileCallStatus,
       
  9643 															expectedMobileCallStatus,
       
  9644 															wantedStatus);
       
  9645 
       
  9646 	// Check RMobileCall::GetMobileCallStatus on call 1 returns status of EStatusResume
       
  9647 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone, _L("RMobileCall::GetMobileStatus returned an error"))
       
  9648 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected, _L("RMobileCall::GetMobileStatus did not return a status EStatusResume"))
       
  9649 	
       
  9650 	// ===  Check call event completes ===
       
  9651 
       
  9652 	// Check RMobileCall::NotifyCallEvent on call 2 completes with ELocalHold
       
  9653 	RMobileCall::TMobileCallEvent expectedEvent= RMobileCall::ELocalHold;
       
  9654 	iCallControlTestHelper.WaitForMobileCallNotifyCallEvent(call2,
       
  9655 										                   notifyCallEventStatus2,
       
  9656 														   event2, 
       
  9657 														   expectedEvent,
       
  9658 														   wantedStatus);
       
  9659 
       
  9660 	// Check RMobileCall::NotifyCallEvent on call 1 completes with ELocalResume
       
  9661 	expectedEvent= RMobileCall::ELocalResume;
       
  9662 	iCallControlTestHelper.WaitForMobileCallNotifyCallEvent(call1,
       
  9663 										                   notifyCallEventStatus,
       
  9664 														   event, 
       
  9665 														   expectedEvent,
       
  9666 														   wantedStatus);
       
  9667     // Pause so that the call durations have time to increase from 0
       
  9668     User::After(KOneSecond*2);
       
  9669 
       
  9670     // Get call duration of call 1 
       
  9671 	TTimeIntervalSeconds duration1;
       
  9672 	ASSERT_EQUALS(call1.GetCallDuration(duration1), KErrNone, _L("RCall::GetCallDuration returned with an error"));
       
  9673 
       
  9674 	// Get call duration of call 2 
       
  9675 	TTimeIntervalSeconds duration2;
       
  9676 	ASSERT_EQUALS(call2.GetCallDuration(duration2), KErrNone, _L("RCall::GetCallDuration returned with an error"));
       
  9677 
       
  9678 	// Check call duration of call 1 > duration of call 2
       
  9679 	ASSERT_TRUE(duration1.Int()>duration2.Int(), _L("RCall::GetCallDuration duration of call1 is not greater than the duration of call2"));
       
  9680 	
       
  9681 	// Hang up call 1 
       
  9682 	ASSERT_EQUALS(call1.HangUp(), KErrNone,_L("RMobileCall::HangUp returned with an error"));
       
  9683 
       
  9684 	// Hang up call 2 
       
  9685 	ASSERT_EQUALS(call2.HangUp(), KErrNone,_L("RMobileCall::HangUp returned with an error"));
       
  9686 
       
  9687 	////////////////////////////////////////////////////////////////
       
  9688 	// TEST END
       
  9689 	////////////////////////////////////////////////////////////////
       
  9690 
       
  9691     StartCleanup();
       
  9692     // Pop:
       
  9693     // dialStatus
       
  9694     // holdStatus
       
  9695     // notifyCapsChangeStatus
       
  9696     // notifyMobileCallCapsChangeStatus
       
  9697     // notifyStatusChangeStatus
       
  9698     // notifyMobileCallStatusChangeStatus2
       
  9699     // notifyRemotePartyInfoChangeStatus
       
  9700     // dialStatus2
       
  9701     // notifyMobileCallStatusChangeStatus
       
  9702     // notifyCallEventStatus2
       
  9703     // notifyCallEventStatus
       
  9704     // swapStatus
       
  9705 	CleanupStack::PopAndDestroy(12, &dialStatus);
       
  9706 	
       
  9707 	
       
  9708 	return TestStepResult();
       
  9709 	}
       
  9710 
       
  9711 TPtrC CCTSYIntegrationTestCallControl0025::GetTestStepName()
       
  9712 /**
       
  9713  * @return The test step name.
       
  9714  */
       
  9715 	{
       
  9716 	return  _L("CCTSYIntegrationTestCallControl0025");
       
  9717 	}
       
  9718 
       
  9719 
       
  9720 
       
  9721 CCTSYIntegrationTestCallControl0026::CCTSYIntegrationTestCallControl0026(CEtelSessionMgr& aEtelSessionMgr)
       
  9722 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
  9723 /**
       
  9724  * Constructor.
       
  9725  */
       
  9726 	{
       
  9727 	SetTestStepName(CCTSYIntegrationTestCallControl0026::GetTestStepName());
       
  9728 	}
       
  9729 
       
  9730 CCTSYIntegrationTestCallControl0026::~CCTSYIntegrationTestCallControl0026()
       
  9731 /**
       
  9732  * Destructor.
       
  9733  */
       
  9734 	{
       
  9735 	}
       
  9736 
       
  9737 TVerdict CCTSYIntegrationTestCallControl0026::doTestStepL()
       
  9738 /**
       
  9739  * @SYMTestCaseID BA-CTSY-INT-CCON-0026
       
  9740  * @SYMFssID BA/CTSY/CCON-0026
       
  9741  * @SYMTestCaseDesc Swap between a held call and an ongoing call
       
  9742  * @SYMTestPriority High
       
  9743  * @SYMTestActions RMobileCall::NotifyMobileCallCapsChange, RMobileCall::GetMobileCallStatus, RMobileCall::NotifyCallEvent, RCall::NotifyStatusChange, RMobileCall::NotifyMobileCallStatusChange,RCall::NotifyCapsChange, RMobileCall::NotifyRemotePartyInfoChange, RCall::GetStatus,RMobileCall::GetMobileCallCaps, RCall::Dial, RCall::HangUp, RCall::GetCallDuration, RMobileCall::Swap
       
  9744  * @SYMTestExpectedResults Pass - Active call goes on hold and held call becomes active.
       
  9745  * @SYMTestType CIT
       
  9746  * @SYMTestCaseDependencies live/automatic
       
  9747  *
       
  9748  * Reason for test: Verify call status, call event, call caps, remote party info , call duration and DTMF caps correct.
       
  9749  *
       
  9750  * @return - TVerdict code
       
  9751  */
       
  9752 	{
       
  9753 
       
  9754 	////////////////////////////////////////////////////////////////
       
  9755 	// SET UP
       
  9756 	////////////////////////////////////////////////////////////////
       
  9757 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
       
  9758 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
       
  9759 	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
  9760 
       
  9761 	// Get Voice line 1 
       
  9762 	RMobileLine& voiceLine1 = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
  9763 
       
  9764 	// Get call 1 
       
  9765 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
  9766 	
       
  9767 	// Check phone supports KCapsVoice
       
  9768 	RLine::TCaps lineCaps; 
       
  9769 	CHECK_EQUALS_L(voiceLine1.GetCaps(lineCaps) , KErrNone, _L("RMobileLine::GetCaps returned with an error"));
       
  9770 	CHECK_BITS_SET_L(lineCaps.iFlags, RLine::KCapsVoice, 0, _L("RLine::GetCaps returned wrong caps"));
       
  9771 		
       
  9772 	// Get Voice line 2 
       
  9773 	RMobileLine& voiceLine2 = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
  9774 	
       
  9775 	// Get call 2 
       
  9776 	RMobileCall& call2 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall2);
       
  9777 	
       
  9778 	// Dial a number that answers on call 1 
       
  9779 	TPtrC number1; 
       
  9780 	CHECK_TRUE_L(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number1) != EFalse, _L("GetStringFromConfig did not complete as expected"));
       
  9781 	DEBUG_PRINTF1(_L("Board Now Dialling: "));
       
  9782 	TCoreEtelRequestStatus<RCall> dialStatus(call1, &RCall::DialCancel);
       
  9783 	CleanupStack::PushL(dialStatus);
       
  9784 	call1.Dial(dialStatus, number1); 
       
  9785 	CHECK_EQUALS_L(WaitForRequestWithTimeOut(dialStatus, ETimeMedium), KErrNone, _L("RCall::Dial timed-out"));
       
  9786 	CHECK_EQUALS_L(dialStatus.Int(), KErrNone, _L("RCall::Dial returned with an error"));
       
  9787 
       
  9788 	// Hold call 1 
       
  9789 	TExtEtelRequestStatus holdStatus(call1, EMobileCallHold);
       
  9790 	CleanupStack::PushL(holdStatus);
       
  9791 	call1.Hold(holdStatus);
       
  9792 	CHECK_EQUALS_L(WaitForRequestWithTimeOut(holdStatus, ETimeMedium),KErrNone, _L("RMobileCall::Hold timed out"));
       
  9793 	CHECK_EQUALS_L(holdStatus.Int(), KErrNone, _L("RMobileCall::Hold returned with an error"));		
       
  9794 
       
  9795 	// Ensure RMobileCall::GetMobileCallStatus for call 1 is EStatusHold 
       
  9796 	RMobileCall::TMobileCallStatus status;
       
  9797 	CHECK_EQUALS_L(call1.GetMobileCallStatus(status), KErrNone, _L("RMobileCall::GetMobileCallStatus returned with an error"));
       
  9798 	CHECK_EQUALS_L(status, RMobileCall::EStatusHold, _L("RMobileCall::GetMobileCallStatus did not return EStatusHold as expected"));
       
  9799 
       
  9800 	////////////////////////////////////////////////////////////////
       
  9801 	// SET UP END
       
  9802 	////////////////////////////////////////////////////////////////
       
  9803 	
       
  9804 	StartTest();
       
  9805 	
       
  9806 	////////////////////////////////////////////////////////////////
       
  9807 	// TEST START
       
  9808 	////////////////////////////////////////////////////////////////
       
  9809 	
       
  9810 	
       
  9811 	// Post notifier for RCall::NotifyCapsChange
       
  9812 	RCall::TCaps callCaps;
       
  9813 	TCoreEtelRequestStatus<RCall> notifyCapsChangeStatus (call2,&RCall::NotifyCapsChangeCancel);	
       
  9814 	CleanupStack::PushL(notifyCapsChangeStatus);
       
  9815 	call2.NotifyCapsChange(notifyCapsChangeStatus,callCaps);
       
  9816 	
       
  9817 	// Post notifier for RMobileCall::NotifyMobileCallCapsChange
       
  9818 	RMobileCall::TMobileCallCapsV1 mobileCallCaps;
       
  9819 	RMobileCall::TMobileCallCapsV1Pckg mobileCallCapsPckg(mobileCallCaps);
       
  9820 	TExtEtelRequestStatus notifyMobileCallCapsChangeStatus(call2, EMobileCallNotifyMobileCallCapsChange);
       
  9821 	CleanupStack::PushL(notifyMobileCallCapsChangeStatus);
       
  9822 	call2.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus,mobileCallCapsPckg);
       
  9823 		
       
  9824 	// Post notifier for RCall::NotifyStatusChange
       
  9825 	RCall::TStatus callStatus;
       
  9826 	TCoreEtelRequestStatus<RCall> notifyStatusChangeStatus (call2,&RCall::NotifyStatusChangeCancel);
       
  9827 	CleanupStack::PushL(notifyStatusChangeStatus);
       
  9828 	call2.NotifyStatusChange(notifyStatusChangeStatus,callStatus);
       
  9829 	
       
  9830 	// Post notifier for RMobileCall::NotifyMobileCallStatusChange
       
  9831 	RMobileCall::TMobileCallStatus mobileCallStatus2;
       
  9832 	TExtEtelRequestStatus notifyMobileCallStatusChangeStatus2(call2, EMobileCallNotifyMobileCallStatusChange);
       
  9833 	CleanupStack::PushL(notifyMobileCallStatusChangeStatus2);
       
  9834 	call2.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus2, mobileCallStatus2);
       
  9835 	
       
  9836 	// Post notifier for RMobileCall::NotifyRemotePartyInfoChange
       
  9837 	RMobileCall:: TMobileCallRemotePartyInfoV1  rpInfo;
       
  9838     RMobileCall:: TMobileCallRemotePartyInfoV1Pckg  rpInfoPkg(rpInfo);
       
  9839    	TExtEtelRequestStatus notifyRemotePartyInfoChangeStatus(call2, EMobileCallNotifyRemotePartyInfoChange);
       
  9840 	CleanupStack::PushL(notifyRemotePartyInfoChangeStatus);
       
  9841 	call2.NotifyRemotePartyInfoChange(notifyRemotePartyInfoChangeStatus, rpInfoPkg);
       
  9842 	
       
  9843 	// Dial a number that answers on call 2 
       
  9844 	TPtrC number2; 
       
  9845 	ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number2) != EFalse, _L("GetStringFromConfig did not complete as expected"));
       
  9846 	DEBUG_PRINTF1(_L("Board Now Dialling: "));
       
  9847 	TCoreEtelRequestStatus<RCall> dialStatus2(call2, &RCall::DialCancel);
       
  9848 	CleanupStack::PushL(dialStatus2);
       
  9849 	call2.Dial(dialStatus2, number2); 
       
  9850 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus2, ETimeMedium), KErrNone, _L("RCall::Dial timed-out"));
       
  9851 	ASSERT_EQUALS(dialStatus2.Int(), KErrNone, _L("RCall::Dial returned with an error"));
       
  9852 
       
  9853 	// ===  Check call caps ===
       
  9854 
       
  9855 	// Check RCall::NotifyCapsChange on call 2 completes with caps in set of KCapsVoice | KCapsHangUp.
       
  9856 	RCall::TCaps wantedCallCaps, unwantedCallCaps;
       
  9857 	wantedCallCaps.iFlags = RCall::KCapsVoice | RCall::KCapsHangUp; 
       
  9858 	unwantedCallCaps.iFlags = 0;
       
  9859 	const TInt wantedStatus = KErrNone;
       
  9860 	iCallControlTestHelper.WaitForCallNotifyCapsChange(call2, 
       
  9861 													   notifyCapsChangeStatus,
       
  9862 													   callCaps,
       
  9863 													   wantedCallCaps,
       
  9864 													   unwantedCallCaps,
       
  9865 													   wantedStatus);
       
  9866 	
       
  9867 	// Check RCall::GetCaps on call 2 supports KCapsHangUp | KCapsVoice.
       
  9868 	ASSERT_EQUALS(call2.GetCaps(callCaps), KErrNone, _L("RCall::GetCaps returned an error"));
       
  9869 	ASSERT_BITS_SET(callCaps.iFlags, wantedCallCaps.iFlags, KNoUnwantedBits, _L("RCall::GetCaps returned wrong caps"))
       
  9870 
       
  9871 	// Check RMobileCall::NotifyMobileCallCapsChange on call 2 completes with iCallControlCaps in set of KCapsVoice | KCapsSwap | KCapsHangUp | KCapsTransfer | KCapsJoin.
       
  9872 	// Check RMobileCall::NotifyMobileCallCapsChange on call 2 completes with iCallEventCaps in set of KCapsLocalHold | KCapsLocalTransfer | KCapsRemoteHold | KCapsRemoteTerminate | KCapsRemoteConferenceCreate.
       
  9873 	RMobileCall::TMobileCallCapsV1 wantedMobileCaps;
       
  9874 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice |
       
  9875 										RMobileCall::KCapsSwap  |
       
  9876 										RMobileCall::KCapsHangUp |
       
  9877 										RMobileCall::KCapsTransfer |
       
  9878 										RMobileCall::KCapsJoin;
       
  9879 	wantedMobileCaps.iCallEventCaps = RMobileCall::KCapsLocalHold |
       
  9880 									  RMobileCall::KCapsLocalTransfer |
       
  9881 									  RMobileCall::KCapsRemoteHold |
       
  9882 									  RMobileCall::KCapsRemoteTerminate |
       
  9883 									  RMobileCall::KCapsRemoteConferenceCreate;
       
  9884 	TCmpRMobileCallTMobileCallCaps mobileCapsComp(wantedMobileCaps,mobileCallCaps, *this);
       
  9885 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(call2, 
       
  9886 																	   notifyMobileCallCapsChangeStatus,
       
  9887 																	   mobileCapsComp,
       
  9888 																	   wantedStatus);
       
  9889 	
       
  9890 	// Check RMobileCall::GetMobileCallCaps on call 2 includes iCallControlCaps in set of KCapsVoice | KCapsSwap | KCapsHangUp | KCapsTransfer | KCapsJoin.
       
  9891 	// Check RMobileCall::GetMobileCallCaps on call 2 includes iCallEventCaps in set of KCapsLocalHold | KCapsLocalTransfer | KCapsRemoteHold | KCapsRemoteTerminate | KCapsRemoteConferenceCreate.
       
  9892 	ASSERT_EQUALS(call2.GetMobileCallCaps(mobileCallCapsPckg), KErrNone, _L("RMobileCall::GetMobileCallCaps returned with an error"))
       
  9893 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | 
       
  9894 										RMobileCall::KCapsSwap  |
       
  9895 								    	RMobileCall::KCapsHangUp |
       
  9896 										RMobileCall::KCapsTransfer|
       
  9897 										RMobileCall::KCapsJoin;
       
  9898 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps,KNoUnwantedBits,
       
  9899 											   _L("RMobileCall::GetMobileCallCaps returned unexpected iCallControlCaps"))
       
  9900 	
       
  9901 	wantedMobileCaps.iCallEventCaps = RMobileCall::KCapsLocalHold | 
       
  9902 									  RMobileCall::KCapsLocalTransfer |
       
  9903 									  RMobileCall::KCapsRemoteHold | 
       
  9904 									  RMobileCall::KCapsRemoteTerminate | 
       
  9905 									  RMobileCall::KCapsRemoteConferenceCreate;
       
  9906 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedMobileCaps.iCallEventCaps,KNoUnwantedBits,
       
  9907 											 _L("RMobileCall::GetMobileCallCaps returned unexpected iCallEventCaps"))										   
       
  9908 
       
  9909 
       
  9910 
       
  9911 	// ===  Check call status ===
       
  9912 	
       
  9913 	// Check RCall::NotifyStatusChange on call 2 completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  9914 	RCall::TStatus expectedCallStatus = RCall::EStatusDialling;
       
  9915 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call2,
       
  9916 														 notifyStatusChangeStatus,
       
  9917 														 callStatus,
       
  9918 														 expectedCallStatus,
       
  9919 														 wantedStatus);
       
  9920 	
       
  9921 	call2.NotifyStatusChange(notifyStatusChangeStatus,callStatus);
       
  9922 	expectedCallStatus = RCall::EStatusConnecting;
       
  9923 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call2,
       
  9924 													 notifyStatusChangeStatus,
       
  9925 													 callStatus,
       
  9926 													 expectedCallStatus,
       
  9927 													 wantedStatus);
       
  9928 	
       
  9929 	call2.NotifyStatusChange(notifyStatusChangeStatus,callStatus);
       
  9930 	expectedCallStatus = RCall::EStatusConnected;
       
  9931 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call2,
       
  9932 													 notifyStatusChangeStatus,
       
  9933 													 callStatus,
       
  9934 													 expectedCallStatus,
       
  9935 													 wantedStatus);	
       
  9936 															
       
  9937 	// Check RCall::GetStatus on call 2 returns EStatusConnected.
       
  9938 	ASSERT_EQUALS(call2.GetStatus(callStatus),KErrNone, _L("RCall::GetStatus returned an error"));
       
  9939 	ASSERT_EQUALS(callStatus, RCall::EStatusConnected, _L("RCall::GetStatus did not return RCall::EStatusConnected"));
       
  9940 	
       
  9941 	// Check RMobileCall::NotifyMobileCallStatusChange on call 2 completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
  9942 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusDialling;
       
  9943 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call2,
       
  9944 															notifyMobileCallStatusChangeStatus2,
       
  9945 															mobileCallStatus2,
       
  9946 															expectedMobileCallStatus,
       
  9947 															wantedStatus);
       
  9948 															
       
  9949 	call2.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus2, mobileCallStatus2);
       
  9950 	expectedMobileCallStatus = RMobileCall::EStatusConnecting;
       
  9951 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call2,
       
  9952 															notifyMobileCallStatusChangeStatus2,
       
  9953 															mobileCallStatus2,
       
  9954 															expectedMobileCallStatus,
       
  9955 															wantedStatus);
       
  9956 															
       
  9957 	call2.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus2, mobileCallStatus2);
       
  9958 	expectedMobileCallStatus = RMobileCall::EStatusConnected;															
       
  9959 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call2,
       
  9960 															notifyMobileCallStatusChangeStatus2,
       
  9961 															mobileCallStatus2,
       
  9962 															expectedMobileCallStatus,
       
  9963 															wantedStatus);
       
  9964 
       
  9965 	// Check RMobileCall::GetMobileCallStatus on call 2 returns status of EStatusConnected.
       
  9966 	ASSERT_EQUALS(call2.GetMobileCallStatus(mobileCallStatus2), KErrNone, _L("RMobileCall::GetMobileStatus returned an error"))
       
  9967 	ASSERT_EQUALS(mobileCallStatus2, RMobileCall::EStatusConnected, _L("RMobileCall::GetMobileStatus did not return a status EStatusConnected"))
       
  9968 	
       
  9969 	// ===  Check remote party info ===
       
  9970 
       
  9971 	// Check RMobilePhone::NotifyRemotePartyInfoChange on call 2 completes with direction of EMobileOriginated
       
  9972     TPtrC remoteNumber;
       
  9973 	RMobileCall:: TMobileCallRemotePartyInfoV1 wantedRpInfo;
       
  9974 	wantedRpInfo.iDirection= RMobileCall::EMobileOriginated;
       
  9975 	TCmpRMobileCallTMobileCallRemotePartyInfo rpInfoComp(wantedRpInfo,rpInfo, *this);
       
  9976 	iCallControlTestHelper.WaitForMobileCallNotifyRemotePartyInfoChange(call2,
       
  9977 																		notifyRemotePartyInfoChangeStatus,
       
  9978 																		rpInfoComp,
       
  9979 																		wantedStatus);
       
  9980 
       
  9981 	// Post notifier for Call2 RMobileCall::NotifyMobileCallStatusChange
       
  9982 	call2.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus2, mobileCallStatus2);
       
  9983 	
       
  9984 	// Post notifier for Call1 RMobileCall::NotifyMobileCallStatusChange
       
  9985 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
  9986 	TExtEtelRequestStatus notifyMobileCallStatusChangeStatus(call1, EMobileCallNotifyMobileCallStatusChange);
       
  9987 	CleanupStack::PushL(notifyMobileCallStatusChangeStatus);
       
  9988 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallStatus);
       
  9989 	
       
  9990 	// Post notifier for event2 RMobileCall::NotifyCallEvent
       
  9991 	RMobileCall::TMobileCallEvent event2;
       
  9992 	TExtEtelRequestStatus notifyCallEventStatus2(call2, EMobileCallNotifyCallEvent);
       
  9993 	CleanupStack::PushL(notifyCallEventStatus2);
       
  9994 	call2.NotifyCallEvent(notifyCallEventStatus2,event2);
       
  9995 	
       
  9996 	// Post notifier for event1 RMobileCall::NotifyCallEvent
       
  9997 	RMobileCall::TMobileCallEvent event;
       
  9998 	TExtEtelRequestStatus notifyCallEventStatus(call1, EMobileCallNotifyCallEvent);
       
  9999 	CleanupStack::PushL(notifyCallEventStatus);
       
 10000 	call1.NotifyCallEvent(notifyCallEventStatus,event);
       
 10001 	
       
 10002 	// Swap call 1 
       
 10003 	TExtEtelRequestStatus swapStatus(call1, EMobileCallSwap);
       
 10004 	CleanupStack::PushL(swapStatus);
       
 10005 	call1.Swap(swapStatus);
       
 10006 	ASSERT_EQUALS(WaitForRequestWithTimeOut(swapStatus, ETimeMedium),KErrNone, _L("RMobileCall::Swap timed out"));
       
 10007 	ASSERT_EQUALS(swapStatus.Int(), KErrNone, _L("RMobileCall::Swap returned with an error"));		
       
 10008 	
       
 10009 	// ===  Check call status for calls 1 and 2 ===
       
 10010 
       
 10011 	// Check RMobileCall::NotifyMobileCallStatusChange on call 2 completes with EStatusHold
       
 10012 	expectedMobileCallStatus = RMobileCall::EStatusHold;
       
 10013 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call2,
       
 10014 															notifyMobileCallStatusChangeStatus2,
       
 10015 															mobileCallStatus2,
       
 10016 															expectedMobileCallStatus,
       
 10017 															wantedStatus);
       
 10018 
       
 10019 	// Check RMobileCall::GetMobileCallStatus on call 2 returns status of EStatusHold
       
 10020 	ASSERT_EQUALS(call2.GetMobileCallStatus(mobileCallStatus2), KErrNone, _L("RMobileCall::GetMobileStatus returned an error"));
       
 10021 	ASSERT_EQUALS(mobileCallStatus2, RMobileCall::EStatusHold, _L("RMobileCall::GetMobileStatus did not return a status EStatusHold"));
       
 10022 	
       
 10023 	// Check RMobileCall::NotifyMobileCallStatusChange on call 1 completes with EStatusResume
       
 10024 	expectedMobileCallStatus = RMobileCall::EStatusConnected;
       
 10025 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
 10026 															notifyMobileCallStatusChangeStatus,
       
 10027 															mobileCallStatus,
       
 10028 															expectedMobileCallStatus,
       
 10029 															wantedStatus);
       
 10030 
       
 10031 	// Check RMobileCall::GetMobileCallStatus on call 1 returns status of EStatusResume
       
 10032 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone, _L("RMobileCall::GetMobileStatus returned an error"));
       
 10033 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected, _L("RMobileCall::GetMobileStatus did not return a status EStatusResume"));
       
 10034 	
       
 10035 	// ===  Check call event completes ===
       
 10036 
       
 10037 	// Check RMobileCall::NotifyCallEvent on call 2 completes with ELocalHold
       
 10038 	RMobileCall::TMobileCallEvent expectedEvent= RMobileCall::ELocalHold;
       
 10039 	iCallControlTestHelper.WaitForMobileCallNotifyCallEvent(call2,
       
 10040 										                   notifyCallEventStatus2,
       
 10041 														   event2, 
       
 10042 														   expectedEvent,
       
 10043 														   wantedStatus);
       
 10044 	
       
 10045 	// Check RMobileCall::NotifyCallEvent on call 1 completes with ELocalResume
       
 10046 	expectedEvent= RMobileCall::ELocalResume;
       
 10047 	iCallControlTestHelper.WaitForMobileCallNotifyCallEvent(call1,
       
 10048 										                   notifyCallEventStatus,
       
 10049 														   event, 
       
 10050 														   expectedEvent,
       
 10051 														   wantedStatus);
       
 10052 
       
 10053     // Wait so that call duration increases
       
 10054     User::After(KOneSecond * 2);
       
 10055 
       
 10056 	// Get call duration of call 1 
       
 10057 	TTimeIntervalSeconds duration1;
       
 10058 	ASSERT_EQUALS(call1.GetCallDuration(duration1), KErrNone, _L("RCall::GetCallDuration returned with an error"));
       
 10059 
       
 10060 	// Get call duration of call 2 
       
 10061 	TTimeIntervalSeconds duration2;
       
 10062 	ASSERT_EQUALS(call2.GetCallDuration(duration2), KErrNone, _L("RCall::GetCallDuration returned with an error"));
       
 10063 
       
 10064 	// Check call duration of call 1 > duration of call 2
       
 10065 	ASSERT_TRUE(duration1.Int()>duration2.Int(), _L("RCall::GetCallDuration duration of call1 is not greater than the duration of call2"));
       
 10066 	
       
 10067 	// Hang up call 1 
       
 10068 	ASSERT_EQUALS(call1.HangUp(), KErrNone,_L("RMobileCall::HangUp returned with an error"));
       
 10069 	
       
 10070 	// Hang up call 2 
       
 10071 	ASSERT_EQUALS(call2.HangUp(), KErrNone,_L("RMobileCall::HangUp returned with an error"));
       
 10072 	
       
 10073 	////////////////////////////////////////////////////////////////
       
 10074 	// TEST END
       
 10075 	////////////////////////////////////////////////////////////////
       
 10076 
       
 10077     StartCleanup();
       
 10078 	
       
 10079 	// Pop:
       
 10080     // dialStatus
       
 10081     // holdStatus
       
 10082     // notifyCapsChangeStatus
       
 10083     // notifyMobileCallCapsChangeStatus
       
 10084     // notifyStatusChangeStatus
       
 10085     // notifyMobileCallStatusChangeStatus2
       
 10086     // notifyRemotePartyInfoChangeStatus
       
 10087     // dialStatus2
       
 10088     // notifyMobileCallStatusChangeStatus
       
 10089     // notifyCallEventStatus2
       
 10090     // notifyCallEventStatus
       
 10091     // swapStatus
       
 10092 	CleanupStack::PopAndDestroy(12, &dialStatus);
       
 10093 		
       
 10094 	return TestStepResult();
       
 10095 	}
       
 10096 
       
 10097 TPtrC CCTSYIntegrationTestCallControl0026::GetTestStepName()
       
 10098 /**
       
 10099  * @return The test step name.
       
 10100  */
       
 10101 	{
       
 10102 	return  _L("CCTSYIntegrationTestCallControl0026");
       
 10103 	}
       
 10104 
       
 10105 
       
 10106 
       
 10107 CCTSYIntegrationTestCallControl0027::CCTSYIntegrationTestCallControl0027(CEtelSessionMgr& aEtelSessionMgr)
       
 10108 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 10109 /**
       
 10110  * Constructor.
       
 10111  */
       
 10112 	{
       
 10113 	SetTestStepName(CCTSYIntegrationTestCallControl0027::GetTestStepName());
       
 10114 	}
       
 10115 
       
 10116 CCTSYIntegrationTestCallControl0027::~CCTSYIntegrationTestCallControl0027()
       
 10117 /**
       
 10118  * Destructor.
       
 10119  */
       
 10120 	{
       
 10121 	}
       
 10122 
       
 10123 TVerdict CCTSYIntegrationTestCallControl0027::doTestStepL()
       
 10124 /**
       
 10125  * @SYMTestCaseID BA-CTSY-INT-CCON-0027
       
 10126  * @SYMFssID BA/CTSY/CCON-0027
       
 10127  * @SYMTestCaseDesc Hold an MO call then answer an MT call.
       
 10128  * @SYMTestPriority High
       
 10129  * @SYMTestActions RMobileCall::NotifyMobileCallCapsChange,
       
 10130  *                 RMobileCall::GetMobileCallStatus,
       
 10131  *                 RMobileCall::NotifyCallEvent, RCall::GetInfo,
       
 10132  *                 RCall::NotifyStatusChange,
       
 10133  *                 RCall::NotifyCapsChange,
       
 10134  *                 RMobilePhone::NotifyDTMFCapsChange,
       
 10135  *                 RMobileCall::GetMobileCallCaps,
       
 10136  *                 RLine::NotifyStatusChange,
       
 10137  *                 RMobileCall::GetMobileCallInfo,
       
 10138  *                 RMobileCall::NotifyMobileCallStatusChange,
       
 10139  *                 RMobilePhone::GetDTMFCaps
       
 10140  * @SYMTestExpectedResults Pass - Second call is answered without affecting held call.
       
 10141  * @SYMTestType CIT
       
 10142  * @SYMTestCaseDependencies live/manual
       
 10143  *
       
 10144  * Reason for test: Verify call  status, call caps, line status are correct.
       
 10145  *
       
 10146  * @return - TVerdict code
       
 10147  */
       
 10148 	{
       
 10149 	////////////////////////////////////////////////////////////////
       
 10150 	// SET UP
       
 10151 	////////////////////////////////////////////////////////////////
       
 10152 	
       
 10153 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 10154 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 10155  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
 10156 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 10157 
       
 10158 	// Check phone supports KCapsVoice
       
 10159 	RMobilePhone& mobilePhone=iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);	
       
 10160 	RMobilePhone::TCaps caps;
       
 10161 	CHECK_EQUALS_L(mobilePhone.GetCaps(caps), KErrNone, _L("RMobilePhone::GetCaps return value is not KErrNone"));
       
 10162 	TUint32 expectedServiceCaps=RMobilePhone::KCapsVoice;
       
 10163 	CHECK_BITS_SET_L(caps.iFlags, expectedServiceCaps, KNoUnwantedBits, _L("RMobilePhone::GetCaps returned wrong caps"));
       
 10164 		
       
 10165 	// Get Voice line 1 
       
 10166 	RMobileLine& mobileLine1=iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
 10167 
       
 10168 	// Get call 1 
       
 10169 	RMobileCall& mobileCall1=iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);	
       
 10170 	
       
 10171 	// Dial a number that answers on call 1	
       
 10172 	TPtrC number; 
       
 10173 	CHECK_TRUE_L(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number) != EFalse, _L("GetStringFromConfig did not complete as expected"));
       
 10174 	DEBUG_PRINTF2(_L("Board Now Dialling: %S"), &number);
       
 10175 	TCoreEtelRequestStatus<RMobileCall> dialStatus(mobileCall1, &RCall::DialCancel);
       
 10176 	CleanupStack::PushL(dialStatus);
       
 10177 	mobileCall1.Dial(dialStatus, number); 
       
 10178 	CHECK_EQUALS_L(WaitForRequestWithTimeOut(dialStatus, ETimeMedium), KErrNone, _L("RCall::Dial timed-out"));
       
 10179 	CHECK_EQUALS_L(dialStatus.Int(), KErrNone, _L("RCall::Dial problem dialling"));
       
 10180 
       
 10181 	// Hold call 1
       
 10182 	TExtEtelRequestStatus holdStatus(mobileCall1, EMobileCallHold);
       
 10183 	CleanupStack::PushL(holdStatus);
       
 10184 	mobileCall1.Hold(holdStatus);
       
 10185 	CHECK_EQUALS_L(WaitForRequestWithTimeOut(holdStatus, ETimeMedium), KErrNone, _L("RMobileCall::Hold timed-out"));
       
 10186 	CHECK_EQUALS_L(holdStatus.Int(), KErrNone, _L("RMobileCall::Hold problem holding call"));
       
 10187 
       
 10188 	// Ensure RMobileCall::GetMobileCallStatus for call 1 is EStatusHold 	
       
 10189 	RMobileCall::TMobileCallStatus getMobileCallStatus;
       
 10190 	CHECK_EQUALS_L(mobileCall1.GetMobileCallStatus(getMobileCallStatus), KErrNone, _L("RMobileCall::GetMobileCallStatus return code is not KErrNone"));
       
 10191 	CHECK_EQUALS_L(getMobileCallStatus, RMobileCall::EStatusHold, _L("RMobileCall::GetMobileCallStatus getMobileCallStatus incorrect error"));
       
 10192 	
       
 10193 	////////////////////////////////////////////////////////////////
       
 10194 	// SET UP END
       
 10195 	////////////////////////////////////////////////////////////////
       
 10196 	
       
 10197 	StartTest();
       
 10198 	
       
 10199 	////////////////////////////////////////////////////////////////
       
 10200 	// TEST START
       
 10201 	////////////////////////////////////////////////////////////////
       
 10202 
       
 10203 	// Post notifier for RLine::NotifyIncomingCall
       
 10204 	TCoreEtelRequestStatus<RLine> notifyIncomingCallStatus (mobileLine1,&RLine::NotifyIncomingCallCancel);
       
 10205 	CleanupStack::PushL(notifyIncomingCallStatus);
       
 10206 	TName name;
       
 10207 	mobileLine1.NotifyIncomingCall(notifyIncomingCallStatus,name);
       
 10208 		
       
 10209 	// Request incoming call from RPS. 
       
 10210 	RPSRequestIncomingCallL(EVoiceLine);
       
 10211 
       
 10212 	// Check RLine::NotifyIncomingCall completes with call name.
       
 10213 	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyIncomingCallStatus,ETimeMedium),KErrNone, 
       
 10214 			_L("RLine::NotifyIncomingCall did not complete without error"));
       
 10215 	ASSERT_EQUALS(notifyIncomingCallStatus.Int(), KErrNone,  
       
 10216 			_L("RLine::NotifyIncomingCall set requestStatus to an error"));
       
 10217 	ASSERT_TRUE(name.Length() > 0,  
       
 10218 			_L("RLine::NotifyIncomingCall did not set a line name"));
       
 10219 
       
 10220 	// ===  Check call caps ===
       
 10221 
       
 10222 	// Get the incoming call
       
 10223     TCallId incomingCallId;
       
 10224     RMobileCall& incomingCall = iEtelSessionMgr.GetIncomingCallL(KMainServer, KMainPhone, KVoiceLine, name, incomingCallId);
       
 10225 
       
 10226     // Post notification RMobileCall::NotifyCapsChange for call 2
       
 10227 	TCoreEtelRequestStatus<RMobileCall> notifyCapsChangeStatus2(incomingCall, &RMobileCall::NotifyCapsChangeCancel);
       
 10228 	CleanupStack::PushL(notifyCapsChangeStatus2);
       
 10229 	RMobileCall::TCaps notifyCapsChangeCaps2;
       
 10230 	incomingCall.NotifyCapsChange(notifyCapsChangeStatus2, notifyCapsChangeCaps2);
       
 10231 
       
 10232     // Post notification RMobileCall::NotifyMobileCallCapsChange for call 2
       
 10233 	TExtEtelRequestStatus notifyMobileCallCapsChangeStatus2(incomingCall, EMobileCallNotifyMobileCallCapsChange);
       
 10234 	CleanupStack::PushL(notifyMobileCallCapsChangeStatus2);
       
 10235 	RMobileCall::TMobileCallCapsV1 pkgType2;
       
 10236 	RMobileCall::TMobileCallCapsV1Pckg pkgArg2(pkgType2);
       
 10237 	incomingCall.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus2, pkgArg2);
       
 10238 
       
 10239     // Post notification RMobileCall::NotifyStatusChange for call 2
       
 10240 	TCoreEtelRequestStatus<RMobileCall> notifyStatusChangeStatus2(incomingCall, &RMobileCall::NotifyStatusChangeCancel);
       
 10241 	CleanupStack::PushL(notifyStatusChangeStatus2);
       
 10242 	RCall::TStatus callStatus2;
       
 10243 	incomingCall.NotifyStatusChange(notifyStatusChangeStatus2, callStatus2);
       
 10244 
       
 10245     // Post notification RMobileCall::NotifyMobileCallStatusChange for call 2
       
 10246 	TExtEtelRequestStatus notifyMobileCallStatusChangeStatus2(incomingCall, EMobileCallNotifyMobileCallStatusChange);
       
 10247 	CleanupStack::PushL(notifyMobileCallStatusChangeStatus2);
       
 10248 	RMobileCall::TMobileCallStatus mobileCallState2;
       
 10249 	incomingCall.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus2, mobileCallState2);
       
 10250 
       
 10251 	// Answer incoming call on call 2.
       
 10252 	TCoreEtelRequestStatus<RCall> answerIncomingStatus(incomingCall, &RCall::AnswerIncomingCallCancel);
       
 10253 	CleanupStack::PushL(answerIncomingStatus);	
       
 10254 	incomingCall.AnswerIncomingCall(answerIncomingStatus);
       
 10255     ASSERT_EQUALS(WaitForRequestWithTimeOut(answerIncomingStatus, ETimeLong), KErrNone, _L("RCall::AnswerIncomingCall timed out"));
       
 10256     ASSERT_EQUALS(answerIncomingStatus.Int(), KErrNone, _L("RCall::AnswerIncomingCall returned an error"));
       
 10257 
       
 10258 	// ===  Check call caps ===
       
 10259 
       
 10260 	// Check RCall::NotifyCapsChange on call 2 completes with caps in set of KCapsVoice | KCapsHangUp.
       
 10261 	// Check RCall::NotifyCapsChange on call 2 completes with caps NOT in set of KCapsAnswer | KCapsDial.	
       
 10262     RCall::TCaps wantedCaps;
       
 10263     RCall::TCaps unwantedCaps;
       
 10264     wantedCaps.iFlags=RCall::KCapsVoice | RCall::KCapsHangUp;
       
 10265 	unwantedCaps.iFlags=RCall::KCapsAnswer | RCall::KCapsDial;
       
 10266 	iCallControlTestHelper.WaitForCallNotifyCapsChange(incomingCall,
       
 10267 													   notifyCapsChangeStatus2,
       
 10268 													   notifyCapsChangeCaps2,
       
 10269 													   wantedCaps,
       
 10270 													   unwantedCaps,
       
 10271 													   KErrNone);
       
 10272 	
       
 10273 	// Check RCall::GetCaps on call 2 supports caps in set of KCapsHangUp | KCapsVoice.	
       
 10274 	// Check RCall::GetCaps on call 2 supports caps NOT in set of KCapsAnswer | KCapsDial.
       
 10275     RCall::TCaps getcaps;
       
 10276 	TUint32 expectedGetCaps=RCall::KCapsHangUp | RCall::KCapsVoice;
       
 10277 	TUint32 unexpectedGetCaps=RCall::KCapsAnswer | RCall::KCapsDial;
       
 10278 	ASSERT_EQUALS(incomingCall.GetCaps(getcaps), KErrNone, _L("RCall::GetCaps did not return KErrNone"));	
       
 10279 	ASSERT_BITS_SET(getcaps.iFlags, expectedGetCaps, unexpectedGetCaps, _L("RMobilePhone::GetCaps returned wrong caps"));
       
 10280 
       
 10281 	// Check RMobileCall::NotifyMobileCallCapsChange on call 2 completes with iCallControlCaps in set of KCapsVoice | KCapsHangUp | KCapsJoin.
       
 10282 	// Check RMobileCall::NotifyMobileCallCapsChange on call 2 completes with iCallEventCaps in set of KCapsLocalHold | KCapsRemoteHold | KCapsRemoteTerminate | KCapsRemoteConferenceCreate.
       
 10283     RMobileCall::TMobileCallCapsV1 expected;
       
 10284     expected.iCallControlCaps=RMobileCall::KCapsVoice | RMobileCall::KCapsHangUp | RMobileCall::KCapsJoin;
       
 10285 	expected.iCallEventCaps=RMobileCall::KCapsLocalHold | RMobileCall::KCapsRemoteHold | RMobileCall::KCapsRemoteTerminate | RMobileCall::KCapsRemoteConferenceCreate;
       
 10286     TCmpRMobileCallTMobileCallCaps aMobileCallCapsV1Call2(expected, pkgType2, *this);
       
 10287 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(incomingCall,
       
 10288 																	   notifyMobileCallCapsChangeStatus2,
       
 10289 																	   aMobileCallCapsV1Call2,
       
 10290 																	   KErrNone);
       
 10291 																	   
       
 10292 	// Check RMobileCall::GetMobileCallCaps on call 2 includes iCallControlCaps in set of KCapsVoice | KCapsHangUp | KCapsJoin.
       
 10293     RMobileCall::TMobileCallCapsV1 getMobileCallCapsPkgType;
       
 10294 	RMobileCall::TMobileCallCapsV1Pckg getMobileCallCapsPkgArg(getMobileCallCapsPkgType);
       
 10295 	ASSERT_EQUALS(incomingCall.GetMobileCallCaps(getMobileCallCapsPkgArg), KErrNone, _L("RMobileCall::GetMobileCallCaps return code is not KErrNone"));
       
 10296 	TUint32 expectedCallCaps=RMobileCall::KCapsVoice | RMobileCall::KCapsJoin | RMobileCall::KCapsHangUp;
       
 10297 	ASSERT_BITS_SET(getMobileCallCapsPkgType.iCallControlCaps, expectedCallCaps, KNoUnwantedBits, _L("RMobilePhone::GetMobileCallCaps returned wrong caps"));
       
 10298 
       
 10299 	// Check RMobileCall::GetMobileCallCaps on call 2 includes iCallEventCaps in set of KCapsRemoteHold | KCapsRemoteTerminate | KCapsRemoteConferenceCreate.
       
 10300 	expectedCallCaps=RMobileCall::KCapsRemoteHold | RMobileCall::KCapsRemoteTerminate | RMobileCall::KCapsRemoteConferenceCreate;
       
 10301 	ASSERT_BITS_SET(getMobileCallCapsPkgType.iCallEventCaps, expectedCallCaps, KNoUnwantedBits, _L("RMobilePhone::GetMobileCallCaps returned wrong caps"));
       
 10302 	
       
 10303 	// ===  Check call status ===
       
 10304 
       
 10305 	// Check RCall::NotifyStatusChange on call 2 completes with EStatusAnswering -> EStatusConnected.
       
 10306     RCall::TStatus expectedCallStatus;
       
 10307 	expectedCallStatus=RCall::EStatusAnswering;
       
 10308 	iCallControlTestHelper.WaitForCallNotifyStatusChange(incomingCall,
       
 10309 														 notifyStatusChangeStatus2,
       
 10310 														 callStatus2,
       
 10311 														 expectedCallStatus,
       
 10312 														 KErrNone);
       
 10313 	
       
 10314 	incomingCall.NotifyStatusChange(notifyStatusChangeStatus2, callStatus2);
       
 10315 	
       
 10316 	expectedCallStatus=RCall::EStatusConnected;
       
 10317 	iCallControlTestHelper.WaitForCallNotifyStatusChange(incomingCall,
       
 10318 														 notifyStatusChangeStatus2,
       
 10319 														 callStatus2,
       
 10320 														 expectedCallStatus,
       
 10321 														 KErrNone);
       
 10322 														 
       
 10323 	incomingCall.NotifyStatusChange(notifyStatusChangeStatus2, callStatus2);
       
 10324 	
       
 10325 	// Check RCall::GetStatus on call 2 returns EStatusConnected.
       
 10326     RCall::TStatus getStatus;
       
 10327 	ASSERT_EQUALS(incomingCall.GetStatus(getStatus), KErrNone, _L("RMobileCall::GetStatus return code is not KErrNone"));
       
 10328 	ASSERT_EQUALS(getStatus, RCall::EStatusConnected, _L("RMobileCall::GetStatus getStatus incorrect error"));
       
 10329 	
       
 10330 	// Check RMobileCall::NotifyMobileCallStatusChange on call 2 completes with EStatusAnswering -> EStatusConnected.
       
 10331     RMobileCall::TMobileCallStatus expectedMobileCallState;
       
 10332 	expectedMobileCallState=RMobileCall::EStatusAnswering;
       
 10333 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(incomingCall,
       
 10334 																		 notifyMobileCallStatusChangeStatus2,
       
 10335 																		 mobileCallState2,
       
 10336 																		 expectedMobileCallState,
       
 10337 																		 KErrNone);
       
 10338 	
       
 10339 	incomingCall.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus2, mobileCallState2);
       
 10340 	
       
 10341 	expectedMobileCallState=RMobileCall::EStatusConnected;
       
 10342 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(incomingCall,
       
 10343 																		 notifyMobileCallStatusChangeStatus2,
       
 10344 																		 mobileCallState2,
       
 10345 																		 expectedMobileCallState,
       
 10346 																		 KErrNone);
       
 10347 	
       
 10348 	// Check RMobileCall::GetMobileCallStatus on call 2 returns status of EStatusConnected.
       
 10349 	ASSERT_EQUALS(incomingCall.GetMobileCallStatus(getMobileCallStatus), KErrNone, _L("RMobileCall::GetMobileCallStatus return code is not KErrNone"));
       
 10350 	ASSERT_EQUALS(getMobileCallStatus,RMobileCall::EStatusConnected, _L("RMobileCall::GetMobileCallStatus getMobileCallStatus incorrect error"));
       
 10351 
       
 10352 	// Check RMobileCall::GetMobileCallStatus on call 1 returns status of EStatusHold.
       
 10353 	ASSERT_EQUALS(mobileCall1.GetMobileCallStatus(getMobileCallStatus), KErrNone, _L("RMobileCall::GetMobileCallStatus return code is not KErrNone"));
       
 10354 	ASSERT_EQUALS(getMobileCallStatus, RMobileCall::EStatusHold, _L("RMobileCall::GetMobileCallStatus getMobileCallStatus incorrect error"));
       
 10355 	
       
 10356 	// ===  Check call info ===
       
 10357 
       
 10358 	// Check RCall::GetInfo on call 2 returns valid call name.
       
 10359     User::After(KOneSecond*2); // So that the call duration is not 0, check later that it has a value > 0
       
 10360     RCall::TCallInfo callInfo;
       
 10361 	ASSERT_EQUALS(incomingCall.GetInfo(callInfo), KErrNone, _L("RMobileCall::GetInfo return code is not KErrNone"));
       
 10362 	ASSERT_TRUE(callInfo.iCallName.Length()>0, _L("RMobileCall::GetInfo iCallName.Length() not greater than 0"));
       
 10363 	
       
 10364 	// Check RCall::GetInfo on call 2 returns valid voice line name.
       
 10365 	ASSERT_TRUE(callInfo.iLineName.Length()>0, _L("RMobileCall::GetInfo iLineName.Length() not greater than 0"));
       
 10366 
       
 10367 	// Check RCall::GetInfo on call 2 returns call status of EStatusConnected.
       
 10368 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusConnected, _L("RMobileCall::GetInfo iStatus incorrect error"));
       
 10369 	
       
 10370 	// Check RCall::GetInfo on call 2 returns call duration of > 0.
       
 10371 	TTimeIntervalSeconds time = 0;
       
 10372 	ASSERT_TRUE(callInfo.iDuration>time, _L("RMobileCall::GetInfo iDuration incorrect error"));
       
 10373 
       
 10374 	// Check RMobileCall::GetMobileCallInfo on call 2 returns iValid > 0.
       
 10375     RMobileCall::TMobileCallInfoV1 getMobileCallInfoPkgType;
       
 10376 	RMobileCall::TMobileCallInfoV1Pckg getMobileCallInfoPkgArg(getMobileCallInfoPkgType);
       
 10377 	ASSERT_EQUALS(incomingCall.GetMobileCallInfo(getMobileCallInfoPkgArg), KErrNone, _L("RMobileCall::GetMobileCallInfo return code is not KErrNone"));
       
 10378 	
       
 10379 	// Check RMobileCall::GetMobileCallInfo on call 2 returns data for attributes makred as valid in iValid.
       
 10380 	ASSERT_TRUE(getMobileCallInfoPkgType.iValid>0, _L("RMobileCall::GetMobileCallInfo iValid is not > 0"));
       
 10381 	
       
 10382 	// Check RMobileCall::GetMobileCallInfo on call 2 returns valid line name.
       
 10383 	ASSERT_TRUE(getMobileCallInfoPkgType.iLineName.Length()>0, _L("RMobileCall::GetMobileCallInfo iLineName.Length() is not > 0"));
       
 10384 
       
 10385 	// Hang up call 2. 
       
 10386 	ASSERT_EQUALS(incomingCall.HangUp(), KErrNone, _L("RMobileCall::HangUp return code is not KErrNone"));
       
 10387 
       
 10388 	// Post notification RMobileCall::NotifyStatusChange
       
 10389 	TCoreEtelRequestStatus<RMobileCall> notifyStatusChangeStatus(mobileCall1, &RMobileCall::NotifyStatusChangeCancel);
       
 10390 	CleanupStack::PushL(notifyStatusChangeStatus);
       
 10391 	RCall::TStatus callStatus;
       
 10392 	mobileCall1.NotifyStatusChange(notifyStatusChangeStatus, callStatus);
       
 10393 
       
 10394     // Post notification RMobileCall::NotifyMobileCallStatusChange
       
 10395 	TExtEtelRequestStatus notifyMobileCallStatusChangeStatus(mobileCall1, EMobileCallNotifyMobileCallStatusChange);
       
 10396 	CleanupStack::PushL(notifyMobileCallStatusChangeStatus);
       
 10397 	RMobileCall::TMobileCallStatus mobileCallState;
       
 10398 	mobileCall1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallState);
       
 10399 
       
 10400 	// Post notification RMobileCall::NotifyCallEvent	
       
 10401 	TExtEtelRequestStatus notifyCallEventStatus(mobileCall1, EMobileCallNotifyCallEvent);
       
 10402 	CleanupStack::PushL(notifyCallEventStatus);
       
 10403 	RMobileCall::TMobileCallEvent mobileCallEvent;
       
 10404 	mobileCall1.NotifyCallEvent(notifyCallEventStatus, mobileCallEvent);
       
 10405 	
       
 10406 	// Post notification RMobilePhone::NotifyDTMFCapsChange
       
 10407 	TExtEtelRequestStatus notifyDTMFCapsChangeStatus(mobilePhone, EMobilePhoneNotifyDTMFCapsChange);
       
 10408 	CleanupStack::PushL(notifyDTMFCapsChangeStatus);
       
 10409 	TUint32 notifyDTMFCapsChangeCaps;
       
 10410 	mobilePhone.NotifyDTMFCapsChange(notifyDTMFCapsChangeStatus, notifyDTMFCapsChangeCaps);
       
 10411 		
       
 10412 	// Resume call 1.
       
 10413 	TExtEtelRequestStatus resumeStatus(mobileCall1, EMobileCallResume);
       
 10414 	CleanupStack::PushL(resumeStatus);
       
 10415 
       
 10416 	mobileCall1.Resume(resumeStatus);
       
 10417 	
       
 10418 	ASSERT_EQUALS(WaitForRequestWithTimeOut(resumeStatus, ETimeMedium), KErrNone, _L("RMobileCall::Resume timed-out"));
       
 10419 	ASSERT_EQUALS(resumeStatus.Int(), KErrNone, _L("RMobileCall::Resume resumeStatus completed with incorrect error"));
       
 10420 
       
 10421 	// ===  Check call status ===
       
 10422 
       
 10423 	// Check RCall::NotifyStatusChange on call 1 completes with EStatusConnected.
       
 10424 	expectedCallStatus=RCall::EStatusConnected;
       
 10425 	iCallControlTestHelper.WaitForCallNotifyStatusChange(mobileCall1,
       
 10426 														 notifyStatusChangeStatus,
       
 10427 														 callStatus,
       
 10428 														 expectedCallStatus,
       
 10429 														 KErrNone);
       
 10430 	
       
 10431 	// Check RCall::GetStatus on call 1 returns EStatusConnected.
       
 10432 	ASSERT_EQUALS(mobileCall1.GetStatus(getStatus), KErrNone, _L("RMobileCall::GetStatus return code is not KErrNone"));
       
 10433 	ASSERT_EQUALS(getStatus, RCall::EStatusConnected, _L("RMobileCall::GetStatus getStatus incorrect error"));
       
 10434 
       
 10435 	// Check RMobileCall::NotifyMobileCallStatusChange on call 1 completes with EStatusConnected.
       
 10436 	expectedMobileCallState=RMobileCall::EStatusConnected;
       
 10437 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(mobileCall1,
       
 10438 																		 notifyMobileCallStatusChangeStatus,
       
 10439 																		 mobileCallState,
       
 10440 																		 expectedMobileCallState,
       
 10441 																		 KErrNone);
       
 10442 	
       
 10443 	// Check RMobileCall::GetMobileCallStatus on call 1 returns status of EStatusConnected.
       
 10444 	ASSERT_EQUALS(mobileCall1.GetMobileCallStatus(getMobileCallStatus), KErrNone, _L("RMobileCall::GetMobileCallStatus return code is not KErrNone"));
       
 10445 	ASSERT_EQUALS(getMobileCallStatus, RMobileCall::EStatusConnected, _L("RMobileCall::GetMobileCallStatus getMobileCallStatus incorrect error"));
       
 10446 
       
 10447 	// ===  Check call event and DTMF caps ===
       
 10448 
       
 10449 	// Check RMobileCall::NotifyCallEvent on call 1 completes with ELocalResume
       
 10450 	RMobileCall::TMobileCallEvent expectedMobileCallEvent=RMobileCall::ELocalResume;
       
 10451 	iCallControlTestHelper.WaitForMobileCallNotifyCallEvent(mobileCall1,
       
 10452 															notifyCallEventStatus,
       
 10453 															mobileCallEvent,
       
 10454 															expectedMobileCallEvent,
       
 10455 															KErrNone);
       
 10456 
       
 10457 	// Check RMobilePhone::NotifyDTMFCapsChange on call 1 completes with caps in set of KCapsSendDTMFString | KCapsSendDTMFSingleTone
       
 10458 	TUint32 notifyDTMFCapsChangeWantedCaps=RMobilePhone::KCapsSendDTMFString | RMobilePhone::KCapsSendDTMFSingleTone;
       
 10459 	iCallControlTestHelper.WaitForMobilePhoneNotifyDTMFCapsChange(mobilePhone,
       
 10460 																  notifyDTMFCapsChangeStatus,
       
 10461 																  notifyDTMFCapsChangeCaps,
       
 10462 																  notifyDTMFCapsChangeWantedCaps,
       
 10463 																  KNoUnwantedBits,
       
 10464 																  KErrNone);
       
 10465 																  
       
 10466 	// Check RMobilePhone::GetDTMFCaps on call 1 returns caps in set of KCapsSendDTMFString | KCapsSendDTMFSingleTone
       
 10467 	TUint32 getDTMFCaps;
       
 10468 	ASSERT_EQUALS(mobilePhone.GetDTMFCaps(getDTMFCaps), KErrNone, _L("RMobilePhone::GetDTMFCaps return code is not KErrNone"));
       
 10469 	ASSERT_BITS_SET(getDTMFCaps, notifyDTMFCapsChangeWantedCaps, KNoUnwantedBits, _L("RMobilePhone::GetDTMFCaps returned wrong caps"));
       
 10470 
       
 10471 	// Hang up call 1
       
 10472 	ASSERT_EQUALS(mobileCall1.HangUp(), KErrNone, _L("RMobileCall::HangUp return code is not KErrNone"));
       
 10473 	
       
 10474 	////////////////////////////////////////////////////////////////
       
 10475 	// TEST END
       
 10476 	////////////////////////////////////////////////////////////////
       
 10477 
       
 10478     StartCleanup();
       
 10479 
       
 10480     //     dialStatus
       
 10481     //     holdStatus
       
 10482     //     notifyIncomingCallStatus
       
 10483     //     notifyCapsChangeStatus2
       
 10484     //     notifyMobileCallCapsChangeStatus2
       
 10485     //     notifyStatusChangeStatus2
       
 10486     //     notifyMobileCallStatusChangeStatus2
       
 10487     //     answerIncomingStatus
       
 10488     //     notifyStatusChangeStatus
       
 10489     //     notifyMobileCallStatusChangeStatus
       
 10490     //     notifyCallEventStatus
       
 10491     //     notifyDTMFCapsChangeStatus
       
 10492     //     resumeStatus
       
 10493 	CleanupStack::PopAndDestroy(13, &dialStatus);
       
 10494 
       
 10495 	
       
 10496 	return TestStepResult();
       
 10497 	}
       
 10498 
       
 10499 TPtrC CCTSYIntegrationTestCallControl0027::GetTestStepName()
       
 10500 /**
       
 10501  * @return The test step name.
       
 10502  */
       
 10503 	{
       
 10504 	return  _L("CCTSYIntegrationTestCallControl0027");
       
 10505 	}
       
 10506 
       
 10507 
       
 10508 
       
 10509 CCTSYIntegrationTestCallControl0028::CCTSYIntegrationTestCallControl0028(CEtelSessionMgr& aEtelSessionMgr)
       
 10510 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 10511 /**
       
 10512  * Constructor.
       
 10513  */
       
 10514 	{
       
 10515 	SetTestStepName(CCTSYIntegrationTestCallControl0028::GetTestStepName());
       
 10516 	}
       
 10517 
       
 10518 CCTSYIntegrationTestCallControl0028::~CCTSYIntegrationTestCallControl0028()
       
 10519 /**
       
 10520  * Destructor.
       
 10521  */
       
 10522 	{
       
 10523 	}
       
 10524 
       
 10525 TVerdict CCTSYIntegrationTestCallControl0028::doTestStepL()
       
 10526 /**
       
 10527  * @SYMTestCaseID BA-CTSY-INT-CCON-0028
       
 10528  * @SYMFssID BA/CTSY/CCON-0028
       
 10529  * @SYMTestCaseDesc Hold call which remote party then hangs up.
       
 10530  * @SYMTestPriority High
       
 10531  * @SYMTestActions RCall::NotifyStatusChange, RMobileCall::NotifyMobileCallStatusChange, RLine::NotifyStatusChange, RMobileLine::GetMobileLineStatus, RMobileLine::NotifyMobileLineStatusChange, RLine::GetStatus, RMobileCall::GetMobileCallStatus, RMobileCall::NotifyCallEvent, RCall::GetStatus
       
 10532  * @SYMTestExpectedResults Pass - Calls can be held and resumed.
       
 10533  * @SYMTestType CIT
       
 10534  * @SYMTestCaseDependencies live/automatic
       
 10535  *
       
 10536  * Reason for test: Verify call and line status are correct and call event completes.
       
 10537  *
       
 10538  * @return - TVerdict code
       
 10539  */
       
 10540 	{
       
 10541 
       
 10542 	////////////////////////////////////////////////////////////////
       
 10543 	// SET UP
       
 10544 	////////////////////////////////////////////////////////////////
       
 10545 
       
 10546 
       
 10547 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 10548 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
       
 10549  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
 10550 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 10551 
       
 10552 	// Check phone supports KCapsVoice.
       
 10553 	RMobilePhone::TCaps caps;
       
 10554 	CHECK_EQUALS_L(phone.GetCaps(caps), KErrNone, _L("RMobilePhone::GetCaps returned with an error."));
       
 10555 	CHECK_BITS_SET_L(caps.iFlags, RMobilePhone::KCapsVoice, KNoUnwantedBits, _L("RMobilePhone::GetCaps returned wrong caps."));
       
 10556 
       
 10557 	// Get Voice line 1. 
       
 10558 	RMobileLine& mobileLine1=iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
 10559 
       
 10560 	// Get call 1.
       
 10561 	RMobileCall& mobileCall1=iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);	
       
 10562 
       
 10563 	// Dial RPS which answers.  
       
 10564 	TCoreEtelRequestStatus<RMobileCall> dialStatus(mobileCall1, &RCall::DialCancel);
       
 10565 	CleanupStack::PushL(dialStatus);											 
       
 10566 	TPtrC rpsNumber;
       
 10567 	GetRPSNumber(EVoiceLine, rpsNumber); 
       
 10568 	CHECK_EQUALS_L(RPSAnswerNextCallL(EVoiceLine), KErrNone, _L("CCTSYIntegrationTestSuiteStepBase::RPSAnswerNextCallL returned with an error"));
       
 10569 	mobileCall1.Dial(dialStatus, rpsNumber);
       
 10570 	CHECK_EQUALS_L(WaitForRequestWithTimeOut(dialStatus, ETimeMedium), KErrNone, _L("RCall::Dial timed-out"));
       
 10571 	CHECK_EQUALS_L(dialStatus.Int(), KErrNone, _L("RCall::Dial returned an error"));
       
 10572 
       
 10573 
       
 10574 	////////////////////////////////////////////////////////////////
       
 10575 	// SET UP END
       
 10576 	////////////////////////////////////////////////////////////////
       
 10577 	
       
 10578 	StartTest();
       
 10579 	
       
 10580 	////////////////////////////////////////////////////////////////
       
 10581 	// TEST START
       
 10582 	////////////////////////////////////////////////////////////////
       
 10583 
       
 10584 
       
 10585 	// Post notifier for RMobileCall::NotifyCallEvent
       
 10586 	TExtEtelRequestStatus notifyCallEventStatus(mobileCall1, EMobileCallNotifyCallEvent);
       
 10587 	CleanupStack::PushL(notifyCallEventStatus);
       
 10588 	RMobileCall::TMobileCallEvent mobileCallEvent;
       
 10589 	mobileCall1.NotifyCallEvent(notifyCallEventStatus, mobileCallEvent);
       
 10590 	
       
 10591 	// Post notifier for RMobileCall::NotifyMobileCallStatusChange
       
 10592 	TExtEtelRequestStatus notifyMobileCallStatusChangeStatus(mobileCall1, EMobileCallNotifyMobileCallStatusChange);
       
 10593 	CleanupStack::PushL(notifyMobileCallStatusChangeStatus);
       
 10594 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
 10595 	mobileCall1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallStatus);
       
 10596 	
       
 10597 	// Hold call 1. 
       
 10598 	TExtEtelRequestStatus holdStatus(mobileCall1, EMobileCallHold);
       
 10599 	CleanupStack::PushL(holdStatus);
       
 10600 	mobileCall1.Hold(holdStatus);
       
 10601 	ASSERT_EQUALS(WaitForRequestWithTimeOut(holdStatus, ETimeMedium),KErrNone, _L("RMobileCall::Hold timed out"));
       
 10602 	ASSERT_EQUALS(holdStatus.Int(), KErrNone, _L("RMobileCall::Hold returned with an error"));		
       
 10603 
       
 10604 	// Check RMobileCall::NotifyCallEvent completes with ELocalHold
       
 10605 	TInt wantedStatus = KErrNone;
       
 10606 	RMobileCall::TMobileCallEvent expectedMobileCallEvent = RMobileCall::ELocalHold;
       
 10607 	iCallControlTestHelper.WaitForMobileCallNotifyCallEvent( 
       
 10608 									mobileCall1,
       
 10609 									notifyCallEventStatus,
       
 10610 									mobileCallEvent, 
       
 10611 									expectedMobileCallEvent,
       
 10612 									wantedStatus);
       
 10613 
       
 10614 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusHold
       
 10615 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusHold;
       
 10616 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(mobileCall1,
       
 10617 															notifyMobileCallStatusChangeStatus,
       
 10618 															mobileCallStatus,
       
 10619 															expectedMobileCallStatus,
       
 10620 															wantedStatus);
       
 10621 															
       
 10622 	// Check RMobileCall::GetMobileCallStatus completes with EStatusHold
       
 10623 	ASSERT_EQUALS(mobileCall1.GetMobileCallStatus(mobileCallStatus), KErrNone,  _L("RMobileCall::GetMobileCallStatus returned an error"));
       
 10624 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusHold,  _L("RMobileCall::GetMobileCallStatus did not return EStatusHold as expected"));
       
 10625 
       
 10626 	// Post notifier for RCall::NotifyStatusChange
       
 10627 	RCall::TStatus callStatus;
       
 10628 	TCoreEtelRequestStatus<RCall> notifyCallStatusChangeStatus(mobileCall1, &RCall::NotifyStatusChangeCancel);
       
 10629 	CleanupStack::PushL(notifyCallStatusChangeStatus);
       
 10630 	mobileCall1.NotifyStatusChange(notifyCallStatusChangeStatus, callStatus);	
       
 10631 
       
 10632 	// Post notifier for RLine::NotifyStatusChange
       
 10633 	TCoreEtelRequestStatus<RLine> notifyStatusChangeStatus(mobileLine1, &RLine::NotifyStatusChangeCancel);
       
 10634 	CleanupStack::PushL(notifyStatusChangeStatus);
       
 10635 	RCall::TStatus lineStatus; 
       
 10636 	mobileLine1.NotifyStatusChange(notifyStatusChangeStatus, lineStatus);
       
 10637 
       
 10638     // Post notifier for RLine::NotifyMobileLineStatusChange
       
 10639 	TExtEtelRequestStatus notifyMobileLineChangeStatus(mobileLine1, EMobileLineNotifyMobileLineStatusChange);
       
 10640 	CleanupStack::PushL(notifyMobileLineChangeStatus);
       
 10641 	RMobileCall::TMobileCallStatus mobileLineStatus;
       
 10642 	mobileLine1.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
 10643 
       
 10644     // repost notifier for RMobileCall::NotifyCallEvent
       
 10645 	mobileCall1.NotifyCallEvent(notifyCallEventStatus, mobileCallEvent);
       
 10646 
       
 10647     // repost a notifier for RMobileCall::NotifyMobileCallStatusChange
       
 10648 	mobileCall1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallStatus);
       
 10649 
       
 10650 	// RPS hangs up the call. 
       
 10651 	ASSERT_EQUALS(RPSHangupL(EVoiceLine, ETimeShort), KErrNone, _L("CCTSYIntegrationTestSuiteStepBase::RPSHangup returned an error"));
       
 10652 
       
 10653 	// Check RMobileCall::NotifyCallEvent completes with ERemoteTerminated
       
 10654 	expectedMobileCallEvent = RMobileCall::ERemoteTerminated;
       
 10655 	iCallControlTestHelper.WaitForMobileCallNotifyCallEvent( 
       
 10656 									mobileCall1,
       
 10657 									notifyCallEventStatus,
       
 10658 									mobileCallEvent, 
       
 10659 									expectedMobileCallEvent,
       
 10660 									wantedStatus);
       
 10661 
       
 10662 	// Check RCall::NotifyStatusChange completes with EStatusIdle.
       
 10663 	RCall::TStatus expectedCallStatus = RCall::EStatusIdle;
       
 10664 	iCallControlTestHelper.WaitForCallNotifyStatusChange(mobileCall1,
       
 10665 														 notifyCallStatusChangeStatus,
       
 10666 														 callStatus,
       
 10667 														 expectedCallStatus,
       
 10668 														 wantedStatus);
       
 10669 
       
 10670 	// Check RCall::GetStatus returns EStatusIdle.
       
 10671 	ASSERT_EQUALS(mobileCall1.GetStatus(callStatus),KErrNone, _L("RCall::GetStatus returned an error"));
       
 10672 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle, 	_L("RCall::GetStatus did not return EStatusIdle as expected"));
       
 10673 
       
 10674 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusIdle
       
 10675 	expectedMobileCallStatus = RMobileCall::EStatusIdle;
       
 10676 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(mobileCall1,
       
 10677 															notifyMobileCallStatusChangeStatus,
       
 10678 															mobileCallStatus,
       
 10679 															expectedMobileCallStatus,
       
 10680 															wantedStatus);
       
 10681 
       
 10682 	// Check RMobileCall::GetMobileCallStatus completes with EStatusIdle
       
 10683 	ASSERT_EQUALS(mobileCall1.GetMobileCallStatus(mobileCallStatus), KErrNone, _L("RMobileCall::GetMobileStatus returned an error"));
       
 10684 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle, _L("RMobileCall::GetMobileStatus did not return EStatusIdle as expected"));
       
 10685 
       
 10686 	// Check RLine::NotifyStatusChange completes with EStatusIdle
       
 10687 	RCall::TStatus expectedLineStatus = RCall::EStatusIdle;
       
 10688 	iCallControlTestHelper.WaitForLineNotifyStatusChange(mobileLine1,
       
 10689 														 notifyStatusChangeStatus,
       
 10690 														 lineStatus,
       
 10691 														 expectedLineStatus,
       
 10692 														 wantedStatus);
       
 10693 
       
 10694 	// Check RLine::GetStatus returns EStatusIdle
       
 10695 	ASSERT_EQUALS(mobileLine1.GetStatus(callStatus), KErrNone, _L("RLine::GetStatus returned with an error"));
       
 10696 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle, _L("RLine::GetStatus did not return EStatusIdle as expected"));
       
 10697 
       
 10698 	// Check RMobileLine::NotifyMobileLineStatusChange completes with EStatusIdle;
       
 10699 	RMobileCall::TMobileCallStatus expectedMobileLineStatus = RMobileCall::EStatusIdle;
       
 10700 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(mobileLine1,
       
 10701 																		notifyMobileLineChangeStatus,
       
 10702 																		mobileLineStatus,
       
 10703 																		expectedMobileLineStatus,
       
 10704 																		wantedStatus);
       
 10705 
       
 10706 	// Check RMobileLine::GetMobileLineStatus returns EStatusIdle
       
 10707 	ASSERT_EQUALS(mobileLine1.GetMobileLineStatus(mobileLineStatus), KErrNone, _L("RMobileLine::GetMobileLineStatus returned with an error"));
       
 10708 	ASSERT_EQUALS(mobileLineStatus, RMobileCall::EStatusIdle, _L("RMobileLine::GetMobileLineStatus did not return EStatusIdle as expected"));
       
 10709 
       
 10710 
       
 10711 	////////////////////////////////////////////////////////////////
       
 10712 	// TEST END
       
 10713 	////////////////////////////////////////////////////////////////
       
 10714 
       
 10715     StartCleanup();
       
 10716 	
       
 10717 	// Pop
       
 10718     // dialStatus
       
 10719     // notifyCallEventStatus
       
 10720     // notifyMobileCallStatusChangeStatus
       
 10721     // holdStatus
       
 10722     // notifyCallStatusChangeStatus
       
 10723     // notifyStatusChangeStatus
       
 10724     // notifyMobileLineChangeStatus
       
 10725 	CleanupStack::PopAndDestroy(7, &dialStatus);
       
 10726 	
       
 10727 	return TestStepResult();
       
 10728 	}
       
 10729 
       
 10730 TPtrC CCTSYIntegrationTestCallControl0028::GetTestStepName()
       
 10731 /**
       
 10732  * @return The test step name.
       
 10733  */
       
 10734 	{
       
 10735 	return  _L("CCTSYIntegrationTestCallControl0028");
       
 10736 	}
       
 10737 
       
 10738 
       
 10739 
       
 10740 CCTSYIntegrationTestCallControl0029::CCTSYIntegrationTestCallControl0029(CEtelSessionMgr& aEtelSessionMgr)
       
 10741 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 10742 /**
       
 10743  * Constructor.
       
 10744  */
       
 10745 	{
       
 10746 	SetTestStepName(CCTSYIntegrationTestCallControl0029::GetTestStepName());
       
 10747 	}
       
 10748 
       
 10749 CCTSYIntegrationTestCallControl0029::~CCTSYIntegrationTestCallControl0029()
       
 10750 /**
       
 10751  * Destructor.
       
 10752  */
       
 10753 	{
       
 10754 	}
       
 10755 
       
 10756 TVerdict CCTSYIntegrationTestCallControl0029::doTestStepL()
       
 10757 /**
       
 10758  * @SYMTestCaseID BA-CTSY-INT-CCON-0029
       
 10759  * @SYMFssID BA/CTSY/CCON-0029
       
 10760  * @SYMTestCaseDesc Resume held call but remote party hangs up before resume complete.
       
 10761  * @SYMTestPriority High
       
 10762  * @SYMTestActions RMobileCall::NotifyMobileCallStatusChange, RLine::NotifyStatusChange, RMobileLine::GetMobileLineStatus, RMobileLine::NotifyMobileLineStatusChange, RLine::GetStatus, RMobileCall::GetMobileCallStatus, RMobileCall::NotifyCallEvent, RCall::GetStatus, RMobileCall::Hold, RMobileCall::Resume
       
 10763  * @SYMTestExpectedResults Pass - Call ends when remote party hangs up.
       
 10764  * @SYMTestType CIT
       
 10765  * @SYMTestCaseDependencies live/manual
       
 10766  *
       
 10767  * Reason for test: Verify call and line status are correct and call event completes.
       
 10768  *
       
 10769  * @return - TVerdict code
       
 10770  */
       
 10771 	{
       
 10772 
       
 10773 	////////////////////////////////////////////////////////////////
       
 10774 	// SET UP
       
 10775 	////////////////////////////////////////////////////////////////
       
 10776 
       
 10777 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 10778 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 10779  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
 10780 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 10781 
       
 10782 	// Check phone supports KCapsVoice.
       
 10783 	RMobilePhone::TCaps caps;
       
 10784 	CHECK_EQUALS_L(phone.GetCaps(caps), KErrNone, _L("RMobilePhone::GetCaps return value is not KErrNone"));
       
 10785 	CHECK_BITS_SET_L(caps.iFlags, RMobilePhone::KCapsVoice, KNoUnwantedBits, _L("RMobilePhone::GetCaps returned wrong caps"));
       
 10786 
       
 10787 	// Get Voice line 1. 
       
 10788 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
 10789 	
       
 10790 	// Get call 1. 
       
 10791 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
 10792 
       
 10793 	////////////////////////////////////////////////////////////////
       
 10794 	// SET UP END
       
 10795 	////////////////////////////////////////////////////////////////
       
 10796 	
       
 10797 	StartTest();
       
 10798 	
       
 10799 	////////////////////////////////////////////////////////////////
       
 10800 	// TEST START
       
 10801 	////////////////////////////////////////////////////////////////
       
 10802 	
       
 10803 	// Dial a number. Tester should answer the call. 
       
 10804 	TPtrC number; 
       
 10805 	ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number) != EFalse,
       
 10806 				_L("GetStringFromConfig did not complete as expected"));
       
 10807 	TCoreEtelRequestStatus<RCall> dialStatus(call1, &RCall::DialCancel);
       
 10808 	CleanupStack::PushL(dialStatus);
       
 10809 	DEBUG_PRINTF1(_L("Board Now Dialling..."));
       
 10810 	call1.Dial(dialStatus, number); 
       
 10811 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeMedium), KErrNone, _L("RCall::Dial timed-out"));
       
 10812 	ASSERT_EQUALS(dialStatus.Int(), KErrNone, _L("RCall::Dial returned with an error"));
       
 10813 			
       
 10814  	// Post notifier for RMobileCall::NotifyCallEvent
       
 10815 	TExtEtelRequestStatus notifyCallEventStatus(call1, EMobileCallNotifyCallEvent);
       
 10816 	CleanupStack::PushL(notifyCallEventStatus);
       
 10817 	RMobileCall::TMobileCallEvent mobileCallEvent;
       
 10818 	call1.NotifyCallEvent(notifyCallEventStatus, mobileCallEvent);
       
 10819 	
       
 10820 	// post a notifier for RMobileCall::NotifyMobileCallStatusChange
       
 10821 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
 10822 	TExtEtelRequestStatus notifyMobileCallChangeStatus(call1, EMobileCallNotifyMobileCallStatusChange);
       
 10823 	CleanupStack::PushL(notifyMobileCallChangeStatus);
       
 10824 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
 10825 	
       
 10826 	// Hold call 1
       
 10827 	TExtEtelRequestStatus holdStatus (call1,EMobileCallHold);
       
 10828 	CleanupStack::PushL(holdStatus);	
       
 10829 	call1.Hold(holdStatus);
       
 10830 	ASSERT_EQUALS(WaitForRequestWithTimeOut(holdStatus, ETimeMedium), KErrNone, _L("RMobileCall::Hold timed-out"));
       
 10831 	ASSERT_EQUALS(dialStatus.Int(), KErrNone, _L("RMobileCall::Hold returned an error"));
       
 10832 	
       
 10833 	// Check RMobileCall::NotifyCallEvent completes with ELocalHold
       
 10834 	RMobileCall::TMobileCallEvent expectedMobileCallEvent = RMobileCall::ELocalHold;
       
 10835 	iCallControlTestHelper.WaitForMobileCallNotifyCallEvent(
       
 10836 									call1,
       
 10837 									notifyCallEventStatus,
       
 10838 									mobileCallEvent, 
       
 10839 									expectedMobileCallEvent,
       
 10840 									KErrNone);
       
 10841 
       
 10842 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusHold
       
 10843 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusHold;
       
 10844 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(
       
 10845 															call1,
       
 10846 															notifyMobileCallChangeStatus,
       
 10847 															mobileCallStatus,
       
 10848 															expectedMobileCallStatus,
       
 10849 															KErrNone);
       
 10850 
       
 10851 	// Check RMobileCall::GetMobileCallStatus completes with EStatusHold
       
 10852 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone, _L("RMobileCall::GetMobileCallStatus returned an error"));
       
 10853 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusHold, _L("RMobileCall::GetMobileCallStatus did not return EStatusHold"));
       
 10854 			
       
 10855 	// post notifier for RLine::NotifyStatusChange
       
 10856 	TCoreEtelRequestStatus<RLine> notifyStatusChangeStatus (voiceLine,&RLine::NotifyStatusChangeCancel);
       
 10857 	CleanupStack::PushL(notifyStatusChangeStatus);
       
 10858 	RCall::TStatus lineStatus;
       
 10859 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
 10860 	
       
 10861 	// post a notifier for RMobileLine::NotifyMobileLineStatusChange
       
 10862 	TExtEtelRequestStatus notifyMobileLineChangeStatus(voiceLine, EMobileLineNotifyMobileLineStatusChange);
       
 10863 	CleanupStack::PushL(notifyMobileLineChangeStatus);
       
 10864 	RMobileCall::TMobileCallStatus mobileLineStatus;
       
 10865 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
 10866 
       
 10867 	// post notifier for RCall::NotifyStatusChange
       
 10868 	RCall::TStatus callStatus;
       
 10869 	TCoreEtelRequestStatus<RCall> notifyCallStatusChangeStatus (call1,&RCall::NotifyStatusChangeCancel);
       
 10870 	CleanupStack::PushL(notifyCallStatusChangeStatus);
       
 10871 	call1.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
 10872 
       
 10873     // repost notifier for RMobileCall::NotifyCallEvent
       
 10874    	call1.NotifyCallEvent(notifyCallEventStatus, mobileCallEvent);
       
 10875 
       
 10876     // repost a notifier for RMobileCall::NotifyMobileCallStatusChange
       
 10877 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
 10878 
       
 10879 	// Resume call 1. Tester should hang up the call before Resume completes. 
       
 10880 	DisplayUserInteractionPromptL(_L("Remote party should hang up the call now."), ETimeLong);
       
 10881 	TExtEtelRequestStatus resumeStatus(call1, EMobileCallResume);
       
 10882 	CleanupStack::PushL(resumeStatus);
       
 10883 	call1.Resume(resumeStatus);
       
 10884 	ASSERT_EQUALS(WaitForRequestWithTimeOut(resumeStatus, ETimeMedium), KErrNone, _L("RMobileCall::Resume timed-out"));
       
 10885 	ASSERT_TRUE(resumeStatus.Int() != KErrNone, _L("RMobileCall::Resume did not return error code as expected."));
       
 10886 
       
 10887 	// Check RMobileCall::NotifyCallEvent completes with ERemoteTerminated
       
 10888 	expectedMobileCallEvent = RMobileCall::ERemoteTerminated;
       
 10889 	iCallControlTestHelper.WaitForMobileCallNotifyCallEvent( 
       
 10890 									call1,
       
 10891 									notifyCallEventStatus,
       
 10892 									mobileCallEvent, 
       
 10893 									expectedMobileCallEvent,
       
 10894 									KErrNone);
       
 10895 
       
 10896 	// Check RCall::NotifyStatusChange completes with EStatusIdle.
       
 10897 	RCall::TStatus expectedCallStatus = RCall::EStatusIdle;
       
 10898 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
 10899 														 notifyCallStatusChangeStatus,
       
 10900 														 callStatus,
       
 10901 														 expectedCallStatus,
       
 10902 														 KErrNone);
       
 10903 
       
 10904 	// Check RCall::GetStatus returns EStatusIdle.
       
 10905 	ASSERT_EQUALS(call1.GetStatus(callStatus), KErrNone, _L("RCall::GetStatus returned an Error"));
       
 10906 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle, _L("RCall::GetStatus did not return EStatusIdle"));
       
 10907 			
       
 10908 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusIdle
       
 10909 	expectedMobileCallStatus = RMobileCall::EStatusIdle;
       
 10910 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
 10911 																		notifyMobileCallChangeStatus,
       
 10912 																		mobileCallStatus,
       
 10913 																		expectedMobileCallStatus,
       
 10914 																		KErrNone);
       
 10915 
       
 10916 	// Check RMobileCall::GetMobileCallStatus completes with EStatusIdle
       
 10917 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone, _L("RMobileCall::GetMobileCallStatus returned an error"));
       
 10918 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle, _L("RMobileCall::GetMobileCallStatus did not return EStatusIdle"));
       
 10919 
       
 10920 	// Check RLine::NotifyStatusChange completes with EStatusIdle
       
 10921 	RCall::TStatus expectedLineStatus = RCall::EStatusIdle;
       
 10922 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
 10923 														 notifyStatusChangeStatus,
       
 10924 														 lineStatus,
       
 10925 														 expectedLineStatus,
       
 10926 														 KErrNone);
       
 10927 
       
 10928 	// Check RLine::GetStatus returns EStatusIdle
       
 10929 	ASSERT_EQUALS(voiceLine.GetStatus(lineStatus), KErrNone, _L("RLine::GetStatus returned an error"));
       
 10930 	ASSERT_EQUALS(lineStatus, RCall::EStatusIdle, _L("RLine::GetStatus did not return EStatusConnected as expected"));
       
 10931 			
       
 10932 	// Check RMobileLine::NotifyMobileLineStatusChange completes with EStatusIdle
       
 10933 	RMobileCall::TMobileCallStatus expectedMobileLineStatus = RMobileCall::EStatusIdle;
       
 10934 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
 10935 																		notifyMobileLineChangeStatus,
       
 10936 																		mobileLineStatus,
       
 10937 																		expectedMobileLineStatus,
       
 10938 																		KErrNone);
       
 10939 
       
 10940 	// Check RMobileLine::GetMobileLineStatus returns EStatusIdle
       
 10941 	ASSERT_EQUALS(voiceLine.GetMobileLineStatus(mobileLineStatus), KErrNone, _L("RMobileLine::GetMobileLineStatus returned an error"));
       
 10942 	ASSERT_EQUALS(mobileLineStatus, RMobileCall::EStatusIdle, _L("RMobileLine::GetMobileLineStatus did not set line status to EStatusIdle"));
       
 10943 	
       
 10944 	////////////////////////////////////////////////////////////////
       
 10945 	// TEST END
       
 10946 	////////////////////////////////////////////////////////////////
       
 10947 
       
 10948     StartCleanup();
       
 10949 	
       
 10950 	// dialStatus
       
 10951 	// notifyCallEventStatus
       
 10952 	// notifyCallStatusChangeStatus
       
 10953 	// notifyMobileCallChangeStatus
       
 10954 	// notifyStatusChangeStatus
       
 10955 	// notifyMobileLineChangeStatus
       
 10956 	// holdStatus
       
 10957 	// resumeStatus
       
 10958 	CleanupStack::PopAndDestroy(8, &dialStatus);
       
 10959 	
       
 10960 	return TestStepResult();
       
 10961 	}
       
 10962 
       
 10963 TPtrC CCTSYIntegrationTestCallControl0029::GetTestStepName()
       
 10964 /**
       
 10965  * @return The test step name.
       
 10966  */
       
 10967 	{
       
 10968 	return  _L("CCTSYIntegrationTestCallControl0029");
       
 10969 	}
       
 10970 
       
 10971 
       
 10972 
       
 10973 CCTSYIntegrationTestCallControl0030::CCTSYIntegrationTestCallControl0030(CEtelSessionMgr& aEtelSessionMgr)
       
 10974 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 10975 /**
       
 10976  * Constructor.
       
 10977  */
       
 10978 	{
       
 10979 	SetTestStepName(CCTSYIntegrationTestCallControl0030::GetTestStepName());
       
 10980 	}
       
 10981 
       
 10982 CCTSYIntegrationTestCallControl0030::~CCTSYIntegrationTestCallControl0030()
       
 10983 /**
       
 10984  * Destructor.
       
 10985  */
       
 10986 	{
       
 10987 	}
       
 10988 
       
 10989 TVerdict CCTSYIntegrationTestCallControl0030::doTestStepL()
       
 10990 /**
       
 10991  * @SYMTestCaseID BA-CTSY-INT-CCON-0030
       
 10992  * @SYMFssID BA/CTSY/CCON-0030
       
 10993  * @SYMTestCaseDesc Hold a call then make and hang up another call.
       
 10994  * @SYMTestPriority High
       
 10995  * @SYMTestActions RCall::NotifyStatusChange, RMobileCall::GetMobileCallStatus, RMobileCall::NotifyCallEvent, RCall::GetStatus, RCall::Dial, RCall::HangUp, RMobileCall::Resume
       
 10996  * @SYMTestExpectedResults Pass - Call 1 resumed successfully.
       
 10997  * @SYMTestType CIT
       
 10998  * @SYMTestCaseDependencies live/automatic
       
 10999  *
       
 11000  * Reason for test: Verify call status and call event is correct.
       
 11001  *
       
 11002  * @return - TVerdict code
       
 11003  */
       
 11004 	{
       
 11005 
       
 11006 	////////////////////////////////////////////////////////////////
       
 11007 	// SET UP
       
 11008 	////////////////////////////////////////////////////////////////
       
 11009 
       
 11010 
       
 11011 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 11012 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 11013  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
 11014 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 11015 	
       
 11016 	// Check phone supports KCapsVoice.
       
 11017 	RMobilePhone::TCaps caps;
       
 11018 	CHECK_EQUALS_L(phone.GetCaps(caps), KErrNone, _L("RMobilePhone::GetCaps return value is not KErrNone"));
       
 11019 	CHECK_BITS_SET_L(caps.iFlags, RMobilePhone::KCapsVoice, KNoUnwantedBits, _L("RMobilePhone::GetCaps returned wrong caps"));
       
 11020 
       
 11021 	// Get Voice line 1. 
       
 11022 	RMobileLine& voiceLine=iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
 11023 	
       
 11024 	// Get call 1. 
       
 11025 	RMobileCall& call1=iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);	
       
 11026 	
       
 11027 	// Dial a number that answers on call 1. 
       
 11028 	TPtrC number; 
       
 11029 	CHECK_TRUE_L(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number) != EFalse, _L("GetStringFromConfig did not complete as expected"));
       
 11030 	DEBUG_PRINTF1(_L("Board Now Dialling: "));
       
 11031 	TCoreEtelRequestStatus<RCall> dialStatus(call1, &RCall::DialCancel);
       
 11032 	CleanupStack::PushL(dialStatus);
       
 11033 	call1.Dial(dialStatus, number); 
       
 11034 	CHECK_EQUALS_L(WaitForRequestWithTimeOut(dialStatus, ETimeLong), KErrNone, _L("RCall::Dial timed-out"));
       
 11035 	CHECK_EQUALS_L(dialStatus.Int(), KErrNone, _L("RCall::Dial returned with an error"));
       
 11036 
       
 11037 	// Hold call 1. 
       
 11038 	TExtEtelRequestStatus holdStatus(call1, EMobileCallHold);
       
 11039 	CleanupStack::PushL(holdStatus);
       
 11040 	call1.Hold(holdStatus);
       
 11041 	CHECK_EQUALS_L(WaitForRequestWithTimeOut(holdStatus, ETimeMedium),KErrNone, _L("RMobileCall::Hold timed out"));
       
 11042 	CHECK_EQUALS_L(holdStatus.Int(), KErrNone, _L("RMobileCall::Hold returned with an error"));		
       
 11043 
       
 11044 	// Get call 2. 
       
 11045 	RMobileCall& call2 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall2);
       
 11046 
       
 11047 
       
 11048 	////////////////////////////////////////////////////////////////
       
 11049 	// SET UP END
       
 11050 	////////////////////////////////////////////////////////////////
       
 11051 	
       
 11052 	StartTest();
       
 11053 	
       
 11054 	////////////////////////////////////////////////////////////////
       
 11055 	// TEST START
       
 11056 	////////////////////////////////////////////////////////////////
       
 11057 
       
 11058 
       
 11059 	// Post notifier for RCall::NotifyStatusChange for call 2
       
 11060 	RCall::TStatus callStatus2;
       
 11061 	TCoreEtelRequestStatus<RCall> notifyStatusChangeStatus2(call2, &RCall::NotifyStatusChangeCancel);
       
 11062 	CleanupStack::PushL(notifyStatusChangeStatus2);
       
 11063 	call2.NotifyStatusChange(notifyStatusChangeStatus2, callStatus2);	
       
 11064 	
       
 11065 	// Post notification RMobileCall::NotifyMobileCallStatusChange for call 2
       
 11066 	TExtEtelRequestStatus notifyMobileCallStatusChangeStatus2(call2, EMobileCallNotifyMobileCallStatusChange);
       
 11067 	CleanupStack::PushL(notifyMobileCallStatusChangeStatus2);
       
 11068 	RMobileCall::TMobileCallStatus mobileCallStatus2;
       
 11069 	call2.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus2, mobileCallStatus2);
       
 11070 	
       
 11071 	// Dial a RPS on call 2. 
       
 11072 	TCoreEtelRequestStatus<RMobileCall> dialStatus2(call2, &RCall::DialCancel);
       
 11073 	CleanupStack::PushL(dialStatus2);											 
       
 11074 	TPtrC rpsNumber;
       
 11075 	GetRPSNumber(EVoiceLine, rpsNumber); 
       
 11076 	ASSERT_EQUALS(RPSAnswerNextCallL(EVoiceLine), KErrNone, _L("CCTSYIntegrationTestSuiteStepBase::RPSAnswerNextCallL"));
       
 11077 	call2.Dial(dialStatus2, rpsNumber);
       
 11078 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus2, ETimeMedium), KErrNone, _L("RCall::Dial timed-out"));
       
 11079 	ASSERT_EQUALS(dialStatus2.Int(), KErrNone, _L("RCall::Dial returned an error"));
       
 11080 	
       
 11081 	// ===  Check call status ===
       
 11082 
       
 11083 	// Check RCall::NotifyStatusChange for call 2 completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
 11084 	const TInt wantedStatus = KErrNone;
       
 11085 	RCall::TStatus expectedCallStatus2 = RCall::EStatusDialling;
       
 11086 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call2,
       
 11087 														 notifyStatusChangeStatus2,
       
 11088 														 callStatus2,
       
 11089 														 expectedCallStatus2,
       
 11090 														 wantedStatus);
       
 11091 														 
       
 11092 	call2.NotifyStatusChange(notifyStatusChangeStatus2, callStatus2);													 
       
 11093 	expectedCallStatus2 = RCall::EStatusConnecting;
       
 11094 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call2,
       
 11095 														 notifyStatusChangeStatus2,
       
 11096 														 callStatus2,
       
 11097 														 expectedCallStatus2,
       
 11098 														 wantedStatus);
       
 11099 
       
 11100 	call2.NotifyStatusChange(notifyStatusChangeStatus2, callStatus2);
       
 11101 	expectedCallStatus2 = RCall::EStatusConnected;
       
 11102 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call2,
       
 11103 														 notifyStatusChangeStatus2,
       
 11104 														 callStatus2,
       
 11105 														 expectedCallStatus2,
       
 11106 														 wantedStatus);
       
 11107 
       
 11108 	// Check RCall::GetStatus for call 2 returns EStatusConnected.
       
 11109 	ASSERT_EQUALS(call2.GetStatus(callStatus2), KErrNone, _L("RCall::GetStatus returned an Error"));
       
 11110 	ASSERT_EQUALS(callStatus2, RCall::EStatusConnected, _L("RCall::GetStatus did not return EStatusConnected"));
       
 11111 
       
 11112 	// Check RMobileCall::NotifyMobileCallStatusChange for call 2 completes with EStatusDialling->EStatusConnecting->EStatusConnected
       
 11113 	RMobileCall::TMobileCallStatus expectedMobileCallStatus2 = RMobileCall::EStatusDialling;
       
 11114 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call2,
       
 11115 																		notifyMobileCallStatusChangeStatus2,
       
 11116 																		mobileCallStatus2,
       
 11117 																		expectedMobileCallStatus2,
       
 11118 																		wantedStatus);
       
 11119 
       
 11120 	call2.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus2, mobileCallStatus2);
       
 11121 	expectedMobileCallStatus2 = RMobileCall::EStatusConnecting;
       
 11122 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call2,
       
 11123 																		notifyMobileCallStatusChangeStatus2,
       
 11124 																		mobileCallStatus2,
       
 11125 																		expectedMobileCallStatus2,
       
 11126 																		wantedStatus);
       
 11127 
       
 11128 	call2.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus2, mobileCallStatus2);
       
 11129 	expectedMobileCallStatus2 = RMobileCall::EStatusConnected;
       
 11130 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call2,
       
 11131 																		notifyMobileCallStatusChangeStatus2,
       
 11132 																		mobileCallStatus2,
       
 11133 																		expectedMobileCallStatus2,
       
 11134 																		wantedStatus);
       
 11135 
       
 11136 	// Check RMobileCall::GetMobileCallStatus for call 2 returns EStatusConnected
       
 11137 	ASSERT_EQUALS(call2.GetMobileCallStatus(mobileCallStatus2), KErrNone, _L("RMobileCall::GetMobileCallStatus returned an error"));
       
 11138 	ASSERT_EQUALS(mobileCallStatus2, RMobileCall::EStatusConnected, _L("RMobileCall::GetMobileCallStatus did not return a status EStatusConnected"));
       
 11139 
       
 11140 	// Post notifier for RMobileCall::NotifyCallEvent for call 2
       
 11141 	TExtEtelRequestStatus notifyCallEventStatus2(call2, EMobileCallNotifyCallEvent);
       
 11142 	CleanupStack::PushL(notifyCallEventStatus2);
       
 11143 	RMobileCall::TMobileCallEvent mobileCallEvent2;
       
 11144 	call2.NotifyCallEvent(notifyCallEventStatus2, mobileCallEvent2);
       
 11145 
       
 11146 	// RPS hangs up call 2. 
       
 11147 	ASSERT_EQUALS(RPSHangupL(EVoiceLine,0), KErrNone, _L("CCTSYIntegrationTestSuiteStepBase::RPSHangup returned an error"));
       
 11148 
       
 11149 	// Check RMobileCall::NotifyCallEvent for call 2 completes with ERemoteTerminated
       
 11150 	RMobileCall::TMobileCallEvent expectedMobileCallEvent2 = RMobileCall::ERemoteTerminated;
       
 11151 	iCallControlTestHelper.WaitForMobileCallNotifyCallEvent( 
       
 11152 									call2,
       
 11153 									notifyCallEventStatus2,
       
 11154 									mobileCallEvent2, 
       
 11155 									expectedMobileCallEvent2,
       
 11156 									wantedStatus);
       
 11157 
       
 11158 	// ===  Check call statuses ===
       
 11159 
       
 11160 	// Check RCall::NotifyStatusChange for call 2 completes with EStatusIdle
       
 11161 	expectedCallStatus2 = RCall::EStatusIdle;
       
 11162 	call2.NotifyStatusChange(notifyStatusChangeStatus2, callStatus2);
       
 11163 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call2,
       
 11164 														 notifyStatusChangeStatus2,
       
 11165 														 callStatus2,
       
 11166 														 expectedCallStatus2,
       
 11167 														 wantedStatus);
       
 11168 
       
 11169 	// Check RCall::GetStatus for call 2 returns EStatusIdle
       
 11170 	ASSERT_EQUALS(call2.GetStatus(callStatus2), KErrNone, _L("RCall::GetStatus returned an Error"));
       
 11171 	ASSERT_EQUALS(callStatus2, RCall::EStatusIdle, _L("RCall::GetStatus did not return EStatusIdle"));
       
 11172 
       
 11173 	// Check RMobileCall::NotifyMobileCallStatusChange for call 2 completes with EStatusIdle
       
 11174 	call2.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus2, mobileCallStatus2);
       
 11175 	expectedMobileCallStatus2 = RMobileCall::EStatusIdle;
       
 11176 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call2,
       
 11177 																		notifyMobileCallStatusChangeStatus2,
       
 11178 																		mobileCallStatus2,
       
 11179 																		expectedMobileCallStatus2,
       
 11180 																		wantedStatus);
       
 11181 
       
 11182 	// Check RMobileCall::GetMobileCallStatus for call 2 returns EStatusIdle
       
 11183 	ASSERT_EQUALS(call2.GetMobileCallStatus(mobileCallStatus2), KErrNone, _L("RMobileCall::GetMobileCallStatus returned an error"));
       
 11184 	ASSERT_EQUALS(mobileCallStatus2, RMobileCall::EStatusIdle, _L("RMobileCall::GetMobileCallStatus did not return a status EStatusIdle"));
       
 11185 
       
 11186 	
       
 11187 	// Check RMobileCall::GetMobileCallStatus for call 1 returns EStatusHold
       
 11188 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
 11189 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone, _L("RMobileCall::GetMobileCallStatus returned an error"));
       
 11190 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusHold, _L("RMobileCall::GetMobileCallStatus did not return a status EStatusHold"));
       
 11191 
       
 11192 	// Post notifier for RMobileCall::NotifyCallEvent for call 1
       
 11193 	TExtEtelRequestStatus notifyCallEventStatus(call1, EMobileCallNotifyCallEvent);
       
 11194 	CleanupStack::PushL(notifyCallEventStatus);
       
 11195 	RMobileCall::TMobileCallEvent mobileCallEvent;
       
 11196 	call1.NotifyCallEvent(notifyCallEventStatus, mobileCallEvent);
       
 11197 
       
 11198 
       
 11199 	// Post notification RMobileCall::NotifyMobileCallStatusChange for call 1
       
 11200 	TExtEtelRequestStatus notifyMobileCallStatusChangeStatus(call1, EMobileCallNotifyMobileCallStatusChange);
       
 11201 	CleanupStack::PushL(notifyMobileCallStatusChangeStatus);
       
 11202 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallStatus);
       
 11203 
       
 11204 	// Resume call 1. 
       
 11205 	TExtEtelRequestStatus resumeStatus(call1, EMobileCallResume);
       
 11206 	CleanupStack::PushL(resumeStatus);
       
 11207 	call1.Resume(resumeStatus);
       
 11208 	ASSERT_EQUALS(WaitForRequestWithTimeOut(resumeStatus, ETimeMedium), KErrNone, _L("RMobileCall::Resume timed-out"));
       
 11209 	ASSERT_EQUALS(resumeStatus.Int(), KErrNone, _L("RMobileCall::Resume returned an error"));
       
 11210 	
       
 11211 	// Check RCall::NotifyCallEvent for call 1 completes with ELocalResume
       
 11212 	RMobileCall::TMobileCallEvent expectedMobileCallEvent = RMobileCall::ELocalResume;
       
 11213 	iCallControlTestHelper.WaitForMobileCallNotifyCallEvent( 
       
 11214 									call1,
       
 11215 									notifyCallEventStatus,
       
 11216 									mobileCallEvent, 
       
 11217 									expectedMobileCallEvent,
       
 11218 									wantedStatus);
       
 11219 	// ===  Check call status ===
       
 11220 
       
 11221 	// Check RMobileCall::NotifyMobileCallStatusChange for call 1 completes with EStatusConnected
       
 11222 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusConnected;
       
 11223 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
 11224 																		notifyMobileCallStatusChangeStatus,
       
 11225 																		mobileCallStatus,
       
 11226 																		expectedMobileCallStatus,
       
 11227 																		wantedStatus);
       
 11228 
       
 11229 	// Check RMobileCall::GetMobileCallStatus for call 1 returns EStatusConnected
       
 11230 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone, _L("RMobileCall::GetMobileCallStatus returned an error"));
       
 11231 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected, _L("RMobileCall::GetMobileCallStatus did not return a status EStatusConnected"));
       
 11232 
       
 11233 	// Hangup call 1.
       
 11234 	TCoreEtelRequestStatus<RCall> hangUpStatus (call1,&RCall::HangUpCancel);	
       
 11235 	CleanupStack::PushL(hangUpStatus);
       
 11236 	call1.HangUp(hangUpStatus);
       
 11237 	ASSERT_EQUALS(WaitForRequestWithTimeOut(hangUpStatus, ETimeMedium), KErrNone, _L("RCall::HangUp timed-out"));
       
 11238 	ASSERT_EQUALS(hangUpStatus.Int(), KErrNone, _L("RCall::HangUp returned an error"));
       
 11239 
       
 11240 
       
 11241 	////////////////////////////////////////////////////////////////
       
 11242 	// TEST END
       
 11243 	////////////////////////////////////////////////////////////////
       
 11244 
       
 11245     StartCleanup();
       
 11246 	
       
 11247 	// Pop
       
 11248 	// dialStatus
       
 11249   	// holdStatus
       
 11250   	// notifyStatusChangeStatus2
       
 11251   	// notifyMobileCallStatusChangeStatus2
       
 11252   	// dialStatus2
       
 11253   	// notifyCallEventStatus2
       
 11254    	// notifyCallEventStatus
       
 11255  	// notifyMobileCallStatusChangeStatus
       
 11256   	// resumeStatus
       
 11257   	// hangUpStatus
       
 11258   	CleanupStack::PopAndDestroy(10, &dialStatus);
       
 11259 	
       
 11260 	return TestStepResult();
       
 11261 	}
       
 11262 
       
 11263 TPtrC CCTSYIntegrationTestCallControl0030::GetTestStepName()
       
 11264 /**
       
 11265  * @return The test step name.
       
 11266  */
       
 11267 	{
       
 11268 	return  _L("CCTSYIntegrationTestCallControl0030");
       
 11269 	}
       
 11270 
       
 11271 
       
 11272 
       
 11273 CCTSYIntegrationTestCallControl0031::CCTSYIntegrationTestCallControl0031(CEtelSessionMgr& aEtelSessionMgr)
       
 11274 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 11275 /**
       
 11276  * Constructor.
       
 11277  */
       
 11278 	{
       
 11279 	SetTestStepName(CCTSYIntegrationTestCallControl0031::GetTestStepName());
       
 11280 	}
       
 11281 
       
 11282 CCTSYIntegrationTestCallControl0031::~CCTSYIntegrationTestCallControl0031()
       
 11283 /**
       
 11284  * Destructor.
       
 11285  */
       
 11286 	{
       
 11287 	}
       
 11288 
       
 11289 TVerdict CCTSYIntegrationTestCallControl0031::doTestStepL()
       
 11290 /**
       
 11291  * @SYMTestCaseID BA-CTSY-INT-CCON-0031
       
 11292  * @SYMFssID BA/CTSY/CCON-0031
       
 11293  * @SYMTestCaseDesc Attempt to hold a call when there is already one on hold.
       
 11294  * @SYMTestPriority High
       
 11295  * @SYMTestActions RMobileCall::NotifyMobileCallCapsChange, RMobileCall::GetMobileCallStatus, RCall::NotifyStatusChange, RMobileCall::NotifyMobileCallStatusChange, RCall::NotifyCapsChange, RCall::GetStatus, RMobileCall::GetMobileCallCaps, RCall::Dial, RMobileCall::Hold
       
 11296  * @SYMTestExpectedResults Pass - Error returned on attempt to hold a second call.
       
 11297  * @SYMTestType CIT
       
 11298  * @SYMTestCaseDependencies live/automatic
       
 11299  *
       
 11300  * Reason for test: Verify error is returned on attempt to hold and call stays connected.
       
 11301  *
       
 11302  * @return - TVerdict code
       
 11303  */
       
 11304 	{
       
 11305 
       
 11306 	////////////////////////////////////////////////////////////////
       
 11307 	// SET UP
       
 11308 	////////////////////////////////////////////////////////////////
       
 11309 
       
 11310 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 11311 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 11312  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
 11313 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 11314 	
       
 11315 	// Check phone supports KCapsVoice.
       
 11316 	RPhone::TCaps phoneCaps; 
       
 11317 	CHECK_EQUALS_L(phone.GetCaps(phoneCaps), KErrNone, _L("RPhone::GetCaps returned an error"));
       
 11318 	CHECK_BITS_SET_L(phoneCaps.iFlags, RPhone::KCapsVoice, KNoUnwantedBits,  _L("RPhone::GetCaps returned wrong caps"));
       
 11319 
       
 11320 	// Get Voice line 1. 
       
 11321 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
 11322 	
       
 11323 	// Get call 1 
       
 11324 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
 11325 
       
 11326 	// Dial a number that answers on call 1. 
       
 11327 	TPtrC number; 
       
 11328 	CHECK_TRUE_L(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number) != EFalse, _L("GetStringFromConfig did not complete as expected"));
       
 11329 	DEBUG_PRINTF1(_L("Board Now Dialling: "));
       
 11330 	TCoreEtelRequestStatus<RCall> dialStatus(call1, &RCall::DialCancel);
       
 11331 	CleanupStack::PushL(dialStatus);
       
 11332 
       
 11333 	call1.Dial(dialStatus, number); 
       
 11334 	CHECK_EQUALS_L(WaitForRequestWithTimeOut(dialStatus, ETimeLong), KErrNone, _L("RCall::Dial timed-out"));
       
 11335 	CHECK_EQUALS_L(dialStatus.Int(), KErrNone, _L("RCall::Dial returned with an error"));
       
 11336 	
       
 11337 	// Hold call 1. 
       
 11338 	TExtEtelRequestStatus holdStatus(call1, EMobileCallHold);
       
 11339 	CleanupStack::PushL(holdStatus);
       
 11340 	call1.Hold(holdStatus);
       
 11341 	CHECK_EQUALS_L(WaitForRequestWithTimeOut(holdStatus, ETimeMedium),KErrNone, _L("RMobileCall::Hold timed out"));
       
 11342 	CHECK_EQUALS_L(holdStatus.Int(), KErrNone, _L("RMobileCall::Hold returned with an error"));		
       
 11343 
       
 11344 	// Ensure mobile call status of call 1 is EStatusHold 
       
 11345 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
 11346 	CHECK_EQUALS_L(call1.GetMobileCallStatus(mobileCallStatus), KErrNone, _L("RMobileCall::GetMobileCallStatus returned with an error"));
       
 11347 	CHECK_EQUALS_L(mobileCallStatus, RMobileCall::EStatusHold, _L("RMobileCall::GetMobileCallStatus did not return EStatusHold as expected"));
       
 11348 	
       
 11349 	// Get call 2. 
       
 11350 	RMobileCall& call2 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall2);
       
 11351 
       
 11352 
       
 11353 	////////////////////////////////////////////////////////////////
       
 11354 	// SET UP END
       
 11355 	////////////////////////////////////////////////////////////////
       
 11356 	
       
 11357 	StartTest();
       
 11358 	
       
 11359 	////////////////////////////////////////////////////////////////
       
 11360 	// TEST START
       
 11361 	////////////////////////////////////////////////////////////////
       
 11362 
       
 11363 	// post notifier RCall::NotifyCapsChange for call 2
       
 11364 	RCall::TCaps callCaps;
       
 11365 	TCoreEtelRequestStatus<RCall> notifyCapsChangeStatus (call2, &RCall::NotifyCapsChangeCancel);	
       
 11366 	CleanupStack::PushL(notifyCapsChangeStatus);
       
 11367 	call2.NotifyCapsChange(notifyCapsChangeStatus,callCaps);
       
 11368 	
       
 11369 	// post a notifier RMobileCall::NotifyMobileCallCapsChange for call 2
       
 11370 	TExtEtelRequestStatus notifyMobileCallCapsChangeStatus(call2, EMobileCallNotifyMobileCallCapsChange);
       
 11371 	CleanupStack::PushL(notifyMobileCallCapsChangeStatus);
       
 11372 	RMobileCall::TMobileCallCapsV1 mobileCallCaps;
       
 11373 	RMobileCall::TMobileCallCapsV1Pckg mobileCallCapsPckg(mobileCallCaps);
       
 11374 	call2.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus, mobileCallCapsPckg);
       
 11375 	
       
 11376 	// post notifier for RCall::NotifyStatusChange for call 2
       
 11377 	RCall::TStatus callStatus;
       
 11378 	TCoreEtelRequestStatus<RCall> notifyStatusChangeStatus(call2, &RCall::NotifyStatusChangeCancel);
       
 11379 	CleanupStack::PushL(notifyStatusChangeStatus);
       
 11380 	call2.NotifyStatusChange(notifyStatusChangeStatus, callStatus);	
       
 11381 		
       
 11382 	// post notifier for RMobileCall::NotifyMobileCallStatusChange
       
 11383 	RMobileCall::TMobileCallStatus notifyMobileCallStatus;
       
 11384 	TExtEtelRequestStatus notifyMobileCallStatusChangeStatus(call2, EMobileCallNotifyMobileCallStatusChange);
       
 11385 	CleanupStack::PushL(notifyMobileCallStatusChangeStatus);
       
 11386 	call2.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, notifyMobileCallStatus);
       
 11387 		
       
 11388 	// Dial a number that answers on call 2. 
       
 11389 	ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber2, number) != EFalse, _L("GetStringFromConfig did not complete as expected"));
       
 11390 	DEBUG_PRINTF1(_L("Board Now Dialling: "));
       
 11391 	TCoreEtelRequestStatus<RCall> dialStatus2(call2, &RCall::DialCancel);
       
 11392 	CleanupStack::PushL(dialStatus2);
       
 11393 	call2.Dial(dialStatus2, number); 
       
 11394 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus2, ETimeLong), KErrNone, _L("RCall::Dial timed-out"));
       
 11395 	ASSERT_EQUALS(dialStatus2.Int(), KErrNone,  _L("RCall::Dial returned with an error"));
       
 11396 	
       
 11397 	// ===  Check call caps ===
       
 11398 
       
 11399 	// Check RCall::NotifyCapsChange for call 2 completes with caps in set of KCapsVoice | KCapsHangUp.
       
 11400 	RCall::TCaps wantedCaps;
       
 11401 	RCall::TCaps unwantedCaps;
       
 11402 	wantedCaps.iFlags = RCall::KCapsVoice | RCall::KCapsHangUp;
       
 11403 	unwantedCaps.iFlags = 0;
       
 11404 	const TInt wantedStatus = KErrNone;
       
 11405 	iCallControlTestHelper.WaitForCallNotifyCapsChange(call2, 
       
 11406 													   notifyCapsChangeStatus,
       
 11407 													   callCaps,
       
 11408 													   wantedCaps,
       
 11409 													   unwantedCaps,
       
 11410 													   wantedStatus);
       
 11411 
       
 11412 	// Check RCall::GetCaps for call 2 supports KCapsHangUp | KCapsVoice.
       
 11413 	TUint32 wantedCaps2 = RCall::KCapsHangUp | RCall::KCapsVoice;
       
 11414 	ASSERT_EQUALS(call2.GetCaps(callCaps), KErrNone, _L("RCall::GetCaps returned an Error"));
       
 11415 	ASSERT_BITS_SET(callCaps.iFlags, wantedCaps2, KNoUnwantedBits, _L("RCall::GetCaps returned unexpected Caps"));
       
 11416 	
       
 11417 	// Check RMobileCall::NotifyMobileCallCapsChange for call 2 completes with iCallControlCaps in set of KCapsVoice | KCapsSwap | KCapsHangUp | KCapsJoin | KCapsTransfer
       
 11418 	// Check RMobileCall::NotifyMobileCallCapsChange for call 2 completes with iCallControlCaps NOT in set of KCapsHold
       
 11419 	// Check RMobileCall::NotifyMobileCallCapsChange for call 2 completes with iCallEventCaps in set of KCapsRemoteHold | KCapsRemoteTerminate | KCapsRemoteConferenceCreate
       
 11420 	RMobileCall::TMobileCallCapsV1 wantedMobileCaps;
       
 11421 	RMobileCall::TMobileCallCapsV1 unWantedMobileCaps;
       
 11422 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | 
       
 11423 										RMobileCall::KCapsSwap | 
       
 11424 										RMobileCall::KCapsHangUp | 
       
 11425 										RMobileCall::KCapsJoin|
       
 11426 										RMobileCall::KCapsTransfer;
       
 11427 										
       
 11428 	wantedMobileCaps.iCallEventCaps = RMobileCall::KCapsRemoteHold | 
       
 11429 									  RMobileCall::KCapsRemoteTerminate | 
       
 11430 									  RMobileCall::KCapsRemoteConferenceCreate;
       
 11431 	TCmpRMobileCallTMobileCallCaps mobileCapsComp(wantedMobileCaps,mobileCallCaps, *this);
       
 11432 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(call2, 
       
 11433 																	   notifyMobileCallCapsChangeStatus,
       
 11434 																	   mobileCapsComp,
       
 11435 																	   wantedStatus);																	   
       
 11436 	unWantedMobileCaps.iCallControlCaps = RMobileCall::KCapsHold;
       
 11437 	ASSERT_BITS_SET(wantedMobileCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps, unWantedMobileCaps.iCallControlCaps,
       
 11438 			_L("RMobileCall::NotifyMobileCallCapsChange returned unexpected iCallControlCaps"));																	   
       
 11439 
       
 11440 	// Check RMobileCall::GetMobileCallCaps for call 2 includes iCallControlCaps in set of KCapsVoice | KCapsSwap | KCapsHangUp | KCapsJoin | KCapsTransfer
       
 11441 	// Check RMobileCall::GetMobileCallCaps for call 2 includes iCallControlCaps NOT in set of KCapsHold
       
 11442 	// Check RMobileCall::GetMobileCallCaps for call 2 includes iCallEventCaps in set of KCapsRemoteHold | KCapsRemoteTerminate | KCapsRemoteConferenceCreate.
       
 11443 	ASSERT_EQUALS(call2.GetMobileCallCaps(mobileCallCapsPckg), KErrNone, 
       
 11444 			_L("RMobileCall::GetMobileCallCaps returned an error"));
       
 11445 	wantedMobileCaps.iCallControlCaps =  RMobileCall::KCapsVoice | 
       
 11446 										RMobileCall::KCapsSwap | 
       
 11447 										RMobileCall::KCapsHangUp | 
       
 11448 										RMobileCall::KCapsJoin|
       
 11449 										RMobileCall::KCapsTransfer;
       
 11450 										
       
 11451 	unWantedMobileCaps.iCallControlCaps = RMobileCall::KCapsHold;
       
 11452 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps,unWantedMobileCaps.iCallControlCaps,
       
 11453 			 _L("RMobileCall::GetMobileCallCaps returned unexpected iCallControlCaps"));
       
 11454 	
       
 11455 	wantedMobileCaps.iCallEventCaps = RMobileCall::KCapsRemoteHold | 
       
 11456 									  RMobileCall::KCapsRemoteTerminate | 
       
 11457 									  RMobileCall::KCapsRemoteConferenceCreate;
       
 11458 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedMobileCaps.iCallEventCaps, KNoUnwantedBits,
       
 11459 			 _L("RMobileCall::GetMobileCallCaps returned unexpected iCallEventCaps"));	
       
 11460 	
       
 11461 	// ===  Check call status ===
       
 11462 	
       
 11463 	// Check RCall::NotifyStatusChange for call 2 completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
 11464 	RCall::TStatus expectedCallStatus = RCall::EStatusDialling;
       
 11465 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call2,
       
 11466 														 notifyStatusChangeStatus,
       
 11467 														 callStatus,
       
 11468 														 expectedCallStatus,
       
 11469 														 wantedStatus);
       
 11470 
       
 11471 	call2.NotifyStatusChange(notifyStatusChangeStatus, callStatus);
       
 11472 	expectedCallStatus = RCall::EStatusConnecting;
       
 11473 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call2,
       
 11474 														 notifyStatusChangeStatus,
       
 11475 														 callStatus,
       
 11476 														 expectedCallStatus,
       
 11477 														 wantedStatus);
       
 11478 
       
 11479 	call2.NotifyStatusChange(notifyStatusChangeStatus, callStatus);
       
 11480 	expectedCallStatus = RCall::EStatusConnected;
       
 11481 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call2,
       
 11482 														 notifyStatusChangeStatus,
       
 11483 														 callStatus,
       
 11484 														 expectedCallStatus,
       
 11485 														 wantedStatus);
       
 11486 	// Check RCall::GetStatus for call 2 returns EStatusConnected.
       
 11487 	ASSERT_EQUALS(call2.GetStatus(callStatus),KErrNone, _L("RCall::GetStatus returned an error"));
       
 11488 	ASSERT_EQUALS(callStatus, RCall::EStatusConnected, 	_L("RCall::GetStatus returned an unexpected call status"));
       
 11489 
       
 11490 
       
 11491 	// Check RMobileCall::NotifyMobileCallStatusChange for call 2  completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
 11492 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusDialling;
       
 11493 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call2,
       
 11494 															notifyMobileCallStatusChangeStatus,
       
 11495 															notifyMobileCallStatus,
       
 11496 															expectedMobileCallStatus,
       
 11497 															wantedStatus);
       
 11498 	call2.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, notifyMobileCallStatus);																																												
       
 11499 	expectedMobileCallStatus = RMobileCall::EStatusConnecting;
       
 11500 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call2,
       
 11501 															notifyMobileCallStatusChangeStatus,
       
 11502 															notifyMobileCallStatus,
       
 11503 															expectedMobileCallStatus,
       
 11504 															wantedStatus);
       
 11505 	call2.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, notifyMobileCallStatus);																
       
 11506 	expectedMobileCallStatus = RMobileCall::EStatusConnected;															
       
 11507 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call2,
       
 11508 															notifyMobileCallStatusChangeStatus,
       
 11509 															notifyMobileCallStatus,
       
 11510 															expectedMobileCallStatus,
       
 11511 															wantedStatus);																														
       
 11512 	// Check RMobileCall::GetMobileCallStatus for call 2  returns status of EStatusConnected.
       
 11513 	ASSERT_EQUALS(call2.GetMobileCallStatus(mobileCallStatus), KErrNone, _L("RMobileCall::GetMobileStatus returned an error"));
       
 11514 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected, _L("RMobileCall::GetMobileStatus did not return a status EStatusConnected"));
       
 11515 
       
 11516 	// ===  Attempt to hold call 2 when call 1 is already on hold ===
       
 11517 
       
 11518 	// Hold call 2. 
       
 11519 	TExtEtelRequestStatus holdStatus2(call2, EMobileCallHold);
       
 11520 	CleanupStack::PushL(holdStatus2);
       
 11521 	call2.Hold(holdStatus2);
       
 11522 	ASSERT_EQUALS(WaitForRequestWithTimeOut(holdStatus2, ETimeMedium),KErrNone, _L("RMobileCall::Hold timed out"));
       
 11523 	
       
 11524 	// Check error is returned.
       
 11525 	ASSERT_TRUE(holdStatus2.Int() != KErrNone, _L("RMobileCall::Hold returned KErrNone, should have returned an error"));		
       
 11526 
       
 11527 	// ===  Check call 2 is still active and call 1 is still on hold ===
       
 11528 
       
 11529 	// Check RMobileCall::GetMobileCallStatus for call 2 returns status of EStatusConnected.
       
 11530 	ASSERT_EQUALS(call2.GetMobileCallStatus(mobileCallStatus), KErrNone, _L("RMobileCall::GetMobileCallStatus returned with an error"));
       
 11531 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected, _L("RMobileCall::GetMobileCallStatus did not return EStatusConnected as expected"));
       
 11532 	
       
 11533 	// Check RMobileCall::GetMobileCallStatus for call 1 returns status of EStatusHold.
       
 11534 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone, _L("RMobileCall::GetMobileCallStatus returned with an error"));
       
 11535 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusHold, _L("RMobileCall::GetMobileCallStatus did not return EStatusHold as expected"));
       
 11536 
       
 11537 	// Terminate both calls
       
 11538 	ASSERT_EQUALS(call1.HangUp(), KErrNone, _L("RMobileCall::HangUp returned with an error"));
       
 11539 	ASSERT_EQUALS(call2.HangUp(), KErrNone, _L("RMobileCall::HangUp returned with an error"));
       
 11540 
       
 11541 	////////////////////////////////////////////////////////////////
       
 11542 	// TEST END
       
 11543 	////////////////////////////////////////////////////////////////
       
 11544 
       
 11545     StartCleanup();
       
 11546     
       
 11547 	
       
 11548 	// Pop
       
 11549 	// dialStatus
       
 11550 	// holdStatus
       
 11551 	// notifyCapsChangeStatus
       
 11552 	// notifyMobileCallCapsChangeStatus
       
 11553 	// notifyStatusChangeStatus
       
 11554 	// notifyMobileCallStatusChangeStatus
       
 11555 	// dialStatus2
       
 11556 	// holdStatus2
       
 11557 	CleanupStack::PopAndDestroy(8, &dialStatus);
       
 11558 	
       
 11559 	return TestStepResult();
       
 11560 	}
       
 11561 
       
 11562 TPtrC CCTSYIntegrationTestCallControl0031::GetTestStepName()
       
 11563 /**
       
 11564  * @return The test step name.
       
 11565  */
       
 11566 	{
       
 11567 	return  _L("CCTSYIntegrationTestCallControl0031");
       
 11568 	}
       
 11569 
       
 11570 
       
 11571 
       
 11572 CCTSYIntegrationTestCallControl0032::CCTSYIntegrationTestCallControl0032(CEtelSessionMgr& aEtelSessionMgr)
       
 11573 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 11574 /**
       
 11575  * Constructor.
       
 11576  */
       
 11577 	{
       
 11578 	SetTestStepName(CCTSYIntegrationTestCallControl0032::GetTestStepName());
       
 11579 	}
       
 11580 
       
 11581 CCTSYIntegrationTestCallControl0032::~CCTSYIntegrationTestCallControl0032()
       
 11582 /**
       
 11583  * Destructor.
       
 11584  */
       
 11585 	{
       
 11586 	}
       
 11587 
       
 11588 TVerdict CCTSYIntegrationTestCallControl0032::doTestStepL()
       
 11589 /**
       
 11590  * @SYMTestCaseID BA-CTSY-INT-CCON-0032
       
 11591  * @SYMFssID BA/CTSY/CCON-0032
       
 11592  * @SYMTestCaseDesc Resume a call that is not on hold.
       
 11593  * @SYMTestPriority High
       
 11594  * @SYMTestActions RMobileCall::NotifyMobileCallCapsChange, RMobileCall::GetMobileCallStatus, RCall::NotifyStatusChange, RMobileCall::NotifyMobileCallStatusChange, RCall::NotifyCapsChange, RCall::GetStatus, RMobileCall::GetMobileCallCaps, RMobileCall::Resume, RCall::Dial
       
 11595  * @SYMTestExpectedResults Pass - Error returned on attempt to resume a call that is not on hold.
       
 11596  * @SYMTestType CIT
       
 11597  * @SYMTestCaseDependencies live/automatic
       
 11598  *
       
 11599  * Reason for test: Verify error is returned on attempt to resume and call stays connected.
       
 11600  *
       
 11601  * @return - TVerdict code
       
 11602  */
       
 11603 	{
       
 11604 
       
 11605 	////////////////////////////////////////////////////////////////
       
 11606 	// SET UP
       
 11607 	////////////////////////////////////////////////////////////////
       
 11608 
       
 11609 
       
 11610 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 11611 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 11612  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
 11613 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 11614 	
       
 11615 	// Check phone supports KCapsVoice.
       
 11616 	RPhone::TCaps phoneCaps; 
       
 11617 	CHECK_EQUALS_L(phone.GetCaps(phoneCaps), KErrNone, _L("RPhone::GetCaps returned an error"));
       
 11618 	CHECK_BITS_SET_L(phoneCaps.iFlags, RPhone::KCapsVoice, KNoUnwantedBits, _L("RPhone::GetCaps returned wrong caps"));
       
 11619 
       
 11620 	// Get Voice line 1. 
       
 11621 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
 11622 	
       
 11623 	// Get call 1 
       
 11624 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
 11625 
       
 11626 
       
 11627 	////////////////////////////////////////////////////////////////
       
 11628 	// SET UP END
       
 11629 	////////////////////////////////////////////////////////////////
       
 11630 	
       
 11631 	StartTest();
       
 11632 	
       
 11633 	////////////////////////////////////////////////////////////////
       
 11634 	// TEST START
       
 11635 	////////////////////////////////////////////////////////////////
       
 11636 
       
 11637 
       
 11638 	// Post notifier for RCall::NotifyCapsChange
       
 11639 	TCoreEtelRequestStatus<RCall> notifyCapsChangeStatus (call1, &RCall::NotifyCapsChangeCancel);	
       
 11640 	CleanupStack::PushL(notifyCapsChangeStatus);
       
 11641 	RCall::TCaps callCaps;
       
 11642 	call1.NotifyCapsChange(notifyCapsChangeStatus, callCaps);
       
 11643 	
       
 11644 	// Post notifier for RMobileCall::NotifyMobileCallCapsChange
       
 11645 	TExtEtelRequestStatus notifyMobileCallCapsChangeStatus(call1, EMobileCallNotifyMobileCallCapsChange);
       
 11646 	CleanupStack::PushL(notifyMobileCallCapsChangeStatus);
       
 11647 	RMobileCall::TMobileCallCapsV1 mobileCallCaps;
       
 11648 	RMobileCall::TMobileCallCapsV1Pckg mobileCallCapsPckg(mobileCallCaps);
       
 11649 	call1.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus,mobileCallCapsPckg);
       
 11650 	
       
 11651 	// Post notifier for RCall::NotifyStatusChange for call 1
       
 11652 	RCall::TStatus callStatus;
       
 11653 	TCoreEtelRequestStatus<RCall> notifyStatusChangeStatus(call1,&RCall::NotifyStatusChangeCancel);
       
 11654 	CleanupStack::PushL(notifyStatusChangeStatus);
       
 11655 	call1.NotifyStatusChange(notifyStatusChangeStatus, callStatus);	
       
 11656 	
       
 11657 	// Post notifier for RMobileCall::NotifyMobileCallStatusChange for call 1
       
 11658 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
 11659 	TExtEtelRequestStatus notifyMobileCallStatusChangeStatus(call1, EMobileCallNotifyMobileCallStatusChange);
       
 11660 	CleanupStack::PushL(notifyMobileCallStatusChangeStatus);
       
 11661 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallStatus);
       
 11662 	
       
 11663 	// Dial a number that answers. 
       
 11664 	TPtrC number; 
       
 11665 	ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number) != EFalse, _L("GetStringFromConfig did not complete as expected"));
       
 11666 	DEBUG_PRINTF1(_L("Board Now Dialling: "));
       
 11667 	TCoreEtelRequestStatus<RCall> dialStatus(call1, &RCall::DialCancel);
       
 11668 	CleanupStack::PushL(dialStatus);
       
 11669 	call1.Dial(dialStatus, number); 
       
 11670 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeLong), KErrNone, _L("RCall::Dial timed-out"));
       
 11671 	ASSERT_EQUALS(dialStatus.Int(), KErrNone, _L("RCall::Dial returned with an error"));
       
 11672 
       
 11673 	// ===  Check call caps ===
       
 11674 
       
 11675 	// Check RCall::NotifyCapsChange completes with caps in set of KCapsVoice | KCapsHangUp.
       
 11676 	RCall::TCaps wantedCaps, unwantedCaps;
       
 11677 	wantedCaps.iFlags = RCall::KCapsVoice | RCall::KCapsHangUp;
       
 11678 	unwantedCaps.iFlags = 0;
       
 11679 	const TInt wantedStatus = KErrNone;
       
 11680 	iCallControlTestHelper.WaitForCallNotifyCapsChange(call1, 
       
 11681 													   notifyCapsChangeStatus,
       
 11682 													   callCaps,
       
 11683 													   wantedCaps,
       
 11684 													   unwantedCaps,
       
 11685 													   wantedStatus);
       
 11686 
       
 11687 	// Check RCall::GetCaps supports KCapsHangUp | KCapsVoice.
       
 11688 	ASSERT_EQUALS(call1.GetCaps(callCaps), KErrNone, _L("RCall::GetCaps returned an error"));
       
 11689 	ASSERT_BITS_SET(callCaps.iFlags, wantedCaps.iFlags, KNoUnwantedBits, _L("RCall::GetCaps returned wrong caps"));
       
 11690 
       
 11691 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice | KCapsHold | KCapsHangUp.
       
 11692 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps NOT in set of KCapsResume
       
 11693 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallEventCaps in set of KCapsLocalHold | KCapsLocalTransfer | KCapsRemoteHold | KCapsRemoteTerminate | KCapsRemoteConferenceCreate.
       
 11694 	RMobileCall::TMobileCallCapsV1 wantedMobileCaps;
       
 11695 	TUint32 unWantedControlCaps = RMobileCall::KCapsResume;
       
 11696 	
       
 11697 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | 
       
 11698 										RMobileCall::KCapsHold | 
       
 11699 										RMobileCall::KCapsHangUp;
       
 11700 										
       
 11701 	wantedMobileCaps.iCallEventCaps = RMobileCall::KCapsLocalHold | 
       
 11702 									  RMobileCall::KCapsLocalTransfer | 
       
 11703 									  RMobileCall::KCapsRemoteHold | 
       
 11704 									  RMobileCall::KCapsRemoteTerminate | 
       
 11705 									  RMobileCall::KCapsRemoteConferenceCreate;
       
 11706 					  				  
       
 11707 	TCmpRMobileCallTMobileCallCaps mobileCapsComp(wantedMobileCaps, mobileCallCaps, *this);
       
 11708 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(call1, 
       
 11709 																	   notifyMobileCallCapsChangeStatus,
       
 11710 																	   mobileCapsComp,
       
 11711 																	   wantedStatus);
       
 11712 
       
 11713 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps, unWantedControlCaps, _L("RMobileCall::NotifyMobileCallCapsChange did not set expected iCallControlCaps"));
       
 11714 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedMobileCaps.iCallEventCaps, KNoUnwantedBits, _L("RMobileCall::NotifyMobileCallCapsChange did not set expected iCallControlCaps"));	
       
 11715 
       
 11716 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsHold | KCapsHangUp.
       
 11717 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps NOT in set of KCapsResume
       
 11718 	ASSERT_EQUALS(call1.GetMobileCallCaps(mobileCallCapsPckg), KErrNone, _L("RMobileCall::GetMobileCallCaps returned an error"));
       
 11719 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps, unWantedControlCaps, _L("RMobileCall::GetMobileCallCaps returned wrong caps"));
       
 11720 	
       
 11721 	// Check RMobileCall::GetMobileCallCaps includes iCallEventCaps in set of KCapsLocalHold | KCapsLocalTransfer | KCapsRemoteHold | KCapsRemoteTerminate | KCapsRemoteConferenceCreate.
       
 11722 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedMobileCaps.iCallEventCaps, KNoUnwantedBits, _L("RMobileCall::GetMobileCallCaps returned wrong caps"));
       
 11723 
       
 11724 	// ===  Check call status ===
       
 11725 
       
 11726 	// Check RCall::NotifyStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
 11727 	RCall::TStatus expectedCallStatus = RCall::EStatusDialling;
       
 11728 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
 11729 														 notifyStatusChangeStatus,
       
 11730 														 callStatus,
       
 11731 														 expectedCallStatus,
       
 11732 														 wantedStatus);
       
 11733 
       
 11734 	// Check RCall::NotifyStatusChange completes with EStatusConnecting	
       
 11735 	call1.NotifyStatusChange(notifyStatusChangeStatus, callStatus);
       
 11736 	expectedCallStatus = RCall::EStatusConnecting;
       
 11737 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
 11738 														 notifyStatusChangeStatus,
       
 11739 														 callStatus,
       
 11740 														 expectedCallStatus,
       
 11741 														 wantedStatus);
       
 11742 
       
 11743 	// Check RCall::NotifyStatusChange completes with EStatusConnected.
       
 11744 	call1.NotifyStatusChange(notifyStatusChangeStatus, callStatus);
       
 11745 	expectedCallStatus = RCall::EStatusConnected;
       
 11746 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
 11747 														 notifyStatusChangeStatus,
       
 11748 														 callStatus,
       
 11749 														 expectedCallStatus,
       
 11750 														 wantedStatus);	
       
 11751 													 												 
       
 11752 	// Check RCall::GetStatus returns EStatusConnected.
       
 11753 	ASSERT_EQUALS(call1.GetStatus(callStatus),KErrNone, _L("RCall::GetStatus returned an error"));
       
 11754 	ASSERT_EQUALS(callStatus, RCall::EStatusConnected, _L("RCall::GetStatus returned an unexpected call status"));
       
 11755 
       
 11756 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
 11757 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusDialling;
       
 11758 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
 11759 															notifyMobileCallStatusChangeStatus,
       
 11760 															mobileCallStatus,
       
 11761 															expectedMobileCallStatus,
       
 11762 															wantedStatus);
       
 11763 
       
 11764 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusConnecting ->															
       
 11765 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallStatus);
       
 11766 	expectedMobileCallStatus = RMobileCall::EStatusConnecting;
       
 11767 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
 11768 															notifyMobileCallStatusChangeStatus,
       
 11769 															mobileCallStatus,
       
 11770 															expectedMobileCallStatus,
       
 11771 															wantedStatus);
       
 11772 
       
 11773 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusConnected.															
       
 11774 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallStatus);
       
 11775 	expectedMobileCallStatus = RMobileCall::EStatusConnected;															
       
 11776 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
 11777 															notifyMobileCallStatusChangeStatus,
       
 11778 															mobileCallStatus,
       
 11779 															expectedMobileCallStatus,
       
 11780 															wantedStatus);
       
 11781 																														
       
 11782 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusConnected.
       
 11783 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone, 
       
 11784 			_L("RMobileCall::GetMobileCallStatus returned an error"));
       
 11785 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected, 
       
 11786 			_L("RMobileCall::GetMobileCallStatus did not return a status EStatusConnected"));
       
 11787 
       
 11788 	// Resume call. 
       
 11789 	TExtEtelRequestStatus resumeStatus(call1, EMobileCallResume);
       
 11790 	CleanupStack::PushL(resumeStatus);
       
 11791 	call1.Resume(resumeStatus);
       
 11792 	ASSERT_EQUALS(WaitForRequestWithTimeOut(resumeStatus, ETimeMedium), KErrNone, _L("RMobileCall::Resume timed-out"));
       
 11793 				  
       
 11794 	// Check error is returned.
       
 11795 	ASSERT_TRUE(resumeStatus.Int() != KErrNone, _L("RMobileCall::Resume did not return error as expected"));
       
 11796 	
       
 11797 	// ===  Check call is still connected ===
       
 11798 
       
 11799 	// Check RCall::GetStatus returns EStatusConnected.
       
 11800 	ASSERT_EQUALS(call1.GetStatus(callStatus),KErrNone, _L("RCall::GetStatus returned an error"));
       
 11801 	ASSERT_EQUALS(callStatus, RCall::EStatusConnected, _L("RCall::GetStatus returned an unexpected call status"));
       
 11802 
       
 11803 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusConnected.
       
 11804 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone, _L("RMobileCall::GetMobileCallStatus returned an error"));
       
 11805 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected, _L("RMobileCall::GetMobileCallStatus did not return a status EStatusConnected"));
       
 11806 
       
 11807 	// Hangup call 1.
       
 11808 	TCoreEtelRequestStatus<RCall> hangUpStatus (call1,&RCall::HangUpCancel);	
       
 11809 	CleanupStack::PushL(hangUpStatus);
       
 11810 	call1.HangUp(hangUpStatus);
       
 11811 	ASSERT_EQUALS(WaitForRequestWithTimeOut(hangUpStatus, ETimeMedium), KErrNone, _L("RCall::HangUp timed-out"));
       
 11812 	ASSERT_EQUALS(hangUpStatus.Int(), KErrNone, _L("RCall::HangUp returned an error"));
       
 11813 
       
 11814 
       
 11815 	////////////////////////////////////////////////////////////////
       
 11816 	// TEST END
       
 11817 	////////////////////////////////////////////////////////////////
       
 11818 
       
 11819     StartCleanup();
       
 11820 	
       
 11821 	// Pop
       
 11822 	// notifyCapsChangeStatus
       
 11823 	// notifyMobileCallCapsChangeStatus
       
 11824 	// notifyStatusChangeStatus
       
 11825 	// notifyMobileCallStatusChangeStatus
       
 11826 	// dialStatus
       
 11827 	// resumeStatus
       
 11828 	// hangUpStatus
       
 11829 	CleanupStack::PopAndDestroy(7, &notifyCapsChangeStatus);
       
 11830 	
       
 11831 	
       
 11832 	return TestStepResult();
       
 11833 	}
       
 11834 
       
 11835 TPtrC CCTSYIntegrationTestCallControl0032::GetTestStepName()
       
 11836 /**
       
 11837  * @return The test step name.
       
 11838  */
       
 11839 	{
       
 11840 	return  _L("CCTSYIntegrationTestCallControl0032");
       
 11841 	}
       
 11842 
       
 11843 
       
 11844 
       
 11845 CCTSYIntegrationTestCallControl0033::CCTSYIntegrationTestCallControl0033(CEtelSessionMgr& aEtelSessionMgr)
       
 11846 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 11847 /**
       
 11848  * Constructor.
       
 11849  */
       
 11850 	{
       
 11851 	SetTestStepName(CCTSYIntegrationTestCallControl0033::GetTestStepName());
       
 11852 	}
       
 11853 
       
 11854 CCTSYIntegrationTestCallControl0033::~CCTSYIntegrationTestCallControl0033()
       
 11855 /**
       
 11856  * Destructor.
       
 11857  */
       
 11858 	{
       
 11859 	}
       
 11860 
       
 11861 TVerdict CCTSYIntegrationTestCallControl0033::doTestStepL()
       
 11862 /**
       
 11863  * @SYMTestCaseID BA-CTSY-INT-CCON-0033
       
 11864  * @SYMFssID BA/CTSY/CCON-0033
       
 11865  * @SYMTestCaseDesc Check that any client can hold or resume calls, not just owner
       
 11866  * @SYMTestPriority High
       
 11867  * @SYMTestActions RCall::OpenExistingCall, RMobileCall::Hold, RMobileCall::Resume, RCall::HangUp, RMobileCall::NotifyMobileCallStatusChange, RCall::NotifyStatusChange, RMobileCall::GetMobileCallStatus, RMobileCall::NotifyCallEvent, RCall::GetStatus
       
 11868  * @SYMTestExpectedResults Pass - Call held and resumed by any client.
       
 11869  * @SYMTestType CIT
       
 11870  * @SYMTestCaseDependencies live/automatic
       
 11871  *
       
 11872  * Reason for test: Verify call status is correct.
       
 11873  *
       
 11874  * @return - TVerdict code
       
 11875  */
       
 11876 	{
       
 11877 
       
 11878 	////////////////////////////////////////////////////////////////
       
 11879 	// SET UP
       
 11880 	////////////////////////////////////////////////////////////////
       
 11881 
       
 11882 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 11883 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 11884  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, 
       
 11885  					_L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 11886  						
       
 11887 	// Check phone supports KCapsVoice.
       
 11888 	RPhone::TCaps phoneCaps; 
       
 11889 	CHECK_EQUALS_L(phone.GetCaps(phoneCaps), KErrNone, _L("RPhone::GetCaps returned an error"));
       
 11890 	CHECK_BITS_SET_L(phoneCaps.iFlags, RPhone::KCapsVoice, KNoUnwantedBits, _L("RPhone::GetCaps returned wrong caps"));
       
 11891 
       
 11892 	////////////////////////////////////////////////////////////////
       
 11893 	// SET UP END
       
 11894 	////////////////////////////////////////////////////////////////
       
 11895 	
       
 11896 	StartTest();
       
 11897 	
       
 11898 	////////////////////////////////////////////////////////////////
       
 11899 	// TEST START
       
 11900 	////////////////////////////////////////////////////////////////
       
 11901 
       
 11902 	// Get server 1.
       
 11903 	RTelServer& srv1 = iEtelSessionMgr.GetServerL(KMainServer); 
       
 11904 	
       
 11905 	// Get line 1 from server 1. 
       
 11906 	RMobileLine& line1 = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
 11907 	
       
 11908 	// Get call 1 from line 1 and server 1. 
       
 11909 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
 11910 	
       
 11911 	// Get server 2. 
       
 11912 	RTelServer& srv2 = iEtelSessionMgr.GetServerL(KAltServer); 
       
 11913 	
       
 11914 	// Get line 2 from server 2. 
       
 11915 	RMobileLine& line2 = iEtelSessionMgr.GetLineL(KAltServer, KMainPhone, KVoiceLine);
       
 11916 
       
 11917 	// Get call 1 from line 2 and server 2 (this call is now referred to as call 2 in the procedure below). 
       
 11918 	RMobileCall& call2 = iEtelSessionMgr.GetCallL(KAltServer, KMainPhone, KVoiceLine, KCall1);
       
 11919 	
       
 11920 	// Post notify for call 1 RCall::NotifyStatusChange
       
 11921 	TCoreEtelRequestStatus<RCall> notifyStatusChangeCall1(call1, &RCall::NotifyStatusChangeCancel);
       
 11922 	CleanupStack::PushL(notifyStatusChangeCall1);
       
 11923 	RCall::TStatus callStatusCall1;
       
 11924 	call1.NotifyStatusChange(notifyStatusChangeCall1, callStatusCall1);
       
 11925 	
       
 11926 	// Post notify for call 1 RMobileCall::NotifyMobileCallStatusChange
       
 11927 	TExtEtelRequestStatus notifyMobileCallStatusChangeCall1(call1, EMobileCallNotifyMobileCallStatusChange);
       
 11928 	CleanupStack::PushL(notifyMobileCallStatusChangeCall1);
       
 11929 	RMobileCall::TMobileCallStatus mobileCallStatusCall1;
       
 11930 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeCall1, mobileCallStatusCall1);
       
 11931 	
       
 11932 	// Dial a number that answers on call 1. 	
       
 11933 	TPtrC number; 
       
 11934 	ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number) != EFalse,_L("GetStringFromConfig did not complete as expected"));	
       
 11935 	TCoreEtelRequestStatus<RCall> dialStatus(call1, &RCall::DialCancel);
       
 11936 	CleanupStack::PushL(dialStatus);
       
 11937 	call1.Dial(dialStatus, number); 
       
 11938 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeMedium), KErrNone, _L("RCall::Dial timed-out"));
       
 11939 	ASSERT_EQUALS(dialStatus.Int(), KErrNone, _L("RCall::Dial returned with an error"));
       
 11940 	
       
 11941 	// ===  Check status for call 1 and call 2 ===
       
 11942 
       
 11943 	// Check RMobilCall::NotifyStatusChange for call 1 completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.	
       
 11944 	RCall::TStatus expectedCallStatusCall1 = RCall::EStatusDialling;
       
 11945 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
 11946 														 notifyStatusChangeCall1,
       
 11947 														 callStatusCall1,
       
 11948 														 expectedCallStatusCall1,
       
 11949 														 KErrNone);
       
 11950 
       
 11951 	call1.NotifyStatusChange(notifyStatusChangeCall1, callStatusCall1);													 	
       
 11952 	expectedCallStatusCall1 = RCall::EStatusConnecting;
       
 11953 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
 11954 														 notifyStatusChangeCall1,
       
 11955 														 callStatusCall1,
       
 11956 														 expectedCallStatusCall1,
       
 11957 														 KErrNone);
       
 11958 
       
 11959 	call1.NotifyStatusChange(notifyStatusChangeCall1, callStatusCall1);	
       
 11960 	expectedCallStatusCall1 = RCall::EStatusConnected;
       
 11961 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
 11962 														 notifyStatusChangeCall1,
       
 11963 														 callStatusCall1,
       
 11964 														 expectedCallStatusCall1,
       
 11965 														 KErrNone);
       
 11966 	
       
 11967 	// Check RCall::GetStatus for call 1 returns EStatusConnected.		
       
 11968 	RCall::TStatus getStatusCall1;
       
 11969 	ASSERT_EQUALS(call1.GetStatus(getStatusCall1), KErrNone,_L("RCall::GetStatus returned an error"));
       
 11970 	ASSERT_EQUALS(getStatusCall1, expectedCallStatusCall1, _L("RCall::GetStatus did not return EStatusConnected"));		
       
 11971 														 
       
 11972 	// Check RMobileCall::NotifyMobileCallStatusChange for call 1 completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
 11973 	RMobileCall::TMobileCallStatus expectedMobileCallStatusCall1 = RMobileCall::EStatusDialling;
       
 11974 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(
       
 11975 														 call1,
       
 11976 														 notifyMobileCallStatusChangeCall1,
       
 11977 														 mobileCallStatusCall1,
       
 11978 														 expectedMobileCallStatusCall1,
       
 11979 														 KErrNone);
       
 11980 
       
 11981 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeCall1, mobileCallStatusCall1);
       
 11982 	expectedMobileCallStatusCall1 = RMobileCall::EStatusConnecting;
       
 11983 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(
       
 11984 														 call1,
       
 11985 														 notifyMobileCallStatusChangeCall1,
       
 11986 														 mobileCallStatusCall1,
       
 11987 														 expectedMobileCallStatusCall1,  
       
 11988 														 KErrNone);
       
 11989 
       
 11990 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeCall1, mobileCallStatusCall1);
       
 11991 	expectedMobileCallStatusCall1 = RMobileCall::EStatusConnected;
       
 11992 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(
       
 11993 														 call1,
       
 11994 														 notifyMobileCallStatusChangeCall1,
       
 11995 														 mobileCallStatusCall1,
       
 11996 														 expectedMobileCallStatusCall1,
       
 11997 														 KErrNone);
       
 11998 
       
 11999 	// Check RMobileCall::GetMobileCallStatus for call 1 returns status of EStatusConnected.
       
 12000 	RMobileCall::TMobileCallStatus getMobileCallStatusCall1;
       
 12001 	ASSERT_EQUALS(call1.GetMobileCallStatus(getMobileCallStatusCall1), KErrNone,_L("RMobileCall::GetMobileCallStatus returned an error"));
       
 12002 	ASSERT_EQUALS(getMobileCallStatusCall1, expectedMobileCallStatusCall1, _L("RMobileCall::GetMobileCallStatus did not return EStatusConnected"));
       
 12003 	
       
 12004 	// Post notifier for call 2 RMobileCall::NotifyCallEvent
       
 12005 	TExtEtelRequestStatus notifyCallEventCall2(call2, EMobileCallNotifyCallEvent);
       
 12006 	CleanupStack::PushL(notifyCallEventCall2);
       
 12007 	RMobileCall::TMobileCallEvent callEventCall2;
       
 12008 	call2.NotifyCallEvent(notifyCallEventCall2,callEventCall2);
       
 12009 	
       
 12010 	// Post notifier for call 2 RMobileCall::NotifyMobileCallStatusChange
       
 12011 	TExtEtelRequestStatus notifyMobileCallStatusChangeCall2(call2, EMobileCallNotifyMobileCallStatusChange);
       
 12012 	CleanupStack::PushL(notifyMobileCallStatusChangeCall2);
       
 12013 	RMobileCall::TMobileCallStatus mobileCallStatusCall2;
       
 12014 	call2.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeCall2, mobileCallStatusCall2);
       
 12015 	
       
 12016 	// Repost notifier for call 1 RMobileCall::NotifyMobileCallStatusChange
       
 12017 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeCall1, mobileCallStatusCall1);
       
 12018 		
       
 12019 	// Hold call using call 2 	
       
 12020 	TExtEtelRequestStatus holdRequestStatusCall2(call2, EMobileCallHold);
       
 12021 	CleanupStack::PushL(holdRequestStatusCall2);
       
 12022 	call2.Hold(holdRequestStatusCall2);
       
 12023 	ASSERT_EQUALS(WaitForRequestWithTimeOut(holdRequestStatusCall2, ETimeMedium), KErrNone, _L("RMobileCall::Hold timed-out"));
       
 12024 	ASSERT_EQUALS(holdRequestStatusCall2.Int(), KErrNone, _L("RMobileCall::Hold returned error"));
       
 12025 
       
 12026 	// ===  Check status for call 1 and call 2 ===
       
 12027 	
       
 12028 	// Check RMobileCall::NotifyCallEvent for call 2 completes with ELocalHold
       
 12029 	RMobileCall::TMobileCallEvent expectedCallEventCall2 = RMobileCall::ELocalHold;
       
 12030 	iCallControlTestHelper.WaitForMobileCallNotifyCallEvent( 
       
 12031 									call2,
       
 12032 									notifyCallEventCall2,
       
 12033 									callEventCall2, 
       
 12034 									expectedCallEventCall2,
       
 12035 									KErrNone);
       
 12036 
       
 12037 	// Check RMobileCall::NotifyMobileCallStatusChange for call 2 completes with EStatusHold
       
 12038 	RMobileCall::TMobileCallStatus expectedMobileCallStatusCall2 = RMobileCall::EStatusHold;
       
 12039 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(
       
 12040 														 call2,
       
 12041 														 notifyMobileCallStatusChangeCall2,
       
 12042 														 mobileCallStatusCall2,
       
 12043 														 expectedMobileCallStatusCall2,
       
 12044 														 KErrNone);
       
 12045 
       
 12046 	// Check RMobileCall::GetMobileCallStatus for call 2 returns status of EStatusHold
       
 12047 	RMobileCall::TMobileCallStatus getMobileCallStatusCall2;
       
 12048 	ASSERT_EQUALS(call2.GetMobileCallStatus(getMobileCallStatusCall2), KErrNone, _L("RMobileCall::GetMobileCallStatus returned an error"));
       
 12049 	ASSERT_EQUALS(getMobileCallStatusCall2, expectedMobileCallStatusCall2, _L("RMobileCall::GetMobileCallStatus did not return EStatusHold"));
       
 12050 
       
 12051 	// Check RMobileCall::NotifyMobileCallStatusChange for call 1 completes with EStatusHold
       
 12052 	expectedMobileCallStatusCall1 = RMobileCall::EStatusHold;
       
 12053 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(
       
 12054 														 call1,
       
 12055 														 notifyMobileCallStatusChangeCall1,
       
 12056 														 mobileCallStatusCall1,
       
 12057 														 expectedMobileCallStatusCall1,
       
 12058 														 KErrNone);
       
 12059 
       
 12060 	// Check RMobileCall::GetMobileCallStatus for call 1 returns status of EStatusHold
       
 12061 	ASSERT_EQUALS(call1.GetMobileCallStatus(getMobileCallStatusCall1), KErrNone, _L("RMobileCall::GetMobileCallStatus returned an error"));
       
 12062 	ASSERT_EQUALS(getMobileCallStatusCall1, expectedMobileCallStatusCall1, _L("RMobileCall::GetMobileCallStatus did not return EStatusHold"));
       
 12063 
       
 12064 	// Repost notifier for call 2 RMobileCall::NotifyCallEvent
       
 12065 	call2.NotifyCallEvent(notifyCallEventCall2,callEventCall2);
       
 12066 	
       
 12067 	// Repost notifier for call 2 RMobileCall::NotifyMobileCallStatusChange
       
 12068 	call2.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeCall2, mobileCallStatusCall2);
       
 12069 
       
 12070 	// Repost notifier for call 1 RMobileCall::NotifyMobileCallStatusChange
       
 12071 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeCall1, mobileCallStatusCall1);
       
 12072 
       
 12073 	// Resume call using call 2 
       
 12074 	TExtEtelRequestStatus requestResumeCallStatus(call2,EMobileCallResume);
       
 12075 	CleanupStack::PushL(requestResumeCallStatus);
       
 12076 	call2.Resume(requestResumeCallStatus);	
       
 12077 	ASSERT_EQUALS(WaitForRequestWithTimeOut(requestResumeCallStatus, ETimeMedium), KErrNone, _L("RMobileCall::Resume timed-out"));
       
 12078 	ASSERT_EQUALS(requestResumeCallStatus.Int(), KErrNone, _L("RMobileCall::Resume returned error"));
       
 12079 
       
 12080 	// ===  Check status for call 1 and call 2 ===
       
 12081 
       
 12082 	// Check RMobileCall::NotifyCallEvent for call 2 completes with ELocalResume
       
 12083     expectedCallEventCall2 = RMobileCall::ELocalResume;
       
 12084 	iCallControlTestHelper.WaitForMobileCallNotifyCallEvent(call2,
       
 12085 															notifyCallEventCall2,
       
 12086 															callEventCall2, 
       
 12087 															expectedCallEventCall2,
       
 12088 															KErrNone);
       
 12089 									
       
 12090 	// Check RMobileCall::NotifyMobileCallStatusChange for call 2 completes with EStatusConnected
       
 12091     expectedMobileCallStatusCall2 = RMobileCall::EStatusConnected;
       
 12092 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(
       
 12093 														 call2,
       
 12094 														 notifyMobileCallStatusChangeCall2,
       
 12095 														 mobileCallStatusCall2,
       
 12096 														 expectedMobileCallStatusCall2,
       
 12097 														 KErrNone);
       
 12098 														 
       
 12099 	// Check RMobileCall::GetMobileCallStatus for call 2 returns status of EStatusConnected
       
 12100 	ASSERT_EQUALS(call2.GetMobileCallStatus(getMobileCallStatusCall2), KErrNone, _L("RMobileCall::GetMobileCallStatus returned an error"));
       
 12101 	ASSERT_EQUALS(getMobileCallStatusCall2, expectedMobileCallStatusCall2, _L("RMobileCall::GetMobileCallStatus did not return EStatusConnected"));
       
 12102 
       
 12103 	// Check RMobileCall::NotifyMobileCallStatusChange for call 1 completes with EStatusConnected
       
 12104 	expectedMobileCallStatusCall1 = RMobileCall::EStatusConnected;
       
 12105 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(
       
 12106 														 call1,
       
 12107 														 notifyMobileCallStatusChangeCall1,
       
 12108 														 mobileCallStatusCall1,
       
 12109 														 expectedMobileCallStatusCall1,
       
 12110 														 KErrNone);
       
 12111 
       
 12112 	// Check RMobileCall::GetMobileCallStatus for call 1 returns status of EStatusConnected
       
 12113 	ASSERT_EQUALS(call1.GetMobileCallStatus(getMobileCallStatusCall1), KErrNone, _L("RMobileCall::GetMobileCallStatus returned an error"));
       
 12114 	ASSERT_EQUALS(getMobileCallStatusCall1, expectedMobileCallStatusCall1, _L("RMobileCall::GetMobileCallStatus did not return EStatusConnected"));
       
 12115 
       
 12116 	// Repost notifier for call 1 RCall::NotifyStatusChange
       
 12117 	call1.NotifyStatusChange(notifyStatusChangeCall1, callStatusCall1);
       
 12118 	
       
 12119 	// Repost notifier for call 1 RMobileCall::NotifyMobileCallStatusChange
       
 12120 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeCall1, mobileCallStatusCall1);
       
 12121 	
       
 12122 	// Post notifier for call 2 RCall::NotifyStatusChange
       
 12123 	TCoreEtelRequestStatus<RCall> notifyStatusChangeCall2(call2, &RCall::NotifyStatusChangeCancel);
       
 12124 	CleanupStack::PushL(notifyStatusChangeCall2);
       
 12125 	RCall::TStatus callStatusCall2;
       
 12126 	call2.NotifyStatusChange(notifyStatusChangeCall2, callStatusCall2);
       
 12127 	
       
 12128 	// Repost notifier for call 2 RMobileCall::NotifyMobileCallStatusChange
       
 12129 	call2.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeCall2, mobileCallStatusCall2);
       
 12130 	
       
 12131 	// Hang up call using call 1 	
       
 12132 	TCoreEtelRequestStatus<RCall>requestStatusHangUp(call1, &RCall::HangUpCancel);
       
 12133 	CleanupStack::PushL(requestStatusHangUp);
       
 12134 	call1.HangUp(requestStatusHangUp);
       
 12135 	ASSERT_EQUALS(WaitForRequestWithTimeOut(requestStatusHangUp, ETimeMedium), KErrNone, _L("RMobileCall::HangUp timed-out"));
       
 12136 	ASSERT_EQUALS(requestStatusHangUp.Int(), KErrNone, _L("RMobileCall::HangUp returned error"));
       
 12137 
       
 12138 	// ===  Check status for call 1 and call 2 ===
       
 12139 	
       
 12140 	// Check RCall::NotifyStatusChange for call 1 completes with EStatusHangingUp -> EStatusIdle.
       
 12141 	expectedCallStatusCall1 = RCall::EStatusHangingUp;
       
 12142 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
 12143 														 notifyStatusChangeCall1,
       
 12144 														 callStatusCall1,
       
 12145 														 expectedCallStatusCall1,
       
 12146 														 KErrNone);
       
 12147 
       
 12148 	call1.NotifyStatusChange(notifyStatusChangeCall1, callStatusCall1);													 
       
 12149 	expectedCallStatusCall1 = RCall::EStatusIdle;
       
 12150 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
 12151 														 notifyStatusChangeCall1,
       
 12152 														 callStatusCall1,
       
 12153 														 expectedCallStatusCall1,
       
 12154 														 KErrNone);
       
 12155 														 	
       
 12156 	// Check RCall::GetStatus for call 1 returns EStatusIdle.
       
 12157 	ASSERT_EQUALS(call1.GetStatus(getStatusCall1), KErrNone,_L("RCall::GetStatus returned an error"));
       
 12158 	ASSERT_EQUALS(getStatusCall1, RCall::EStatusIdle, _L("RCall::GetStatus did not return EStatusIdle"));	
       
 12159 
       
 12160 	// Check RMobileCall::NotifyMobileCallStatusChange for call 1 completes with EStatusDisconnecting -> EStatusIdle.
       
 12161 	expectedMobileCallStatusCall1 = RMobileCall::EStatusDisconnecting;
       
 12162 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(
       
 12163 														 call1,
       
 12164 														 notifyMobileCallStatusChangeCall1,
       
 12165 														 mobileCallStatusCall1,
       
 12166 														 expectedMobileCallStatusCall1,
       
 12167 														 KErrNone);
       
 12168 														 
       
 12169 
       
 12170 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeCall1, mobileCallStatusCall1);
       
 12171 	expectedMobileCallStatusCall1 = RMobileCall::EStatusIdle;
       
 12172 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(
       
 12173 														 call1,
       
 12174 														 notifyMobileCallStatusChangeCall1,
       
 12175 														 mobileCallStatusCall1,
       
 12176 														 expectedMobileCallStatusCall1,
       
 12177 														 KErrNone);
       
 12178 
       
 12179 	// Check RMobileCall::GetMobileCallStatus for call 1 returns status of EStatusIdle.
       
 12180 	ASSERT_EQUALS(call1.GetMobileCallStatus(getMobileCallStatusCall1), KErrNone, _L("RMobileCall::GetMobileCallStatus returned an error"));
       
 12181 	ASSERT_EQUALS(getMobileCallStatusCall1, expectedMobileCallStatusCall1, _L("RMobileCall::GetMobileCallStatus did not return EStatusIdle"));
       
 12182 
       
 12183 	// Check RCall::NotifyStatusChange for call 2 completes with EStatusHangingUp ->EStatusIdle..
       
 12184 	RCall::TStatus expectedCallStatusCall2 = RCall::EStatusHangingUp;
       
 12185 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call2,
       
 12186 														 notifyStatusChangeCall2,
       
 12187 														 callStatusCall2,
       
 12188 														 expectedCallStatusCall2,
       
 12189 														 KErrNone);
       
 12190 
       
 12191 	call2.NotifyStatusChange(notifyStatusChangeCall2, callStatusCall2);
       
 12192 	expectedCallStatusCall2 = RCall::EStatusIdle;
       
 12193 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call2,
       
 12194 														 notifyStatusChangeCall2,
       
 12195 														 callStatusCall2,
       
 12196 														 expectedCallStatusCall2,
       
 12197 														 KErrNone);
       
 12198 
       
 12199 	// Check RCall::GetStatus for call 2 returns EStatusIdle.
       
 12200 	RCall::TStatus getStatusCall2;
       
 12201 	ASSERT_EQUALS(call2.GetStatus(getStatusCall2), KErrNone,_L("RCall::GetStatus returned an error"));
       
 12202 	ASSERT_EQUALS(getStatusCall2, RCall::EStatusIdle, _L("RCall::GetStatus did not return EStatusIdle"));
       
 12203 	
       
 12204 	// Check RMobileCall::NotifyMobileCallStatusChange for call 2 completes with EStatusDisconnecting -> EStatusIdle.
       
 12205 	expectedMobileCallStatusCall2 = RMobileCall::EStatusDisconnecting;
       
 12206 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(
       
 12207 														 call2,
       
 12208 														 notifyMobileCallStatusChangeCall2,
       
 12209 														 mobileCallStatusCall2,
       
 12210 														 expectedMobileCallStatusCall2,
       
 12211 														 KErrNone);
       
 12212 	
       
 12213 	call2.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeCall2, mobileCallStatusCall2);													 														 
       
 12214 	expectedMobileCallStatusCall2 = RMobileCall::EStatusIdle;
       
 12215 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(
       
 12216 														 call2,
       
 12217 														 notifyMobileCallStatusChangeCall2,
       
 12218 														 mobileCallStatusCall2,
       
 12219 														 expectedMobileCallStatusCall2,
       
 12220 														 KErrNone);
       
 12221 
       
 12222 	// Check RMobileCall::GetMobileCallStatus for call 2 returns status of EStatusIdle.
       
 12223 	ASSERT_EQUALS(call2.GetMobileCallStatus(getMobileCallStatusCall2), KErrNone, _L("RMobileCall::GetMobileCallStatus returned an error"));
       
 12224 	ASSERT_EQUALS(getMobileCallStatusCall2, expectedMobileCallStatusCall2, _L("RMobileCall::GetMobileCallStatus did not return EStatusIdle"));
       
 12225 	
       
 12226 	////////////////////////////////////////////////////////////////
       
 12227 	// TEST END
       
 12228 	////////////////////////////////////////////////////////////////
       
 12229 
       
 12230     StartCleanup();
       
 12231 		
       
 12232 	// Pop
       
 12233 	// notifyStatusChangeCall1
       
 12234 	// notifyMobileCallStatusChangeCall1
       
 12235 	// dialStatus
       
 12236 	// notifyCallEventCall2
       
 12237 	// notifyMobileCallStatusChangeCall2
       
 12238 	// holdRequestStatusCall2
       
 12239 	// requestResumeCallStatus
       
 12240 	// notifyStatusChangeCall2
       
 12241 	// requestStatusHangUp
       
 12242 			
       
 12243 	CleanupStack::PopAndDestroy(9, &notifyStatusChangeCall1);
       
 12244 	
       
 12245 	return TestStepResult();
       
 12246 	}
       
 12247 
       
 12248 TPtrC CCTSYIntegrationTestCallControl0033::GetTestStepName()
       
 12249 /**
       
 12250  * @return The test step name.
       
 12251  */
       
 12252 	{
       
 12253 	return  _L("CCTSYIntegrationTestCallControl0033");
       
 12254 	}
       
 12255 
       
 12256 
       
 12257 
       
 12258 CCTSYIntegrationTestCallControl0034::CCTSYIntegrationTestCallControl0034(CEtelSessionMgr& aEtelSessionMgr)
       
 12259 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 12260 /**
       
 12261  * Constructor.
       
 12262  */
       
 12263 	{
       
 12264 	SetTestStepName(CCTSYIntegrationTestCallControl0034::GetTestStepName());
       
 12265 	}
       
 12266 
       
 12267 CCTSYIntegrationTestCallControl0034::~CCTSYIntegrationTestCallControl0034()
       
 12268 /**
       
 12269  * Destructor.
       
 12270  */
       
 12271 	{
       
 12272 	}
       
 12273 
       
 12274 TVerdict CCTSYIntegrationTestCallControl0034::doTestStepL()
       
 12275 /**
       
 12276  * @SYMTestCaseID BA-CTSY-INT-CCON-0034
       
 12277  * @SYMFssID BA/CTSY/CCON-0034
       
 12278  * @SYMTestCaseDesc Attempt to transfer a connected call when no other call is on hold
       
 12279  * @SYMTestPriority High
       
 12280  * @SYMTestActions RMobileCall::Transfer, RCall::GetCaps, RMobileCall::NotifyMobileCallCapsChange, RMobileCall::GetMobileCallStatus, RCall::NotifyStatusChange, RMobileCall::NotifyMobileCallStatusChange, RCall::NotifyCapsChange, RCall::GetStatus, RMobileCall::GetMobileCallCaps
       
 12281  * @SYMTestExpectedResults Pass - KErrNotReady? On attempt to transfer call when no other call is on hold.
       
 12282  * @SYMTestType CIT
       
 12283  * @SYMTestCaseDependencies live/automatic
       
 12284  *
       
 12285  * Reason for test: Verify KErrNotReady returned on attempt to transfer and call stays connected.
       
 12286  *
       
 12287  * @return - TVerdict code
       
 12288  */
       
 12289 	{
       
 12290 
       
 12291 	////////////////////////////////////////////////////////////////
       
 12292 	// SET UP
       
 12293 	////////////////////////////////////////////////////////////////
       
 12294 
       
 12295 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 12296 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 12297  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
 12298 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 12299 	
       
 12300 	// Check phone supports KCapsVoice.
       
 12301 	RPhone::TCaps phoneCaps; 
       
 12302 	CHECK_EQUALS_L(phone.GetCaps(phoneCaps), KErrNone, _L("RMobilePhone::GetCaps returned an error"));
       
 12303 	CHECK_BITS_SET_L(phoneCaps.iFlags, RMobilePhone::KCapsVoice, KNoUnwantedBits, _L("RMobilePhone::GetCaps did not return KCapsVoice as expected"));
       
 12304 	   
       
 12305 	// Get call.
       
 12306     RMobileCall& mobileCall = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
 12307 	
       
 12308     // Get phone number
       
 12309     TPtrC phoneNumber;
       
 12310 	CHECK_TRUE_L(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, phoneNumber) != EFalse, _L("GetStringFromConfig did not complete as expected"));
       
 12311 
       
 12312 	////////////////////////////////////////////////////////////////
       
 12313 	// SET UP END
       
 12314 	////////////////////////////////////////////////////////////////
       
 12315 	
       
 12316 	StartTest();
       
 12317 	
       
 12318 	////////////////////////////////////////////////////////////////
       
 12319 	// TEST START
       
 12320 	////////////////////////////////////////////////////////////////
       
 12321 	
       
 12322 	// Post notifier for RCall::NotifyCapsChange
       
 12323 	RCall::TCaps callCaps;
       
 12324 	TCoreEtelRequestStatus<RCall> notifyCapsChangeStatus (mobileCall, &RCall::NotifyCapsChangeCancel);	
       
 12325 	CleanupStack::PushL(notifyCapsChangeStatus);
       
 12326 	mobileCall.NotifyCapsChange(notifyCapsChangeStatus, callCaps);
       
 12327 	
       
 12328 	// Post notifier for RMobileCall::NotifyMobileCallCapsChange
       
 12329 	RMobileCall::TMobileCallCapsV1 mobileCallCaps;
       
 12330 	RMobileCall::TMobileCallCapsV1Pckg mobileCallCapsPckg(mobileCallCaps);
       
 12331 	TExtEtelRequestStatus notifyMobileCapsChangeStatus(mobileCall, EMobileCallNotifyMobileCallCapsChange);	
       
 12332 	CleanupStack::PushL(notifyMobileCapsChangeStatus);
       
 12333 	mobileCall.NotifyMobileCallCapsChange(notifyMobileCapsChangeStatus, mobileCallCapsPckg);
       
 12334 	
       
 12335 	// Post notifier RMobileCall::NotifyMobileCallStatusChange
       
 12336 	TExtEtelRequestStatus notifyMobileCallStatusChangeStatus (mobileCall, EMobileCallNotifyMobileCallStatusChange);
       
 12337 	CleanupStack::PushL(notifyMobileCallStatusChangeStatus);
       
 12338 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
 12339 	mobileCall.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallStatus);	
       
 12340 	
       
 12341 	// Post notifier for RCall::NotifyStatusChange
       
 12342 	TCoreEtelRequestStatus<RCall> notifyCallStatusChangeStatus (mobileCall, &RCall::NotifyStatusChangeCancel);
       
 12343 	CleanupStack::PushL(notifyCallStatusChangeStatus);
       
 12344 	RCall::TStatus callStatus;
       
 12345 	mobileCall.NotifyStatusChange(notifyCallStatusChangeStatus,callStatus);
       
 12346 	
       
 12347 	// Dial a number that answers. 
       
 12348 	TCoreEtelRequestStatus<RMobileCall> getDialStatus(mobileCall, &RMobileCall::DialCancel);
       
 12349 	CleanupStack::PushL(getDialStatus);
       
 12350 	DEBUG_PRINTF2(_L("Board Now Dialling: %S"), &phoneNumber);
       
 12351 	mobileCall.Dial(getDialStatus, phoneNumber); 
       
 12352 	ASSERT_EQUALS(WaitForRequestWithTimeOut(getDialStatus, ETimeLong), KErrNone, _L("RMobileCall::Dial timed-out"));
       
 12353 	ASSERT_EQUALS(getDialStatus.Int(), KErrNone, _L("RMobileCall::Dial returned error"));
       
 12354 
       
 12355 	// ===  Check call status ===
       
 12356 	
       
 12357 	// Check RCall::NotifyStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
 12358 	RCall::TStatus expectedCallStatus = RCall::EStatusDialling;
       
 12359 	const TInt expectedStatus = KErrNone;
       
 12360 	iCallControlTestHelper.WaitForCallNotifyStatusChange(mobileCall,
       
 12361 														 notifyCallStatusChangeStatus,
       
 12362 														 callStatus,
       
 12363 														 expectedCallStatus,
       
 12364 														 expectedStatus);
       
 12365 														 
       
 12366 	mobileCall.NotifyStatusChange(notifyCallStatusChangeStatus, callStatus);
       
 12367 	expectedCallStatus = RCall::EStatusConnecting;	
       
 12368 	iCallControlTestHelper.WaitForCallNotifyStatusChange(mobileCall,
       
 12369 														 notifyCallStatusChangeStatus,
       
 12370 														 callStatus,
       
 12371 														 expectedCallStatus,
       
 12372 														 expectedStatus);	
       
 12373 														 
       
 12374 	mobileCall.NotifyStatusChange(notifyCallStatusChangeStatus, callStatus);
       
 12375 	expectedCallStatus = RCall::EStatusConnected;
       
 12376 	iCallControlTestHelper.WaitForCallNotifyStatusChange(mobileCall,
       
 12377 														 notifyCallStatusChangeStatus,
       
 12378 														 callStatus,
       
 12379 														 expectedCallStatus,
       
 12380 														 expectedStatus);	
       
 12381 
       
 12382 	// Check RCall::GetStatus returns EStatusConnected.
       
 12383 	ASSERT_EQUALS(mobileCall.GetStatus(callStatus), KErrNone, _L("RCall::GetStatus returned an error"));
       
 12384 	ASSERT_EQUALS(callStatus, RCall::EStatusConnected, _L("RCall::GetStatus did not return correct status."));
       
 12385 
       
 12386 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
 12387 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusDialling;
       
 12388 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(mobileCall,
       
 12389 														                notifyMobileCallStatusChangeStatus,
       
 12390 														                mobileCallStatus,
       
 12391 														                expectedMobileCallStatus,
       
 12392 														                expectedStatus);
       
 12393 														 
       
 12394 	mobileCall.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallStatus);
       
 12395 	expectedMobileCallStatus = RMobileCall::EStatusConnecting;
       
 12396 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(mobileCall,
       
 12397 														                notifyMobileCallStatusChangeStatus,
       
 12398 														                mobileCallStatus,
       
 12399 														                expectedMobileCallStatus,
       
 12400 														                expectedStatus);	
       
 12401 														 
       
 12402 	mobileCall.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallStatus);
       
 12403 	expectedMobileCallStatus = RMobileCall::EStatusConnected;
       
 12404 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(mobileCall,
       
 12405 														                notifyMobileCallStatusChangeStatus,
       
 12406 														                mobileCallStatus,
       
 12407 														                expectedMobileCallStatus,
       
 12408 														                expectedStatus);	
       
 12409 
       
 12410 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusConnected.
       
 12411 	ASSERT_EQUALS(mobileCall.GetMobileCallStatus(mobileCallStatus), KErrNone, _L("RMobileCall::GetMobileCallStatus returned an error"));
       
 12412 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected, _L("RMobileCall::GetMobileCallStatus did not return EStatusConnected as expected."));
       
 12413 
       
 12414 	// ===  Check call caps ===
       
 12415 
       
 12416 	// Check RCall::NotifyCapsChange completes with caps in set of KCapsVoice | KCapsHangUp.
       
 12417 	RCall::TCaps wantedCaps;
       
 12418 	RCall::TCaps unwantedCaps;
       
 12419 	const TInt wantedStatus = KErrNone;
       
 12420 	wantedCaps.iFlags = RCall::KCapsVoice | RCall::KCapsHangUp;
       
 12421 	unwantedCaps.iFlags = 0;
       
 12422 	iCallControlTestHelper.WaitForCallNotifyCapsChange(mobileCall, notifyCapsChangeStatus, callCaps, wantedCaps, unwantedCaps, wantedStatus);
       
 12423 
       
 12424 	// Check RCall::GetCaps supports KCapsHangUp | KCapsVoice.
       
 12425 	ASSERT_EQUALS(mobileCall.GetCaps(callCaps),KErrNone, _L("RCall::GetCaps returned an error"));
       
 12426 	ASSERT_BITS_SET(callCaps.iFlags, wantedCaps.iFlags, KNoUnwantedBits, _L("RCall::GetCaps returned wrong caps"));
       
 12427 
       
 12428 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice | KCapsHold | KCapsHangUp
       
 12429     RMobileCall::TMobileCallCapsV1 wantedMobileCaps;
       
 12430 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsHold | RMobileCall::KCapsHangUp;
       
 12431     TCmpRMobileCallTMobileCallCaps mobileCapsComp(wantedMobileCaps,mobileCallCaps, *this);
       
 12432 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(mobileCall, notifyMobileCapsChangeStatus, mobileCapsComp, wantedStatus);
       
 12433 	
       
 12434 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps NOT in set of KCapsTransfer
       
 12435 	RMobileCall::TMobileCallCapsV1 unwantedMobileCaps;
       
 12436     unwantedMobileCaps.iCallControlCaps = RMobileCall::KCapsTransfer;
       
 12437 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, KNoWantedBits, unwantedMobileCaps.iCallControlCaps, _L("RMobileCall::NotifyMobileCallCapsChange contains unwanted caps KCapsTransfer"));
       
 12438 	
       
 12439 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallEventCaps in set of KCapsLocalHold | KCapsLocalTransfer | KCapsRemoteHold | KCapsRemoteTerminate | KCapsRemoteConferenceCreate.
       
 12440 	wantedMobileCaps.iCallEventCaps = RMobileCall::KCapsLocalHold | RMobileCall::KCapsLocalTransfer | 
       
 12441 	                                RMobileCall::KCapsRemoteHold | RMobileCall::KCapsRemoteTerminate |
       
 12442 	                                RMobileCall::KCapsRemoteConferenceCreate;
       
 12443 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedMobileCaps.iCallEventCaps, KNoUnwantedBits, _L("RMobileCall::NotifyMobileCallCapsChange returned unexpected iCallEventCaps"));
       
 12444     
       
 12445     // Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsHold | KCapsHangUp
       
 12446     // Check RMobileCall::GetMobileCallCaps includes iCallControlCaps NOT in set of KCapsTransfer
       
 12447     ASSERT_EQUALS(mobileCall.GetMobileCallCaps(mobileCallCapsPckg), KErrNone, _L("RMobileCall::GetMobileCallCaps returned an error"))
       
 12448 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps, unwantedMobileCaps.iCallControlCaps, _L("RMobileCall::GetMobileCallCaps returned unexpected iCallControlCaps"));
       
 12449 	
       
 12450 	// Check RMobileCall::GetMobileCallCaps includes iCallEventCaps in set of KCapsLocalHold | KCapsLocalTransfer | KCapsRemoteHold | KCapsRemoteTerminate | KCapsRemoteConferenceCreate.
       
 12451 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedMobileCaps.iCallEventCaps, KNoUnwantedBits, _L("RMobileCall::GetMobileCallCaps returned unexpected iCallEventCaps"));
       
 12452 
       
 12453 	// Transfer call. 
       
 12454 	TExtEtelRequestStatus getTransferStatus(mobileCall, EMobileCallTransfer);
       
 12455 	CleanupStack::PushL(getTransferStatus);
       
 12456 	mobileCall.Transfer(getTransferStatus);
       
 12457 	ASSERT_EQUALS(WaitForRequestWithTimeOut(getTransferStatus, ETimeLong), KErrNone, _L("RMobileCall::Transfer timed-out"));
       
 12458 	
       
 12459 	// Check KErrNotReady is returned.
       
 12460 	ASSERT_EQUALS(getTransferStatus.Int(), KErrNotReady, _L("RMobileCall::Transfer did not return KErrNotReady as expected"));
       
 12461 
       
 12462 	// Check RCall::GetStatus returns EStatusConnected.
       
 12463 	ASSERT_EQUALS(mobileCall.GetStatus(callStatus), KErrNone, _L("RCall::GetStatus returned an error"));
       
 12464 	ASSERT_EQUALS(callStatus, RCall::EStatusConnected, _L("RCall::GetStatus did not return EStatusConnected as expected"));
       
 12465 	
       
 12466 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusConnected.
       
 12467 	ASSERT_EQUALS(mobileCall.GetMobileCallStatus(mobileCallStatus), KErrNone, _L("RMobileCall::GetMobileCallStatus returned an error"));
       
 12468 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected, _L("RMobileCall::GetMobileCallStatus did not return EStatusConnected as expected"));
       
 12469     	
       
 12470    	// Hangup call 1.
       
 12471 	TCoreEtelRequestStatus<RCall> hangUpStatus (mobileCall, &RCall::HangUpCancel);	
       
 12472 	CleanupStack::PushL(hangUpStatus);
       
 12473 	mobileCall.HangUp(hangUpStatus);
       
 12474 	ASSERT_EQUALS(WaitForRequestWithTimeOut(hangUpStatus, ETimeMedium), KErrNone, _L("RCall::HangUp timed-out"));
       
 12475 	ASSERT_EQUALS(hangUpStatus.Int(), KErrNone, _L("RCall::HangUp returned an error")); 	
       
 12476     	
       
 12477 	////////////////////////////////////////////////////////////////
       
 12478 	// TEST END
       
 12479 	////////////////////////////////////////////////////////////////
       
 12480 
       
 12481     StartCleanup();
       
 12482 	
       
 12483 	// Pop
       
 12484 	// notifyCapsChangeStatus
       
 12485 	// notifyMobileCapsChangeStatus
       
 12486 	// notifyMobileCallStatusChangeStatus
       
 12487 	// notifyCallStatusChangeStatus
       
 12488 	// getDialStatus
       
 12489 	// setTransferStatus
       
 12490 	// hangUpStatus
       
 12491 	CleanupStack::PopAndDestroy(7, &notifyCapsChangeStatus);
       
 12492 	
       
 12493 	return TestStepResult();
       
 12494 	}
       
 12495 
       
 12496 TPtrC CCTSYIntegrationTestCallControl0034::GetTestStepName()
       
 12497 /**
       
 12498  * @return The test step name.
       
 12499  */
       
 12500 	{
       
 12501 	return  _L("CCTSYIntegrationTestCallControl0034");
       
 12502 	}
       
 12503 
       
 12504 
       
 12505 
       
 12506 CCTSYIntegrationTestCallControl0035::CCTSYIntegrationTestCallControl0035(CEtelSessionMgr& aEtelSessionMgr)
       
 12507 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 12508 /**
       
 12509  * Constructor.
       
 12510  */
       
 12511 	{
       
 12512 	SetTestStepName(CCTSYIntegrationTestCallControl0035::GetTestStepName());
       
 12513 	}
       
 12514 
       
 12515 CCTSYIntegrationTestCallControl0035::~CCTSYIntegrationTestCallControl0035()
       
 12516 /**
       
 12517  * Destructor.
       
 12518  */
       
 12519 	{
       
 12520 	}
       
 12521 
       
 12522 TVerdict CCTSYIntegrationTestCallControl0035::doTestStepL()
       
 12523 /**
       
 12524  * @SYMTestCaseID BA-CTSY-INT-CCON-0035
       
 12525  * @SYMFssID BA/CTSY/CCON-0035
       
 12526  * @SYMTestCaseDesc Attempt to transfer a held call when no other call is connected
       
 12527  * @SYMTestPriority High
       
 12528  * @SYMTestActions RMobileCall::Transfer, RMobileCall::GetMobileCallStatus, RCall::GetStatus, RMobileCall::GetMobileCallCaps
       
 12529  * @SYMTestExpectedResults Pass - KErrNotReady? On attempt to transfer call when no other call is active.
       
 12530  * @SYMTestType CIT
       
 12531  * @SYMTestCaseDependencies live/automatic
       
 12532  *
       
 12533  * Reason for test: Verify KErrNotReady returned on attempt to transfer and call stays held.
       
 12534  *
       
 12535  * @return - TVerdict code
       
 12536  */
       
 12537 	{
       
 12538 
       
 12539 	////////////////////////////////////////////////////////////////
       
 12540 	// SET UP
       
 12541 	////////////////////////////////////////////////////////////////
       
 12542 
       
 12543 
       
 12544 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 12545 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 12546  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
 12547 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 12548 	
       
 12549 	// Check phone supports KCapsVoice.
       
 12550 	RPhone::TCaps phoneCaps; 
       
 12551 	CHECK_EQUALS_L(phone.GetCaps(phoneCaps), KErrNone, _L("RMobilePhone::GetCaps returned an error"));
       
 12552 	CHECK_BITS_SET_L(phoneCaps.iFlags, RMobilePhone::KCapsVoice, KNoUnwantedBits, _L("RMobilePhone::GetCaps did not return KCapsVoice as expected"));
       
 12553 
       
 12554 	// Get Voice line 1. 
       
 12555     RMobileLine& mobileVoiceLine1 = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
 12556 
       
 12557 	// Get call 1. 
       
 12558 	RMobileCall& mobileCall1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
 12559     
       
 12560 	// Dial a number that answers on call 1.
       
 12561 	TPtrC phoneNumber;
       
 12562 	CHECK_TRUE_L(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, phoneNumber) != EFalse, _L("GetStringFromConfig did not complete as expected"));
       
 12563 	TCoreEtelRequestStatus<RMobileCall> getDialStatus(mobileCall1, &RMobileCall::DialCancel);
       
 12564 	CleanupStack::PushL(getDialStatus);
       
 12565 	DEBUG_PRINTF2(_L("Board Now Dialling: %S"), &phoneNumber);
       
 12566 	mobileCall1.Dial(getDialStatus, phoneNumber);
       
 12567 	CHECK_EQUALS_L(WaitForRequestWithTimeOut(getDialStatus, ETimeLong), KErrNone, _L("RMobileCall::Dial timed-out"));
       
 12568 	CHECK_EQUALS_L(getDialStatus.Int(), KErrNone, _L("RMobileCall::Dial returned error"));
       
 12569 
       
 12570 	// Hold call 1. 
       
 12571 	TExtEtelRequestStatus getHoldStatus(mobileCall1, EMobileCallHold);
       
 12572 	CleanupStack::PushL(getHoldStatus);
       
 12573 	mobileCall1.Hold(getHoldStatus);
       
 12574 	CHECK_EQUALS_L(WaitForRequestWithTimeOut(getHoldStatus, ETimeLong), KErrNone, _L("RMobileCall::Hold timed-out"));
       
 12575 	CHECK_EQUALS_L(getHoldStatus.Int(), KErrNone, _L("RMobileCall::Hold returned error"));
       
 12576 	
       
 12577 	// Ensure mobile call status of call 1 is EStatusHold 
       
 12578 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
 12579 	CHECK_EQUALS_L(mobileCall1.GetMobileCallStatus(mobileCallStatus), KErrNone, _L("RMobileCall::GetMobileCallStatus returned an error"));
       
 12580 	CHECK_EQUALS_L(mobileCallStatus, RMobileCall::EStatusHold, _L("RMobileCall::GetMobileCallStatus did not return EStatusHold as expected"));
       
 12581 	
       
 12582 	
       
 12583 	////////////////////////////////////////////////////////////////
       
 12584 	// SET UP END
       
 12585 	////////////////////////////////////////////////////////////////
       
 12586 	
       
 12587 	StartTest();
       
 12588 	
       
 12589 	////////////////////////////////////////////////////////////////
       
 12590 	// TEST START
       
 12591 	////////////////////////////////////////////////////////////////
       
 12592 	
       
 12593 	
       
 12594 	// ===  Check mobile call caps ===
       
 12595 
       
 12596 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsResume | KCapsHangUp
       
 12597 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps NOT in set of KCapsTransfer
       
 12598 	RMobileCall::TMobileCallCapsV1 mobileCallCaps;
       
 12599 	RMobileCall::TMobileCallCapsV1Pckg mobileCallCapsPckg(mobileCallCaps);
       
 12600     RMobileCall::TMobileCallCapsV1 wantedMobileCaps;
       
 12601     wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | RMobileCall::KCapsResume | RMobileCall::KCapsHangUp;
       
 12602    	RMobileCall::TMobileCallCapsV1 unwantedMobileCaps;
       
 12603 	unwantedMobileCaps.iCallControlCaps = RMobileCall::KCapsTransfer;
       
 12604 	
       
 12605 	ASSERT_EQUALS(mobileCall1.GetMobileCallCaps(mobileCallCapsPckg), KErrNone, _L("RMobileCall::GetMobileCallCaps returned an error"));								
       
 12606     ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps, unwantedMobileCaps.iCallControlCaps , _L("RMobileCall::GetMobileCallCaps returned unexpected iCallControlCaps"));
       
 12607 	
       
 12608 	// Check RMobileCall::GetMobileCallCaps includes iCallEventCaps in set of KCapsLocalHold | KCapsLocalTransfer | KCapsRemoteHold | KCapsRemoteTerminate | KCapsRemoteConferenceCreate.
       
 12609 	wantedMobileCaps.iCallEventCaps = RMobileCall::KCapsLocalHold | RMobileCall::KCapsLocalTransfer | RMobileCall::KCapsRemoteHold | RMobileCall::KCapsRemoteTerminate | RMobileCall::KCapsRemoteConferenceCreate;
       
 12610 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedMobileCaps.iCallEventCaps, KNoUnwantedBits, _L("RMobileCall::GetMobileCallCaps returned unexpected iCallEventCaps"));
       
 12611 
       
 12612 	// Transfer call. 
       
 12613     TExtEtelRequestStatus getTransferStatus(mobileCall1, EMobileCallTransfer);
       
 12614 	CleanupStack::PushL(getTransferStatus);
       
 12615 	mobileCall1.Transfer(getTransferStatus);
       
 12616 	ASSERT_EQUALS(WaitForRequestWithTimeOut(getTransferStatus, ETimeLong), KErrNone, _L("RMobileCall::Transfer timed-out"));
       
 12617 	
       
 12618 	// Check KErrNotReady is returned.
       
 12619 	ASSERT_EQUALS(getTransferStatus.Int(), KErrNotReady, _L("RMobileCall::Transfer did not return KErrNotReady as expected"));
       
 12620 
       
 12621 	// Check RCall::GetStatus returns EStatusConnected.
       
 12622 	RCall::TStatus callStatus;
       
 12623 	ASSERT_EQUALS(mobileCall1.GetStatus(callStatus), KErrNone, _L("RCall::GetStatus returned an error"));
       
 12624 	ASSERT_EQUALS(callStatus, RCall::EStatusConnected, _L("RCall::GetStatus did not return EStatusConnected as expected"));
       
 12625 
       
 12626 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusHold.
       
 12627 	ASSERT_EQUALS(mobileCall1.GetMobileCallStatus(mobileCallStatus), KErrNone, _L("RMobileCall::GetMobileCallStatus returned an error"));
       
 12628 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusHold, _L("RMobileCall::GetStatus did not return EStatusHold as expected"));
       
 12629 
       
 12630     // Hangup call 1.
       
 12631 	TCoreEtelRequestStatus<RCall> hangUpStatus (mobileCall1, &RCall::HangUpCancel);	
       
 12632 	CleanupStack::PushL(hangUpStatus);
       
 12633 	mobileCall1.HangUp(hangUpStatus);
       
 12634 	ASSERT_EQUALS(WaitForRequestWithTimeOut(hangUpStatus, ETimeMedium), KErrNone, _L("RCall::HangUp timed-out"));
       
 12635 	ASSERT_EQUALS(hangUpStatus.Int(), KErrNone, _L("RCall::HangUp returned an error")); 
       
 12636 	
       
 12637 	
       
 12638 	////////////////////////////////////////////////////////////////
       
 12639 	// TEST END
       
 12640 	////////////////////////////////////////////////////////////////
       
 12641 
       
 12642     StartCleanup();
       
 12643     
       
 12644 	// Pop:
       
 12645  	// getDialStatus
       
 12646 	// getHoldStatus
       
 12647 	// getTransferStatus
       
 12648 	// hangUpStatus
       
 12649 	CleanupStack::PopAndDestroy(4, &getDialStatus);
       
 12650 	
       
 12651 	return TestStepResult();
       
 12652 	}
       
 12653 
       
 12654 TPtrC CCTSYIntegrationTestCallControl0035::GetTestStepName()
       
 12655 /**
       
 12656  * @return The test step name.
       
 12657  */
       
 12658 	{
       
 12659 	return  _L("CCTSYIntegrationTestCallControl0035");
       
 12660 	}
       
 12661 
       
 12662 
       
 12663 
       
 12664 CCTSYIntegrationTestCallControl0036::CCTSYIntegrationTestCallControl0036(CEtelSessionMgr& aEtelSessionMgr)
       
 12665 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 12666 /**
       
 12667  * Constructor.
       
 12668  */
       
 12669 	{
       
 12670 	SetTestStepName(CCTSYIntegrationTestCallControl0036::GetTestStepName());
       
 12671 	}
       
 12672 
       
 12673 CCTSYIntegrationTestCallControl0036::~CCTSYIntegrationTestCallControl0036()
       
 12674 /**
       
 12675  * Destructor.
       
 12676  */
       
 12677 	{
       
 12678 	}
       
 12679 
       
 12680 TVerdict CCTSYIntegrationTestCallControl0036::doTestStepL()
       
 12681 /**
       
 12682  * @SYMTestCaseID BA-CTSY-INT-CCON-0036
       
 12683  * @SYMFssID BA/CTSY/CCON-0036
       
 12684  * @SYMTestCaseDesc Transfer a connected call and held call.
       
 12685  * @SYMTestPriority High
       
 12686  * @SYMTestActions RMobileCall::Transfer, RMobileCall::NotifyMobileCallStatusChange, RCall::NotifyStatusChange, RMobileCall::GetMobileCallStatus, RCall::GetStatus, RMobileCall::GetMobileCallCaps
       
 12687  * @SYMTestExpectedResults Pass - Call transferred successfully.
       
 12688  * @SYMTestType CIT
       
 12689  * @SYMTestCaseDependencies live/automatic
       
 12690  *
       
 12691  * Reason for test: Verify transfer succeeds and calls 1 and 2 are idle after transfer.
       
 12692  *
       
 12693  * @return - TVerdict code
       
 12694  */
       
 12695 	{
       
 12696 
       
 12697 	////////////////////////////////////////////////////////////////
       
 12698 	// SET UP
       
 12699 	////////////////////////////////////////////////////////////////
       
 12700 
       
 12701 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 12702 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 12703  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
 12704 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 12705 	
       
 12706 	// Check phone supports KCapsVoice.
       
 12707 	RPhone::TCaps phoneCaps; 
       
 12708 	CHECK_EQUALS_L(phone.GetCaps(phoneCaps), KErrNone, _L("RPhone::GetCaps returned an error"));
       
 12709 	CHECK_BITS_SET_L(phoneCaps.iFlags, RPhone::KCapsVoice, KNoUnwantedBits,
       
 12710 					 _L("RPhone::GetCaps returned wrong caps"));
       
 12711 
       
 12712 	////////////////////////////////////////////////////////////////
       
 12713 	// SET UP END
       
 12714 	////////////////////////////////////////////////////////////////
       
 12715 	
       
 12716 	StartTest();
       
 12717 	
       
 12718 	////////////////////////////////////////////////////////////////
       
 12719 	// TEST START
       
 12720 	////////////////////////////////////////////////////////////////
       
 12721 	
       
 12722 	TPtrC number1, number2; 
       
 12723 	ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number1) != EFalse,
       
 12724 			_L("GetStringFromConfig did not complete as expected"));
       
 12725 	ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber2, number2) != EFalse,
       
 12726 			_L("GetStringFromConfig did not complete as expected"));
       
 12727 	
       
 12728 	// Loop for the two variations in this test.
       
 12729 	for(TInt i=0; i < 2; ++i)
       
 12730 		{
       
 12731 		// Get calls. 
       
 12732 		RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall3);
       
 12733 		RMobileCall& call2 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall4);
       
 12734 		
       
 12735 		// Dial a number that answers on call 1. 
       
 12736 		DEBUG_PRINTF1(_L("Board Now Dialling: "));
       
 12737 		TCoreEtelRequestStatus<RCall> dialStatus(call1, &RCall::DialCancel);
       
 12738 		CleanupStack::PushL(dialStatus);
       
 12739 		call1.Dial(dialStatus, number1); 
       
 12740 		CHECK_EQUALS_L(WaitForRequestWithTimeOut(dialStatus, ETimeLong), KErrNone, _L("RCall::Dial timed-out"));
       
 12741 		CHECK_EQUALS_L(dialStatus.Int(), KErrNone, _L("RCall::Dial returned with an error"));
       
 12742 		
       
 12743 		// Hold call 1. 
       
 12744 		TExtEtelRequestStatus holdStatus(call1, EMobileCallHold);
       
 12745 		CleanupStack::PushL(holdStatus);
       
 12746 		call1.Hold(holdStatus);
       
 12747 		CHECK_EQUALS_L(WaitForRequestWithTimeOut(holdStatus, ETimeMedium),KErrNone, _L("RMobileCall::Hold timed out"));
       
 12748 		CHECK_EQUALS_L(holdStatus.Int(), KErrNone, _L("RMobileCall::Hold returned with an error"));	
       
 12749 		
       
 12750 		// Ensure mobile call status of call 1 is EStatusHold 
       
 12751 		RMobileCall::TMobileCallStatus mobileCallStatus;
       
 12752 		CHECK_EQUALS_L(call1.GetMobileCallStatus(mobileCallStatus), KErrNone, _L("RMobileCall::GetMobileCallStatus returned with an error"));
       
 12753 		CHECK_EQUALS_L(mobileCallStatus, RMobileCall::EStatusHold, _L("RMobileCall::GetMobileCallStatus did not return EStatusHold as expected"));
       
 12754 	
       
 12755 		// ===  Check that it is not possible to transfer call 1 yet ===
       
 12756 	
       
 12757 		// Check RMobileCall::GetMobileCallCaps for call 1 includes iCallControlCaps NOT in set of KCapsTransfer
       
 12758 		RMobileCall::TMobileCallCapsV1 unWantedMobileCaps;
       
 12759 		unWantedMobileCaps.iCallControlCaps = RMobileCall::KCapsTransfer;
       
 12760 		RMobileCall::TMobileCallCapsV1 mobileCallCaps;
       
 12761 		RMobileCall::TMobileCallCapsV1Pckg mobileCallCapsPckg(mobileCallCaps);
       
 12762 		ASSERT_EQUALS(call1.GetMobileCallCaps(mobileCallCapsPckg), KErrNone, 
       
 12763 				_L("RMobileCall::GetMobileCallCaps returned an error"));								
       
 12764 		ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, mobileCallCaps.iCallControlCaps, unWantedMobileCaps.iCallControlCaps,
       
 12765 				 _L("RMobileCall::GetMobileCallCaps returned unexpected iCallControlCaps"));
       
 12766 		
       
 12767 		// Dial a number that answers on call 2. 
       
 12768 		DEBUG_PRINTF1(_L("Board Now Dialling 2nd call: "));
       
 12769 		TCoreEtelRequestStatus<RCall> dialStatus2(call2, &RCall::DialCancel);
       
 12770 		CleanupStack::PushL(dialStatus2);
       
 12771 		call2.Dial(dialStatus2, number2);		
       
 12772 		ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus2, ETimeLong), KErrNone, _L("RCall::Dial timed-out"));
       
 12773 		ASSERT_EQUALS(dialStatus2.Int(), KErrNone,  _L("RCall::Dial returned with an error"));
       
 12774 		
       
 12775 		// ===  Check that it is possible to transfer call 1 and 2 now ===
       
 12776 	
       
 12777 		// Check RMobileCall::GetMobileCallCaps for call 1 includes iCallControlCaps in set of KCapsTransfer	
       
 12778 		ASSERT_EQUALS(call1.GetMobileCallCaps(mobileCallCapsPckg), KErrNone, _L("RMobileCall::GetMobileCallCaps returned an error"));								
       
 12779 		ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps,  RMobileCall::KCapsTransfer, KNoUnwantedBits,
       
 12780 				 _L("RMobileCall::GetMobileCallCaps returned unexpected iCallControlCaps"));
       
 12781 		
       
 12782 		// Check RMobileCall::GetMobileCallCaps for call 2 includes iCallControlCaps in set of KCapsTransfer
       
 12783 		// Note: In light of the defect found in CTSY, defect Id 10052: CTSY not able to transfer the unheld call;
       
 12784 		// it is not clear whether the unheld call (call2) should or should not have KCapsTransfer capability.
       
 12785 		// The current implementation of CTSY DOES give the unheld call KCapsTransfer capability, so this test remains for now. 
       
 12786 		ASSERT_EQUALS(call2.GetMobileCallCaps(mobileCallCapsPckg), KErrNone, _L("RMobileCall::GetMobileCallCaps returned an error"));								
       
 12787 		ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps,  RMobileCall::KCapsTransfer, KNoUnwantedBits,
       
 12788 				 _L("RMobileCall::GetMobileCallCaps returned unexpected iCallControlCaps"));
       
 12789 
       
 12790 		RMobileCall* callToTransfer;
       
 12791 		if(i==0) 
       
 12792 			{
       
 12793 			// Transfer call 1
       
 12794 			// $CTSYProblem LTSY propagating error -4285(KErrGsmCCFacilityRejected) to CTSY, which is correclty returning it back to client
       
 12795 			// therefore error code does not indicate an error in the CTSY but rather that the LTSY/network is not supporting the requested operation.
       
 12796 			callToTransfer = &call1;
       
 12797 			}
       
 12798 		else
       
 12799 			{
       
 12800 			// Transfer call 2
       
 12801 			callToTransfer = &call2;
       
 12802 			}
       
 12803 
       
 12804 		TExtEtelRequestStatus transferStatus(*callToTransfer, EMobileCallTransfer);
       
 12805 		CleanupStack::PushL(transferStatus);
       
 12806 		callToTransfer->Transfer(transferStatus);
       
 12807 		ASSERT_EQUALS(WaitForRequestWithTimeOut(transferStatus, ETimeLong), KErrNone, _L("RCall::Transfer timed-out"));
       
 12808 
       
 12809 		if(callToTransfer == &call2)
       
 12810 			{
       
 12811 			// There is a Ctsy defect when attempting to transfer call2 (the unheld call), which causes the operation to time-out.
       
 12812 			ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10052);
       
 12813 			ASSERT_EQUALS(transferStatus.Int(), KErrNone, _L("RCall::Transfer of call2 returned with an error"));
       
 12814 			}
       
 12815 		else
       
 12816 			{
       
 12817 			ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10048);
       
 12818 			ASSERT_EQUALS(transferStatus.Int(), KErrGsmCCFacilityRejected, _L("RCall::Transfer returned an unexpected status"));
       
 12819 			}
       
 12820 		
       
 12821 		iEtelSessionMgr.ReleaseCall(KMainServer,KMainPhone,KVoiceLine,KCall3);
       
 12822 		iEtelSessionMgr.ReleaseCall(KMainServer,KMainPhone,KVoiceLine,KCall4);
       
 12823 	
       
 12824 		User::After(3000000);
       
 12825 
       
 12826 		// PopAndDestroy
       
 12827 		// dialStatus
       
 12828 		// holdStatus
       
 12829 		// dialStatus2
       
 12830 		// transferStatus
       
 12831 		CleanupStack::PopAndDestroy(4, &dialStatus);
       
 12832 		}
       
 12833 
       
 12834 	
       
 12835 	////////////////////////////////////////////////////////////////
       
 12836 	// TEST END
       
 12837 	////////////////////////////////////////////////////////////////
       
 12838 
       
 12839     StartCleanup();
       
 12840 		
       
 12841 	return TestStepResult();
       
 12842 	}
       
 12843 
       
 12844 TPtrC CCTSYIntegrationTestCallControl0036::GetTestStepName()
       
 12845 /**
       
 12846  * @return The test step name.
       
 12847  */
       
 12848 	{
       
 12849 	return  _L("CCTSYIntegrationTestCallControl0036");
       
 12850 	}
       
 12851 
       
 12852 
       
 12853 CCTSYIntegrationTestCallControl0037::CCTSYIntegrationTestCallControl0037(CEtelSessionMgr& aEtelSessionMgr)
       
 12854 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 12855 /**
       
 12856  * Constructor.
       
 12857  */
       
 12858 	{
       
 12859 	SetTestStepName(CCTSYIntegrationTestCallControl0037::GetTestStepName());
       
 12860 	}
       
 12861 
       
 12862 CCTSYIntegrationTestCallControl0037::~CCTSYIntegrationTestCallControl0037()
       
 12863 /**
       
 12864  * Destructor.
       
 12865  */
       
 12866 	{
       
 12867 	}
       
 12868 
       
 12869 TVerdict CCTSYIntegrationTestCallControl0037::doTestStepL()
       
 12870 /**
       
 12871  * @SYMTestCaseID BA-CTSY-INT-CCON-0037
       
 12872  * @SYMFssID BA/CTSY/CCON-0037
       
 12873  * @SYMTestCaseDesc Close the phone when incoming call is coming.
       
 12874  * @SYMTestPriority High
       
 12875  * @SYMTestActions RLine::Open, RPhone::Close, RLine::NotifyIncomingCall, RPhone::Open, RLine::Close, RPhone::GetLineInfo
       
 12876  * @SYMTestExpectedResults Pass - Phone subsession closed cleanly.
       
 12877  * @SYMTestType CIT
       
 12878  * @SYMTestCaseDependencies live/automatic
       
 12879  *
       
 12880  * Reason for test: Verify incoming call notification completes and phone and line can be closed.
       
 12881  *
       
 12882  * @return - TVerdict code
       
 12883  */
       
 12884 	{
       
 12885 
       
 12886 	////////////////////////////////////////////////////////////////
       
 12887 	// SET UP
       
 12888 	////////////////////////////////////////////////////////////////
       
 12889 
       
 12890 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 12891 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 12892  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
 12893 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 12894 	
       
 12895 	// Get line 1 
       
 12896 	RMobileLine& mobileLine= iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
 12897 	////////////////////////////////////////////////////////////////
       
 12898 	// SET UP END
       
 12899 	////////////////////////////////////////////////////////////////
       
 12900 	
       
 12901 	StartTest();
       
 12902 	
       
 12903 	////////////////////////////////////////////////////////////////
       
 12904 	// TEST START
       
 12905 	////////////////////////////////////////////////////////////////
       
 12906 	
       
 12907 	
       
 12908 	// Register for notification of incoming call with RLine::NotifyIncomingCall 
       
 12909 	TName name;
       
 12910 	TCoreEtelRequestStatus<RLine> notifyIncomingCallStatus (mobileLine,&RLine::NotifyIncomingCallCancel);
       
 12911 	CleanupStack::PushL(notifyIncomingCallStatus);
       
 12912 	mobileLine.NotifyIncomingCall(notifyIncomingCallStatus,name);
       
 12913 	
       
 12914 	// Request for incoming call from RPS. 
       
 12915 	ASSERT_EQUALS (RPSRequestIncomingCallL(EVoiceLine), KErrNone, _L("CCTSYIntegrationTestSuiteStepBase::RPSRequestIncomingCallL returned with an error"));
       
 12916 	
       
 12917 	// Cancel notification of incoming call with RLine::NotifyIncomingCallCancel 
       
 12918 	notifyIncomingCallStatus.Cancel();
       
 12919 	
       
 12920 	// release phone. 
       
 12921 	iEtelSessionMgr.ReleaseLine(KMainServer, KMainPhone, KVoiceLine);
       
 12922 	
       
 12923 	////////////////////////////////////////////////////////////////
       
 12924 	// TEST END
       
 12925 	////////////////////////////////////////////////////////////////
       
 12926 
       
 12927     StartCleanup();
       
 12928 	
       
 12929 	CleanupStack::PopAndDestroy(&notifyIncomingCallStatus);
       
 12930 	
       
 12931 	return TestStepResult();
       
 12932 	}
       
 12933 
       
 12934 TPtrC CCTSYIntegrationTestCallControl0037::GetTestStepName()
       
 12935 /**
       
 12936  * @return The test step name.
       
 12937  */
       
 12938 	{
       
 12939 	return  _L("CCTSYIntegrationTestCallControl0037");
       
 12940 	}
       
 12941 
       
 12942 
       
 12943 
       
 12944 CCTSYIntegrationTestCallControl0038::CCTSYIntegrationTestCallControl0038(CEtelSessionMgr& aEtelSessionMgr)
       
 12945 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 12946 /**
       
 12947  * Constructor.
       
 12948  */
       
 12949 	{
       
 12950 	SetTestStepName(CCTSYIntegrationTestCallControl0038::GetTestStepName());
       
 12951 	}
       
 12952 
       
 12953 CCTSYIntegrationTestCallControl0038::~CCTSYIntegrationTestCallControl0038()
       
 12954 /**
       
 12955  * Destructor.
       
 12956  */
       
 12957 	{
       
 12958 	}
       
 12959 
       
 12960 TVerdict CCTSYIntegrationTestCallControl0038::doTestStepL()
       
 12961 /**
       
 12962  * @SYMTestCaseID BA-CTSY-INT-CCON-0038
       
 12963  * @SYMFssID BA/CTSY/CCON-0038
       
 12964  * @SYMTestCaseDesc Cancel transfer
       
 12965  * @SYMTestPriority High
       
 12966  * @SYMTestActions RMobileCall::Transfer, RMobileCall::Transfer
       
 12967  * @SYMTestExpectedResults Pass - Transfer cancelled.
       
 12968  * @SYMTestType CIT
       
 12969  * @SYMTestCaseDependencies live/automatic
       
 12970  *
       
 12971  * Reason for test: Verify transfer can be cancelled.
       
 12972  *
       
 12973  * @return - TVerdict code
       
 12974  */
       
 12975 	{
       
 12976 
       
 12977 	////////////////////////////////////////////////////////////////
       
 12978 	// SET UP
       
 12979 	////////////////////////////////////////////////////////////////
       
 12980 
       
 12981 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 12982 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 12983  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 12984 	
       
 12985 	// Get Voice line 1. 
       
 12986 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
 12987 	
       
 12988 	// Check phone supports KCapsVoice.
       
 12989 	RLine::TCaps lineCaps; 
       
 12990 	CHECK_EQUALS_L(voiceLine.GetCaps(lineCaps), KErrNone, _L("RMobileLine::GetCaps returned an error"));
       
 12991 	CHECK_BITS_SET_L(lineCaps.iFlags, RLine::KCapsVoice, KNoUnwantedBits, _L("RLine::GetCaps returned wrong caps"));
       
 12992 
       
 12993 	// Get call 1. 
       
 12994 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
 12995 	
       
 12996 	// Get call 2. 
       
 12997 	RMobileCall& call2 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall2);
       
 12998 
       
 12999 	////////////////////////////////////////////////////////////////
       
 13000 	// SET UP END
       
 13001 	////////////////////////////////////////////////////////////////
       
 13002 	
       
 13003 	StartTest();
       
 13004 	
       
 13005 	////////////////////////////////////////////////////////////////
       
 13006 	// TEST START
       
 13007 	////////////////////////////////////////////////////////////////
       
 13008 	
       
 13009 	// Post notifier
       
 13010 	const TInt expectedStatus = KErrNone;
       
 13011 	TExtEtelRequestStatus notifyMobileCallStatusChangeStatus (call1, EMobileCallNotifyMobileCallStatusChange);
       
 13012 	CleanupStack::PushL(notifyMobileCallStatusChangeStatus);
       
 13013 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
 13014 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallStatus);
       
 13015 	
       
 13016 	// Dial a number that answers. 
       
 13017 	TPtrC number; 
       
 13018 	ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number) != EFalse, _L("CTestStep::GetStringFromConfig did not complete as expected"));
       
 13019 	TCoreEtelRequestStatus<RCall> dialStatus(call1, &RCall::DialCancel);
       
 13020 	CleanupStack::PushL(dialStatus);
       
 13021 	call1.Dial(dialStatus, number); 			
       
 13022 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeMedium), KErrNone, _L("RCall::Dial timed-out"));
       
 13023 	ASSERT_EQUALS(dialStatus.Int(), KErrNone, _L("RCall::Dial returned with an error"));
       
 13024 	
       
 13025 	// Wait for call to be connected. 
       
 13026 	RMobileCall::TMobileCallStatus expectedMobileCallStatus  = RMobileCall::EStatusConnected;
       
 13027 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
 13028 														                notifyMobileCallStatusChangeStatus,
       
 13029 														                mobileCallStatus,
       
 13030 														                expectedMobileCallStatus ,
       
 13031 														                expectedStatus);
       
 13032 														                
       
 13033 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusConnected.
       
 13034 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone, _L("RMobileCall::GetMobileCallStatus returned an error"));
       
 13035 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected, _L("RMobileCall::GetMobileCallStatus did not set call status EStatusConnected as expected"));
       
 13036 		
       
 13037 	// Hold call 1. 
       
 13038 	TExtEtelRequestStatus getHoldStatus(call1, EMobileCallHold);
       
 13039 	CleanupStack::PushL(getHoldStatus);
       
 13040 	call1.Hold(getHoldStatus);
       
 13041 	ASSERT_EQUALS(WaitForRequestWithTimeOut(getHoldStatus, ETimeMedium), KErrNone, _L("RMobileCall::Hold timed-out."));
       
 13042 	ASSERT_EQUALS(getHoldStatus.Int(), KErrNone, _L("RMobileCall::Hold returned error."));
       
 13043 	
       
 13044 	// Post notifier
       
 13045 	TExtEtelRequestStatus notifyMobileCallStatusChangeStatus2 (call2, EMobileCallNotifyMobileCallStatusChange);
       
 13046 	CleanupStack::PushL(notifyMobileCallStatusChangeStatus2);
       
 13047 	call2.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus2, mobileCallStatus);
       
 13048 	
       
 13049 	// Dial another number that answers. 
       
 13050 	ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber2, number) != EFalse, _L("CTestStep::GetStringFromConfig did not complete as expected"));
       
 13051 	TCoreEtelRequestStatus<RCall> dialStatus2(call2, &RCall::DialCancel);
       
 13052 	CleanupStack::PushL(dialStatus2);
       
 13053 	call2.Dial(dialStatus2, number); 
       
 13054 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus2, ETimeMedium), KErrNone, _L("RCall::Dial timed-out"));
       
 13055 	ASSERT_EQUALS(dialStatus2.Int(), KErrNone, _L("RCall::Dial returned with an error"));
       
 13056 	
       
 13057 	// Wait for call to be connected.
       
 13058 	expectedMobileCallStatus  = RMobileCall::EStatusConnected;
       
 13059 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call2,
       
 13060 														                notifyMobileCallStatusChangeStatus2,
       
 13061 														                mobileCallStatus,
       
 13062 														                expectedMobileCallStatus ,
       
 13063 														                expectedStatus);
       
 13064 					
       
 13065 	// Transfer call 1.
       
 13066 	TExtEtelRequestStatus getTransferStatus(call1, EMobileCallTransfer);
       
 13067 	CleanupStack::PushL(getTransferStatus);
       
 13068 	call1.Transfer(getTransferStatus);
       
 13069 			
       
 13070 	// Cancel transfer. 
       
 13071 	phone.CancelAsyncRequest(EMobileCallTransfer);
       
 13072 	
       
 13073 	// Check KErrGsmCCFacilityRejected returned.
       
 13074 	// $CTSYProblem LTSY propagating error -4285(KErrGsmCCFacilityRejected) to CTSY, which is correctly returning it back to client
       
 13075 	// therefore error code does not indicate an error in the CTSY but rather that the LTSY / network is not supporting the requested operation.
       
 13076 	// Changed test to check if KErrGsmCCFacilityRejected is returned instead of KErrCancel | KErrNone.
       
 13077 	ASSERT_EQUALS(WaitForRequestWithTimeOut(getTransferStatus, ETimeMedium), KErrNone, _L("RTelSubSessionBase::CancelAsyncRequest timed-out"));
       
 13078 	ASSERT_EQUALS(getTransferStatus.Int(), KErrGsmCCFacilityRejected, _L("RMobilePhone::CancelAsyncRequest returned with an incorrect status"));
       
 13079 	
       
 13080 	// Hang up call1. 
       
 13081 	TCoreEtelRequestStatus<RCall> hangUpStatus (call1,&RCall::HangUpCancel);	
       
 13082 	CleanupStack::PushL(hangUpStatus);
       
 13083 	call1.HangUp(hangUpStatus);
       
 13084 	ASSERT_EQUALS(WaitForRequestWithTimeOut(hangUpStatus, ETimeMedium), KErrNone, _L("RCall::HangUp timed-out"));
       
 13085 	ASSERT_EQUALS(hangUpStatus.Int(), KErrNone,  _L("RCall::HangUp returned with an error"));
       
 13086 
       
 13087 	// Hang up call2. 
       
 13088 	TCoreEtelRequestStatus<RCall> hangUpStatus2 (call2,&RCall::HangUpCancel);	
       
 13089 	CleanupStack::PushL(hangUpStatus2);
       
 13090 	call2.HangUp(hangUpStatus2);	
       
 13091 	ASSERT_EQUALS(WaitForRequestWithTimeOut(hangUpStatus2, ETimeMedium), KErrNone, _L("RCall::HangUp timed-out"));
       
 13092 	ASSERT_EQUALS(hangUpStatus2.Int(), KErrNone,  _L("RCall::HangUp returned with an error"));
       
 13093 	
       
 13094 	////////////////////////////////////////////////////////////////
       
 13095 	// TEST END
       
 13096 	////////////////////////////////////////////////////////////////
       
 13097 
       
 13098     StartCleanup();
       
 13099 		    
       
 13100 	// Pop
       
 13101 	// notifyMobileCallStatusChangeStatus
       
 13102 	// dialStatus
       
 13103 	// getHoldStatus
       
 13104 	// notifyMobileCallStatusChangeStatus2
       
 13105 	// dialStatus2
       
 13106 	// getTransferStatus
       
 13107 	// hangUpStatus
       
 13108 	// hangUpStatus2
       
 13109 	CleanupStack::PopAndDestroy(8, &notifyMobileCallStatusChangeStatus);
       
 13110 	
       
 13111 	return TestStepResult();
       
 13112 	}
       
 13113 
       
 13114 TPtrC CCTSYIntegrationTestCallControl0038::GetTestStepName()
       
 13115 /**
       
 13116  * @return The test step name.
       
 13117  */
       
 13118 	{
       
 13119 	return  _L("CCTSYIntegrationTestCallControl0038");
       
 13120 	}
       
 13121 
       
 13122 
       
 13123 
       
 13124 CCTSYIntegrationTestCallControl0039::CCTSYIntegrationTestCallControl0039(CEtelSessionMgr& aEtelSessionMgr)
       
 13125 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 13126 /**
       
 13127  * Constructor.
       
 13128  */
       
 13129 	{
       
 13130 	SetTestStepName(CCTSYIntegrationTestCallControl0039::GetTestStepName());
       
 13131 	}
       
 13132 
       
 13133 CCTSYIntegrationTestCallControl0039::~CCTSYIntegrationTestCallControl0039()
       
 13134 /**
       
 13135  * Destructor.
       
 13136  */
       
 13137 	{
       
 13138 	}
       
 13139 
       
 13140 TVerdict CCTSYIntegrationTestCallControl0039::doTestStepL()
       
 13141 /**
       
 13142  * @SYMTestCaseID BA-CTSY-INT-CCON-0039
       
 13143  * @SYMFssID BA/CTSY/CCON-0039
       
 13144  * @SYMTestCaseDesc Deflect incoming call
       
 13145  * @SYMTestPriority High
       
 13146  * @SYMTestActions RMobileCall::Deflect, RMobileCall::NotifyMobileCallStatusChange, RCall::NotifyStatusChange, RLine::NotifyStatusChange, RMobileLine::GetMobileLineStatus, RMobileLine::NotifyMobileLineStatusChange, RLine::GetStatus, RMobileCall::GetMobileCallStatus, RCall::GetStatus, RLine::NotifyIncomingCall
       
 13147  * @SYMTestExpectedResults Pass - Call deflected.
       
 13148  * @SYMTestType CIT
       
 13149  * @SYMTestCaseDependencies live/manual
       
 13150  *
       
 13151  * Reason for test: Verify incoming call can be deflected and call and line return to idle.
       
 13152  *
       
 13153  * @return - TVerdict code
       
 13154  */
       
 13155 	{
       
 13156 
       
 13157 	////////////////////////////////////////////////////////////////
       
 13158 	// SET UP
       
 13159 	////////////////////////////////////////////////////////////////
       
 13160 
       
 13161 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 13162     RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 13163     CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 13164 	
       
 13165 	// Check phone supports KCapsVoice.
       
 13166 	RPhone::TCaps phoneCaps; 
       
 13167 	CHECK_EQUALS_L(phone.GetCaps(phoneCaps), KErrNone, _L("RPhone::GetCaps returned an error"));
       
 13168 	CHECK_BITS_SET_L(phoneCaps.iFlags, RPhone::KCapsVoice, KNoUnwantedBits,  _L("RPhone::GetCaps returned wrong caps"));
       
 13169 
       
 13170 	// Get Voice line 1. 
       
 13171     RMobileLine& mobileLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
 13172       
       
 13173 
       
 13174 	////////////////////////////////////////////////////////////////
       
 13175 	// SET UP END
       
 13176 	////////////////////////////////////////////////////////////////
       
 13177 	
       
 13178 	StartTest();
       
 13179 	
       
 13180 	////////////////////////////////////////////////////////////////
       
 13181 	// TEST START
       
 13182 	////////////////////////////////////////////////////////////////
       
 13183 
       
 13184 	for (TInt callDeflectType = RMobileCall::EDeflectVoicemail; callDeflectType <= RMobileCall::EDeflectSuppliedNumber; ++callDeflectType )
       
 13185 		{
       
 13186 		// Get call 1. 
       
 13187 	    //RMobileCall& mobileCall = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
 13188 
       
 13189 		// Post RLine::NotifyIncomingCall
       
 13190 	    TName callName;
       
 13191 	    TCoreEtelRequestStatus<RLine> notifyIncomingCallStatus(mobileLine, &RLine::NotifyIncomingCallCancel);
       
 13192 	    CleanupStack::PushL(notifyIncomingCallStatus);
       
 13193 	    mobileLine.NotifyIncomingCall(notifyIncomingCallStatus, callName);
       
 13194 	    
       
 13195 		// Request incoming call from RPS.
       
 13196 		RPSRequestIncomingCallL(EVoiceLine);
       
 13197 		
       
 13198 		// Check RLine::NotifyIncomingCall completes with KErrNone
       
 13199 	    ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyIncomingCallStatus, ETimeLong), KErrNone, _L("RLine::NotifyIncomingCall timed out"));
       
 13200 	    ASSERT_EQUALS(notifyIncomingCallStatus.Int(), KErrNone, _L("RLine::NotifyIncomingCall returned with an error"));
       
 13201 	    
       
 13202 	    TCallId incomingCallId;
       
 13203 	    RMobileCall& mobileCall = iEtelSessionMgr.GetIncomingCallL(KMainServer, KMainPhone, KVoiceLine, callName, incomingCallId);
       
 13204 	    
       
 13205 	    // Post notifications
       
 13206 	    RCall::TStatus callStatus;
       
 13207 	    TCoreEtelRequestStatus<RMobileCall> notifyStatusChangeMCallStatus (mobileCall, &RMobileCall::NotifyStatusChangeCancel);
       
 13208 	    CleanupStack::PushL(notifyStatusChangeMCallStatus);
       
 13209 	    mobileCall.NotifyStatusChange(notifyStatusChangeMCallStatus, callStatus);
       
 13210 	    
       
 13211 	    // Post notify RLine::NotifyStatusChange
       
 13212 	    RCall::TStatus lineStatus;
       
 13213 		TCoreEtelRequestStatus<RLine> notifyStatusChangeMLineStatus (mobileLine, &RLine::NotifyStatusChangeCancel);
       
 13214 	    CleanupStack::PushL(notifyStatusChangeMLineStatus);
       
 13215 		mobileLine.NotifyStatusChange(notifyStatusChangeMLineStatus, lineStatus);
       
 13216 	
       
 13217 		// Post notifier RMobileCall::NotifyMobileCallStatusChange
       
 13218 		RMobileCall::TMobileCallStatus mobileCallStatus;
       
 13219 		TExtEtelRequestStatus notifyMobileCallStatusChangeStatus(mobileCall, EMobileCallNotifyMobileCallStatusChange);
       
 13220 		CleanupStack::PushL(notifyMobileCallStatusChangeStatus);
       
 13221 		mobileCall.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallStatus);
       
 13222 	
       
 13223 		// Post RMobileLine::NotifyMobileLineStatusChange
       
 13224 		RMobileCall::TMobileCallStatus mobileLineStatus;
       
 13225 		TExtEtelRequestStatus notifyMobileLineChangeStatus(mobileLine, EMobileLineNotifyMobileLineStatusChange);
       
 13226 		CleanupStack::PushL(notifyMobileLineChangeStatus);
       
 13227 		mobileLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);	
       
 13228 	
       
 13229 		// Deflect call to a voice mail number using RMobileCall::Deflect and aDeflectType = EDeflectVoicemail. 
       
 13230 		// $CTSYProblem CTSY is not supporting deflect type of RMobileCall::EDeflectVoicemail, and is returning KErrNotsupported
       
 13231 	    TExtEtelRequestStatus setDeflectStatus(mobileCall, EMobileCallDeflect);
       
 13232 	    CleanupStack::PushL(setDeflectStatus);
       
 13233 	    RMobilePhone::TMobileAddress destination;
       
 13234 	    TPtrC phoneNumber;
       
 13235 		ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber2, phoneNumber) != EFalse, _L("GetStringFromConfig did not complete as expected"));
       
 13236 	    destination.iTelNumber = phoneNumber;
       
 13237 	    destination.iTypeOfNumber = RMobilePhone::ENationalNumber;
       
 13238 	    destination.iNumberPlan = RMobilePhone::ENationalNumberPlan;
       
 13239 	    
       
 13240 	    mobileCall.Deflect(setDeflectStatus, (RMobileCall::TMobileCallDeflect)callDeflectType, destination);    
       
 13241 		ASSERT_EQUALS(WaitForRequestWithTimeOut(setDeflectStatus, ETimeLong), KErrNone, _L("RMobileCall::Deflect timed-out"));
       
 13242 	    ASSERT_EQUALS(setDeflectStatus.Int(), KErrNone, _L("RMobileCall::Deflect returned with an error"));
       
 13243 	    // ******** HERE - put eror code. Assign new code from xls ******* //
       
 13244 	        
       
 13245 		// ===  Check call status ===
       
 13246 	
       
 13247 		// Check RCall::NotifyStatusChange completes with EStatusIdle.
       
 13248 		RCall::TStatus expectedCallStatus = RCall::EStatusIdle;
       
 13249 	    TInt wantedStatus = KErrNone;
       
 13250 	    iCallControlTestHelper.WaitForCallNotifyStatusChange(mobileCall,
       
 13251 	    													 notifyStatusChangeMCallStatus,
       
 13252 	    													 callStatus,
       
 13253 	    													 expectedCallStatus,
       
 13254 	    													 wantedStatus);
       
 13255 	    
       
 13256 		// Check RCall::GetStatus returns EStatusIdle.
       
 13257 		ASSERT_EQUALS(mobileCall.GetStatus(callStatus), KErrNone, _L("RCall::GetStatus returned error"));
       
 13258 		ASSERT_EQUALS(callStatus, RCall::EStatusIdle, _L("RCall::GetStatus did not return call status EStatusIdle as expected"));
       
 13259 	
       
 13260 		// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusIdle.
       
 13261 		RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusIdle;
       
 13262 	    iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(mobileCall, 
       
 13263 	    																	 notifyMobileCallStatusChangeStatus,
       
 13264 	    																	 mobileCallStatus,
       
 13265 	    																	 expectedMobileCallStatus,
       
 13266 	    																	 wantedStatus);
       
 13267 	    
       
 13268 		// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
 13269 		ASSERT_EQUALS(mobileCall.GetStatus(callStatus), KErrNone, _L("RMobileCall::GetStatus returned error"));
       
 13270 		ASSERT_EQUALS(callStatus, RCall::EStatusIdle, _L("RMobileCall::GetStatus did not return call status EStatusIdle as expected"));
       
 13271 	
       
 13272 		// ===  Check line status ===
       
 13273 	
       
 13274 		// Check RLine::NotifyStatusChange completes with EStatusIdle
       
 13275 		iCallControlTestHelper.WaitForLineNotifyStatusChange(mobileLine, 
       
 13276 															 notifyStatusChangeMLineStatus,
       
 13277 															 lineStatus,
       
 13278 															 expectedCallStatus,
       
 13279 															 wantedStatus);
       
 13280 	
       
 13281 		// Check RLine::GetStatus returns EStatusIdle
       
 13282 		ASSERT_EQUALS(mobileLine.GetStatus(callStatus), KErrNone, _L("RLine::GetStatus returned error"));
       
 13283 		ASSERT_EQUALS(callStatus, RCall::EStatusIdle, _L("RLine::GetStatus did not return call status EStatusIdle as expected"));
       
 13284 	
       
 13285 		// Check RMobileLine::NotifyMobileLineStatusChange completes with EStatusIdle
       
 13286 		RMobileCall::TMobileCallStatus expectedLineStatus = RMobileCall::EStatusIdle;
       
 13287 		iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(mobileLine, 
       
 13288 																			 notifyMobileLineChangeStatus,
       
 13289 																			 mobileLineStatus,
       
 13290 																			 expectedLineStatus,
       
 13291 																			 wantedStatus);
       
 13292 	
       
 13293 		// Check RMobileLine::GetMobileLineStatus returns EStatusIdle
       
 13294 		ASSERT_EQUALS(mobileLine.GetStatus(callStatus), KErrNone, _L("RMobileLine::GetStatus returned error"));
       
 13295 		ASSERT_EQUALS(callStatus, RCall::EStatusIdle, _L("RMobileLine::GetStatus did not return call status EStatusIdle as expected"));
       
 13296 		
       
 13297 		iEtelSessionMgr.ReleaseCall(KMainServer,KMainPhone,KVoiceLine, KCall1);
       
 13298 		
       
 13299 		// Pop
       
 13300 		// notifyIncomingCallStatus
       
 13301 		// notifyStatusChangeMCallStatus
       
 13302 		// notifyStatusChangeMLineStatus
       
 13303 		// notifyMobileCallStatusChangeStatus
       
 13304 		// notifyMobileLineChangeStatus
       
 13305 		// setDeflectStatus
       
 13306 		CleanupStack::PopAndDestroy(6, &notifyIncomingCallStatus);
       
 13307 		}
       
 13308 	
       
 13309 	
       
 13310 	////////////////////////////////////////////////////////////////
       
 13311 	// TEST END
       
 13312 	////////////////////////////////////////////////////////////////
       
 13313 
       
 13314     StartCleanup();
       
 13315    		
       
 13316 	return TestStepResult();
       
 13317 	}
       
 13318 
       
 13319 TPtrC CCTSYIntegrationTestCallControl0039::GetTestStepName()
       
 13320 /**
       
 13321  * @return The test step name.
       
 13322  */
       
 13323 	{
       
 13324 	return  _L("CCTSYIntegrationTestCallControl0039");
       
 13325 	}
       
 13326 
       
 13327 
       
 13328 CCTSYIntegrationTestCallControl0040::CCTSYIntegrationTestCallControl0040(CEtelSessionMgr& aEtelSessionMgr)
       
 13329 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 13330 /**
       
 13331  * Constructor.
       
 13332  */
       
 13333 	{
       
 13334 	SetTestStepName(CCTSYIntegrationTestCallControl0040::GetTestStepName());
       
 13335 	}
       
 13336 
       
 13337 CCTSYIntegrationTestCallControl0040::~CCTSYIntegrationTestCallControl0040()
       
 13338 /**
       
 13339  * Destructor.
       
 13340  */
       
 13341 	{
       
 13342 	}
       
 13343 
       
 13344 TVerdict CCTSYIntegrationTestCallControl0040::doTestStepL()
       
 13345 /**
       
 13346  * @SYMTestCaseID BA-CTSY-INT-CCON-0040
       
 13347  * @SYMFssID BA/CTSY/CCON-0040
       
 13348  * @SYMTestCaseDesc Cancel deflect call to registered number
       
 13349  * @SYMTestPriority High
       
 13350  * @SYMTestActions RMobileCall::Deflect
       
 13351  * @SYMTestExpectedResults Pass - Deflect cancelled.
       
 13352  * @SYMTestType CIT
       
 13353  * @SYMTestCaseDependencies live/manual
       
 13354  *
       
 13355  * Reason for test: Verify deflect is cancelled.
       
 13356  *
       
 13357  * @return - TVerdict code
       
 13358  */
       
 13359 	{
       
 13360 
       
 13361 	////////////////////////////////////////////////////////////////
       
 13362 	// SET UP
       
 13363 	////////////////////////////////////////////////////////////////
       
 13364 
       
 13365 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 13366 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 13367  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
 13368 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 13369 
       
 13370 	// Check phone supports KCapsVoice.
       
 13371 	RPhone::TCaps phoneCaps; 
       
 13372 	CHECK_EQUALS_L(phone.GetCaps(phoneCaps), KErrNone, _L("RPhone::GetCaps returned an error"));
       
 13373 	CHECK_BITS_SET_L(phoneCaps.iFlags, RPhone::KCapsVoice, KNoUnwantedBits,  _L("RPhone::GetCaps returned wrong caps"));
       
 13374 
       
 13375 	// Get Voice line 1. 
       
 13376 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
 13377 	
       
 13378 	// Get call 1. 
       
 13379 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
 13380 
       
 13381 	////////////////////////////////////////////////////////////////
       
 13382 	// SET UP END
       
 13383 	////////////////////////////////////////////////////////////////
       
 13384 	
       
 13385 	StartTest();
       
 13386 	
       
 13387 	////////////////////////////////////////////////////////////////
       
 13388 	// TEST START
       
 13389 	////////////////////////////////////////////////////////////////
       
 13390 	
       
 13391 	
       
 13392 	// Tester should dial the board. 
       
 13393 	DisplayUserInteractionPromptL(_L("Dial in to this phone after pressing Any key"), ETimeLong);
       
 13394 	
       
 13395 	// Check RLine::NotifyIncomingCall completes with KErrNone
       
 13396 	TCoreEtelRequestStatus<RLine> notifyIncomingCallStatus(voiceLine, &RLine::NotifyIncomingCallCancel);
       
 13397 	CleanupStack::PushL(notifyIncomingCallStatus);
       
 13398 	TName incomingCallName;
       
 13399 	incomingCallName.Zero();
       
 13400 	voiceLine.NotifyIncomingCall(notifyIncomingCallStatus, incomingCallName);
       
 13401 	
       
 13402 	// Deflect call using aDeflectType = EDeflectRegisteredNumber and specifying a valid destination. 
       
 13403 	TExtEtelRequestStatus deflectStatus(call1, EMobileCallDeflect);
       
 13404 	CleanupStack::PushL(deflectStatus);
       
 13405 	RMobileCall::TMobileCallDeflect deflectType = RMobileCall::EDeflectRegisteredNumber;
       
 13406 	RMobilePhone::TMobileAddress mobileAddress; 
       
 13407 	call1.Deflect(deflectStatus, deflectType, mobileAddress);
       
 13408 
       
 13409 	// Cancel deflect. 
       
 13410 	phone.CancelAsyncRequest(EMobileCallDeflect);
       
 13411 
       
 13412 	// Check KErrNone or KErrCancel returned.
       
 13413 	// $CTSYProblem CTSY is not supporting deflect type of RMobileCall::EDeflectRegisteredNumber, and is returningn KErrNotsupported
       
 13414 	ASSERT_EQUALS(WaitForRequestWithTimeOut(deflectStatus, ETimeLong), KErrNone, _L("RCall::Deflect timed-out"));
       
 13415 	ASSERT_TRUE((deflectStatus.Int() == KErrNone) || (deflectStatus.Int() == KErrCancel), _L("RMobileCall::Deflect did not return KErrNone or KErrCancel"));
       
 13416 
       
 13417 	////////////////////////////////////////////////////////////////
       
 13418 	// TEST END
       
 13419 	////////////////////////////////////////////////////////////////
       
 13420 
       
 13421     StartCleanup();
       
 13422 	
       
 13423 	// Pop
       
 13424 	// notifyIncomingCallStatus
       
 13425 	// deflectStatus
       
 13426 	CleanupStack::PopAndDestroy(2, &notifyIncomingCallStatus);
       
 13427 	
       
 13428 	return TestStepResult();
       
 13429 	}
       
 13430 
       
 13431 TPtrC CCTSYIntegrationTestCallControl0040::GetTestStepName()
       
 13432 /**
       
 13433  * @return The test step name.
       
 13434  */
       
 13435 	{
       
 13436 	return  _L("CCTSYIntegrationTestCallControl0040");
       
 13437 	}
       
 13438 
       
 13439 
       
 13440 
       
 13441 CCTSYIntegrationTestCallControl0041::CCTSYIntegrationTestCallControl0041(CEtelSessionMgr& aEtelSessionMgr)
       
 13442 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 13443 /**
       
 13444  * Constructor.
       
 13445  */
       
 13446 	{
       
 13447 	SetTestStepName(CCTSYIntegrationTestCallControl0041::GetTestStepName());
       
 13448 	}
       
 13449 
       
 13450 CCTSYIntegrationTestCallControl0041::~CCTSYIntegrationTestCallControl0041()
       
 13451 /**
       
 13452  * Destructor.
       
 13453  */
       
 13454 	{
       
 13455 	}
       
 13456 
       
 13457 TVerdict CCTSYIntegrationTestCallControl0041::doTestStepL()
       
 13458 /**
       
 13459  * @SYMTestCaseID BA-CTSY-INT-CCON-0041
       
 13460  * @SYMFssID BA/CTSY/CCON-0041
       
 13461  * @SYMTestCaseDesc Cancelled answer incoming before detection and during detection
       
 13462  * @SYMTestPriority High
       
 13463  * @SYMTestActions RCall::AnswerIncomingCall
       
 13464  * @SYMTestExpectedResults Pass - Answer incoming call request cancelled.
       
 13465  * @SYMTestType CIT
       
 13466  * @SYMTestCaseDependencies live/automatic
       
 13467  *
       
 13468  * Reason for test: Verify answering of incoming call can be cancelled.
       
 13469  *
       
 13470  * @return - TVerdict code
       
 13471  */
       
 13472 	{
       
 13473 
       
 13474 	////////////////////////////////////////////////////////////////
       
 13475 	// SET UP
       
 13476 	////////////////////////////////////////////////////////////////
       
 13477 
       
 13478 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 13479 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 13480  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
 13481 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 13482 
       
 13483 	// Check phone supports KCapsVoice.
       
 13484 	RPhone::TCaps phoneCaps; 
       
 13485 	CHECK_EQUALS_L(phone.GetCaps(phoneCaps), KErrNone, _L("RPhone::GetCaps returned an error"));
       
 13486 	CHECK_BITS_SET_L(phoneCaps.iFlags, RPhone::KCapsVoice, KNoUnwantedBits, _L("RPhone::GetCaps returned wrong caps"));
       
 13487 
       
 13488 	// Get Voice line 1. 
       
 13489 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
 13490 
       
 13491 	////////////////////////////////////////////////////////////////
       
 13492 	// SET UP END
       
 13493 	////////////////////////////////////////////////////////////////
       
 13494 	
       
 13495 	StartTest();
       
 13496 	
       
 13497 	////////////////////////////////////////////////////////////////
       
 13498 	// TEST START
       
 13499 	////////////////////////////////////////////////////////////////
       
 13500 
       
 13501 	// Answer incoming call request cancelled with different delays. 
       
 13502 	AnswerIncomingCallCancelL(voiceLine, KOneSecond/100);
       
 13503 	AnswerIncomingCallCancelL(voiceLine, KOneSecond/10000);
       
 13504 	AnswerIncomingCallCancelL(voiceLine, 0);
       
 13505 
       
 13506 	////////////////////////////////////////////////////////////////
       
 13507 	// TEST END
       
 13508 	////////////////////////////////////////////////////////////////
       
 13509 
       
 13510     StartCleanup();
       
 13511 	
       
 13512 	return TestStepResult();
       
 13513 	}
       
 13514 
       
 13515 TPtrC CCTSYIntegrationTestCallControl0041::GetTestStepName()
       
 13516 /**
       
 13517  * @return The test step name.
       
 13518  */
       
 13519 	{
       
 13520 	return  _L("CCTSYIntegrationTestCallControl0041");
       
 13521 	}
       
 13522 
       
 13523 /**
       
 13524  * Cancels an incoming call answer request after given delay.
       
 13525  * @param aVoiceLine Line object.
       
 13526  * @param aDelay Delay between answering and cancelling request.
       
 13527  */
       
 13528 void CCTSYIntegrationTestCallControl0041::AnswerIncomingCallCancelL(
       
 13529 		RMobileLine& aVoiceLine,
       
 13530 		TInt aDelay)
       
 13531 	{
       
 13532 	// Post notify RLine::NotifyIncomingCall
       
 13533 	TCoreEtelRequestStatus<RLine> notifyIncomingCallStatus(aVoiceLine, &RLine::NotifyIncomingCallCancel);
       
 13534 	CleanupStack::PushL(notifyIncomingCallStatus);
       
 13535 	TName incomingCallName;
       
 13536 	aVoiceLine.NotifyIncomingCall(notifyIncomingCallStatus, incomingCallName);
       
 13537 
       
 13538 	// Request incoming call from RPS. 
       
 13539 	ASSERT_EQUALS (RPSRequestIncomingCallL(EVoiceLine), KErrNone, _L("CCTSYIntegrationTestSuiteStepBase::RPSRequestIncomingCallL returned an error"));
       
 13540 
       
 13541 	// Check RLine::NotifyIncomingCall completes.
       
 13542 	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyIncomingCallStatus, ETimeMedium), KErrNone, _L("RLine::NotifyIncomingCall timed-out"));
       
 13543 	ASSERT_EQUALS(notifyIncomingCallStatus.Int(), KErrNone, _L("RLine::NotifyIncomingCall returned an error"));
       
 13544 
       
 13545 	// Get the incoming call
       
 13546 	TCallId incomingCallId;
       
 13547 	RMobileCall& call1 = iEtelSessionMgr.GetIncomingCallL(KMainServer, KMainPhone, KVoiceLine, incomingCallName, incomingCallId);
       
 13548 
       
 13549 	// Call RCall::AnswerIncomingCall
       
 13550 	TCoreEtelRequestStatus<RCall> answerIncomingStatus(call1, &RCall::AnswerIncomingCallCancel);
       
 13551 	CleanupStack::PushL(answerIncomingStatus);	
       
 13552 	call1.AnswerIncomingCall(answerIncomingStatus);
       
 13553 
       
 13554 	// Call RCall::AnswerIncomingCallCancel after a delay 
       
 13555 	if (aDelay > 0)
       
 13556 	    {
       
 13557 	    User::After(aDelay);
       
 13558 	    }
       
 13559     call1.AnswerIncomingCallCancel();
       
 13560 	DEBUG_PRINTF2(_L("RCall::AnswerIncomingCallCancel called after %d microseconds delay"), aDelay);
       
 13561 
       
 13562 	// Check answer incoming call cancelled.
       
 13563     // $CTSYProblem CMmCallTsy::AnswerIncomingCallCancel
       
 13564     // TSY has started a request and it is not possible to then cancel this request. 
       
 13565     // The best thing for the TSY to do in this case is to call HangUp method to do this and set a flag so that we can know that AnswerIncomingCallCancel handling is going on.
       
 13566     // Checking is changed from KErrCancel to KErrGsmCallRejected
       
 13567 	ASSERT_EQUALS(WaitForRequestWithTimeOut(answerIncomingStatus, ETimeMedium), KErrNone, _L("RMobileCall::AnswerIncomingCall timed-out"));
       
 13568   	ASSERT_EQUALS(answerIncomingStatus.Int(), KErrGsmCallRejected, _L("RCall::AnswerIncomingCall was not cancelled correctly"));
       
 13569 	RCall::TStatus callStatus;
       
 13570 	ASSERT_EQUALS(call1.GetStatus(callStatus), KErrNone, _L("RCall::GetStatus returned an Error"));
       
 13571 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle, _L("RCall::GetStatus did not return EStatusIdle"));
       
 13572 
       
 13573 	// Release call
       
 13574 	iEtelSessionMgr.ReleaseCall(KMainServer, KMainPhone, KVoiceLine, incomingCallId);
       
 13575 
       
 13576 	// Pop
       
 13577 	// notifyIncomingCallStatus
       
 13578 	// answerIncomingStatus
       
 13579 	CleanupStack::PopAndDestroy(2, &notifyIncomingCallStatus);
       
 13580 	}
       
 13581 
       
 13582 
       
 13583 CCTSYIntegrationTestCallControl0042::CCTSYIntegrationTestCallControl0042(CEtelSessionMgr& aEtelSessionMgr)
       
 13584 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 13585 /**
       
 13586  * Constructor.
       
 13587  */
       
 13588 	{
       
 13589 	SetTestStepName(CCTSYIntegrationTestCallControl0042::GetTestStepName());
       
 13590 	}
       
 13591 
       
 13592 CCTSYIntegrationTestCallControl0042::~CCTSYIntegrationTestCallControl0042()
       
 13593 /**
       
 13594  * Destructor.
       
 13595  */
       
 13596 	{
       
 13597 	}
       
 13598 
       
 13599 TVerdict CCTSYIntegrationTestCallControl0042::doTestStepL()
       
 13600 /**
       
 13601  * @SYMTestCaseID BA-CTSY-INT-CCON-0042
       
 13602  * @SYMFssID BA/CTSY/CCON-0042
       
 13603  * @SYMTestCaseDesc Ensure that when in class C operation (PSD only), a voice or data call dial request completes with an error.
       
 13604  * @SYMTestPriority High
       
 13605  * @SYMTestActions 
       
 13606  * @SYMTestExpectedResults Pass - KErrGsmOfflineOpNotAllowed returned.
       
 13607  * @SYMTestType CIT
       
 13608  * @SYMTestCaseDependencies live/automatic
       
 13609  *
       
 13610  * Reason for test: Verify error is returned on attempt to dial.
       
 13611  *
       
 13612  * @return - TVerdict code
       
 13613  */
       
 13614 	{
       
 13615 
       
 13616 	////////////////////////////////////////////////////////////////
       
 13617 	// SET UP
       
 13618 	////////////////////////////////////////////////////////////////
       
 13619 
       
 13620 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 13621 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 13622  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 13623 	
       
 13624 	// Get the packet service. 
       
 13625     RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
       
 13626     
       
 13627 	// Set the MS class to EMSClassAlternateMode. 
       
 13628     TExtEtelRequestStatus setMSClassStatus(packetService, EPacketSetMSClass);
       
 13629 	CleanupStack::PushL(setMSClassStatus);
       
 13630     packetService.SetMSClass(setMSClassStatus, RPacketService::EMSClassAlternateMode);
       
 13631     CHECK_EQUALS_L(WaitForRequestWithTimeOut(setMSClassStatus, ETimeLong), KErrNone, _L("RPacketService::SetMSClass timed out"));
       
 13632     ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10050);
       
 13633 	CHECK_TRUE_L(EFalse, _L("This test has been made to leave intentionally as CTSY currently does not support the SetMSClass operation."));		
       
 13634     CHECK_EQUALS_L(setMSClassStatus.Int(), KErrNone, _L("RPacketService::SetMSClass returned an error"));
       
 13635 
       
 13636 	// Set the preferred bearer to EBearerPacketSwitched
       
 13637 	TExtEtelRequestStatus setPreferredBearerStatus(packetService, EPacketSetPrefBearer);
       
 13638 	CleanupStack::PushL(setPreferredBearerStatus);
       
 13639     packetService.SetPreferredBearer(setPreferredBearerStatus, RPacketService::EBearerPacketSwitched);
       
 13640 	CHECK_EQUALS_L(WaitForRequestWithTimeOut(setPreferredBearerStatus, ETimeLong), KErrNone, _L("RPacketService::SetPreferredBearer timed out"));
       
 13641     CHECK_EQUALS_L(setPreferredBearerStatus.Int(), KErrNone, _L("RPacketService::SetPreferredBearer returned an error"));
       
 13642 
       
 13643 	// Ensure the packet service status is EStatusAttached. 
       
 13644     RPacketService::TStatus packetStatus;
       
 13645     CHECK_EQUALS_L(packetService.GetStatus(packetStatus), KErrNone, _L("RPacketService::GetStatus returned an error"));
       
 13646     TExtEtelRequestStatus notifyServiceStatusChStatus(packetService, EPacketNotifyStatusChange);
       
 13647     CleanupStack::PushL(notifyServiceStatusChStatus);
       
 13648     RPacketService::TStatus packetServiceStatus;
       
 13649     
       
 13650     if (packetStatus != RPacketService::EStatusAttached)
       
 13651         {
       
 13652         RPacketService::TAttachMode attachMode;
       
 13653         CHECK_EQUALS_L(packetService.GetAttachMode(attachMode), KErrNone, _L("RPacketService::GetAttachMode returned with an error."));
       
 13654         packetService.NotifyStatusChange(notifyServiceStatusChStatus, packetServiceStatus);
       
 13655         if(attachMode != RPacketService::EAttachWhenPossible)
       
 13656     		{
       
 13657     		CHECK_EQUALS_L(packetService.SetAttachMode(RPacketService::EAttachWhenPossible), KErrNone, _L("RPacketService::SetAttachMode returned with an error."));
       
 13658     		}
       
 13659         CHECK_EQUALS_L(packetService.GetAttachMode(attachMode), KErrNone, _L("RPacketService::GetAttachMode returned with an error."));
       
 13660         CHECK_EQUALS_L(attachMode, RPacketService::EAttachWhenPossible, _L("RPacketService::GetAttachMode did not return EAttachWhenPossible."));
       
 13661 
       
 13662         // Ensure phone is attached to the packet service (RPacketService::GetStatus returns EStatusAttached).
       
 13663     	CHECK_EQUALS_L(packetService.GetStatus(packetStatus), KErrNone, _L("RPacketService::GetStatus returned with an error"));
       
 13664     	
       
 13665     	// Wait for phone to attach to packet service if it is not attached.
       
 13666     	if (packetStatus == RPacketService::EStatusUnattached)
       
 13667     		{
       
 13668             iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange(
       
 13669     				packetService,
       
 13670     				notifyServiceStatusChStatus,
       
 13671     				packetServiceStatus, 
       
 13672     				RPacketService::EStatusAttached,
       
 13673     				KErrNone);
       
 13674             CHECK_EQUALS_L(packetService.GetStatus(packetStatus), KErrNone, _L("RPacketService::GetStatus returned with an error"));
       
 13675             CHECK_EQUALS_L(packetStatus, RPacketService::EStatusAttached, _L("RPacketService::GetStatus did not return EStatusAttached"));
       
 13676     		}
       
 13677         }
       
 13678 
       
 13679 
       
 13680 	////////////////////////////////////////////////////////////////
       
 13681 	// SET UP END
       
 13682 	////////////////////////////////////////////////////////////////
       
 13683 	
       
 13684 	StartTest();
       
 13685 	
       
 13686 	////////////////////////////////////////////////////////////////
       
 13687 	// TEST START
       
 13688 	////////////////////////////////////////////////////////////////
       
 13689 	
       
 13690 	
       
 13691 	// Get voice line 1. 
       
 13692     RLine& line = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
 13693 
       
 13694 	// Get call 1. 
       
 13695     RCall& call = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
 13696 
       
 13697 	// Dial a number with call 1. 
       
 13698 	TPtrC number;
       
 13699 	ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number) != EFalse, _L("GetStringFromConfig did not complete as expected"));
       
 13700 	TCoreEtelRequestStatus<RCall> dialStatus(call, &RCall::DialCancel);
       
 13701 	CleanupStack::PushL(dialStatus);
       
 13702     DEBUG_PRINTF1(_L("Dialling VoiceNumber1"));	
       
 13703 	call.Dial(dialStatus, number); 
       
 13704 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeLong), KErrNone, _L("RCall::Dial timed-out"));
       
 13705 
       
 13706 	// Verify KErrGsmOfflineOpNotAllowed returned. 
       
 13707 	ASSERT_EQUALS(dialStatus.Int(), KErrGsmOfflineOpNotAllowed, _L("RCall::Dial did not return KErrGsmOfflineOpNotAllowed as expected."));
       
 13708         	
       
 13709 	// Get data line 1.
       
 13710     RLine& dataLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KDataLine);
       
 13711 
       
 13712 	// Get call 1 with data line 1.
       
 13713 	call = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KDataLine, KCall1);
       
 13714 
       
 13715 	// Dial a number with call 1. 
       
 13716 	DEBUG_PRINTF1(_L("Dialling VoiceNumber1"));
       
 13717 	call.Dial(dialStatus, number); 
       
 13718 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeLong), KErrNone, _L("RCall::Dial timed-out"));
       
 13719 
       
 13720 	// Verify KErrGsmOfflineOpNotAllowed returned. 
       
 13721 	ASSERT_EQUALS(dialStatus.Int(), KErrGsmOfflineOpNotAllowed, _L("RCall::Dial did not return KErrGsmOfflineOpNotAllowed as expected."));
       
 13722     
       
 13723 	
       
 13724 	////////////////////////////////////////////////////////////////
       
 13725 	// TEST END
       
 13726 	////////////////////////////////////////////////////////////////
       
 13727 
       
 13728     StartCleanup();
       
 13729     
       
 13730 	// Pop
       
 13731 	// setMSClassStatus
       
 13732 	// setPreferredBearerStatus
       
 13733 	// notifyServiceStatusChStatus
       
 13734 	// dialStatus
       
 13735 	CleanupStack::Pop(4, &setMSClassStatus);
       
 13736 
       
 13737 	
       
 13738 	return TestStepResult();
       
 13739 	}
       
 13740 
       
 13741 TPtrC CCTSYIntegrationTestCallControl0042::GetTestStepName()
       
 13742 /**
       
 13743  * @return The test step name.
       
 13744  */
       
 13745 	{
       
 13746 	return  _L("CCTSYIntegrationTestCallControl0042");
       
 13747 	}
       
 13748 
       
 13749 
       
 13750 
       
 13751 CCTSYIntegrationTestCallControl0043::CCTSYIntegrationTestCallControl0043(CEtelSessionMgr& aEtelSessionMgr)
       
 13752 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 13753 /**
       
 13754  * Constructor.
       
 13755  */
       
 13756 	{
       
 13757 	SetTestStepName(CCTSYIntegrationTestCallControl0043::GetTestStepName());
       
 13758 	}
       
 13759 
       
 13760 CCTSYIntegrationTestCallControl0043::~CCTSYIntegrationTestCallControl0043()
       
 13761 /**
       
 13762  * Destructor.
       
 13763  */
       
 13764 	{
       
 13765 	}
       
 13766 
       
 13767 TVerdict CCTSYIntegrationTestCallControl0043::doTestStepL()
       
 13768 /**
       
 13769  * @SYMTestCaseID BA-CTSY-INT-CCON-0043
       
 13770  * @SYMFssID BA/CTSY/CCON-0043
       
 13771  * @SYMTestCaseDesc Ensure that when in class C operation (PSD only), an incoming call does not trigger a NotifyIncomingCall request.
       
 13772  * @SYMTestPriority High
       
 13773  * @SYMTestActions 
       
 13774  * @SYMTestExpectedResults Pass - Notify incoming call request does not complete.
       
 13775  * @SYMTestType CIT
       
 13776  * @SYMTestCaseDependencies live/automatic
       
 13777  *
       
 13778  * Reason for test: Verify incoming call notification remains pending.
       
 13779  *
       
 13780  * @return - TVerdict code
       
 13781  */
       
 13782 	{
       
 13783 
       
 13784 	////////////////////////////////////////////////////////////////
       
 13785 	// SET UP
       
 13786 	////////////////////////////////////////////////////////////////
       
 13787 
       
 13788 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 13789 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 13790  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
 13791 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 13792 	
       
 13793 	// Get the packet service.  
       
 13794 
       
 13795 	// Set the MS class to EMSClassAlternateMode. 
       
 13796 
       
 13797 	// Set the preferred bearer to EBearerPacketSwitched 
       
 13798 
       
 13799 	// Ensure the packet service status is EStatusAttached. 
       
 13800 
       
 13801 
       
 13802 	////////////////////////////////////////////////////////////////
       
 13803 	// SET UP END
       
 13804 	////////////////////////////////////////////////////////////////
       
 13805 	
       
 13806 	StartTest();
       
 13807 	
       
 13808 	////////////////////////////////////////////////////////////////
       
 13809 	// TEST START
       
 13810 	////////////////////////////////////////////////////////////////
       
 13811 	
       
 13812 	
       
 13813 	// Get voice line 1. 
       
 13814 
       
 13815 	// Get call 1. 
       
 13816 
       
 13817 	// Request incoming call notification with RLine::NotifyIncomingCall 
       
 13818 
       
 13819 	// Request an incoming call from RPS. 
       
 13820 
       
 13821 	// Wait for 2 mins. 
       
 13822 
       
 13823 	// Check that RLine::NotifyIncomingCall notification is still KRequestPending.
       
 13824 
       
 13825 	
       
 13826 	////////////////////////////////////////////////////////////////
       
 13827 	// TEST END
       
 13828 	////////////////////////////////////////////////////////////////
       
 13829 
       
 13830     StartCleanup();
       
 13831 	
       
 13832 	// Put any required test clean up here, then remove this comment
       
 13833 	
       
 13834 	return TestStepResult();
       
 13835 	}
       
 13836 
       
 13837 TPtrC CCTSYIntegrationTestCallControl0043::GetTestStepName()
       
 13838 /**
       
 13839  * @return The test step name.
       
 13840  */
       
 13841 	{
       
 13842 	return  _L("CCTSYIntegrationTestCallControl0043");
       
 13843 	}
       
 13844 
       
 13845 
       
 13846 
       
 13847 CCTSYIntegrationTestCallControl0044::CCTSYIntegrationTestCallControl0044(CEtelSessionMgr& aEtelSessionMgr)
       
 13848 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 13849 /**
       
 13850  * Constructor.
       
 13851  */
       
 13852 	{
       
 13853 	SetTestStepName(CCTSYIntegrationTestCallControl0044::GetTestStepName());
       
 13854 	}
       
 13855 
       
 13856 CCTSYIntegrationTestCallControl0044::~CCTSYIntegrationTestCallControl0044()
       
 13857 /**
       
 13858  * Destructor.
       
 13859  */
       
 13860 	{
       
 13861 	}
       
 13862 
       
 13863 TVerdict CCTSYIntegrationTestCallControl0044::doTestStepL()
       
 13864 /**
       
 13865  * @SYMTestCaseID BA-CTSY-INT-CCON-0044
       
 13866  * @SYMFssID BA/CTSY/CCON-0044
       
 13867  * @SYMTestCaseDesc Cancel hang up.
       
 13868  * @SYMTestPriority High
       
 13869  * @SYMTestActions RCall::NotifyStatusChange, RCall::GetStatus, RCall::HangUp, RCall::HangUpCancel, RLine::GetStatus
       
 13870  * @SYMTestExpectedResults Pass - KErrNotSupported.
       
 13871  * @SYMTestType CIT
       
 13872  * @SYMTestCaseDependencies live/automatic
       
 13873  *
       
 13874  * Reason for test: Verify hang up request can be cancelled.
       
 13875  *
       
 13876  * @return - TVerdict code
       
 13877  */
       
 13878 	{
       
 13879 
       
 13880 	////////////////////////////////////////////////////////////////
       
 13881 	// SET UP
       
 13882 	////////////////////////////////////////////////////////////////
       
 13883 
       
 13884 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 13885 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 13886  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
 13887 	         _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 13888 
       
 13889 	// Get Voice line 1. 
       
 13890 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
 13891 
       
 13892 	// Get call 1. 
       
 13893 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
 13894 
       
 13895 	// Check phone supports KCapsVoice.
       
 13896 	RPhone::TCaps phoneCaps; 
       
 13897 	CHECK_EQUALS_L(phone.GetCaps(phoneCaps), KErrNone,_L("RMobileLine::GetCaps returned an error"));
       
 13898 	CHECK_BITS_SET_L(phoneCaps.iFlags, RPhone::KCapsVoice, KNoUnwantedBits, _L("RPhone::GetCaps returned wrong caps"));
       
 13899 
       
 13900 	////////////////////////////////////////////////////////////////
       
 13901 	// SET UP END
       
 13902 	////////////////////////////////////////////////////////////////
       
 13903 
       
 13904 	StartTest();
       
 13905 
       
 13906 	////////////////////////////////////////////////////////////////
       
 13907 	// TEST START
       
 13908 	////////////////////////////////////////////////////////////////
       
 13909 
       
 13910 	// Dial a number that answers. 
       
 13911 	TPtrC number; 
       
 13912 	ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number) != EFalse, _L("GetStringFromConfig did not complete as expected"));
       
 13913 	TCoreEtelRequestStatus<RCall> dialStatus(call1, &RCall::DialCancel);
       
 13914 	CleanupStack::PushL(dialStatus);
       
 13915 	DEBUG_PRINTF1(_L("Board Now Dialling: "));	
       
 13916 	call1.Dial(dialStatus, number); 
       
 13917 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeMedium), KErrNone, _L("RCall::Dial timed-out"));
       
 13918 	ASSERT_EQUALS(dialStatus.Int(), KErrNone, _L("RCall::Dial returned with an error"));
       
 13919 	
       
 13920 	// Hang up.
       
 13921 	TCoreEtelRequestStatus<RCall> hangUpStatus (call1, &RCall::HangUpCancel);	
       
 13922 	CleanupStack::PushL(hangUpStatus);
       
 13923 	call1.HangUp(hangUpStatus);
       
 13924 
       
 13925 	// Immediately cancel the hang up request with RCall::HangUpCancel.
       
 13926 	call1.HangUpCancel();
       
 13927 		
       
 13928 	// Check hang up is cancelled.
       
 13929 	ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 50007);
       
 13930 	ASSERT_EQUALS(WaitForRequestWithTimeOut(hangUpStatus, ETimeShort), KErrNone, _L("RCall::HangUpCancel timed-out"));
       
 13931 	ASSERT_EQUALS(hangUpStatus.Int(), KErrNotSupported, _L("RCall::HangUpCancel returned with an error"));
       
 13932 
       
 13933 	////////////////////////////////////////////////////////////////
       
 13934 	// TEST END
       
 13935 	////////////////////////////////////////////////////////////////
       
 13936 
       
 13937     StartCleanup();
       
 13938 
       
 13939     // Pop    
       
 13940    	// dialStatus
       
 13941    	// hangUpStatus
       
 13942     CleanupStack::PopAndDestroy(2, &dialStatus);
       
 13943 	
       
 13944 	return TestStepResult();
       
 13945 	}
       
 13946 
       
 13947 TPtrC CCTSYIntegrationTestCallControl0044::GetTestStepName()
       
 13948 /**
       
 13949  * @return The test step name.
       
 13950  */
       
 13951 	{
       
 13952 	return  _L("CCTSYIntegrationTestCallControl0044");
       
 13953 	}
       
 13954 
       
 13955 
       
 13956 
       
 13957 CCTSYIntegrationTestCallControl0045::CCTSYIntegrationTestCallControl0045(CEtelSessionMgr& aEtelSessionMgr)
       
 13958 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 13959 /**
       
 13960  * Constructor.
       
 13961  */
       
 13962 	{
       
 13963 	SetTestStepName(CCTSYIntegrationTestCallControl0045::GetTestStepName());
       
 13964 	}
       
 13965 
       
 13966 CCTSYIntegrationTestCallControl0045::~CCTSYIntegrationTestCallControl0045()
       
 13967 /**
       
 13968  * Destructor.
       
 13969  */
       
 13970 	{
       
 13971 	}
       
 13972 
       
 13973 TVerdict CCTSYIntegrationTestCallControl0045::doTestStepL()
       
 13974 /**
       
 13975  * @SYMTestCaseID BA-CTSY-INT-CCON-0045
       
 13976  * @SYMFssID BA/CTSY/CCON-0045
       
 13977  * @SYMTestCaseDesc Terminate all calls when there are outgoing calls.
       
 13978  * @SYMTestPriority High
       
 13979  * @SYMTestActions RLine::NotifyStatusChange, RMobileLine::NotifyMobileLineStatusChange, RMobileCall::GetMobileCallStatus, RCall::NotifyStatusChange, RMobileCall::NotifyMobileCallStatusChange, RLine::GetStatus, RMobileLine::GetMobileLineStatus, RMobilePhone::TerminateAllCalls, RCall::GetStatus
       
 13980  * @SYMTestExpectedResults Pass - KErrNotSupported.
       
 13981  * @SYMTestType CIT
       
 13982  * @SYMTestCaseDependencies live/automatic
       
 13983  *
       
 13984  * Reason for test: Verify call and line statuses.
       
 13985  *
       
 13986  * @return - TVerdict code
       
 13987  */
       
 13988 	{
       
 13989 
       
 13990 	////////////////////////////////////////////////////////////////
       
 13991 	// SET UP
       
 13992 	////////////////////////////////////////////////////////////////
       
 13993 
       
 13994 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 13995 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 13996  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 13997 	
       
 13998 	// Check phone supports KCapsVoice.
       
 13999     RMobilePhone::TCaps lineCaps; 
       
 14000 	CHECK_EQUALS_L(phone.GetCaps(lineCaps), KErrNone, _L("RMobilePhone::GetCaps returned an error"));
       
 14001 	CHECK_BITS_SET_L(lineCaps.iFlags, RMobilePhone::KCapsVoice, KNoUnwantedBits, _L("RMobilePhone::GetCaps did not return KCapsVoice as expected"));
       
 14002 
       
 14003 	// Get Voice line 1. 
       
 14004     RMobileLine& mobileLine1 = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
 14005 
       
 14006 	// Get call 1. 
       
 14007     RMobileCall& mobileCall1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
 14008 
       
 14009 	// Get Voice line 2. 
       
 14010 	RMobileLine& mobileLine2 = iEtelSessionMgr.GetLineL(KAltServer, KMainPhone, KVoiceLine);
       
 14011 
       
 14012 	// Get call 2. 
       
 14013 	RMobileCall& mobileCall2 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall2);
       
 14014 
       
 14015     // Get phone numbers
       
 14016     TPtrC callNumber;
       
 14017 	CHECK_TRUE_L(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, callNumber) != EFalse, _L("GetStringFromConfig did not complete as expected"));
       
 14018     
       
 14019     TPtrC callNumber2;
       
 14020 	CHECK_TRUE_L(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber2, callNumber2) != EFalse, _L("GetStringFromConfig did not complete as expected"));
       
 14021 
       
 14022 	////////////////////////////////////////////////////////////////
       
 14023 	// SET UP END
       
 14024 	////////////////////////////////////////////////////////////////
       
 14025 	
       
 14026 	StartTest();
       
 14027 	
       
 14028 	////////////////////////////////////////////////////////////////
       
 14029 	// TEST START
       
 14030 	////////////////////////////////////////////////////////////////
       
 14031 	
       
 14032 	
       
 14033 	// Dial a number that answers on call 1. 
       
 14034 	TCoreEtelRequestStatus<RMobileCall> getDialStatus(mobileCall1, &RMobileCall::DialCancel);
       
 14035 	CleanupStack::PushL(getDialStatus);
       
 14036 	
       
 14037 	mobileCall1.Dial(getDialStatus, callNumber); 
       
 14038 	ASSERT_EQUALS(WaitForRequestWithTimeOut(getDialStatus, ETimeLong), KErrNone, _L("RMobileCall::Dial timed-out"));
       
 14039 	ASSERT_EQUALS(getDialStatus.Int(), KErrNone, _L("RMobileCall::Dial returned error"));
       
 14040 
       
 14041 	// Dial a number that answers on call 2. 
       
 14042 	TCoreEtelRequestStatus<RMobileCall> getDialStatus2(mobileCall2, &RMobileCall::DialCancel);
       
 14043 	CleanupStack::PushL(getDialStatus2);
       
 14044 	
       
 14045 	mobileCall2.Dial(getDialStatus2, callNumber2); 
       
 14046 	ASSERT_EQUALS(WaitForRequestWithTimeOut(getDialStatus2, ETimeLong), KErrNone, _L("RMobileCall::Dial timed-out"));
       
 14047 	ASSERT_EQUALS(getDialStatus2.Int(), KErrNone, _L("RMobileCall::Dial returned error"));
       
 14048 
       
 14049     // Post notifiers line
       
 14050     RMobileCall::TMobileCallStatus mobileLineStatus;
       
 14051 	TExtEtelRequestStatus notifyMobileLineChangeStatus(mobileLine1, EMobileLineNotifyMobileLineStatusChange);
       
 14052 	CleanupStack::PushL(notifyMobileLineChangeStatus);
       
 14053 	mobileLine1.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
 14054 
       
 14055 	RCall::TStatus lineStatus;
       
 14056 	TCoreEtelRequestStatus<RLine> notifyLineChangeStatus(mobileLine1, &RLine::NotifyStatusChangeCancel);
       
 14057     CleanupStack::PushL(notifyLineChangeStatus);
       
 14058 	mobileLine1.NotifyStatusChange(notifyLineChangeStatus, lineStatus);
       
 14059 
       
 14060 	RMobileCall::TMobileCallStatus mobileLineStatus2;
       
 14061 	TExtEtelRequestStatus notifyMobileLineChangeStatus2(mobileLine2, EMobileLineNotifyMobileLineStatusChange);
       
 14062 	CleanupStack::PushL(notifyMobileLineChangeStatus2);
       
 14063 	mobileLine2.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus2, mobileLineStatus2);	
       
 14064 
       
 14065 	RCall::TStatus lineStatus2;
       
 14066 	TCoreEtelRequestStatus<RLine> notifyLineChangeStatus2(mobileLine2, &RLine::NotifyStatusChangeCancel);
       
 14067     CleanupStack::PushL(notifyLineChangeStatus2);
       
 14068 	mobileLine2.NotifyStatusChange(notifyLineChangeStatus2, lineStatus2);	
       
 14069 
       
 14070 	// Post notifiers call
       
 14071     RMobileCall::TMobileCallStatus mobileCallStatus;
       
 14072     TExtEtelRequestStatus notifyMobileCallChangeStatus(mobileCall1, EMobileCallNotifyMobileCallStatusChange);
       
 14073     CleanupStack::PushL(notifyMobileCallChangeStatus);
       
 14074     mobileCall1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
 14075 
       
 14076     RCall::TStatus callStatus;
       
 14077     TCoreEtelRequestStatus<RCall> notifyCallChangeStatus(mobileCall1, &RCall::NotifyStatusChangeCancel);
       
 14078     CleanupStack::PushL(notifyCallChangeStatus);
       
 14079 	mobileCall1.NotifyStatusChange(notifyCallChangeStatus, callStatus);
       
 14080     
       
 14081     RMobileCall::TMobileCallStatus mobileCallStatus2;
       
 14082     TExtEtelRequestStatus notifyMobileCallChangeStatus2(mobileCall2, EMobileCallNotifyMobileCallStatusChange);
       
 14083     CleanupStack::PushL(notifyMobileCallChangeStatus2);
       
 14084     mobileCall2.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus2, mobileCallStatus2);	
       
 14085 
       
 14086     RCall::TStatus callStatus2;
       
 14087     TCoreEtelRequestStatus<RCall> notifyCallChangeStatus2(mobileCall2, &RCall::NotifyStatusChangeCancel);
       
 14088     CleanupStack::PushL(notifyCallChangeStatus2);
       
 14089     mobileCall2.NotifyStatusChange(notifyCallChangeStatus2, callStatus2);
       
 14090 
       
 14091 	// Terminate all calls with RMobilePhone::TerminateAllCalls 
       
 14092 	ERR_PRINTF1(_L("<font color=Orange>$CTSYProblem: RMobilePhone::TerminateAllCalls is not supported by CTSY, checked for KErrNotSupported instead of KErrNone.</font>"));
       
 14093 	TExtEtelRequestStatus getTerminateAllCallsStatus(phone, EMobilePhoneTerminateAllCallsCancel);
       
 14094     CleanupStack::PushL(getTerminateAllCallsStatus);
       
 14095 	phone.TerminateAllCalls(getTerminateAllCallsStatus);
       
 14096     ASSERT_EQUALS(WaitForRequestWithTimeOut(getTerminateAllCallsStatus, ETimeLong), KErrNone, _L("RMobilePhone::TerminateAllCalls timed-out"));
       
 14097     ASSERT_EQUALS(getTerminateAllCallsStatus.Int(), KErrNotSupported, _L("RMobileCall::TerminateAllCalls returned with an error"));
       
 14098 
       
 14099 	// ===  Check line status for calls 1 and 2 ===
       
 14100 
       
 14101 	// Check RLine::NotifyStatusChange for call 1 completes with EStatusHangingUp -> EStatusIdle
       
 14102 
       
 14103 	// Check RLine::GetStatus for call 1 returns EStatusIdle
       
 14104 
       
 14105 	// Check RMobileLine::NotifyMobileLineStatusChange for call 1 completes with EStatusDisconnecting -> EStatusIdle
       
 14106 
       
 14107 	// Check RMobileLine::GetMobileLineStatus for call 1 returns EStatusIdle
       
 14108 
       
 14109 	// Check RLine::NotifyStatusChange for call 2 completes with EStatusHangingUp -> EStatusIdle
       
 14110 
       
 14111 	// Check RLine::GetStatus for call 2 returns EStatusIdle
       
 14112 
       
 14113 	// Check RMobileLine::NotifyMobileLineStatusChange for call 2 completes with EStatusDisconnecting -> EStatusIdle
       
 14114 
       
 14115 	// Check RMobileLine::GetMobileLineStatus for call 2 returns EStatusIdle
       
 14116 
       
 14117 	// ===  Check call status for calls 1 and 2 ===
       
 14118 
       
 14119 	// Check RCall::NotifyStatusChange for call 1 completes with EStatusHangingUp -> EStatusIdle.
       
 14120 
       
 14121 	// Check RCall::GetStatus for call 1 returns EStatusIdle.
       
 14122 
       
 14123 	// Check RMobileCall::NotifyMobileCallStatusChange for call 1 completes with EStatusDisconnecting -> EStatusIdle.
       
 14124 
       
 14125 	// Check RMobileCall::GetMobileCallStatus for call 1 returns status of EStatusIdle.
       
 14126 
       
 14127 	// Check RCall::NotifyStatusChange for call 2 completes with EStatusHangingUp -> EStatusIdle.
       
 14128 
       
 14129 	// Check RCall::GetStatus for call 2 returns EStatusIdle.
       
 14130 
       
 14131 	// Check RMobileCall::NotifyMobileCallStatusChange for call 2 completes with EStatusDisconnecting -> EStatusIdle.
       
 14132 
       
 14133 	// Check RMobileCall::GetMobileCallStatus for call 2 returns status of EStatusIdle.
       
 14134 
       
 14135 
       
 14136 	////////////////////////////////////////////////////////////////
       
 14137 	// TEST END
       
 14138 	////////////////////////////////////////////////////////////////
       
 14139 
       
 14140     StartCleanup();
       
 14141 	
       
 14142 	// Hangup calls
       
 14143 	mobileCall2.HangUp();
       
 14144 	mobileCall1.HangUp();
       
 14145 	
       
 14146 	// Pop
       
 14147 	// getDialStatus
       
 14148 	// getDialStatus2
       
 14149 	// notifyMobileLineChangeStatus
       
 14150 	// notifyLineChangeStatus
       
 14151 	// notifyMobileLineChangeStatus2
       
 14152 	// notifyLineChangeStatus2
       
 14153 	// notifyMobileCallChangeStatus
       
 14154 	// notifyCallChangeStatus
       
 14155 	// notifyMobileCallChangeStatus2
       
 14156 	// notifyCallChangeStatus2
       
 14157 	// getTerminateAllCallsStatus
       
 14158 	CleanupStack::Pop(11, &getDialStatus);
       
 14159 	
       
 14160 	return TestStepResult();
       
 14161 	}
       
 14162 
       
 14163 TPtrC CCTSYIntegrationTestCallControl0045::GetTestStepName()
       
 14164 /**
       
 14165  * @return The test step name.
       
 14166  */
       
 14167 	{
       
 14168 	return  _L("CCTSYIntegrationTestCallControl0045");
       
 14169 	}
       
 14170 
       
 14171 
       
 14172 
       
 14173 CCTSYIntegrationTestCallControl0046::CCTSYIntegrationTestCallControl0046(CEtelSessionMgr& aEtelSessionMgr)
       
 14174 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 14175 /**
       
 14176  * Constructor.
       
 14177  */
       
 14178 	{
       
 14179 	SetTestStepName(CCTSYIntegrationTestCallControl0046::GetTestStepName());
       
 14180 	}
       
 14181 
       
 14182 CCTSYIntegrationTestCallControl0046::~CCTSYIntegrationTestCallControl0046()
       
 14183 /**
       
 14184  * Destructor.
       
 14185  */
       
 14186 	{
       
 14187 	}
       
 14188 
       
 14189 TVerdict CCTSYIntegrationTestCallControl0046::doTestStepL()
       
 14190 /**
       
 14191  * @SYMTestCaseID BA-CTSY-INT-CCON-0046
       
 14192  * @SYMFssID BA/CTSY/CCON-0046
       
 14193  * @SYMTestCaseDesc Terminate all calls where there are incoming calls.
       
 14194  * @SYMTestPriority High
       
 14195  * @SYMTestActions RCall::AnswerIncomingCall, RMobileCall::Hold, RLine::NotifyStatusChange, RMobileLine::NotifyMobileLineStatusChange, RMobileCall::GetMobileCallStatus, RCall::NotifyStatusChange, RMobileCall::NotifyMobileCallStatusChange, RLine::GetStatus, RMobileLine::GetMobileLineStatus, RMobilePhone::TerminateAllCalls, RCall::GetStatus
       
 14196  * @SYMTestExpectedResults Pass - Calls terminated.
       
 14197  * @SYMTestType CIT
       
 14198  * @SYMTestCaseDependencies live/automatic
       
 14199  *
       
 14200  * Reason for test: Verify call and line statuses.
       
 14201  *
       
 14202  * @return - TVerdict code
       
 14203  */
       
 14204 	{
       
 14205 
       
 14206 	////////////////////////////////////////////////////////////////
       
 14207 	// SET UP
       
 14208 	////////////////////////////////////////////////////////////////
       
 14209 
       
 14210 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 14211 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 14212  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
 14213 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 14214 
       
 14215 	// Check phone supports KCapsVoice.
       
 14216 	RMobilePhone::TCaps lineCaps; 
       
 14217 	CHECK_EQUALS_L(phone.GetCaps(lineCaps), KErrNone, _L("RMobilePhone::GetCaps returned an error"));
       
 14218 	CHECK_BITS_SET_L(lineCaps.iFlags, RMobilePhone::KCapsVoice, KNoUnwantedBits, _L("RMobilePhone::GetCaps did not return KCapsVoice as expected"));
       
 14219 
       
 14220 	// Get Voice line 1. 
       
 14221 	RMobileLine& mobileLine1 = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
 14222 
       
 14223 	// Get call 1. 
       
 14224 	RMobileCall& mobileCall1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
 14225 
       
 14226 	// Get Voice line 2. 
       
 14227 	RMobileLine& mobileLine2 = iEtelSessionMgr.GetLineL(KAltServer, KMainPhone, KVoiceLine);
       
 14228 
       
 14229 	// Get call 2. 
       
 14230 	RMobileCall& mobileCall2 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall2);
       
 14231 
       
 14232 
       
 14233 	////////////////////////////////////////////////////////////////
       
 14234 	// SET UP END
       
 14235 	////////////////////////////////////////////////////////////////
       
 14236 	
       
 14237 	StartTest();
       
 14238 	
       
 14239 	////////////////////////////////////////////////////////////////
       
 14240 	// TEST START
       
 14241 	////////////////////////////////////////////////////////////////
       
 14242 
       
 14243 	// Post notification RCall::NotifyIncomingCall for Line1
       
 14244 	TCoreEtelRequestStatus<RLine> notifyIncomingCallStatus(mobileLine1, &RLine::NotifyIncomingCallCancel);
       
 14245 	CleanupStack::PushL(notifyIncomingCallStatus);
       
 14246 	TName name;
       
 14247 	mobileLine1.NotifyIncomingCall(notifyIncomingCallStatus, name);	
       
 14248 	
       
 14249 	// Request incoming call from RPS. 
       
 14250 	ASSERT_EQUALS(RPSRequestIncomingCallL(EVoiceLine), KErrNone, _L("CCTSYIntegrationTestSuiteStepBase::RPSRequestIncomingCallL returned an error"));
       
 14251 	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyIncomingCallStatus,ETimeMedium),KErrNone, 
       
 14252 		_L("RLine::NotifyIncomingCall did not complete without error"));
       
 14253 	ASSERT_EQUALS(notifyIncomingCallStatus.Int(), KErrNone,  
       
 14254 		_L("RLine::NotifyIncomingCall set requestStatus to an error"));
       
 14255 	
       
 14256 	// Get the incoming call
       
 14257 	TCallId incomingCallId;
       
 14258 	mobileCall1 = iEtelSessionMgr.GetIncomingCallL(KMainServer, KMainPhone, KVoiceLine, name, incomingCallId);
       
 14259 
       
 14260 	// Answer call on call 1. 
       
 14261 	TCoreEtelRequestStatus<RMobileCall> answerIncomingMCallStatus1(mobileCall1, &RMobileCall::AnswerIncomingCallCancel);
       
 14262 	CleanupStack::PushL(answerIncomingMCallStatus1);
       
 14263     mobileCall1.AnswerIncomingCall(answerIncomingMCallStatus1);
       
 14264 	ASSERT_EQUALS(WaitForRequestWithTimeOut(answerIncomingMCallStatus1, ETimeMedium), KErrNone, _L("RMobileCall::AnswerIncomingCall timed-out"))
       
 14265 	ASSERT_EQUALS(answerIncomingMCallStatus1.Int(), KErrNone, _L("RMobileCall::AnswerIncomingCall returned with an error"))
       
 14266 
       
 14267 	// Hold call 1. 
       
 14268 	TExtEtelRequestStatus getHoldStatus(mobileCall1, EMobileCallHold);
       
 14269 	CleanupStack::PushL(getHoldStatus);
       
 14270 	mobileCall1.Hold(getHoldStatus);
       
 14271 	ASSERT_EQUALS(WaitForRequestWithTimeOut(getHoldStatus, ETimeMedium), KErrNone, _L("RMobileCall::Hold timed-out"));
       
 14272 	ASSERT_EQUALS(getHoldStatus.Int(), KErrNone, _L("RMobileCall::Hold returned with error"));
       
 14273 
       
 14274 	// Post notification RCall::NotifyIncomingCall for Line2
       
 14275 	TCoreEtelRequestStatus<RLine> notifyIncomingCallStatus2(mobileLine2, &RLine::NotifyIncomingCallCancel);
       
 14276 	CleanupStack::PushL(notifyIncomingCallStatus2);
       
 14277 	TName name2;
       
 14278 	mobileLine2.NotifyIncomingCall(notifyIncomingCallStatus2, name2);	
       
 14279 	
       
 14280 	// Request another incoming call from RPS. 
       
 14281 	ASSERT_EQUALS(RPSRequestIncomingCallL(EVoiceLine), KErrNone, _L("CCTSYIntegrationTestSuiteStepBase::RPSRequestIncomingCallL returned an error"));
       
 14282 
       
 14283 	// Tester should have "Call waiting" activated on SIM. Otherwise will fail.
       
 14284 	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyIncomingCallStatus2,ETimeLong),KErrNone, _L("RLine::NotifyIncomingCall did not complete without error"));
       
 14285 	ASSERT_EQUALS(notifyIncomingCallStatus2.Int(), KErrNone,  _L("RLine::NotifyIncomingCall set requestStatus to an error"));
       
 14286 	
       
 14287 	// Get the incoming call
       
 14288 	TCallId incomingCallId2;
       
 14289 	mobileCall2 = iEtelSessionMgr.GetIncomingCallL(KMainServer, KMainPhone, KVoiceLine, name2, incomingCallId2);
       
 14290 
       
 14291 	// Answer call on call 2. 
       
 14292 	TCoreEtelRequestStatus<RMobileCall> answerIncomingMCallStatus2(mobileCall2, &RMobileCall::AnswerIncomingCallCancel);
       
 14293 	CleanupStack::PushL(answerIncomingMCallStatus2);
       
 14294     mobileCall2.AnswerIncomingCall(answerIncomingMCallStatus2);
       
 14295 	ASSERT_EQUALS(WaitForRequestWithTimeOut(answerIncomingMCallStatus2, ETimeMedium), KErrNone, _L("RMobileCall::AnswerIncomingCall timed-out"))
       
 14296 	ASSERT_EQUALS(answerIncomingMCallStatus2.Int(), KErrNone, _L("RMobileCall::AnswerIncomingCall returned with an error"))
       
 14297 
       
 14298     // Post notifiers line
       
 14299     RMobileCall::TMobileCallStatus mobileLineStatus;
       
 14300 	TExtEtelRequestStatus notifyMobileLineChangeStatus(mobileLine1, EMobileLineNotifyMobileLineStatusChange);
       
 14301 	CleanupStack::PushL(notifyMobileLineChangeStatus);
       
 14302 	mobileLine1.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
 14303 
       
 14304 	RCall::TStatus lineStatus;
       
 14305 	TCoreEtelRequestStatus<RLine> notifyLineChangeStatus(mobileLine1, &RLine::NotifyStatusChangeCancel);
       
 14306     CleanupStack::PushL(notifyLineChangeStatus);
       
 14307 	mobileLine1.NotifyStatusChange(notifyLineChangeStatus, lineStatus);
       
 14308 
       
 14309 	RMobileCall::TMobileCallStatus mobileLineStatus2;
       
 14310 	TExtEtelRequestStatus notifyMobileLineChangeStatus2(mobileLine2, EMobileLineNotifyMobileLineStatusChange);
       
 14311 	CleanupStack::PushL(notifyMobileLineChangeStatus2);
       
 14312 	mobileLine2.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus2, mobileLineStatus2);	
       
 14313 
       
 14314 	RCall::TStatus lineStatus2;
       
 14315 	TCoreEtelRequestStatus<RLine> notifyLineChangeStatus2(mobileLine2, &RLine::NotifyStatusChangeCancel);
       
 14316     CleanupStack::PushL(notifyLineChangeStatus2);
       
 14317 	mobileLine2.NotifyStatusChange(notifyLineChangeStatus2, lineStatus2);	
       
 14318 
       
 14319 	// Post notifiers call
       
 14320     RMobileCall::TMobileCallStatus mobileCallStatus;
       
 14321     TExtEtelRequestStatus notifyMobileCallChangeStatus(mobileCall1, EMobileCallNotifyMobileCallStatusChange);
       
 14322     CleanupStack::PushL(notifyMobileCallChangeStatus);
       
 14323     mobileCall1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
 14324 
       
 14325     RCall::TStatus callStatus;
       
 14326     TCoreEtelRequestStatus<RCall> notifyCallChangeStatus(mobileCall1, &RCall::NotifyStatusChangeCancel);
       
 14327     CleanupStack::PushL(notifyCallChangeStatus);
       
 14328 	mobileCall1.NotifyStatusChange(notifyCallChangeStatus, callStatus);
       
 14329     
       
 14330     RMobileCall::TMobileCallStatus mobileCallStatus2;
       
 14331     TExtEtelRequestStatus notifyMobileCallChangeStatus2(mobileCall2, EMobileCallNotifyMobileCallStatusChange);
       
 14332     CleanupStack::PushL(notifyMobileCallChangeStatus2);
       
 14333     mobileCall2.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus2, mobileCallStatus2);	
       
 14334 
       
 14335     RCall::TStatus callStatus2;
       
 14336     TCoreEtelRequestStatus<RCall> notifyCallChangeStatus2(mobileCall2, &RCall::NotifyStatusChangeCancel);
       
 14337     CleanupStack::PushL(notifyCallChangeStatus2);
       
 14338     mobileCall2.NotifyStatusChange(notifyCallChangeStatus2, callStatus2);
       
 14339 
       
 14340 	// Terminate all calls with RMobilePhone::TerminateAllCalls 
       
 14341 	TExtEtelRequestStatus getTerminateAllCallsStatus(phone, EMobilePhoneTerminateAllCallsCancel);
       
 14342     CleanupStack::PushL(getTerminateAllCallsStatus);
       
 14343 	phone.TerminateAllCalls(getTerminateAllCallsStatus);
       
 14344 
       
 14345 	// CTSYProblem CTSY is not supporting EMobilePhoneTerminateAllCalls IPC and test returns -5(KErrNotsuppported)
       
 14346 	// Rest of test is not tested before EMobilePhoneTerminateAllCalls IPC support is added
       
 14347     ASSERT_EQUALS(WaitForRequestWithTimeOut(getTerminateAllCallsStatus, ETimeLong), KErrNone, _L("RMobilePhone::TerminateAllCalls timed-out"));
       
 14348     ASSERT_EQUALS(getTerminateAllCallsStatus.Int(), KErrNone, _L("RMobileCall::TerminateAllCalls returned with an error"))
       
 14349 
       
 14350 	// ===  Check line status for calls 1 and 2 ===
       
 14351 
       
 14352 	// Check RLine::NotifyStatusChange for call 1 completes with EStatusHangingUp -> EStatusIdle
       
 14353 	const TInt expectedStatus = KErrNone;
       
 14354 	RCall::TStatus expectedCallStatus = RCall::EStatusHangingUp;
       
 14355 	iCallControlTestHelper.WaitForLineNotifyStatusChange(mobileLine1, notifyLineChangeStatus, lineStatus, expectedCallStatus, expectedStatus);
       
 14356 	expectedCallStatus = RCall::EStatusIdle;
       
 14357 	mobileLine1.NotifyStatusChange(notifyLineChangeStatus, lineStatus);	
       
 14358 	iCallControlTestHelper.WaitForLineNotifyStatusChange(mobileLine1, notifyLineChangeStatus, lineStatus, expectedCallStatus, expectedStatus);
       
 14359 
       
 14360 	// Check RLine::GetStatus for call 1 returns EStatusIdle
       
 14361 	ASSERT_EQUALS(mobileLine1.GetStatus(lineStatus), KErrNone, _L("RLine::GetStatus returned an error"));
       
 14362 	ASSERT_EQUALS(lineStatus, RCall::EStatusIdle, _L("RLine::GetStatus did not EStatusIdle return as expected"));
       
 14363 
       
 14364 	// Check RMobileLine::NotifyMobileLineStatusChange for call 1 completes with EStatusDisconnecting -> EStatusIdle
       
 14365 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusDisconnecting;
       
 14366 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(mobileLine1, notifyMobileLineChangeStatus, mobileLineStatus, expectedMobileCallStatus, expectedStatus);
       
 14367 	expectedMobileCallStatus = RMobileCall::EStatusIdle;	
       
 14368 	mobileLine1.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
 14369 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(mobileLine1, notifyMobileLineChangeStatus, mobileLineStatus, expectedMobileCallStatus, expectedStatus);
       
 14370 
       
 14371 	// Check RMobileLine::GetMobileLineStatus for call 1 returns EStatusIdle
       
 14372 	ASSERT_EQUALS(mobileLine1.GetStatus(lineStatus), KErrNone, _L("RMobileLine::GetStatus returned an error"));
       
 14373 	ASSERT_EQUALS(lineStatus, RCall::EStatusIdle, _L("RMobileLine::GetStatus did not return EStatusIdle as expected"));
       
 14374 
       
 14375 	// Check RLine::NotifyStatusChange for call 2 completes with EStatusHangingUp -> EStatusIdle
       
 14376 	RCall::TStatus expectedCallStatus2 = RCall::EStatusHangingUp;
       
 14377 	iCallControlTestHelper.WaitForLineNotifyStatusChange(mobileLine2, notifyLineChangeStatus2, lineStatus2, expectedCallStatus2, expectedStatus);
       
 14378 	expectedCallStatus2 = RCall::EStatusIdle;	
       
 14379 	mobileLine2.NotifyStatusChange(notifyLineChangeStatus2, lineStatus2);	
       
 14380 	iCallControlTestHelper.WaitForLineNotifyStatusChange(mobileLine2, notifyLineChangeStatus2, lineStatus2, expectedCallStatus2, expectedStatus);
       
 14381 
       
 14382 	// Check RLine::GetStatus for call 2 returns EStatusIdle
       
 14383 	ASSERT_EQUALS(mobileLine2.GetStatus(lineStatus2), KErrNone, _L("RLine::GetStatus returned an error"));
       
 14384 	ASSERT_EQUALS(lineStatus2, RCall::EStatusIdle, _L("RLine::GetStatus did not EStatusIdle return as expected"));
       
 14385 
       
 14386 	// Check RMobileLine::NotifyMobileLineStatusChange for call 2 completes with EStatusDisconnecting -> EStatusIdle
       
 14387 	RMobileCall::TMobileCallStatus expectedMobileCallStatus2 = RMobileCall::EStatusDisconnecting;
       
 14388 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(mobileLine2, notifyMobileLineChangeStatus2, mobileLineStatus2, expectedMobileCallStatus2, expectedStatus);
       
 14389 	expectedMobileCallStatus2 = RMobileCall::EStatusIdle;	
       
 14390 	mobileLine2.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus2, mobileLineStatus2);	
       
 14391 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(mobileLine2, notifyMobileLineChangeStatus2, mobileLineStatus2, expectedMobileCallStatus2, expectedStatus);
       
 14392 
       
 14393 	// Check RMobileLine::GetMobileLineStatus for call 2 returns EStatusIdle
       
 14394 	ASSERT_EQUALS(mobileLine2.GetStatus(lineStatus2), KErrNone, _L("RMobileLine::GetStatus returned an error"));
       
 14395 	ASSERT_EQUALS(lineStatus2, RCall::EStatusIdle, _L("RMobileLine::GetStatus did not return EStatusIdle as expected"));
       
 14396 
       
 14397 	// ===  Check call status for calls 1 and 2 ===
       
 14398 
       
 14399 	// Check RCall::NotifyStatusChange for call 1 completes with EStatusHangingUp -> EStatusIdle.
       
 14400 	RCall::TStatus expectedCallStatus3 = RCall::EStatusHangingUp;
       
 14401 	iCallControlTestHelper.WaitForCallNotifyStatusChange(mobileCall1, notifyCallChangeStatus, callStatus, expectedCallStatus3, expectedStatus);
       
 14402 	expectedCallStatus3 = RCall::EStatusIdle;	
       
 14403 	mobileCall1.NotifyStatusChange(notifyCallChangeStatus, callStatus);
       
 14404 	iCallControlTestHelper.WaitForCallNotifyStatusChange(mobileCall1, notifyCallChangeStatus, callStatus, expectedCallStatus3, expectedStatus);
       
 14405 
       
 14406 	// Check RCall::GetStatus for call 1 returns EStatusIdle.
       
 14407 	ASSERT_EQUALS(mobileCall1.GetStatus(callStatus), KErrNone, _L("RCall::GetStatus returned an error"));
       
 14408 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle, _L("RCall::GetStatus did not EStatusIdle return as expected"));
       
 14409 
       
 14410 	// Check RMobileCall::NotifyMobileCallStatusChange for call 1 completes with EStatusDisconnecting -> EStatusIdle.
       
 14411 	RMobileCall::TMobileCallStatus expectedMobileCallStatus3 = RMobileCall::EStatusDisconnecting;
       
 14412 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(mobileCall1, notifyMobileCallChangeStatus, mobileCallStatus, expectedMobileCallStatus3, expectedStatus);
       
 14413 	expectedMobileCallStatus3 = RMobileCall::EStatusIdle;
       
 14414 	mobileCall1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
 14415 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(mobileCall1, notifyMobileCallChangeStatus, mobileCallStatus, expectedMobileCallStatus3, expectedStatus);
       
 14416 
       
 14417 	// Check RMobileCall::GetMobileCallStatus for call 1 returns status of EStatusIdle.
       
 14418     ASSERT_EQUALS(mobileCall1.GetStatus(callStatus), KErrNone, _L("RMobileCall::GetStatus returned an error"));
       
 14419 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle, _L("RMobileCall::GetStatus did not return EStatusIdle as expected"));
       
 14420 
       
 14421 	// Check RCall::NotifyStatusChange for call 2 completes with EStatusHangingUp -> EStatusIdle.
       
 14422 	RCall::TStatus expectedCallStatus4 = RCall::EStatusHangingUp;
       
 14423 	iCallControlTestHelper.WaitForCallNotifyStatusChange(mobileCall2, notifyCallChangeStatus2, callStatus2, expectedCallStatus4, expectedStatus);
       
 14424 	expectedCallStatus4 = RCall::EStatusIdle;	
       
 14425 	mobileCall2.NotifyStatusChange(notifyCallChangeStatus2, callStatus2);
       
 14426 	iCallControlTestHelper.WaitForCallNotifyStatusChange(mobileCall2, notifyCallChangeStatus2, callStatus2, expectedCallStatus4, expectedStatus);
       
 14427 
       
 14428 	// Check RCall::GetStatus for call 2 returns EStatusIdle.
       
 14429 	ASSERT_EQUALS(mobileCall2.GetStatus(callStatus2), KErrNone, _L("RCall::GetStatus returned an error"));
       
 14430 	ASSERT_EQUALS(callStatus2, RCall::EStatusIdle, _L("RCall::GetStatus did not EStatusIdle return as expected"));
       
 14431 
       
 14432 	// Check RMobileCall::NotifyMobileCallStatusChange for call 2 completes with EStatusDisconnecting -> EStatusIdle.
       
 14433 	RMobileCall::TMobileCallStatus expectedMobileCallStatus4 = RMobileCall::EStatusDisconnecting;
       
 14434 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(mobileCall2, notifyMobileCallChangeStatus2, mobileCallStatus2, expectedMobileCallStatus4, expectedStatus);
       
 14435 	expectedMobileCallStatus3 = RMobileCall::EStatusIdle;
       
 14436 	mobileCall2.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus2, mobileCallStatus2);	
       
 14437 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(mobileCall2, notifyMobileCallChangeStatus2, mobileCallStatus2, expectedMobileCallStatus4, expectedStatus);
       
 14438 
       
 14439 	// Check RMobileCall::GetMobileCallStatus for call 2 returns status of EStatusIdle.
       
 14440 	ASSERT_EQUALS(mobileCall2.GetStatus(callStatus2), KErrNone, _L("RMobileCall::GetStatus returned an error"));
       
 14441 	ASSERT_EQUALS(callStatus2, RCall::EStatusIdle, _L("RMobileCall::GetStatus did not return EStatusIdle as expected"));
       
 14442 
       
 14443 	
       
 14444 	////////////////////////////////////////////////////////////////
       
 14445 	// TEST END
       
 14446 	////////////////////////////////////////////////////////////////
       
 14447 
       
 14448     StartCleanup();
       
 14449    	
       
 14450 	// Pop
       
 14451 	// notifyIncomingCallStatus
       
 14452 	// answerIncomingMCallStatus1
       
 14453 	// getHoldStatus
       
 14454 	// notifyIncomingCallStatus2
       
 14455 	// answerIncomingMCallStatus2
       
 14456 	// notifyMobileLineChangeStatus
       
 14457 	// notifyLineChangeStatus
       
 14458 	// notifyMobileLineChangeStatus2
       
 14459 	// notifyLineChangeStatus2
       
 14460 	// notifyMobileCallChangeStatus
       
 14461 	// notifyCallChangeStatus
       
 14462     // notifyMobileCallChangeStatus2
       
 14463 	// notifyCallChangeStatus2
       
 14464 	// getTerminateAllCallsStatus
       
 14465 	CleanupStack::PopAndDestroy(14, &notifyIncomingCallStatus);
       
 14466 	
       
 14467 	return TestStepResult();
       
 14468 	}
       
 14469 
       
 14470 TPtrC CCTSYIntegrationTestCallControl0046::GetTestStepName()
       
 14471 /**
       
 14472  * @return The test step name.
       
 14473  */
       
 14474 	{
       
 14475 	return  _L("CCTSYIntegrationTestCallControl0046");
       
 14476 	}
       
 14477 
       
 14478 
       
 14479 
       
 14480 CCTSYIntegrationTestCallControl0047::CCTSYIntegrationTestCallControl0047(CEtelSessionMgr& aEtelSessionMgr)
       
 14481 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 14482 /**
       
 14483  * Constructor.
       
 14484  */
       
 14485 	{
       
 14486 	SetTestStepName(CCTSYIntegrationTestCallControl0047::GetTestStepName());
       
 14487 	}
       
 14488 
       
 14489 CCTSYIntegrationTestCallControl0047::~CCTSYIntegrationTestCallControl0047()
       
 14490 /**
       
 14491  * Destructor.
       
 14492  */
       
 14493 	{
       
 14494 	}
       
 14495 
       
 14496 TVerdict CCTSYIntegrationTestCallControl0047::doTestStepL()
       
 14497 /**
       
 14498  * @SYMTestCaseID BA-CTSY-INT-CCON-0047
       
 14499  * @SYMFssID BA/CTSY/CCON-0047
       
 14500  * @SYMTestCaseDesc Dial a call using RMobileCall::DialISV
       
 14501  * @SYMTestPriority High
       
 14502  * @SYMTestActions RLine::NotifyStatusChange,
       
 14503  *                 RMobileLine::NotifyMobileLineStatusChange,
       
 14504  *                 RLine::GetCallInfo, RLine::GetCaps,
       
 14505  *                 RMobileCall::DialISV, RLine::GetStatus,
       
 14506  *                 RMobileLine::GetMobileLineStatus,
       
 14507  *                 RLine::GetInfo, RLine::EnumerateCall
       
 14508  * @SYMTestExpectedResults Pass - Call connects and line status,
       
 14509  *                         line caps correct.
       
 14510  * @SYMTestType CIT
       
 14511  * @SYMTestCaseDependencies live/automatic
       
 14512  *
       
 14513  * Reason for test: Verify change in line state is reflected in RLine and RMobileLine
       
 14514  *
       
 14515  * @return - TVerdict code
       
 14516  */
       
 14517 	{
       
 14518 
       
 14519 	////////////////////////////////////////////////////////////////
       
 14520 	// SET UP
       
 14521 	////////////////////////////////////////////////////////////////
       
 14522 
       
 14523 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 14524 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 14525  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
 14526 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 14527 	
       
 14528 	// Check phone supports KCapsVoice.
       
 14529 	RPhone::TCaps phoneCaps; 
       
 14530 	CHECK_EQUALS_L(phone.GetCaps(phoneCaps), KErrNone, _L("RPhone::GetCaps returned an error"));
       
 14531 	CHECK_BITS_SET_L(phoneCaps.iFlags, RPhone::KCapsVoice, KNoUnwantedBits,  _L("RPhone::GetCaps returned wrong caps"));
       
 14532 
       
 14533 	// Get Voice line 1. 
       
 14534 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
 14535 	
       
 14536 	// Get call 1. 
       
 14537 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
 14538 
       
 14539 
       
 14540 	////////////////////////////////////////////////////////////////
       
 14541 	// SET UP END
       
 14542 	////////////////////////////////////////////////////////////////
       
 14543 	
       
 14544 	StartTest();
       
 14545 	
       
 14546 	////////////////////////////////////////////////////////////////
       
 14547 	// TEST START
       
 14548 	////////////////////////////////////////////////////////////////
       
 14549 	
       
 14550 	
       
 14551 	// ===  Check line caps ===
       
 14552 
       
 14553 	// Check RLine::GetCaps supports caps in set of KCapsVoice.
       
 14554 	RLine::TCaps lineCaps; 
       
 14555 	ASSERT_EQUALS(voiceLine.GetCaps(lineCaps), KErrNone, _L("RLine::GetCaps returned an error"));
       
 14556 	ASSERT_BITS_SET(lineCaps.iFlags, RLine::KCapsVoice, KNoUnwantedBits,  _L("RLine::GetCaps returned wrong caps"));
       
 14557 
       
 14558 	// ===  Check line status ===
       
 14559 
       
 14560 	// Check RLine::GetStatus returns EStatusIdle.
       
 14561 	RCall::TStatus lineStatus; 
       
 14562 	ASSERT_EQUALS(voiceLine.GetStatus(lineStatus), KErrNone, _L("RLine::GetStatus returned an error"));
       
 14563 	ASSERT_EQUALS(lineStatus, RCall::EStatusIdle, _L("RLine::GetStatus returned wrong status"));
       
 14564 
       
 14565 	// Check RMobileLine::GetMobileLineStatus returns EStatusIdle.
       
 14566 	RMobileCall::TMobileCallStatus mobilelineStatus;
       
 14567 	ASSERT_EQUALS(voiceLine.GetMobileLineStatus(mobilelineStatus), KErrNone, 
       
 14568 			_L("RMobileLine::GetMobileLineStatus returned an error"));
       
 14569 	ASSERT_EQUALS(mobilelineStatus, RMobileCall::EStatusIdle, 
       
 14570 	        _L("RMobileLine::GetMobileLineStatus did not return EStatusIdle as expected"));
       
 14571 
       
 14572 	// ===  Check line info ===
       
 14573 
       
 14574 	// Check RLine::GetCallInfo returns valid name.
       
 14575 	RLine::TCallInfo callInfo;
       
 14576 	ASSERT_EQUALS(voiceLine.GetCallInfo( KCall1, callInfo), KErrNone, _L("RLine::GetCallInfo returned an error"));
       
 14577 	ASSERT_TRUE(callInfo.iCallName.Length() > 0, _L("RLine::GetCallInfo returned invalid iCallName"));
       
 14578 	
       
 14579 	// Check RLine::GetCallInfo returns caps in set of KCapsVoice | KCapsDial.
       
 14580 	// $CTSYProblem.  CTSY is not either completing CapsChanges or/and test suite does not get them correctly hence wrong caps are returned
       
 14581 	// Got 0xc , required 0x4c
       
 14582 	// KCapsVoice=0x00000004 and KCapsDial=0x00000008 are OK but KCapsAnswer=0x00000040 is missing.
       
 14583 	// Changed original test step to check RLine::GetCallInfo returns caps in set of KCapsVoice | KCapsDial instead of KCapsVoice | KCapsDial | KCapsAnswer.
       
 14584 	TUint expectedCallCapsFlags = RCall::KCapsVoice | RCall::KCapsDial;
       
 14585 	ASSERT_BITS_SET(callInfo.iCallCapsFlags, expectedCallCapsFlags, KNoUnwantedBits, _L("RLine::GetCallInfo returned wrong caps"));	
       
 14586 			
       
 14587 	// Check RLine::GetCallInfo returns status of EStatusIdle.
       
 14588 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusIdle, _L("RLine::GetCallInfo wrong iStatus, should be EStatusIdle"));
       
 14589 
       
 14590 	// Check RLine::GetInfo returns status of EStatusIdle.
       
 14591 	RLine::TLineInfo lineInfo;
       
 14592 	ASSERT_EQUALS(voiceLine.GetInfo(lineInfo),KErrNone, _L("RLine::GetInfo returned an error")); 
       
 14593 	ASSERT_EQUALS(lineInfo.iStatus, RCall::EStatusIdle, _L("RLine::GetInfo did not return iStatus EStatusIdle"));
       
 14594 
       
 14595 	// Post RLine::NotifyStatusChange
       
 14596 	TCoreEtelRequestStatus<RLine> notifyStatusChangeStatus(voiceLine, &RLine::NotifyStatusChangeCancel);
       
 14597 	CleanupStack::PushL(notifyStatusChangeStatus);
       
 14598 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
 14599 	
       
 14600 	// Post RLine::NotifyMobileLineStatusChange
       
 14601 	TExtEtelRequestStatus notifyMobileLineChangeStatus(voiceLine, EMobileLineNotifyMobileLineStatusChange);
       
 14602 	CleanupStack::PushL(notifyMobileLineChangeStatus);	
       
 14603 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobilelineStatus);
       
 14604 	
       
 14605 	// Dial a number that answers using RMobileCall::DialISV
       
 14606 	TPtrC number;
       
 14607 	ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number) != EFalse, _L("CTestStep::GetStringFromConfig did not complete as expected"));
       
 14608 	TExtEtelRequestStatus dialStatus(call1, EMobileCallDialISV);
       
 14609 	CleanupStack::PushL(dialStatus);	
       
 14610 	RMobileCall::TEtel3rdPartyMobileCallParamsV1 callParams;
       
 14611 	RMobileCall::TEtel3rdPartyMobileCallParamsV1Pckg callParamsPckg(callParams);
       
 14612 	DEBUG_PRINTF1(_L("Board Now Dialling... "));	
       
 14613 	call1.DialISV(dialStatus, callParamsPckg, number);
       
 14614 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeMedium), KErrNone, _L("RMobileCall::DialISV timed-out"));
       
 14615 	ASSERT_EQUALS(dialStatus.Int(), KErrNone, _L("RMobileCall::DialISV returned with an error"));
       
 14616 	
       
 14617 	// ===  Check line status ===
       
 14618 	
       
 14619 	// Check RLine::NotifyStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
 14620 	TInt wantedStatus = KErrNone;
       
 14621 	RCall::TStatus expectedLineStatus = RCall::EStatusDialling;
       
 14622 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
 14623 														 notifyStatusChangeStatus,
       
 14624 														 lineStatus,
       
 14625 														 expectedLineStatus,
       
 14626 														 wantedStatus);
       
 14627 
       
 14628     voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
 14629 	expectedLineStatus = RCall::EStatusConnecting;
       
 14630 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
 14631 														 notifyStatusChangeStatus,
       
 14632 														 lineStatus,
       
 14633 														 expectedLineStatus,
       
 14634 														 wantedStatus);
       
 14635 														 
       
 14636 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
 14637 	expectedLineStatus = RCall::EStatusConnected;
       
 14638 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
 14639 														 notifyStatusChangeStatus,
       
 14640 														 lineStatus,
       
 14641 														 expectedLineStatus,
       
 14642 														 wantedStatus);
       
 14643 
       
 14644 	// Check RLine::GetStatus returns EStatusConnected
       
 14645 	ASSERT_EQUALS(voiceLine.GetStatus(lineStatus), KErrNone, _L("RLine::GetStatus returned an error"));
       
 14646 	ASSERT_EQUALS(lineStatus, RCall::EStatusConnected, _L("RLine::GetStatus did not return EStatusConnected"));
       
 14647 
       
 14648 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
 14649 	RMobileCall::TMobileCallStatus expectedMobileLineStatus = RMobileCall::EStatusDialling;
       
 14650 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
 14651 																		notifyMobileLineChangeStatus,
       
 14652 																		mobilelineStatus,
       
 14653 																		expectedMobileLineStatus,
       
 14654 																		wantedStatus);
       
 14655 																		
       
 14656 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobilelineStatus);
       
 14657 	expectedMobileLineStatus = RMobileCall::EStatusConnecting;
       
 14658 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
 14659 																		notifyMobileLineChangeStatus,
       
 14660 																		mobilelineStatus,
       
 14661 																		expectedMobileLineStatus,
       
 14662 																		wantedStatus);
       
 14663 
       
 14664 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobilelineStatus);
       
 14665 	expectedMobileLineStatus = RMobileCall::EStatusConnected;
       
 14666 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
 14667 																		notifyMobileLineChangeStatus,
       
 14668 																		mobilelineStatus,
       
 14669 																		expectedMobileLineStatus,
       
 14670 																		wantedStatus);
       
 14671 	
       
 14672 	// Check RMobileLine::GetMobileLineStatus returns EStatusConnected
       
 14673 	ASSERT_EQUALS(voiceLine.GetMobileLineStatus(mobilelineStatus), KErrNone, 
       
 14674 			_L("RMobileLine::GetMobileLineStatus returned an error"));
       
 14675 	ASSERT_EQUALS(mobilelineStatus, RMobileCall::EStatusConnected, 
       
 14676 			_L("RMobileLine::GetMobileLineStatus did not set line status to EStatusConnected"));
       
 14677 
       
 14678 	// ===  Check line info ===
       
 14679 
       
 14680 	// Check RLine::GetCallInfo returns valid name.
       
 14681 	ASSERT_EQUALS(voiceLine.GetCallInfo( KCall1, callInfo), KErrNone, _L("RLine::GetCallInfo returned an error"));
       
 14682 	ASSERT_TRUE(callInfo.iCallName.Length()>0, _L("RLine::GetCallInfo returned invalid iCallName"));	
       
 14683 
       
 14684 	// Check RLine::GetCallInfo returns caps in set of KCapsHangUp.
       
 14685 	expectedCallCapsFlags = RCall::KCapsHangUp;
       
 14686 	ASSERT_BITS_SET(callInfo.iCallCapsFlags, expectedCallCapsFlags, KNoUnwantedBits, _L("RLine::GetCallInfo returned wrong caps"));		
       
 14687 	
       
 14688 	// Check RLine::GetCallInfo returns status of EStatusConnected.
       
 14689 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusConnected, _L("RLine::GetCallInfo returned wrong iStatus, should be EStatusConnected"));
       
 14690 
       
 14691 	// Check RLine::GetInfo returns status of EStatusConnected.
       
 14692 	ASSERT_EQUALS(voiceLine.GetInfo(lineInfo),KErrNone, _L("RLine::GetInfo returned an error")); 
       
 14693 	ASSERT_EQUALS(lineInfo.iStatus, RCall::EStatusConnected, _L("RLine::GetInfo did not return EStatusConnected"));
       
 14694 	
       
 14695 	// Check RLine::EnumerateCall returns 2.
       
 14696 	TInt numberOfCalls = 0;
       
 14697 	TInt wantedNumberOfCalls = 2;
       
 14698 	ASSERT_EQUALS(voiceLine.EnumerateCall(numberOfCalls), KErrNone, _L("RLine::EnumerateCall returned an error.")); 
       
 14699 	ASSERT_EQUALS(numberOfCalls, wantedNumberOfCalls, _L("RLine::EnumerateCall returned wrong number of calls."));
       
 14700 	
       
 14701 	// Hang up call 1 
       
 14702 	TCoreEtelRequestStatus<RCall>hangupStatus(call1, &RCall::HangUpCancel);
       
 14703 	CleanupStack::PushL(hangupStatus);
       
 14704 	call1.HangUp(hangupStatus);
       
 14705 	ASSERT_EQUALS(WaitForRequestWithTimeOut(hangupStatus, ETimeMedium), KErrNone, _L("RMobileCall::HangUp timed-out"));
       
 14706 	ASSERT_EQUALS(hangupStatus.Int(), KErrNone, _L("RMobileCall::HangUp returned error"));
       
 14707 
       
 14708 	
       
 14709 	////////////////////////////////////////////////////////////////
       
 14710 	// TEST END
       
 14711 	////////////////////////////////////////////////////////////////
       
 14712 
       
 14713     StartCleanup();
       
 14714 	
       
 14715 	// Pop
       
 14716 	// notifyStatusChangeStatus
       
 14717 	// notifyMobileLineChangeStatus
       
 14718 	// dialStatus
       
 14719 	// hangupStatus
       
 14720 	CleanupStack::PopAndDestroy(4, &notifyStatusChangeStatus);
       
 14721 	
       
 14722 	return TestStepResult();
       
 14723 	}
       
 14724 
       
 14725 TPtrC CCTSYIntegrationTestCallControl0047::GetTestStepName()
       
 14726 /**
       
 14727  * @return The test step name.
       
 14728  */
       
 14729 	{
       
 14730 	return  _L("CCTSYIntegrationTestCallControl0047");
       
 14731 	}
       
 14732 
       
 14733 
       
 14734 
       
 14735 CCTSYIntegrationTestCallControl0048::CCTSYIntegrationTestCallControl0048(CEtelSessionMgr& aEtelSessionMgr)
       
 14736 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 14737 /**
       
 14738  * Constructor.
       
 14739  */
       
 14740 	{
       
 14741 	SetTestStepName(CCTSYIntegrationTestCallControl0048::GetTestStepName());
       
 14742 	}
       
 14743 
       
 14744 CCTSYIntegrationTestCallControl0048::~CCTSYIntegrationTestCallControl0048()
       
 14745 /**
       
 14746  * Destructor.
       
 14747  */
       
 14748 	{
       
 14749 	}
       
 14750 
       
 14751 TVerdict CCTSYIntegrationTestCallControl0048::doTestStepL()
       
 14752 /**
       
 14753  * @SYMTestCaseID BA-CTSY-INT-CCON-0048
       
 14754  * @SYMFssID BA/CTSY/CCON-0048
       
 14755  * @SYMTestCaseDesc Dial a call using RMobileCall::DialISV
       
 14756  * @SYMTestPriority High
       
 14757  * @SYMTestActions RCall::GetCaps,
       
 14758  *                 RMobileCall::NotifyMobileCallCapsChange,
       
 14759  *                 RMobileCall::GetMobileCallStatus,
       
 14760  *                 RMobileCall::GetMobileCallInfo,
       
 14761  *                 RMobileCall::NotifyMobileCallStatusChange,
       
 14762  *                 RCall::NotifyStatusChange, RCall::GetInfo,
       
 14763  *                 RMobileCall::DialISV,
       
 14764  *                 RCall::NotifyCapsChange, RCall::GetStatus,
       
 14765  *                 RMobileCall::GetMobileCallCaps
       
 14766  * @SYMTestExpectedResults Pass - Call connects and call status, caps and info correct.
       
 14767  * @SYMTestType CIT
       
 14768  * @SYMTestCaseDependencies live/automatic
       
 14769  *
       
 14770  * Reason for test: Verify change in call state is reflected in RCall and RMobileCall
       
 14771  *
       
 14772  * @return - TVerdict code
       
 14773  */
       
 14774 	{
       
 14775 
       
 14776 	////////////////////////////////////////////////////////////////
       
 14777 	// SET UP
       
 14778 	////////////////////////////////////////////////////////////////
       
 14779 
       
 14780 
       
 14781 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 14782 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 14783  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
 14784 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 14785 
       
 14786 	// Check phone supports KCapsVoice.
       
 14787 	RPhone::TCaps phoneCaps; 
       
 14788 	CHECK_EQUALS_L(phone.GetCaps(phoneCaps), KErrNone, _L("RPhone::GetCaps returned an error"));
       
 14789 	CHECK_BITS_SET_L(phoneCaps.iFlags, RPhone::KCapsVoice, KNoUnwantedBits,  _L("RPhone::GetCaps returned wrong caps"));
       
 14790 
       
 14791 	// Get Voice line 1. 
       
 14792 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
 14793 
       
 14794 	// Get call 1. 
       
 14795 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
 14796 
       
 14797 
       
 14798 	////////////////////////////////////////////////////////////////
       
 14799 	// SET UP END
       
 14800 	////////////////////////////////////////////////////////////////
       
 14801 	
       
 14802 	StartTest();
       
 14803 	
       
 14804 	////////////////////////////////////////////////////////////////
       
 14805 	// TEST START
       
 14806 	////////////////////////////////////////////////////////////////
       
 14807 	
       
 14808 	
       
 14809 	// ===  Check call caps ===
       
 14810 
       
 14811 	// Check RCall::GetCaps supports KCapsDial | KCapsVoice.
       
 14812 	RCall::TCaps callCaps;
       
 14813 	TUint32 wantedCaps = RCall::KCapsDial | RCall::KCapsVoice;
       
 14814 	ASSERT_EQUALS(call1.GetCaps(callCaps), KErrNone, _L("RCall::GetCaps returned an error"));
       
 14815 	ASSERT_BITS_SET(callCaps.iFlags, wantedCaps, KNoUnwantedBits, _L("RCall::GetCaps returned wrong caps"));
       
 14816 
       
 14817 	// Check RMobileCall::GetMobileCallCaps returns iCallControlCaps in set of KCapsVoice | KCapsDial.
       
 14818 	// Check RMobileCall::GetMobileCallCaps includes iCallEventCaps in set of 0.
       
 14819 	TUint32 wantedCallControlCaps = RCall::KCapsDial | RCall::KCapsVoice;
       
 14820 	TUint32 wantedCallEventCaps = 0;
       
 14821 	RMobileCall::TMobileCallCapsV1 mobileCallCaps;
       
 14822 	RMobileCall::TMobileCallCapsV1Pckg capsPckg(mobileCallCaps);
       
 14823 	ASSERT_EQUALS(call1.GetMobileCallCaps(capsPckg), KErrNone, _L("RMobileCall::GetMobileCallCaps returned an error"));
       
 14824 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedCallControlCaps, KNoUnwantedBits, _L("RMobileCall::GetMobileCallCaps returned wrong caps"));
       
 14825 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedCallEventCaps, KNoUnwantedBits, _L("RMobileCall::GetMobileCallCaps returned wrong caps"));
       
 14826 
       
 14827 	// ===  Check call status ===
       
 14828 
       
 14829 	// Check RCall::GetStatus returns EStatusIdle.
       
 14830 	RCall::TStatus callStatus;
       
 14831 	ASSERT_EQUALS(call1.GetStatus(callStatus), KErrNone, _L("RCall::GetStatus returned an error"));
       
 14832 	ASSERT_EQUALS(callStatus, RCall::EStatusIdle, _L("RCall::GetStatus did not return EStatusIdle"));
       
 14833 	
       
 14834 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
 14835 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
 14836 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone, _L("RMobileCall::GetMobileStatus returned an error"));
       
 14837 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle, _L("RMobileCall::GetMobileStatus did not return a status EStatusIdle"));
       
 14838 
       
 14839 	// ===  Check call info ===
       
 14840 
       
 14841 	// Check RCall::GetInfo returns valid call name.
       
 14842 	// Check RCall::GetInfo returns valid voice line name.
       
 14843 	// Check RCall::GetInfo returns call status of EStatusIdle.
       
 14844 	// Check RCall::GetInfo returns call duration of 0.
       
 14845 	RCall::TCallInfo callInfo;
       
 14846 	ASSERT_EQUALS(call1.GetInfo(callInfo), KErrNone, _L("RCall::GetInfo returned an error"));
       
 14847 	ASSERT_TRUE(callInfo.iCallName.Length() > 0, _L("RCall::GetInfo returned an invalid call name"));
       
 14848 	ASSERT_TRUE(callInfo.iLineName.Length() > 0,_L("RCall::GetInfo returned an invalid  line name"));
       
 14849 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusIdle, _L("RCall::GetInfo returned wrong status, should be EStatusIdle"));
       
 14850 	ASSERT_EQUALS(callInfo.iDuration.Int(), 0, _L("RCall::GetInfo returned a duration other than 0"));
       
 14851 
       
 14852 	// Check RMobileCall::GetMobileCallInfo returns iValid with correct flags for returned parameters set.
       
 14853 	RMobileCall::TMobileCallInfoV1 mobileCallInfo;
       
 14854 	RMobileCall::TMobileCallInfoV1Pckg callInfoPckg(mobileCallInfo);
       
 14855 	ASSERT_EQUALS(call1.GetMobileCallInfo(callInfoPckg), KErrNone, _L("RMobileCall::GetMobileCallInfo returned an error"));
       
 14856 	iCallControlTestHelper.CheckForValidCallInfo(mobileCallInfo, KErrNone, EFalse);
       
 14857 
       
 14858 	// Check RMobileCall::GetMobileCallInfo returns valid call name.
       
 14859 	ASSERT_TRUE(mobileCallInfo.iCallName.Length() > 0, _L("RMobileCall::GetMobileCallInfo returned an invalid call name"));
       
 14860 	
       
 14861 	// Check RMobileCall::GetMobileCallInfo returns valid line name.
       
 14862 	ASSERT_TRUE(mobileCallInfo.iLineName.Length() > 0, _L("RMobileCall::GetMobileCallInfo returned an invalid line name"));
       
 14863 
       
 14864 	// post notifier RCall::NotifyCapsChange for call1
       
 14865 	TCoreEtelRequestStatus<RCall> notifyCapsChangeStatus (call1, &RCall::NotifyCapsChangeCancel);	
       
 14866 	CleanupStack::PushL(notifyCapsChangeStatus);
       
 14867 	call1.NotifyCapsChange(notifyCapsChangeStatus, callCaps);
       
 14868 
       
 14869 	// post notifier for RMobileCall::NotifyMobileCallCapsChange
       
 14870 	TExtEtelRequestStatus notifyMobileCallCapsChangeStatus(call1, EMobileCallNotifyMobileCallCapsChange);
       
 14871 	CleanupStack::PushL(notifyMobileCallCapsChangeStatus);
       
 14872 	RMobileCall::TMobileCallCapsV1 notifyMobileCallCaps;
       
 14873 	RMobileCall::TMobileCallCapsV1Pckg notifymobileCallCapsPckg(notifyMobileCallCaps);
       
 14874 	call1.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus, notifymobileCallCapsPckg);
       
 14875 	
       
 14876 	// post notifier for RCall::NotifyStatusChange
       
 14877 	TCoreEtelRequestStatus<RCall> notifyStatusChangeStatus (call1, &RCall::NotifyStatusChangeCancel);
       
 14878 	CleanupStack::PushL(notifyStatusChangeStatus);
       
 14879 	RCall::TStatus notifyCallStatus;
       
 14880 	call1.NotifyStatusChange(notifyStatusChangeStatus, notifyCallStatus);
       
 14881 	
       
 14882 	// Post notifiers call
       
 14883     RMobileCall::TMobileCallStatus notifyMobileCallStatus;
       
 14884     TExtEtelRequestStatus notifyMobileCallChangeStatus(call1, EMobileCallNotifyMobileCallStatusChange);
       
 14885     CleanupStack::PushL(notifyMobileCallChangeStatus);
       
 14886     call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, notifyMobileCallStatus);
       
 14887 	
       
 14888 	// Dial a number that answers using RMobileCall::DialISV 
       
 14889 	TExtEtelRequestStatus dialStatus(call1, EMobileCallDialISV);
       
 14890 	CleanupStack::PushL(dialStatus);
       
 14891 	TPtrC number;
       
 14892 	ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number) != EFalse, _L("CTestStep::GetStringFromConfig did not complete as expected"));	
       
 14893 	RMobileCall::TEtel3rdPartyMobileCallParamsV1 callParams;
       
 14894 	RMobileCall::TEtel3rdPartyMobileCallParamsV1Pckg callParamsPckg(callParams);
       
 14895 	call1.DialISV(dialStatus, callParamsPckg, number);
       
 14896 	DEBUG_PRINTF1(_L("Board Now Dialling... "));
       
 14897 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeMedium), KErrNone, _L("RMobileCall::DialISV timed-out"));
       
 14898 	ASSERT_EQUALS(dialStatus.Int(), KErrNone, _L("RMobileCall::DialISV returned with an error"));	
       
 14899 
       
 14900 	// ===  Check call caps ===
       
 14901 
       
 14902 	// Check RCall::NotifyCapsChange completes with caps in set of KCapsVoice | KCapsHangUp.
       
 14903 	RCall::TCaps wantedNotifyCaps, unwantedNotifyCaps;
       
 14904 	wantedNotifyCaps.iFlags = RCall::KCapsVoice | RCall::KCapsHangUp;
       
 14905 	unwantedNotifyCaps.iFlags = 0;
       
 14906 	const TInt wantedStatus = KErrNone;
       
 14907 	iCallControlTestHelper.WaitForCallNotifyCapsChange(call1, 
       
 14908 													   notifyCapsChangeStatus,
       
 14909 													   callCaps,
       
 14910 													   wantedNotifyCaps,
       
 14911 													   unwantedNotifyCaps,
       
 14912 													   wantedStatus);
       
 14913 
       
 14914 	// Check RCall::GetCaps supports KCapsHangUp | KCapsVoice.
       
 14915 	TUint32 wantedCallCaps = RCall::KCapsHangUp | RCall::KCapsVoice;
       
 14916 	ASSERT_EQUALS(call1.GetCaps(callCaps),KErrNone, _L("RCall::GetCaps returned an error"));
       
 14917 	ASSERT_BITS_SET(callCaps.iFlags, wantedCallCaps, KNoUnwantedBits, _L("RCall::GetCaps returned wrong caps"));
       
 14918 
       
 14919 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice | KCapsHold | KCapsHangUp | KCapsTransfer.
       
 14920 	RMobileCall::TMobileCallCapsV1 wantedMobileCaps;
       
 14921 	TCmpRMobileCallTMobileCallCaps mobileCapsComp(wantedMobileCaps,mobileCallCaps, *this);								
       
 14922 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(call1, 
       
 14923 																	   notifyMobileCallCapsChangeStatus,
       
 14924 																	   mobileCapsComp,
       
 14925 																	   wantedStatus);
       
 14926 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | 
       
 14927 										RMobileCall::KCapsHold | 
       
 14928 										RMobileCall::KCapsHangUp | 
       
 14929 										RMobileCall::KCapsTransfer;
       
 14930         
       
 14931 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallEventCaps in set of KCapsLocalHold | KCapsLocalTransfer | KCapsRemoteHold | KCapsRemoteTerminate | KCapsRemoteConferenceCreate.
       
 14932    	wantedMobileCaps.iCallEventCaps = RMobileCall::KCapsLocalHold | 
       
 14933 									  RMobileCall::KCapsLocalTransfer | 
       
 14934 									  RMobileCall::KCapsRemoteHold | 
       
 14935 									  RMobileCall::KCapsRemoteTerminate | 
       
 14936 									  RMobileCall::KCapsRemoteConferenceCreate;
       
 14937 
       
 14938 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsHold | KCapsHangUp
       
 14939   	RMobileCall::TMobileCallCapsV1Pckg mobileCallCapsPckg(mobileCallCaps);	
       
 14940     TUint32 wantedMobileCallCaps = RMobileCall::KCapsVoice |
       
 14941 	    							RMobileCall::KCapsHold |
       
 14942 									RMobileCall::KCapsHangUp; 
       
 14943 	ASSERT_EQUALS(call1.GetMobileCallCaps(mobileCallCapsPckg), KErrNone, _L("RMobileCall::GetMobileCallCaps returned an error"));
       
 14944 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCallCaps, KNoUnwantedBits, _L("RMobileCall::GetMobileCallCaps returned wrong caps"));
       
 14945 	
       
 14946 	// Check RMobileCall::GetMobileCallCaps includes iCallEventCaps in set of KCapsLocalHold | KCapsLocalTransfer | KCapsRemoteHold | KCapsRemoteTerminate | KCapsRemoteConferenceCreate.
       
 14947 	TUint32 wantedMobileCallEventCaps = RMobileCall::KCapsLocalHold |
       
 14948 								  RMobileCall::KCapsLocalTransfer |
       
 14949 								  RMobileCall::KCapsRemoteHold | 
       
 14950 								  RMobileCall::KCapsRemoteTerminate |
       
 14951 								  RMobileCall::KCapsRemoteConferenceCreate;
       
 14952 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedMobileCallEventCaps, KNoUnwantedBits,   
       
 14953 			_L("RMobileCall::GetMobileCallCaps returned wrong caps"));
       
 14954 
       
 14955 	// ===  Check call status ===
       
 14956 
       
 14957 	// Check RCall::NotifyStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
 14958 	RCall::TStatus expectedCallStatus = RCall::EStatusDialling;
       
 14959 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
 14960 														 notifyStatusChangeStatus,
       
 14961 														 notifyCallStatus,
       
 14962 														 expectedCallStatus,
       
 14963 														 wantedStatus);
       
 14964 														 
       
 14965 	call1.NotifyStatusChange(notifyStatusChangeStatus, notifyCallStatus);
       
 14966 	expectedCallStatus = RCall::EStatusConnecting;
       
 14967 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
 14968 														 notifyStatusChangeStatus,
       
 14969 														 notifyCallStatus,
       
 14970 														 expectedCallStatus,
       
 14971 														 wantedStatus);
       
 14972 														 
       
 14973 	call1.NotifyStatusChange(notifyStatusChangeStatus, notifyCallStatus);
       
 14974 	expectedCallStatus = RCall::EStatusConnected;
       
 14975 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
 14976 														 notifyStatusChangeStatus,
       
 14977 														 notifyCallStatus,
       
 14978 														 expectedCallStatus,
       
 14979 														 wantedStatus);
       
 14980 
       
 14981 	// Check RCall::GetStatus returns EStatusConnected.
       
 14982 	ASSERT_EQUALS(call1.GetStatus(callStatus), KErrNone, _L("RCall::GetStatus returned an error"));
       
 14983 	ASSERT_EQUALS(callStatus, RCall::EStatusConnected, _L("RCall::GetStatus did not return EStatusConnected"));
       
 14984 	
       
 14985 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
 14986 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusDialling;
       
 14987 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
 14988 																		 notifyMobileCallChangeStatus,
       
 14989 																		 notifyMobileCallStatus,
       
 14990 																		 expectedMobileCallStatus,
       
 14991 																	  	 wantedStatus);
       
 14992 														 
       
 14993 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, notifyMobileCallStatus);
       
 14994 	expectedMobileCallStatus = RMobileCall::EStatusConnecting;
       
 14995     iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
 14996 																		 notifyMobileCallChangeStatus,
       
 14997 																		 notifyMobileCallStatus,
       
 14998 																		 expectedMobileCallStatus,
       
 14999 																	  	 wantedStatus);
       
 15000 														 
       
 15001 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, notifyMobileCallStatus);
       
 15002 	expectedMobileCallStatus = RMobileCall::EStatusConnected;
       
 15003 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
 15004 																		 notifyMobileCallChangeStatus,
       
 15005 																		 notifyMobileCallStatus,
       
 15006 																		 expectedMobileCallStatus,
       
 15007 																	  	 wantedStatus);
       
 15008 
       
 15009 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusConnected.
       
 15010 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone, _L("RMobileCall::GetMobileCallStatus returned an error"));
       
 15011 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected, _L("RMobileCall::GetMobileCallStatus did not return a status EStatusConnected"));
       
 15012 
       
 15013 	// ===  Check call info ===
       
 15014 
       
 15015 	User::After(KOneSecond*2);	// Wait added for call duration
       
 15016 
       
 15017 	// Check RCall::GetInfo returns valid call name.
       
 15018 	ASSERT_EQUALS(call1.GetInfo(callInfo), KErrNone, _L("RCall::GetInfo returned an error"));
       
 15019 	ASSERT_TRUE(callInfo.iCallName.Length() > 0, _L("RCall::GetInfo returned an invalid call name"));
       
 15020 	
       
 15021 	// Check RCall::GetInfo returns valid voice line name.
       
 15022 	ASSERT_TRUE(callInfo.iLineName.Length() > 0 ,_L("RCall::GetInfo returned an invalid  line name"));
       
 15023 	
       
 15024 	// Check RCall::GetInfo returns call status of EStatusConnected.
       
 15025 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusConnected, _L("RCall::GetInfo returned wrong status, should be EStatusConnected"));
       
 15026 	
       
 15027 	// Check RCall::GetInfo returns call duration of > 0.
       
 15028 	ASSERT_TRUE(callInfo.iDuration.Int() > 0, _L("RCall::GetInfo returned a duration other than > 0"));
       
 15029 	
       
 15030 	// Check RMobileCall::GetMobileCallInfo returns iValid > 0.
       
 15031 	ASSERT_EQUALS(call1.GetMobileCallInfo(callInfoPckg), KErrNone, _L("RMobileCall::GetMobileCallInfo returned an error"));
       
 15032     // $CTSYProblem CTSY initialises iAlternatingCall to EAlternatingModeUnspecified, which should be updated via EMobileCallGetMobileCallInfo from LTSY
       
 15033     // This problem is inside CheckForValidCallInfo() helper method.
       
 15034 	iCallControlTestHelper.CheckForValidCallInfo(mobileCallInfo);
       
 15035 	
       
 15036 	// Check RMobileCall::GetMobileCallInfo returns data for attributes marked as valid in iValid.
       
 15037 	ASSERT_TRUE(mobileCallInfo.iCallName.Length() > 0, _L("RMobileCall::GetMobileCallInfo returned an invalid call name"));
       
 15038 	
       
 15039 	// Check RMobileCall::GetMobileCallInfo returns valid line name.
       
 15040 	ASSERT_TRUE(mobileCallInfo.iLineName.Length() > 0, _L("RMobileCall::GetMobileCallInfo returned an invalid line name"));
       
 15041 
       
 15042 
       
 15043 	////////////////////////////////////////////////////////////////
       
 15044 	// TEST END
       
 15045 	////////////////////////////////////////////////////////////////
       
 15046 
       
 15047     StartCleanup();
       
 15048     
       
 15049     // Hangup call
       
 15050     call1.HangUp();
       
 15051 		
       
 15052 	// Pop
       
 15053 	// notifyCapsChangeStatus
       
 15054 	// notifyMobileCallCapsChangeStatus
       
 15055 	// notifyStatusChangeStatus
       
 15056 	// notifyMobileCallChangeStatus
       
 15057 	// dialStatus
       
 15058 	CleanupStack::PopAndDestroy(5, &notifyCapsChangeStatus);
       
 15059 	
       
 15060 	return TestStepResult();
       
 15061 	}
       
 15062 
       
 15063 TPtrC CCTSYIntegrationTestCallControl0048::GetTestStepName()
       
 15064 /**
       
 15065  * @return The test step name.
       
 15066  */
       
 15067 	{
       
 15068 	return  _L("CCTSYIntegrationTestCallControl0048");
       
 15069 	}
       
 15070 
       
 15071 
       
 15072 
       
 15073 CCTSYIntegrationTestCallControl0049::CCTSYIntegrationTestCallControl0049(CEtelSessionMgr& aEtelSessionMgr)
       
 15074 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 15075 /**
       
 15076  * Constructor.
       
 15077  */
       
 15078 	{
       
 15079 	SetTestStepName(CCTSYIntegrationTestCallControl0049::GetTestStepName());
       
 15080 	}
       
 15081 
       
 15082 CCTSYIntegrationTestCallControl0049::~CCTSYIntegrationTestCallControl0049()
       
 15083 /**
       
 15084  * Destructor.
       
 15085  */
       
 15086 	{
       
 15087 	}
       
 15088 
       
 15089 TVerdict CCTSYIntegrationTestCallControl0049::doTestStepL()
       
 15090 /**
       
 15091  * @SYMTestCaseID BA-CTSY-INT-CCON-0049
       
 15092  * @SYMFssID BA/CTSY/CCON-0049
       
 15093  * @SYMTestCaseDesc Answer a call using RMobileCall::AnswerIncomingCallISV
       
 15094  * @SYMTestPriority High
       
 15095  * @SYMTestActions RMobileCall::NotifyMobileCallCapsChange,
       
 15096  *                 RMobileCall::GetMobileCallStatus,
       
 15097  *                 RMobileCall::GetMobileCallInfo,
       
 15098  *                 RLine::NotifyIncomingCall, RCall::GetInfo,
       
 15099  *                 RCall::NotifyStatusChange,
       
 15100  *                 RMobileCall::NotifyMobileCallStatusChange,
       
 15101  *                 RCall::NotifyCapsChange, RCall::GetStatus,
       
 15102  *                 RMobileCall::AnswerIncomingCallISV,
       
 15103  *                 RMobileCall::GetMobileCallCaps
       
 15104  * @SYMTestExpectedResults Pass - Call answered. 
       
 15105  * @SYMTestType CIT
       
 15106  * @SYMTestCaseDependencies live/automatic
       
 15107  *
       
 15108  * Reason for test: Verify change in call state is reflected in RCall and RMobileCall
       
 15109  *
       
 15110  * @return - TVerdict code
       
 15111  */
       
 15112 	{
       
 15113 
       
 15114 	////////////////////////////////////////////////////////////////
       
 15115 	// SET UP
       
 15116 	////////////////////////////////////////////////////////////////
       
 15117 
       
 15118 
       
 15119 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 15120 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 15121  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 15122 	
       
 15123 	// Check phone supports KCapsVoice.
       
 15124 	RPhone::TCaps phoneCaps; 
       
 15125 	CHECK_EQUALS_L(phone.GetCaps(phoneCaps), KErrNone, _L("RPhone::GetCaps returned an error"));
       
 15126 	CHECK_BITS_SET_L(phoneCaps.iFlags, RPhone::KCapsVoice, KNoUnwantedBits,  _L("RPhone::GetCaps returned wrong caps"));
       
 15127 
       
 15128 	// Get Voice line 1. 
       
 15129 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
 15130 
       
 15131 
       
 15132 	////////////////////////////////////////////////////////////////
       
 15133 	// SET UP END
       
 15134 	////////////////////////////////////////////////////////////////
       
 15135 	
       
 15136 	StartTest();
       
 15137 	
       
 15138 	////////////////////////////////////////////////////////////////
       
 15139 	// TEST START
       
 15140 	////////////////////////////////////////////////////////////////
       
 15141 
       
 15142 
       
 15143 	// post notification RLine::NotifyIncomingCall
       
 15144 	TCoreEtelRequestStatus<RLine> notifyIncomingCallStatus(voiceLine, &RLine::NotifyIncomingCallCancel);
       
 15145 	CleanupStack::PushL(notifyIncomingCallStatus);
       
 15146 	TName incomingCallName;
       
 15147 	incomingCallName.Zero();
       
 15148 	voiceLine.NotifyIncomingCall(notifyIncomingCallStatus, incomingCallName);
       
 15149 	
       
 15150 	// Request incoming call from RPS. 
       
 15151 	ASSERT_EQUALS (RPSRequestIncomingCallL(EVoiceLine), KErrNone, 
       
 15152 				_L("CCTSYIntegrationTestSuiteStepBase::RPSRequestIncomingCallL returned an error"));
       
 15153 
       
 15154 	// Check RLine::NotifyIncomingCall completes with call name.
       
 15155 	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyIncomingCallStatus, ETimeMedium),KErrNone, _L("RLine::NotifyIncomingCall timed out"));
       
 15156 	ASSERT_EQUALS(notifyIncomingCallStatus.Int(), KErrNone, _L("RLine::NotifyIncomingCall returned with an error"));
       
 15157 	ASSERT_TRUE(incomingCallName.Length() > 0, _L("RLine::NotifyIncomingCall completed with invalid call name"));
       
 15158 
       
 15159 	// Get the incoming call
       
 15160 	TCallId incomingCallId;
       
 15161 	RMobileCall& call1 = iEtelSessionMgr.GetIncomingCallL(KMainServer, KMainPhone, KVoiceLine, incomingCallName, incomingCallId);
       
 15162 
       
 15163 	// post notifier for RCall::NotifyCapsChange
       
 15164 	TCoreEtelRequestStatus<RCall> notifyCapsChangeStatus (call1, &RCall::NotifyCapsChangeCancel);	
       
 15165 	CleanupStack::PushL(notifyCapsChangeStatus);
       
 15166 	RCall::TCaps callCaps;
       
 15167 	call1.NotifyCapsChange(notifyCapsChangeStatus, callCaps);
       
 15168 	
       
 15169 	// post notifier for RMobileCall::NotifyMobileCallCapsChange
       
 15170 	TExtEtelRequestStatus notifyMobileCallCapsChangeStatus(call1, EMobileCallNotifyMobileCallCapsChange);
       
 15171 	CleanupStack::PushL(notifyMobileCallCapsChangeStatus);
       
 15172 	RMobileCall::TMobileCallCapsV1 mobileCallCaps;
       
 15173 	RMobileCall::TMobileCallCapsV1Pckg mobileCallCapsPckg(mobileCallCaps);
       
 15174 	call1.NotifyMobileCallCapsChange(notifyMobileCallCapsChangeStatus, mobileCallCapsPckg);
       
 15175 
       
 15176 	// post notifier for RCall::NotifyStatusChange
       
 15177 	TCoreEtelRequestStatus<RCall> notifyStatusChangeStatus (call1, &RCall::NotifyStatusChangeCancel);
       
 15178 	CleanupStack::PushL(notifyStatusChangeStatus);
       
 15179 	RCall::TStatus callStatus;
       
 15180 	call1.NotifyStatusChange(notifyStatusChangeStatus,callStatus);
       
 15181 
       
 15182 	// post notifier for RMobileCall::NotifyMobileCallStatusChange
       
 15183 	TExtEtelRequestStatus notifyMobileCallStatusChangeStatus(call1, EMobileCallNotifyMobileCallStatusChange);
       
 15184 	CleanupStack::PushL(notifyMobileCallStatusChangeStatus);
       
 15185 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
 15186 	call1.NotifyMobileCallStatusChange(notifyMobileCallStatusChangeStatus, mobileCallStatus);
       
 15187 
       
 15188 	// Answer incoming call with RMobileCall::AnswerIncomingCallISV 
       
 15189 	TExtEtelRequestStatus answerIncomingCallStatus(call1, EMobileCallAnswerISV);
       
 15190 	CleanupStack::PushL(answerIncomingCallStatus);
       
 15191 	RMobileCall::TEtel3rdPartyMobileCallParamsV1 callParams;
       
 15192 	RMobileCall::TEtel3rdPartyMobileCallParamsV1Pckg callParamsPckg(callParams);
       
 15193 	call1.AnswerIncomingCallISV(answerIncomingCallStatus, callParamsPckg);
       
 15194 	ASSERT_EQUALS(WaitForRequestWithTimeOut(answerIncomingCallStatus,ETimeMedium),KErrNone,_L("RMobileCall::AnswerIncomingCallISV timed out"));
       
 15195 	ASSERT_EQUALS(answerIncomingCallStatus.Int(), KErrNone, _L("RMobileCall::AnswerIncomingCallISV returned with an error"));
       
 15196 	
       
 15197 	// ===  Check call caps ===
       
 15198 
       
 15199 	// Check RCall::NotifyCapsChange completes with caps in set of KCapsVoice | KCapsHangUp.
       
 15200 	RCall::TCaps wantedCaps, unwantedCaps;
       
 15201 	wantedCaps.iFlags = RCall::KCapsVoice | RCall::KCapsHangUp;
       
 15202 	unwantedCaps.iFlags = 0;
       
 15203 	const TInt wantedStatus = KErrNone;
       
 15204 	iCallControlTestHelper.WaitForCallNotifyCapsChange(call1, 
       
 15205 													   notifyCapsChangeStatus,
       
 15206 													   callCaps,
       
 15207 													   wantedCaps,
       
 15208 													   unwantedCaps,
       
 15209 													   wantedStatus);
       
 15210 
       
 15211 	// Check RCall::GetCaps supports KCapsHangUp | KCapsVoice.
       
 15212 	TUint32 wantedCallCaps = RCall::KCapsHangUp | RCall::KCapsVoice;
       
 15213 	ASSERT_EQUALS(call1.GetCaps(callCaps),KErrNone, _L("RCall::GetCaps returned an error"));
       
 15214 	ASSERT_BITS_SET(callCaps.iFlags, wantedCallCaps, KNoUnwantedBits, _L("RCall::GetCaps returned wrong caps"));
       
 15215 
       
 15216 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallControlCaps in set of KCapsVoice | KCapsHold | KCapsHangUp 
       
 15217 	// Check RMobileCall::NotifyMobileCallCapsChange completes with iCallEventCaps in set of KCapsLocalHold | KCapsLocalTransfer | KCapsRemoteHold | KCapsRemoteTerminate | KCapsRemoteConferenceCreate.
       
 15218 	RMobileCall::TMobileCallCapsV1 wantedMobileCaps;
       
 15219 	wantedMobileCaps.iCallControlCaps = RMobileCall::KCapsVoice | 
       
 15220 										RMobileCall::KCapsHold | 
       
 15221 										RMobileCall::KCapsHangUp;
       
 15222 										
       
 15223 	wantedMobileCaps.iCallEventCaps = RMobileCall::KCapsLocalHold | 
       
 15224 									  RMobileCall::KCapsLocalTransfer | 
       
 15225 									  RMobileCall::KCapsRemoteHold | 
       
 15226 									  RMobileCall::KCapsRemoteTerminate | 
       
 15227 									  RMobileCall::KCapsRemoteConferenceCreate;
       
 15228 									  
       
 15229 	TCmpRMobileCallTMobileCallCaps mobileCapsComp(wantedMobileCaps,mobileCallCaps, *this);
       
 15230 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallCapsChange(call1, 
       
 15231 																	   notifyMobileCallCapsChangeStatus,
       
 15232 																	   mobileCapsComp,
       
 15233 																	   wantedStatus);
       
 15234 
       
 15235 	// Check RMobileCall::GetMobileCallCaps includes iCallControlCaps in set of KCapsVoice | KCapsHold | KCapsHangUp.
       
 15236 	ASSERT_EQUALS(call1.GetMobileCallCaps(mobileCallCapsPckg), KErrNone, _L("RMobileCall::GetMobileCallCaps returned an error"));
       
 15237 	ASSERT_BITS_SET(mobileCallCaps.iCallControlCaps, wantedMobileCaps.iCallControlCaps, KNoUnwantedBits, _L("RMobileCall::GetMobileCallCaps returned wrong caps"));
       
 15238 			
       
 15239 	// Check RMobileCall::GetMobileCallCaps includes iCallEventCaps in set of KCapsLocalHold | KCapsLocalTransfer | KCapsRemoteHold | KCapsRemoteTerminate | KCapsRemoteConferenceCreate.			
       
 15240 	ASSERT_BITS_SET(mobileCallCaps.iCallEventCaps, wantedMobileCaps.iCallEventCaps, KNoUnwantedBits, _L("RMobileCall::GetMobileCallCaps returned wrong caps"));
       
 15241 
       
 15242 	// ===  Check call status ===
       
 15243 
       
 15244 	// Check RCall::NotifyStatusChange completes with EStatusConnected
       
 15245 	RCall::TStatus expectedCallStatus = RCall::EStatusConnected;
       
 15246 	iCallControlTestHelper.WaitForCallNotifyStatusChange(call1,
       
 15247 														 notifyStatusChangeStatus,
       
 15248 														 callStatus,
       
 15249 														 expectedCallStatus,
       
 15250 														 wantedStatus);
       
 15251 
       
 15252 	// Check RCall::GetStatus returns EStatusConnected
       
 15253 	ASSERT_EQUALS(call1.GetStatus(callStatus), KErrNone, _L("RCall::GetStatus returned an error"));
       
 15254 	ASSERT_EQUALS(callStatus, RCall::EStatusConnected, _L("RCall::GetStatus did not return EStatusConnected"));
       
 15255 	
       
 15256 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusConnected.
       
 15257 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusConnected;
       
 15258 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
 15259 																		 notifyMobileCallStatusChangeStatus,
       
 15260 																		 mobileCallStatus,
       
 15261 																		 expectedMobileCallStatus,
       
 15262 																	  	 wantedStatus);
       
 15263 
       
 15264 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusConnected.
       
 15265 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone, 
       
 15266 			_L("RMobileCall::GetMobileStatus returned an error"));
       
 15267 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected, 
       
 15268 			_L("RMobileCall::GetMobileStatus did not return a status EStatusConnected"));
       
 15269 
       
 15270 	// ===  Check call info ===
       
 15271 
       
 15272 	User::After(KOneSecond*2);	// Wait added for call duration
       
 15273 
       
 15274 	// Check RCall::GetInfo returns valid call name.
       
 15275 	RCall::TCallInfo callInfo;
       
 15276 	ASSERT_EQUALS(call1.GetInfo(callInfo), KErrNone, _L("RCall::GetInfo returned an error"));
       
 15277 	ASSERT_TRUE(callInfo.iCallName.Length() > 0, _L("RCall::GetInfo returned an invalid call name"));
       
 15278 	
       
 15279 	// Check RCall::GetInfo returns valid voice line name.	
       
 15280 	ASSERT_TRUE(callInfo.iLineName.Length() > 0,_L("RCall::GetInfo returned an invalid  line name"));
       
 15281 	
       
 15282 	// Check RCall::GetInfo returns call status of EStatusConnected.
       
 15283 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusConnected, _L("RCall::GetInfo returned wrong status, should be EStatusConnected"));
       
 15284 	
       
 15285 	// Check RCall::GetInfo returns call duration of > 0.
       
 15286 	ASSERT_TRUE(callInfo.iDuration.Int() > 0, _L("RCall::GetInfo returned duration <= 0, should > 0"));
       
 15287 
       
 15288 	// Check RMobileCall::GetMobileCallInfo returns iValid > 0.
       
 15289 	RMobileCall::TMobileCallInfoV1 mobileCallInfo;
       
 15290 	RMobileCall::TMobileCallInfoV1Pckg callInfoPckg(mobileCallInfo);
       
 15291 	ASSERT_EQUALS(call1.GetMobileCallInfo(callInfoPckg), KErrNone, _L("RMobileCall::GetMobileCallInfo returned an error"));
       
 15292 	ASSERT_TRUE(mobileCallInfo.iValid > 0, _L("RMobileCall::GetMobileCallInfo returned iValid <= 0 flags, should be > 0"));
       
 15293 	
       
 15294 	// Check RMobileCall::GetMobileCallInfo returns data for attributes makred as valid in iValid.
       
 15295 	iCallControlTestHelper.CheckForValidCallInfo(mobileCallInfo);
       
 15296 	
       
 15297 	// Check RMobileCall::GetMobileCallInfo returns valid line name.
       
 15298 	ASSERT_TRUE(mobileCallInfo.iLineName.Length() > 0, _L("RMobileCall::GetMobileCallInfo returned an invalid line name"));
       
 15299 
       
 15300     // Hangup call
       
 15301 	TCoreEtelRequestStatus<RCall> hangUpStatus (call1,&RCall::HangUpCancel);	
       
 15302 	CleanupStack::PushL(hangUpStatus);
       
 15303 	call1.HangUp(hangUpStatus);
       
 15304 	ASSERT_EQUALS(WaitForRequestWithTimeOut(hangUpStatus, ETimeMedium), KErrNone, _L("RCall::HangUp timed-out"));
       
 15305 	ASSERT_EQUALS(hangUpStatus.Int(), KErrNone, _L("RCall::HangUp returned an error"));
       
 15306 
       
 15307 
       
 15308 	////////////////////////////////////////////////////////////////
       
 15309 	// TEST END
       
 15310 	////////////////////////////////////////////////////////////////
       
 15311 
       
 15312     StartCleanup();
       
 15313 		
       
 15314 	// Pop
       
 15315 	// notifyIncomingCallStatus
       
 15316 	// notifyCapsChangeStatus
       
 15317 	// notifyMobileCallCapsChangeStatus
       
 15318 	// notifyStatusChangeStatus
       
 15319 	// notifyMobileCallStatusChangeStatus
       
 15320 	// answerIncomingCallStatus
       
 15321 	// hangUpStatus
       
 15322 	CleanupStack::PopAndDestroy(7, &notifyIncomingCallStatus);
       
 15323 	
       
 15324 	return TestStepResult();
       
 15325 	}
       
 15326 
       
 15327 TPtrC CCTSYIntegrationTestCallControl0049::GetTestStepName()
       
 15328 /**
       
 15329  * @return The test step name.
       
 15330  */
       
 15331 	{
       
 15332 	return  _L("CCTSYIntegrationTestCallControl0049");
       
 15333 	}
       
 15334 
       
 15335 
       
 15336 
       
 15337 CCTSYIntegrationTestCallControl0050::CCTSYIntegrationTestCallControl0050(CEtelSessionMgr& aEtelSessionMgr)
       
 15338 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 15339 /**
       
 15340  * Constructor.
       
 15341  */
       
 15342 	{
       
 15343 	SetTestStepName(CCTSYIntegrationTestCallControl0050::GetTestStepName());
       
 15344 	}
       
 15345 
       
 15346 CCTSYIntegrationTestCallControl0050::~CCTSYIntegrationTestCallControl0050()
       
 15347 /**
       
 15348  * Destructor.
       
 15349  */
       
 15350 	{
       
 15351 	}
       
 15352 
       
 15353 TVerdict CCTSYIntegrationTestCallControl0050::doTestStepL()
       
 15354 /**
       
 15355  * @SYMTestCaseID BA-CTSY-INT-CCON-0050
       
 15356  * @SYMFssID BA/CTSY/CCON-0050
       
 15357  * @SYMTestCaseDesc Answer a call using RMobileCall::AnswerIncomingCallISV
       
 15358  * @SYMTestPriority High
       
 15359  * @SYMTestActions RMobileLine::NotifyMobileLineStatusChange,
       
 15360  *                 RLine::GetCallInfo,
       
 15361  *                 RLine::NotifyIncomingCall, RLine::GetStatus,
       
 15362  *                 RMobileLine::GetMobileLineStatus,
       
 15363  *                 RLine::GetInfo,
       
 15364  *                 RMobileCall::AnswerIncomingCallISV
       
 15365  * @SYMTestExpectedResults Pass - Call answered. 
       
 15366  * @SYMTestType CIT
       
 15367  * @SYMTestCaseDependencies RPS/automatic
       
 15368  *
       
 15369  * Reason for test: Verify change in line state is reflected in RLine and RMobileLine
       
 15370  *
       
 15371  * @return - TVerdict code
       
 15372  */
       
 15373 	{
       
 15374 
       
 15375 	////////////////////////////////////////////////////////////////
       
 15376 	// SET UP
       
 15377 	////////////////////////////////////////////////////////////////
       
 15378 
       
 15379 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 15380 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 15381     CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
 15382 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 15383 
       
 15384 	// Check phone supports KCapsVoice.
       
 15385 	RPhone::TCaps phoneCaps; 
       
 15386 	CHECK_EQUALS_L(phone.GetCaps(phoneCaps), KErrNone, _L("RPhone::GetCaps returned an error"));
       
 15387 	CHECK_BITS_SET_L(phoneCaps.iFlags, RPhone::KCapsVoice, KNoUnwantedBits, _L("RPhone::GetCaps returned wrong caps"));
       
 15388 
       
 15389 	// Get Voice line 1. 
       
 15390 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
 15391 
       
 15392     // Get Call 1.
       
 15393     RMobileCall& mobileCall1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
 15394 
       
 15395 	////////////////////////////////////////////////////////////////
       
 15396 	// SET UP END
       
 15397 	////////////////////////////////////////////////////////////////
       
 15398 	
       
 15399 	StartTest();
       
 15400 	
       
 15401 	////////////////////////////////////////////////////////////////
       
 15402 	// TEST START
       
 15403 	////////////////////////////////////////////////////////////////
       
 15404 	
       
 15405 	// Post notification RLine::NotifyIncomingCall
       
 15406 	TCoreEtelRequestStatus<RLine> notifyIncomingCallStatus(voiceLine, &RLine::NotifyIncomingCallCancel);
       
 15407 	CleanupStack::PushL(notifyIncomingCallStatus);
       
 15408 	TName incomingCallName;
       
 15409 	incomingCallName.Zero();
       
 15410 	voiceLine.NotifyIncomingCall(notifyIncomingCallStatus, incomingCallName);
       
 15411 
       
 15412 	// Post notifier for RLine::NotifyStatusChange
       
 15413 	TCoreEtelRequestStatus<RLine> notifyStatusChangeStatus (voiceLine, &RLine::NotifyStatusChangeCancel);
       
 15414 	CleanupStack::PushL(notifyStatusChangeStatus);
       
 15415 	RCall::TStatus lineStatus;
       
 15416 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus, lineStatus);
       
 15417 	
       
 15418 	// Post a notifier for RMobileLine::NotifyMobileLineStatusChange
       
 15419 	RMobileCall::TMobileCallStatus mobileLineStatus;
       
 15420 	TExtEtelRequestStatus notifyMobileLineChangeStatus(voiceLine, EMobileLineNotifyMobileLineStatusChange);
       
 15421 	CleanupStack::PushL(notifyMobileLineChangeStatus);
       
 15422 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
 15423 
       
 15424 	// Request incoming call from RPS. 
       
 15425 	ASSERT_EQUALS (RPSRequestIncomingCallL(EVoiceLine), KErrNone, _L("CCTSYIntegrationTestSuiteStepBase::RPSRequestIncomingCallL returned an error"));
       
 15426 
       
 15427 	// Check RLine::NotifyIncomingCall completes with call name.
       
 15428 	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyIncomingCallStatus, ETimeMedium), KErrNone, _L("RLine::NotifyIncomingCall timed out"));
       
 15429 	ASSERT_EQUALS(notifyIncomingCallStatus.Int(), KErrNone, _L("RLine::NotifyIncomingCall returned with an error"));
       
 15430 	ASSERT_TRUE(incomingCallName.Length() > 0, _L("RLine::NotifyIncomingCall completed with an invalid call name"));
       
 15431 
       
 15432 	// Get the incoming call
       
 15433 	TCallId incomingCallId;
       
 15434 	mobileCall1 = iEtelSessionMgr.GetIncomingCallL(KMainServer, KMainPhone, KVoiceLine, incomingCallName, incomingCallId);
       
 15435 
       
 15436 	// Answer incoming call with RMobileCall::AnswerIncomingCallISV 
       
 15437 	TExtEtelRequestStatus answerIncomingCallStatus(mobileCall1, EMobileCallAnswerISV);
       
 15438 	CleanupStack::PushL(answerIncomingCallStatus);
       
 15439 	RMobileCall::TEtel3rdPartyMobileCallParamsV1 callParams;
       
 15440 	RMobileCall::TEtel3rdPartyMobileCallParamsV1Pckg callParamsPckg(callParams);
       
 15441 	mobileCall1.AnswerIncomingCallISV(answerIncomingCallStatus, callParamsPckg);
       
 15442 	ASSERT_EQUALS(WaitForRequestWithTimeOut(answerIncomingCallStatus,ETimeMedium),KErrNone,_L("RMobileCall::AnswerIncomingCallISV timed out"));
       
 15443 	ASSERT_EQUALS(answerIncomingCallStatus.Int(), KErrNone, _L("RMobileCall::AnswerIncomingCallISV returned with an error"));
       
 15444 
       
 15445 	// ===  Check line status ===
       
 15446 
       
 15447 	// Check RLine::NotifyStatusChange completes with EStatusAnswering -> EStatusConnected.
       
 15448 	RCall::TStatus expectedLineStatus = RCall::EStatusAnswering;
       
 15449 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
 15450 														 notifyStatusChangeStatus,
       
 15451 														 lineStatus,
       
 15452 														 expectedLineStatus,
       
 15453 														 KErrNone);
       
 15454 
       
 15455 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus, lineStatus);
       
 15456 	expectedLineStatus = RCall::EStatusConnected;	
       
 15457 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
 15458 														 notifyStatusChangeStatus,
       
 15459 														 lineStatus,
       
 15460 														 expectedLineStatus,
       
 15461 														 KErrNone);
       
 15462 
       
 15463 	// Check RLine::GetStatus returns EStatusConnected
       
 15464 	ASSERT_EQUALS(voiceLine.GetStatus(lineStatus), KErrNone, _L("RLine::GetStatus returned an error"));
       
 15465 	ASSERT_EQUALS(lineStatus, expectedLineStatus, _L("RLine::GetStatus did not return EStatusConnected as expected"));
       
 15466 	
       
 15467 	// Check RMobileLine::NotifyMobileLineStatusChange completes with EStatusAnswering -> EStatusConnected.
       
 15468 	RMobileCall::TMobileCallStatus expectedMobileLineStatus = RMobileCall::EStatusAnswering;
       
 15469 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
 15470 																		notifyMobileLineChangeStatus,
       
 15471 																		mobileLineStatus,
       
 15472 																		expectedMobileLineStatus,
       
 15473 																		KErrNone);
       
 15474 
       
 15475 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
 15476 	expectedMobileLineStatus = RMobileCall::EStatusConnected;
       
 15477 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
 15478 																		notifyMobileLineChangeStatus,
       
 15479 																		mobileLineStatus,
       
 15480 																		expectedMobileLineStatus,
       
 15481 																		KErrNone);
       
 15482 
       
 15483 	// Check RMobileLine::GetMobileLineStatus returns EStatusConnected
       
 15484 	ASSERT_EQUALS(voiceLine.GetMobileLineStatus(mobileLineStatus), KErrNone, _L("RMobileLine::GetMobileLineStatus returned an error"));
       
 15485 	ASSERT_EQUALS(mobileLineStatus, RMobileCall::EStatusConnected, _L("RMobileLine::GetMobileLineStatus did not return EStatusConnected as expected"));
       
 15486 
       
 15487 	// ===  Check line info ===
       
 15488 
       
 15489 	// Check RLine::GetCallInfo returns valid name.
       
 15490 	RLine::TCallInfo callInfo;
       
 15491 	ASSERT_EQUALS(voiceLine.GetCallInfo(incomingCallId, callInfo), KErrNone, _L("RLine::GetCallInfo returned an error"));
       
 15492 	ASSERT_TRUE(callInfo.iCallName.Length() > 0, _L("RLine::GetCallInfo returned an invalid iCallName"));
       
 15493 
       
 15494 	// Check RLine::GetCallInfo returns caps in set of KCapsHangUp.
       
 15495 	ASSERT_BITS_SET(callInfo.iCallCapsFlags, RCall::KCapsHangUp, KNoUnwantedBits , _L("RLine::GetCallInfo returned wrong caps"));	
       
 15496 
       
 15497 	// Check RLine::GetCallInfo returns status of EStatusConnected.
       
 15498 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusConnected, _L("RLine::GetCallInfo did not return EStatusConnected as expected"));
       
 15499 
       
 15500 	// Check RLine::GetInfo returns status of EStatusConnected.
       
 15501 	RLine::TLineInfo lineInfo;
       
 15502 	ASSERT_EQUALS(voiceLine.GetInfo(lineInfo),KErrNone, _L("RLine::GetInfo returned an error")); 
       
 15503 	ASSERT_EQUALS(lineInfo.iStatus, RCall::EStatusConnected, _L("RLine::GetInfo did not return EStatusConnected as expected"));
       
 15504 
       
 15505 	// Hang up the call
       
 15506 	TCoreEtelRequestStatus<RCall> hangUpStatus (mobileCall1, &RCall::HangUpCancel);	
       
 15507 	CleanupStack::PushL(hangUpStatus);
       
 15508 	mobileCall1.HangUp(hangUpStatus);
       
 15509 	ASSERT_EQUALS(WaitForRequestWithTimeOut(hangUpStatus, ETimeMedium), KErrNone, _L("RCall::HangUp timed-out"));
       
 15510 	ASSERT_EQUALS(hangUpStatus.Int(), KErrNone, _L("RCall::HangUp returned an error")); 	
       
 15511 
       
 15512 	////////////////////////////////////////////////////////////////
       
 15513 	// TEST END
       
 15514 	////////////////////////////////////////////////////////////////
       
 15515 
       
 15516     StartCleanup();
       
 15517 
       
 15518 	// Pop
       
 15519 	// notifyIncomingCallStatus
       
 15520 	// notifyStatusChangeStatus
       
 15521 	// notifyMobileLineChangeStatus
       
 15522 	// answerIncomingCallStatus
       
 15523 	// hangUpStatus
       
 15524 	CleanupStack::PopAndDestroy(5, &notifyIncomingCallStatus);
       
 15525 	
       
 15526 	return TestStepResult();
       
 15527 	}
       
 15528 
       
 15529 TPtrC CCTSYIntegrationTestCallControl0050::GetTestStepName()
       
 15530 /**
       
 15531  * @return The test step name.
       
 15532  */
       
 15533 	{
       
 15534 	return  _L("CCTSYIntegrationTestCallControl0050");
       
 15535 	}
       
 15536 
       
 15537 
       
 15538 
       
 15539 CCTSYIntegrationTestCallControl0051::CCTSYIntegrationTestCallControl0051(CEtelSessionMgr& aEtelSessionMgr)
       
 15540 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 15541 /**
       
 15542  * Constructor.
       
 15543  */
       
 15544 	{
       
 15545 	SetTestStepName(CCTSYIntegrationTestCallControl0051::GetTestStepName());
       
 15546 	}
       
 15547 
       
 15548 CCTSYIntegrationTestCallControl0051::~CCTSYIntegrationTestCallControl0051()
       
 15549 /**
       
 15550  * Destructor.
       
 15551  */
       
 15552 	{
       
 15553 	}
       
 15554 
       
 15555 TVerdict CCTSYIntegrationTestCallControl0051::doTestStepL()
       
 15556 /**
       
 15557  * @SYMTestCaseID BA-CTSY-INT-CCON-0051
       
 15558  * @SYMFssID BA/CTSY/CCON-0051
       
 15559  * @SYMTestCaseDesc Get the call duration of a call.
       
 15560  * @SYMTestPriority High
       
 15561  * @SYMTestActions RCall::NotifyCallDurationChange, RCall::GetCallDuration, RCall::HangUp
       
 15562  * @SYMTestExpectedResults Pass - Call duration reported correctly during call.
       
 15563  * @SYMTestType CIT
       
 15564  * @SYMTestCaseDependencies live/automatic
       
 15565  *
       
 15566  * Reason for test: Verify notification of call duration advances during call each second.
       
 15567  *
       
 15568  * @return - TVerdict code
       
 15569  */
       
 15570 	{
       
 15571 
       
 15572 	////////////////////////////////////////////////////////////////
       
 15573 	// SET UP
       
 15574 	////////////////////////////////////////////////////////////////
       
 15575 
       
 15576 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 15577 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 15578  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
 15579 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 15580 	
       
 15581 	// Check phone supports KCapsVoice.
       
 15582 	RPhone::TCaps phoneCaps; 
       
 15583 	CHECK_EQUALS_L(phone.GetCaps(phoneCaps), KErrNone, _L("RPhone::GetCaps returned an error"));
       
 15584 	CHECK_BITS_SET_L(phoneCaps.iFlags, RPhone::KCapsVoice, KNoUnwantedBits,  _L("RPhone::GetCaps returned wrong caps"));
       
 15585 	
       
 15586 	// Get Voice line 1. 
       
 15587 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
 15588 
       
 15589 	// Get call 1. 
       
 15590 	RCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
 15591 
       
 15592 
       
 15593 	////////////////////////////////////////////////////////////////
       
 15594 	// SET UP END
       
 15595 	////////////////////////////////////////////////////////////////
       
 15596 	
       
 15597 	StartTest();
       
 15598 	
       
 15599 	////////////////////////////////////////////////////////////////
       
 15600 	// TEST START
       
 15601 	////////////////////////////////////////////////////////////////
       
 15602 	
       
 15603 	// Check RCall::GetCallDuration returns KErrEtelCallNotActive
       
 15604 	// $CTSYProblem.  RCall::GetCallDuration returns KErrNone although there is no active call
       
 15605 	// Got 0, Expected -2007, (KErrEtelCoreBase = -2000 and KErrEtelCallNotActive=KErrEtelCoreBase-7) 
       
 15606 	TTimeIntervalSeconds duration;
       
 15607 	ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10055);
       
 15608 	ASSERT_EQUALS(call1.GetCallDuration(duration), KErrEtelCallNotActive, 
       
 15609 			_L("RCall::GetCallDuration returned wrong error code, should be KErrEtelCallNotActive"));
       
 15610 
       
 15611 	// post RCall::NotifyCallDurationChange
       
 15612 	TCoreEtelRequestStatus<RCall> notifyCallDurationChangeStatus(call1, &RCall::NotifyCallDurationChangeCancel);
       
 15613 	CleanupStack::PushL(notifyCallDurationChangeStatus);
       
 15614 	TTimeIntervalSeconds notifyDuration;
       
 15615 	call1.NotifyCallDurationChange(notifyCallDurationChangeStatus, notifyDuration);
       
 15616 	
       
 15617 	// Dial a number that answers. 
       
 15618 	TPtrC number;
       
 15619 	ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number) != EFalse, _L("GetStringFromConfig did not complete as expected"));
       
 15620 	TCoreEtelRequestStatus<RCall> dialStatus(call1, &RCall::DialCancel);
       
 15621 	CleanupStack::PushL(dialStatus);
       
 15622 	DEBUG_PRINTF1(_L("Board Now Dialling... "));
       
 15623 	call1.Dial(dialStatus, number);
       
 15624 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeLong), KErrNone, _L("RCall::Dial timed-out"));
       
 15625 	ASSERT_EQUALS(dialStatus.Int(), KErrNone,  _L("RCall::Dial returned with an error"));
       
 15626 	
       
 15627 	// Check completion of RCall::NotifyCallDurationChange
       
 15628 	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyCallDurationChangeStatus, ETimeShort), KErrNone, _L("RCall::NotifyCallDurationChange timed-out"));
       
 15629 	ASSERT_EQUALS(notifyCallDurationChangeStatus.Int(), KErrNone,  _L("RCall::NotifyCallDurationChange returned with an error"));
       
 15630 	
       
 15631 	for(TInt i = 0; i < 10; ++i)
       
 15632 		{
       
 15633 		TTimeIntervalSeconds prevNotifyDuration = notifyDuration;
       
 15634 		
       
 15635 		// post RCall::NotifyCallDurationChange
       
 15636 		call1.NotifyCallDurationChange(notifyCallDurationChangeStatus, notifyDuration);
       
 15637 		
       
 15638 		// Check notification of call duration from RCall::NotifyCallDurationChange completes with call duration which has advanced from previous notification.
       
 15639 		ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyCallDurationChangeStatus, ETimeShort), KErrNone, _L("RCall::NotifyCallDurationChange timed-out"));
       
 15640 		ASSERT_EQUALS(notifyCallDurationChangeStatus.Int(), KErrNone,  _L("RCall::NotifyCallDurationChange returned with an error"));
       
 15641 		
       
 15642 		ASSERT_TRUE(notifyDuration.Int() > prevNotifyDuration.Int(), _L("RCall::NotifyCallDurationChange completed with duration less than expected"));
       
 15643 		
       
 15644 		// Check RCall::GetCallDuration returns call duration >= previous call duration.
       
 15645 		TTimeIntervalSeconds durationGet, prevdurationGet=0;
       
 15646 		ASSERT_EQUALS(call1.GetCallDuration(durationGet), KErrNone, _L("RCall::GetCallDuration returned with an error"));
       
 15647 		ASSERT_TRUE(durationGet.Int() >= prevdurationGet.Int(), _L("RCall::GetCallDuration returned with duration less than expected"));
       
 15648 		prevdurationGet = durationGet;
       
 15649 		}
       
 15650 	
       
 15651 	// hang up the call
       
 15652 	TCoreEtelRequestStatus<RCall> hangUpStatus (call1,&RCall::HangUpCancel);	
       
 15653 	CleanupStack::PushL(hangUpStatus);
       
 15654 	call1.HangUp(hangUpStatus);
       
 15655 	ASSERT_EQUALS(WaitForRequestWithTimeOut(hangUpStatus, ETimeMedium), KErrNone, _L("RCall::HangUp timed-out"));
       
 15656 	ASSERT_EQUALS(hangUpStatus.Int(), KErrNone,  _L("RCall::HangUp returned with an error"));
       
 15657 
       
 15658 	////////////////////////////////////////////////////////////////
       
 15659 	// TEST END
       
 15660 	////////////////////////////////////////////////////////////////
       
 15661 
       
 15662     StartCleanup();	
       
 15663 	
       
 15664 	// Pop
       
 15665 	// notifyCallDurationChangeStatus
       
 15666 	// dialStatus
       
 15667 	// hangUpStatus
       
 15668 	CleanupStack::PopAndDestroy(3, &notifyCallDurationChangeStatus);
       
 15669 	
       
 15670 	return TestStepResult();
       
 15671 	}
       
 15672 
       
 15673 TPtrC CCTSYIntegrationTestCallControl0051::GetTestStepName()
       
 15674 /**
       
 15675  * @return The test step name.
       
 15676  */
       
 15677 	{
       
 15678 	return  _L("CCTSYIntegrationTestCallControl0051");
       
 15679 	}
       
 15680 
       
 15681 
       
 15682 
       
 15683 CCTSYIntegrationTestCallControl0052::CCTSYIntegrationTestCallControl0052(CEtelSessionMgr& aEtelSessionMgr)
       
 15684 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 15685 /**
       
 15686  * Constructor.
       
 15687  */
       
 15688 	{
       
 15689 	SetTestStepName(CCTSYIntegrationTestCallControl0052::GetTestStepName());
       
 15690 	}
       
 15691 
       
 15692 CCTSYIntegrationTestCallControl0052::~CCTSYIntegrationTestCallControl0052()
       
 15693 /**
       
 15694  * Destructor.
       
 15695  */
       
 15696 	{
       
 15697 	}
       
 15698 
       
 15699 TVerdict CCTSYIntegrationTestCallControl0052::doTestStepL()
       
 15700 /**
       
 15701  * @SYMTestCaseID BA-CTSY-INT-CCON-0052
       
 15702  * @SYMFssID BA/CTSY/CCON-0052
       
 15703  * @SYMTestCaseDesc Cancel call duration notifications.
       
 15704  * @SYMTestPriority High
       
 15705  * @SYMTestActions RCall::NotifyCallDurationChange, RCall::NotifyCallDurationChangeCancel
       
 15706  * @SYMTestExpectedResults Pass - Call duration cancelled.
       
 15707  * @SYMTestType CIT
       
 15708  * @SYMTestCaseDependencies live/automatic
       
 15709  *
       
 15710  * Reason for test: Verify notification of call duration cancelled.
       
 15711  *
       
 15712  * @return - TVerdict code
       
 15713  */
       
 15714 	{
       
 15715 
       
 15716 	////////////////////////////////////////////////////////////////
       
 15717 	// SET UP
       
 15718 	////////////////////////////////////////////////////////////////
       
 15719 
       
 15720 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 15721 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 15722  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
 15723 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 15724 	
       
 15725 	// Check phone supports KCapsVoice.
       
 15726 	RPhone::TCaps phoneCaps; 
       
 15727     CHECK_EQUALS_L(phone.GetCaps(phoneCaps), KErrNone, _L("RPhone::GetCaps returned an error"));
       
 15728     CHECK_BITS_SET_L(phoneCaps.iFlags, RPhone::KCapsVoice, KNoUnwantedBits, _L("RPhone::GetCaps returned wrong caps"));
       
 15729 
       
 15730 	// Get Voice line 1. 
       
 15731     RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
 15732 
       
 15733 	// Get call 1. 
       
 15734 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
 15735 
       
 15736 	////////////////////////////////////////////////////////////////
       
 15737 	// SET UP END
       
 15738 	////////////////////////////////////////////////////////////////
       
 15739 	
       
 15740 	StartTest();
       
 15741 	
       
 15742 	////////////////////////////////////////////////////////////////
       
 15743 	// TEST START
       
 15744 	////////////////////////////////////////////////////////////////
       
 15745 	
       
 15746 	
       
 15747 	// Register for notification of call duration with RCall::NotifyCallDurationChange 
       
 15748     TCoreEtelRequestStatus<RCall> notifyCallDurationChangeStatus(call1, &RCall::NotifyCallDurationChangeCancel);
       
 15749     CleanupStack::PushL(notifyCallDurationChangeStatus);
       
 15750     TTimeIntervalSeconds notifyDuration;
       
 15751     call1.NotifyCallDurationChange(notifyCallDurationChangeStatus, notifyDuration);
       
 15752 
       
 15753 	// Cancel notification 
       
 15754     call1.NotifyCallDurationChangeCancel();
       
 15755 
       
 15756 	// Check status is KErrCancel 
       
 15757     ASSERT_EQUALS(notifyCallDurationChangeStatus.Int(), KErrCancel, _L("RCall::NotifyCallDurationChange is not KErrCancel"));
       
 15758 	
       
 15759 	////////////////////////////////////////////////////////////////
       
 15760 	// TEST END
       
 15761 	////////////////////////////////////////////////////////////////
       
 15762 
       
 15763     StartCleanup();
       
 15764 	
       
 15765 	// Pop
       
 15766 	// notifyCallDurationChangeStatus
       
 15767     CleanupStack::PopAndDestroy(&notifyCallDurationChangeStatus);
       
 15768 	
       
 15769 	return TestStepResult();
       
 15770 	}
       
 15771 
       
 15772 TPtrC CCTSYIntegrationTestCallControl0052::GetTestStepName()
       
 15773 /**
       
 15774  * @return The test step name.
       
 15775  */
       
 15776 	{
       
 15777 	return  _L("CCTSYIntegrationTestCallControl0052");
       
 15778 	}
       
 15779 
       
 15780 
       
 15781 
       
 15782 CCTSYIntegrationTestCallControl0053::CCTSYIntegrationTestCallControl0053(CEtelSessionMgr& aEtelSessionMgr)
       
 15783 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 15784 /**
       
 15785  * Constructor.
       
 15786  */
       
 15787 	{
       
 15788 	SetTestStepName(CCTSYIntegrationTestCallControl0053::GetTestStepName());
       
 15789 	}
       
 15790 
       
 15791 CCTSYIntegrationTestCallControl0053::~CCTSYIntegrationTestCallControl0053()
       
 15792 /**
       
 15793  * Destructor.
       
 15794  */
       
 15795 	{
       
 15796 	}
       
 15797 
       
 15798 TVerdict CCTSYIntegrationTestCallControl0053::doTestStepL()
       
 15799 /**
       
 15800  * @SYMTestCaseID BA-CTSY-INT-CCON-0053
       
 15801  * @SYMFssID BA/CTSY/CCON-0053
       
 15802  * @SYMTestCaseDesc Close the phone when incoming call is coming (with 2 clients).
       
 15803  * @SYMTestPriority High
       
 15804  * @SYMTestActions RTelServer::LoadPhoneModule, RTelServer::Close, RLine::Open, RLine::NotifyIncomingCall, RPhone::Open, RLine::Close, RTelServer::Connect, RCall::OpenNewCall, RCall::Close, RPhone::Close
       
 15805  * @SYMTestExpectedResults Pass - Incoming call notification received. Subsessions closed successfully.
       
 15806  * @SYMTestType CIT
       
 15807  * @SYMTestCaseDependencies live/automatic
       
 15808  *
       
 15809  * Reason for test: Verify incoming call notification completes and phone and line can be closed.
       
 15810  *
       
 15811  * @return - TVerdict code
       
 15812  */
       
 15813 	{
       
 15814 
       
 15815 	////////////////////////////////////////////////////////////////
       
 15816 	// SET UP
       
 15817 	////////////////////////////////////////////////////////////////
       
 15818 
       
 15819 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 15820 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 15821  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
 15822 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));	
       
 15823 
       
 15824 	////////////////////////////////////////////////////////////////
       
 15825 	// SET UP END
       
 15826 	////////////////////////////////////////////////////////////////
       
 15827 	
       
 15828 	StartTest();
       
 15829 	
       
 15830 	////////////////////////////////////////////////////////////////
       
 15831 	// TEST START
       
 15832 	////////////////////////////////////////////////////////////////
       
 15833 	
       
 15834 	// Get voice line 1 on main phone. This is the first client. 
       
 15835 	RMobileLine& mobileLine= iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
 15836 
       
 15837 	// Get voice line 1 on alt phone. This is the second client. 
       
 15838 	RMobileLine& mobileLine2= iEtelSessionMgr.GetLineL(KAltServer, KMainPhone, KVoiceLine);
       
 15839 	
       
 15840 	// Register for notification of incoming call1 with RLine::NotifyIncomingCall 
       
 15841 	TName name;
       
 15842 	TCoreEtelRequestStatus<RLine> notifyIncomingCallStatus (mobileLine,&RLine::NotifyIncomingCallCancel);
       
 15843 	CleanupStack::PushL(notifyIncomingCallStatus);
       
 15844 	mobileLine.NotifyIncomingCall(notifyIncomingCallStatus,name);
       
 15845 	
       
 15846 	// Register for notification of incoming call2 with RLine::NotifyIncomingCall
       
 15847 	TName name2;
       
 15848 	TCoreEtelRequestStatus<RLine> notifyIncomingCallStatus2 (mobileLine2,&RLine::NotifyIncomingCallCancel);
       
 15849 	CleanupStack::PushL(notifyIncomingCallStatus2);
       
 15850 	mobileLine2.NotifyIncomingCall(notifyIncomingCallStatus2,name2);
       
 15851 		
       
 15852 	// Request an incoming call from RPS 
       
 15853 	ASSERT_EQUALS (RPSRequestIncomingCallL(EVoiceLine), KErrNone, _L("CCTSYIntegrationTestSuiteStepBase::RPSRequestIncomingCallL returned an error"));
       
 15854 
       
 15855 	// Check RLine::NotifyIncomingCall completes with KErrNone on both clients.
       
 15856 	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyIncomingCallStatus,ETimeMedium),KErrNone,_L("RLine::NotifyIncomingCall (1) timed out"));
       
 15857 	ASSERT_EQUALS(notifyIncomingCallStatus.Int(), KErrNone, _L("RLine::NotifyIncomingCall (1) returned with an error"));
       
 15858 	
       
 15859 	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyIncomingCallStatus2,ETimeMedium),KErrNone,_L("RLine::NotifyIncomingCall (2) timed out"));
       
 15860 	ASSERT_EQUALS(notifyIncomingCallStatus2.Int(), KErrNone, _L("RLine::NotifyIncomingCall (2) returned with an error"));
       
 15861 
       
 15862 	// Release main phone. 
       
 15863 	iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
 15864 	
       
 15865 	// Release alt phone. 
       
 15866 	iEtelSessionMgr.GetLineL(KAltServer, KMainPhone, KVoiceLine);
       
 15867 
       
 15868 	
       
 15869 	////////////////////////////////////////////////////////////////
       
 15870 	// TEST END
       
 15871 	////////////////////////////////////////////////////////////////
       
 15872 
       
 15873     StartCleanup();
       
 15874 	
       
 15875 	// Pop
       
 15876 	// notifyIncomingCallStatus
       
 15877 	// notifyIncomingCallStatus2
       
 15878 	
       
 15879 	CleanupStack::PopAndDestroy(2,&notifyIncomingCallStatus);
       
 15880 	
       
 15881 	return TestStepResult();
       
 15882 	}
       
 15883 
       
 15884 TPtrC CCTSYIntegrationTestCallControl0053::GetTestStepName()
       
 15885 /**
       
 15886  * @return The test step name.
       
 15887  */
       
 15888 	{
       
 15889 	return  _L("CCTSYIntegrationTestCallControl0053");
       
 15890 	}
       
 15891 
       
 15892 
       
 15893 
       
 15894 CCTSYIntegrationTestCallControl0054::CCTSYIntegrationTestCallControl0054(CEtelSessionMgr& aEtelSessionMgr)
       
 15895 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 15896 /**
       
 15897  * Constructor.
       
 15898  */
       
 15899 	{
       
 15900 	SetTestStepName(CCTSYIntegrationTestCallControl0054::GetTestStepName());
       
 15901 	}
       
 15902 
       
 15903 CCTSYIntegrationTestCallControl0054::~CCTSYIntegrationTestCallControl0054()
       
 15904 /**
       
 15905  * Destructor.
       
 15906  */
       
 15907 	{
       
 15908 	}
       
 15909 
       
 15910 TVerdict CCTSYIntegrationTestCallControl0054::doTestStepL()
       
 15911 /**
       
 15912  * @SYMTestCaseID BA-CTSY-INT-CCON-0054
       
 15913  * @SYMFssID BA/CTSY/CCON-0054
       
 15914  * @SYMTestCaseDesc Answer incoming call and hang up call.
       
 15915  * @SYMTestPriority High
       
 15916  * @SYMTestActions RMobileLine::NotifyMobileLineStatusChange,
       
 15917  *                 RLine::GetCallInfo,
       
 15918  *                 RLine::NotifyIncomingCall,
       
 15919  *                 RCall::OpenExistingCall, RLine::GetStatus,
       
 15920  *                 RCall::AnswerIncomingCall,
       
 15921  *                 RMobileLine::GetMobileLineStatus,
       
 15922  *                 RLine::GetInfo
       
 15923  * @SYMTestExpectedResults Pass - Call can be answered and line status is correct.
       
 15924  * @SYMTestType CIT
       
 15925  * @SYMTestCaseDependencies live/automatic
       
 15926  *
       
 15927  * Reason for test: Verify call can be answered with specified
       
 15928  * params and line status, and line info correct.
       
 15929  *
       
 15930  * @return - TVerdict code
       
 15931  */
       
 15932 	{
       
 15933 
       
 15934 	////////////////////////////////////////////////////////////////
       
 15935 	// SET UP
       
 15936 	////////////////////////////////////////////////////////////////
       
 15937 
       
 15938 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 15939 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 15940  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
 15941 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 15942 
       
 15943 	// Check phone supports KCapsVoice.
       
 15944 	RPhone::TCaps phoneCaps; 
       
 15945 	CHECK_EQUALS_L(phone.GetCaps(phoneCaps), KErrNone, _L("RPhone::GetCaps returned an error"));
       
 15946 	CHECK_BITS_SET_L(phoneCaps.iFlags, RPhone::KCapsVoice, KNoUnwantedBits,  _L("RPhone::GetCaps returned wrong caps, shouydl be KCapsVoice"));
       
 15947 	
       
 15948 	// Get Voice line 1. 
       
 15949 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
 15950 
       
 15951 	// Get call 1. 
       
 15952 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
 15953 
       
 15954 	////////////////////////////////////////////////////////////////
       
 15955 	// SET UP END
       
 15956 	////////////////////////////////////////////////////////////////
       
 15957 	
       
 15958 	StartTest();
       
 15959 	
       
 15960 	////////////////////////////////////////////////////////////////
       
 15961 	// TEST START
       
 15962 	////////////////////////////////////////////////////////////////
       
 15963 	
       
 15964 	// post notify RLine::NotifyIncomingCall
       
 15965 	TCoreEtelRequestStatus<RLine> notifyIncomingCallStatus (voiceLine, &RLine::NotifyIncomingCallCancel);
       
 15966 	CleanupStack::PushL(notifyIncomingCallStatus);
       
 15967 	TName incomingCallName;
       
 15968 	voiceLine.NotifyIncomingCall(notifyIncomingCallStatus, incomingCallName);
       
 15969 	
       
 15970 	// post notifier for RLine::NotifyStatusChange
       
 15971 	TCoreEtelRequestStatus<RLine> notifyStatusChangeStatus (voiceLine, &RLine::NotifyStatusChangeCancel);
       
 15972 	CleanupStack::PushL(notifyStatusChangeStatus);
       
 15973 	RCall::TStatus lineStatus;
       
 15974 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus, lineStatus);
       
 15975 	
       
 15976 	// Request an incoming call from RPS. 
       
 15977 	ASSERT_EQUALS(RPSRequestIncomingCallL(EVoiceLine), KErrNone, _L("CCTSYIntegrationTestSuiteStepBase::RPSRequestIncomingCallL returned an error"));
       
 15978 
       
 15979 	// Check RLine::NotifyIncomingCall completes.
       
 15980 	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyIncomingCallStatus, ETimeMedium), KErrNone, 
       
 15981 			_L("RLine::NotifyIncomingCall did not complete without error"));
       
 15982 	ASSERT_EQUALS(notifyIncomingCallStatus.Int(), KErrNone, _L("RLine::NotifyIncomingCall returned an error"));
       
 15983 
       
 15984 	// Get the incoming call
       
 15985 	TCallId incomingCallId;
       
 15986 	call1 = iEtelSessionMgr.GetIncomingCallL(KMainServer, KMainPhone, KVoiceLine, incomingCallName, incomingCallId);
       
 15987 
       
 15988 	// ===  Check line status ===
       
 15989 
       
 15990 	// Check RLine::NotifyStatusChange completes with EStatusRinging
       
 15991 	RCall::TStatus expectedCallStatus = RCall::EStatusRinging;
       
 15992 	TInt expectedStatus = KErrNone;  	
       
 15993 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
 15994 														 notifyStatusChangeStatus,
       
 15995 														 lineStatus,
       
 15996 														 expectedCallStatus,
       
 15997 														 expectedStatus);
       
 15998 
       
 15999 	// Check RLine::GetStatus returns EStatusRinging
       
 16000 	ASSERT_EQUALS(voiceLine.GetStatus(lineStatus),KErrNone, _L("RLine::GetStatus returned an error"));
       
 16001 	ASSERT_EQUALS(lineStatus, RCall::EStatusRinging, _L("RLine::GetStatus returned wrong status, should be EStatusRinging"));
       
 16002 	
       
 16003 	// ===  Check line info ===
       
 16004 
       
 16005 	// Check RLine::GetCallInfo returns correct call name.
       
 16006 	// Get the latest created call id. Call indexing starts from 0, so decrease it with one.
       
 16007 	TInt numberOfCalls;
       
 16008 	voiceLine.EnumerateCall(numberOfCalls);
       
 16009 	numberOfCalls-=1;
       
 16010 	RLine::TCallInfo callInfo;
       
 16011 	ASSERT_EQUALS(voiceLine.GetCallInfo(numberOfCalls, callInfo), KErrNone, _L("RLine::GetCallInfo returned an error"));
       
 16012 	ASSERT_TRUE(callInfo.iCallName.Length() > 0, _L("RLine::GetCallInfo returned an invalid  name"));
       
 16013 
       
 16014 	// Check RLine::GetCallInfo returns caps in set of KCapsVoice | KCapsAnswer.
       
 16015 	ASSERT_BITS_SET(callInfo.iCallCapsFlags, RCall::KCapsVoice | RCall::KCapsAnswer, KNoUnwantedBits , 
       
 16016 			_L("RLine::GetCallInfo returned wrong caps"));	
       
 16017 	// Check RLine::GetCallInfo returns status of EStatusRinging
       
 16018 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusRinging, _L("RLine::GetCallInfo wrong iStatus, should be EStatusRinging"));
       
 16019 
       
 16020 	// Populate a RMobileCall::TMobileCallParamsV1 with: 
       
 16021 	RMobileCall::TMobileCallParamsV1 mobileCallParams;
       
 16022 	RMobileCall::TMobileCallParamsV1Pckg mobileCallParamsPckg(mobileCallParams);
       
 16023 
       
 16024 	// ? iSpeakerControl = EMonitorSpeakerControlAlwaysOff 
       
 16025 	mobileCallParams.iSpeakerControl = RCall::EMonitorSpeakerControlAlwaysOff;
       
 16026 	
       
 16027 	// ?iSpeakerVolume = EMonitorSpeakerVolumeOff 
       
 16028 	mobileCallParams.iSpeakerVolume = RCall::EMonitorSpeakerVolumeOff;
       
 16029 	
       
 16030 	// ?iInterval = 0x01 
       
 16031 	mobileCallParams.iInterval = 0x01;
       
 16032 	
       
 16033 	// ?iWaitForDialTone = EDialToneWait 
       
 16034 	mobileCallParams.iWaitForDialTone = RCall::EDialToneWait;
       
 16035 	
       
 16036 	// ?iIdRestrict = EIdRestrictDefault 
       
 16037 	mobileCallParams.iIdRestrict = RMobileCall::EIdRestrictDefault;
       
 16038 	
       
 16039 	// ?iExplicitInvoke = TRUE 
       
 16040 	mobileCallParams.iCug.iExplicitInvoke = TRUE;
       
 16041 	
       
 16042 	// ?iCugIndex = 0x0000 
       
 16043 	mobileCallParams.iCug.iCugIndex = 0x0000;
       
 16044 
       
 16045 	// ?iSuppressOA = FALSE 
       
 16046 	mobileCallParams.iCug.iSuppressOA = FALSE;
       
 16047 
       
 16048 	// ?iSuppressPrefCug = FALSE 
       
 16049 	mobileCallParams.iCug.iSuppressPrefCug = FALSE;
       
 16050 
       
 16051 	// ?iAutoRedial = FALSE 
       
 16052 	mobileCallParams.iAutoRedial = FALSE;
       
 16053 
       
 16054 	// post a notifier for RMobileLine::NotifyMobileLineStatusChange
       
 16055 	RMobileCall::TMobileCallStatus mobileLineStatus;
       
 16056 	TExtEtelRequestStatus notifyMobileLineChangeStatus(voiceLine, EMobileLineNotifyMobileLineStatusChange);
       
 16057 	CleanupStack::PushL(notifyMobileLineChangeStatus);
       
 16058 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
 16059 
       
 16060 	// post notifier for RLine::NotifyStatusChange
       
 16061 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
 16062 
       
 16063 	// Answer incoming call by calling RCall::AnswerIncomingCall and using TMobileCallParamsV1 
       
 16064 	ASSERT_EQUALS(call1.AnswerIncomingCall(mobileCallParamsPckg), KErrNone, _L("RCall::AnswerIncomingCall returned an error"));
       
 16065 
       
 16066 	// ===  Check line status ===
       
 16067 
       
 16068 	// Check RLine::NotifyStatusChange completes with EStatusAnswering -> EStatusConnected.
       
 16069 	expectedCallStatus = RCall::EStatusAnswering;
       
 16070 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
 16071 														 notifyStatusChangeStatus,
       
 16072 														 lineStatus,
       
 16073 														 expectedCallStatus,
       
 16074 														 expectedStatus);
       
 16075 
       
 16076 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
 16077 	expectedCallStatus = RCall::EStatusConnected;	
       
 16078 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
 16079 														 notifyStatusChangeStatus,
       
 16080 														 lineStatus,
       
 16081 														 expectedCallStatus,
       
 16082 														 expectedStatus);
       
 16083 
       
 16084 	// Check RLine::GetStatus returns EStatusConnected
       
 16085 	ASSERT_EQUALS(voiceLine.GetStatus(lineStatus),KErrNone, _L("RLine::GetStatus returned an error"));
       
 16086 	ASSERT_EQUALS(lineStatus, RCall::EStatusConnected, _L("RLine::GetStatus returned wrong status, should be EStatusConnected"));
       
 16087 
       
 16088 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusAnswering -> EStatusConnected.
       
 16089 	TInt wantedStatus = KErrNone;
       
 16090 	RMobileCall::TMobileCallStatus expectedMobileLineStatus = RMobileCall::EStatusAnswering;
       
 16091 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
 16092 																		notifyMobileLineChangeStatus,
       
 16093 																		mobileLineStatus,
       
 16094 																		expectedMobileLineStatus,
       
 16095 																		wantedStatus);
       
 16096 	
       
 16097 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);	
       
 16098 	expectedMobileLineStatus = RMobileCall::EStatusConnected;
       
 16099 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
 16100 																		notifyMobileLineChangeStatus,
       
 16101 																		mobileLineStatus,
       
 16102 																		expectedMobileLineStatus,
       
 16103 																		wantedStatus);
       
 16104 	
       
 16105 	// Check RMobileLine::GetMobileLineStatus returns EStatusConnected
       
 16106 	ASSERT_EQUALS(voiceLine.GetMobileLineStatus(mobileLineStatus), KErrNone, 
       
 16107 			_L("RMobileLine::GetMobileLineStatus returned an error"));
       
 16108 	ASSERT_EQUALS(mobileLineStatus, RMobileCall::EStatusConnected,
       
 16109 			_L("RMobileLine::GetMobileLineStatus did not return EStatusConnected as expected"));
       
 16110 
       
 16111 	// ===  Check line info ===
       
 16112 
       
 16113 	// Check RLine::GetCallInfo returns valid name.
       
 16114 	// Check RLine::GetCallInfo returns caps in set of KCapsHangUp.
       
 16115 	// Check RLine::GetCallInfo returns status of EStatusConnected.
       
 16116 	ASSERT_EQUALS(voiceLine.GetCallInfo(numberOfCalls, callInfo), KErrNone, _L("RLine::GetCallInfo returned an error"));
       
 16117 	ASSERT_TRUE(callInfo.iCallName.Length()>0, _L("RLine::GetCallInfo returned an invalid  name"));
       
 16118 	ASSERT_BITS_SET(callInfo.iCallCapsFlags, RCall::KCapsHangUp, KNoUnwantedBits , 
       
 16119 			_L("RLine::GetCallInfo returned wrong caps"));	
       
 16120 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusConnected, _L("RLine::GetCallInfo wrong iStatus, should be EStatusConnected"));
       
 16121 
       
 16122 	// Check RLine::GetInfo returns status of EStatusConnected.
       
 16123 	RLine::TLineInfo lineInfo;
       
 16124 	ASSERT_EQUALS(voiceLine.GetInfo(lineInfo),KErrNone, _L("RLine::GetInfo returned an error")); 
       
 16125 	ASSERT_EQUALS(lineInfo.iStatus, RCall::EStatusConnected, _L("RLine::GetInfo did not return EStatusConnected"));
       
 16126 
       
 16127 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
 16128 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);	
       
 16129 
       
 16130 	// Hang up the call 
       
 16131 	TCoreEtelRequestStatus<RCall> hangUpStatus (call1, &RCall::HangUpCancel);	
       
 16132 	CleanupStack::PushL(hangUpStatus);
       
 16133 	call1.HangUp(hangUpStatus);
       
 16134 	ASSERT_EQUALS(WaitForRequestWithTimeOut(hangUpStatus, ETimeLong), KErrNone, _L("RCall::HangUp timed-out"));
       
 16135 	ASSERT_EQUALS(hangUpStatus.Int(), KErrNone, _L("RCall::HangUp returned an error"));	
       
 16136 
       
 16137 	// ===  Check line status ===
       
 16138 
       
 16139 	// Check RLine::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle
       
 16140 	expectedCallStatus = RCall::EStatusHangingUp;	
       
 16141 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
 16142 														 notifyStatusChangeStatus,
       
 16143 														 lineStatus,
       
 16144 														 expectedCallStatus,
       
 16145 														 expectedStatus);
       
 16146 
       
 16147 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus,lineStatus);
       
 16148 	expectedCallStatus = RCall::EStatusIdle;	
       
 16149 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
 16150 														 notifyStatusChangeStatus,
       
 16151 														 lineStatus,
       
 16152 														 expectedCallStatus,
       
 16153 														 expectedStatus);
       
 16154 
       
 16155 	// Check RLine::GetStatus returns EStatusIdle
       
 16156 	ASSERT_EQUALS(voiceLine.GetStatus(lineStatus),KErrNone, _L("RLine::GetStatus returned an error"));
       
 16157 	ASSERT_EQUALS(lineStatus, RCall::EStatusIdle, _L("RLine::GetStatus returned wrong status, should be EStatusIdle"));
       
 16158 	
       
 16159 	// Check RMobileLine::NotifyMobileLineStatusChange completes with EStatusDisconnecting -> EStatusIdle
       
 16160 	expectedMobileLineStatus = RMobileCall::EStatusDisconnecting;
       
 16161 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
 16162 																		notifyMobileLineChangeStatus,
       
 16163 																		mobileLineStatus,
       
 16164 																		expectedMobileLineStatus,
       
 16165 																		wantedStatus);
       
 16166 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);	
       
 16167 	expectedMobileLineStatus = RMobileCall::EStatusIdle;
       
 16168 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
 16169 																		notifyMobileLineChangeStatus,
       
 16170 																		mobileLineStatus,
       
 16171 																		expectedMobileLineStatus,
       
 16172 																		wantedStatus);
       
 16173 
       
 16174 	// Check RMobileLine::GetMobileLineStatus returns EStatusIdle
       
 16175 	ASSERT_EQUALS(voiceLine.GetMobileLineStatus(mobileLineStatus), KErrNone, 
       
 16176 			_L("RMobileLine::GetMobileLineStatus returned an error"));
       
 16177 	ASSERT_EQUALS(mobileLineStatus, RMobileCall::EStatusIdle,
       
 16178 			_L("RMobileLine::GetMobileLineStatus did not return EStatusIdle as expected"));
       
 16179 
       
 16180 	// ===  Check line info ===
       
 16181 
       
 16182 	// Check RLine::GetCallInfo returns valid name.
       
 16183 	// Check RLine::GetCallInfo returns caps in set of KCapsVoice | KCapsDial.
       
 16184 	// Check RLine::GetCallInfo returns status of EStatusIdle.
       
 16185 	ASSERT_EQUALS(voiceLine.GetCallInfo(numberOfCalls, callInfo), KErrNone, _L("RLine::GetCallInfo returned an error"));
       
 16186 	ASSERT_TRUE(callInfo.iCallName.Length() > 0, _L("RLine::GetCallInfo returned an invalid  name"));
       
 16187 	ASSERT_BITS_SET(callInfo.iCallCapsFlags, RCall::KCapsVoice | RCall::KCapsDial, KNoUnwantedBits , 
       
 16188 			_L("RLine::GetCallInfo returned wrong caps"));	
       
 16189 	ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusIdle, _L("RLine::GetCallInfo wrong iStatus, should be EStatusIdle"));
       
 16190 
       
 16191 	// Check RLine::GetInfo returns status of EStatusIdle.
       
 16192 	ASSERT_EQUALS(voiceLine.GetInfo(lineInfo), KErrNone, _L("RLine::GetInfo returned an error")); 
       
 16193 	ASSERT_EQUALS(lineInfo.iStatus, RCall::EStatusIdle,	_L("RLine::GetInfo did not return EStatusIdle"));
       
 16194 
       
 16195 	
       
 16196 	////////////////////////////////////////////////////////////////
       
 16197 	// TEST END
       
 16198 	////////////////////////////////////////////////////////////////
       
 16199 
       
 16200     StartCleanup();
       
 16201 	
       
 16202 	// Pop
       
 16203 	// notifyIncomingCallStatus
       
 16204 	// notifyStatusChangeStatus
       
 16205 	// notifyMobileLineChangeStatus
       
 16206 	// hangUpStatus
       
 16207 	CleanupStack::PopAndDestroy(4, &notifyIncomingCallStatus);
       
 16208 	
       
 16209 	return TestStepResult();
       
 16210 	}
       
 16211 
       
 16212 TPtrC CCTSYIntegrationTestCallControl0054::GetTestStepName()
       
 16213 /**
       
 16214  * @return The test step name.
       
 16215  */
       
 16216 	{
       
 16217 	return  _L("CCTSYIntegrationTestCallControl0054");
       
 16218 	}
       
 16219 
       
 16220 
       
 16221 
       
 16222 CCTSYIntegrationTestCallControl0055::CCTSYIntegrationTestCallControl0055(CEtelSessionMgr& aEtelSessionMgr)
       
 16223 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 16224 /**
       
 16225  * Constructor.
       
 16226  */
       
 16227 	{
       
 16228 	SetTestStepName(CCTSYIntegrationTestCallControl0055::GetTestStepName());
       
 16229 	}
       
 16230 
       
 16231 CCTSYIntegrationTestCallControl0055::~CCTSYIntegrationTestCallControl0055()
       
 16232 /**
       
 16233  * Destructor.
       
 16234  */
       
 16235 	{
       
 16236 	}
       
 16237 
       
 16238 TVerdict CCTSYIntegrationTestCallControl0055::doTestStepL()
       
 16239 /**
       
 16240  * @SYMTestCaseID BA-CTSY-INT-CCON-0055
       
 16241  * @SYMFssID BA/CTSY/CCON-0055
       
 16242  * @SYMTestCaseDesc Answer incoming call then have remote party hang up.
       
 16243  * @SYMTestPriority High
       
 16244  * @SYMTestActions RMobileLine::NotifyMobileLineStatusChange,
       
 16245  *                 RLine::GetCallInfo,
       
 16246  *                 RLine::NotifyIncomingCall,
       
 16247  *                 RCall::OpenExistingCall, RLine::GetStatus,
       
 16248  *                 RCall::AnswerIncomingCall,
       
 16249  *                 RMobileLine::GetMobileLineStatus,
       
 16250  *                 RLine::GetInfo
       
 16251  * @SYMTestExpectedResults Pass - Line status correct after remote party hangs up.
       
 16252  * @SYMTestType CIT
       
 16253  * @SYMTestCaseDependencies rps/automatic
       
 16254  *
       
 16255  * Reason for test: Verify call can be answered with specified
       
 16256  * params and line status, and line info correct.
       
 16257  *
       
 16258  * @return - TVerdict code
       
 16259  */
       
 16260 	{
       
 16261 
       
 16262 	////////////////////////////////////////////////////////////////
       
 16263 	// SET UP
       
 16264 	////////////////////////////////////////////////////////////////
       
 16265 
       
 16266 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 16267 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 16268  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
 16269 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 16270 	
       
 16271 	// Check phone supports KCapsVoice
       
 16272    	RPhone::TCaps phoneCaps;
       
 16273     CHECK_EQUALS_L(phone.GetCaps(phoneCaps), KErrNone, _L("RPhone::GetCaps returned an error"));
       
 16274     CHECK_BITS_SET_L(phoneCaps.iFlags, RPhone::KCapsVoice, KNoUnwantedBits, _L("RPhone::GetCaps returned wrong caps"));
       
 16275 
       
 16276 	// Get Voice line 1 
       
 16277     RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
 16278 
       
 16279 	// Get call 1. 
       
 16280 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
 16281 
       
 16282 	////////////////////////////////////////////////////////////////
       
 16283 	// SET UP END
       
 16284 	////////////////////////////////////////////////////////////////
       
 16285 	
       
 16286 	StartTest();
       
 16287 	
       
 16288 	////////////////////////////////////////////////////////////////
       
 16289 	// TEST START
       
 16290 	////////////////////////////////////////////////////////////////
       
 16291 	
       
 16292 	// Post notification RLine::NotifyIncomingCall
       
 16293 	TCoreEtelRequestStatus<RLine> notifyIncomingCallStatus(voiceLine, &RLine::NotifyIncomingCallCancel);
       
 16294 	CleanupStack::PushL(notifyIncomingCallStatus);
       
 16295 	TName incomingCallName;
       
 16296 	incomingCallName.Zero();
       
 16297 	voiceLine.NotifyIncomingCall(notifyIncomingCallStatus, incomingCallName);
       
 16298 
       
 16299 	// Post notifier for RLine::NotifyStatusChange
       
 16300 	TCoreEtelRequestStatus<RLine> notifyStatusChangeStatus (voiceLine, &RLine::NotifyStatusChangeCancel);
       
 16301 	CleanupStack::PushL(notifyStatusChangeStatus);
       
 16302 	RCall::TStatus lineStatus;
       
 16303 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus, lineStatus);
       
 16304 
       
 16305 	// Request an incoming call from RPS. 
       
 16306 	ASSERT_EQUALS(RPSRequestIncomingCallL(EVoiceLine), KErrNone, _L("CCTSYIntegrationTestSuiteStepBase::RPSRequestIncomingCallL returned an error"));
       
 16307 
       
 16308 	// Check RLine::NotifyIncomingCall completes.
       
 16309     ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyIncomingCallStatus, ETimeMedium), KErrNone, 
       
 16310                   _L("RLine::NotifyIncomingCall timed-out."));
       
 16311     ASSERT_EQUALS(notifyIncomingCallStatus.Int(), KErrNone,
       
 16312                    _L( "RLine::NotifyIncomingCall returned with an error."));
       
 16313     ASSERT_TRUE(incomingCallName.Length() > 0,  
       
 16314                 _L("RLine::NotifyIncomingCall completed with invalid call name."));	
       
 16315 
       
 16316 	// Get the incoming call
       
 16317 	TCallId incomingCallId;
       
 16318 	call1 = iEtelSessionMgr.GetIncomingCallL(KMainServer, KMainPhone, KVoiceLine, incomingCallName, incomingCallId);
       
 16319 
       
 16320 	// ===  Check line status ===
       
 16321 
       
 16322 	// Check RLine::NotifyStatusChange completes with EStatusRinging
       
 16323     RCall::TStatus expectedLineStatus = RCall::EStatusRinging;	
       
 16324     iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
 16325                                                          notifyStatusChangeStatus,
       
 16326                                                          lineStatus,
       
 16327                                                          expectedLineStatus,
       
 16328                                                          KErrNone);
       
 16329 
       
 16330 	// Check RLine::GetStatus returns EStatusRinging
       
 16331     ASSERT_EQUALS(voiceLine.GetStatus(lineStatus), KErrNone, _L("RLine::GetStatus returned an error."));
       
 16332     ASSERT_EQUALS(lineStatus, RCall::EStatusRinging, _L("RLine::GetStatus did not return EStatusRinging as expected."));
       
 16333 
       
 16334 	// ===  Check line info ===
       
 16335 
       
 16336 	// Check RLine::GetCallInfo returns correct call name.
       
 16337     RLine::TCallInfo callInfo;
       
 16338     ASSERT_EQUALS(voiceLine.GetCallInfo(incomingCallId, callInfo), KErrNone, _L( "RLine::GetCallInfo returned an error"));
       
 16339     ASSERT_TRUE(callInfo.iCallName.Length() > 0, _L("RLine::GetCallInfo returned an invalid name"));
       
 16340 	
       
 16341 	// Check RLine::GetCallInfo returns caps in set of KCapsVoice | KCapsAnswer.
       
 16342 	// $CTSYProblem RLine::GetCallInfo returns wrong bits set : Got 0x44 , required 0x64
       
 16343 	// KCapsVoice=0x00000004 and KCapsAnswer=0x00000040 are OK but KCapsHangUp=0x00000020 is missing.
       
 16344     // Changed original test step to check RLine::GetCallinfo returns caps in set KCapsVoice | KCapsAnswer instead of KCapsVoice | KCapsAnswer | KCapsHangUp.
       
 16345     ASSERT_BITS_SET(callInfo.iCallCapsFlags, RCall::KCapsVoice | RCall::KCapsAnswer, KNoUnwantedBits, _L( "RLine::GetCallInfo returned wrong caps"));
       
 16346 	
       
 16347 	// Check RLine::GetCallInfo returns status of EStatusRinging
       
 16348     ASSERT_EQUALS(callInfo.iStatus, RCall::EStatusRinging, _L( "RLine::GetCallInfo did not return EStatusRinging as expected."));
       
 16349 
       
 16350 	// Populate a RMobileCall::TMobileCallParamsV1 with: 
       
 16351     RMobileCall::TMobileCallParamsV1 mobileCallParams;
       
 16352     RMobileCall::TMobileCallParamsV1Pckg mobileCallParamsPckg(mobileCallParams);
       
 16353 
       
 16354 	// ?iSpeakerControl = EMonitorSpeakerControlAlwaysOff 
       
 16355 	mobileCallParams.iSpeakerControl = RCall::EMonitorSpeakerControlAlwaysOff;
       
 16356 
       
 16357 	// ?iSpeakerVolume = EMonitorSpeakerVolumeOff 
       
 16358 	mobileCallParams.iSpeakerVolume = RCall::EMonitorSpeakerVolumeOff;
       
 16359 
       
 16360 	// ?iInterval = 0x01 
       
 16361 	mobileCallParams.iInterval = 0x01;
       
 16362 
       
 16363 	// ?iWaitForDialTone = EDialToneWait 
       
 16364 	mobileCallParams.iWaitForDialTone = RCall::EDialToneWait;
       
 16365 
       
 16366 	// ?iIdRestrict = EIdRestrictDefault 
       
 16367 	mobileCallParams.iIdRestrict = RMobileCall::EIdRestrictDefault;
       
 16368 
       
 16369 	// ?iExplicitInvoke = TRUE 
       
 16370 	mobileCallParams.iCug.iExplicitInvoke = TRUE;
       
 16371 
       
 16372 	// ?iCugIndex = 0x0000 
       
 16373 	mobileCallParams.iCug.iCugIndex = 0x0000;
       
 16374 
       
 16375 	// ?iSuppressOA = FALSE 
       
 16376 	mobileCallParams.iCug.iSuppressOA = FALSE;
       
 16377 
       
 16378 	// ?iSuppressPrefCug = FALSE 
       
 16379 	mobileCallParams.iCug.iSuppressPrefCug = FALSE;
       
 16380 
       
 16381 	// ?iAutoRedial = FALSE 
       
 16382 	mobileCallParams.iAutoRedial = FALSE;
       
 16383 
       
 16384 	// Post a notifier for RMobileLine::NotifyMobileLineStatusChange
       
 16385 	RMobileCall::TMobileCallStatus mobileLineStatus;
       
 16386 	TExtEtelRequestStatus notifyMobileLineChangeStatus(voiceLine, EMobileLineNotifyMobileLineStatusChange);
       
 16387 	CleanupStack::PushL(notifyMobileLineChangeStatus);
       
 16388 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
 16389 	
       
 16390 	// Repost notifier for RLine::NotifyStatusChange
       
 16391 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus, lineStatus);
       
 16392 	
       
 16393 	// Answer incoming call by calling RCall::AnswerIncomingCall and using TMobileCallParamsV1 
       
 16394 	ASSERT_EQUALS(call1.AnswerIncomingCall(mobileCallParamsPckg), KErrNone,
       
 16395 	              _L( "RCall::AnswerIncomingCall returned an error"));
       
 16396 
       
 16397 	// ===  Check line status ===
       
 16398 
       
 16399 	// Check RLine::NotifyStatusChange completes with EStatusAnswering -> EStatusConnected.
       
 16400 	expectedLineStatus = RCall::EStatusAnswering;	
       
 16401 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
 16402 														 notifyStatusChangeStatus,
       
 16403 														 lineStatus,
       
 16404 														 expectedLineStatus,
       
 16405 														 KErrNone);
       
 16406 	
       
 16407 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus, lineStatus);
       
 16408 	expectedLineStatus = RCall::EStatusConnected;	
       
 16409 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
 16410 														 notifyStatusChangeStatus,
       
 16411 														 lineStatus,
       
 16412 														 expectedLineStatus,
       
 16413 														 KErrNone);
       
 16414 
       
 16415 	// Check RLine::GetStatus returns EStatusConnected
       
 16416 	ASSERT_EQUALS(voiceLine.GetStatus(lineStatus), KErrNone, _L("RLine::GetStatus returned an error."));
       
 16417 	ASSERT_EQUALS(lineStatus, RCall::EStatusConnected, _L("RLine::GetStatus did not return EStatusConnected as expected."));
       
 16418 
       
 16419 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusAnswering -> EStatusConnected.
       
 16420 	RMobileCall::TMobileCallStatus expectedMobileLineStatus = RMobileCall::EStatusAnswering;
       
 16421 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
 16422 																		 notifyMobileLineChangeStatus,
       
 16423 																		 mobileLineStatus,
       
 16424 																		 expectedMobileLineStatus,
       
 16425 																		 KErrNone);
       
 16426 
       
 16427 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);																	
       
 16428 	expectedMobileLineStatus = RMobileCall::EStatusConnected;
       
 16429 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
 16430 																		 notifyMobileLineChangeStatus,
       
 16431 																		 mobileLineStatus,
       
 16432 																		 expectedMobileLineStatus,
       
 16433 																		 KErrNone);
       
 16434 
       
 16435 	// Check RMobileLine::GetMobileLineStatus returns EStatusConnected
       
 16436 	ASSERT_EQUALS(voiceLine.GetMobileLineStatus(mobileLineStatus), KErrNone, 
       
 16437 			      _L("RMobileLine::GetMobileLineStatus returned an error"));
       
 16438 	ASSERT_EQUALS(mobileLineStatus, RMobileCall::EStatusConnected,
       
 16439 			      _L("RMobileLine::GetMobileLineStatus did not return EStatusConnected as expected"));
       
 16440 
       
 16441 	// ===  Check line info ===
       
 16442 
       
 16443 	// Check RLine::GetCallInfo returns valid name.
       
 16444     RLine::TCallInfo callInfo2;
       
 16445 	ASSERT_EQUALS(voiceLine.GetCallInfo(incomingCallId, callInfo2), KErrNone, _L("RLine::GetCallInfo returned an error"));
       
 16446 	ASSERT_TRUE(callInfo2.iCallName.Length()>0, _L("RLine::GetCallInfo returned an invalid  name"));
       
 16447 	
       
 16448 	// Check RLine::GetCallInfo returns caps in set of KCapsHangUp.
       
 16449 	ASSERT_BITS_SET(callInfo2.iCallCapsFlags, RCall::KCapsHangUp, KNoUnwantedBits, _L("RLine::GetCallInfo returned wrong caps"));	
       
 16450 	
       
 16451 	// Check RLine::GetCallInfo returns status of EStatusConnected.
       
 16452 	ASSERT_EQUALS(callInfo2.iStatus, RCall::EStatusConnected, _L("RLine::GetCallInfo did not return EStatusConnected as expected."));
       
 16453 
       
 16454 	// Check RLine::GetInfo returns status of EStatusConnected.
       
 16455 	RLine::TLineInfo lineInfo;
       
 16456 	ASSERT_EQUALS(voiceLine.GetInfo(lineInfo), KErrNone, _L("RLine::GetInfo returned an error")); 
       
 16457 	ASSERT_EQUALS(lineInfo.iStatus, RCall::EStatusConnected, _L("RLine::GetInfo did not return EStatusConnected as expected."));
       
 16458 
       
 16459     // Repost notifier for RLine::NotifyStatusChange
       
 16460     voiceLine.NotifyStatusChange(notifyStatusChangeStatus, lineStatus);
       
 16461     
       
 16462     // Repost notifer for RMobileLine::NotifyMobileLineStatusChange
       
 16463     voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
 16464 
       
 16465 	// RPS hangs up the call 
       
 16466 	ASSERT_EQUALS(RPSHangupL(EVoiceLine, 0), KErrNone, _L("CCTSYIntegrationTestSuiteStepBase::RPSHangup returned an error"));
       
 16467 
       
 16468 	// ===  Check line status ===
       
 16469 
       
 16470 	// Check RLine::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle
       
 16471 	expectedLineStatus = RCall::EStatusHangingUp;	
       
 16472 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
 16473 														 notifyStatusChangeStatus,
       
 16474 														 lineStatus,
       
 16475 														 expectedLineStatus,
       
 16476 														 KErrNone);
       
 16477 														 
       
 16478 	voiceLine.NotifyStatusChange(notifyStatusChangeStatus, lineStatus);
       
 16479 	expectedLineStatus = RCall::EStatusIdle;	
       
 16480 	iCallControlTestHelper.WaitForLineNotifyStatusChange(voiceLine,
       
 16481 														 notifyStatusChangeStatus,
       
 16482 														 lineStatus,
       
 16483 														 expectedLineStatus,
       
 16484 														 KErrNone);
       
 16485 
       
 16486 	// Check RLine::GetStatus returns EStatusIdle
       
 16487 	ASSERT_EQUALS(voiceLine.GetStatus(lineStatus), KErrNone, _L("RLine::GetStatus returned an error"));
       
 16488 	ASSERT_EQUALS(lineStatus, RCall::EStatusIdle, _L("RLine::GetStatus did not return EStatusIdle as expected."));
       
 16489 
       
 16490 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusDisconnecting -> EStatusIdle
       
 16491 	expectedMobileLineStatus = RMobileCall::EStatusDisconnecting;
       
 16492 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
 16493 																		 notifyMobileLineChangeStatus,
       
 16494 																		 mobileLineStatus,
       
 16495 																		 expectedMobileLineStatus,
       
 16496 																		 KErrNone);
       
 16497 																		 
       
 16498 	voiceLine.NotifyMobileLineStatusChange(notifyMobileLineChangeStatus, mobileLineStatus);
       
 16499 	expectedMobileLineStatus = RMobileCall::EStatusIdle;
       
 16500 	iCallControlTestHelper.WaitForMobileLineNotifyMobileLineStatusChange(voiceLine,
       
 16501 																		 notifyMobileLineChangeStatus,
       
 16502 																		 mobileLineStatus,
       
 16503 																		 expectedMobileLineStatus,
       
 16504 																		 KErrNone);
       
 16505 
       
 16506 	// Check RMobileLine::GetMobileLineStatus returns EStatusIdle
       
 16507 	ASSERT_EQUALS(voiceLine.GetMobileLineStatus(mobileLineStatus), KErrNone, 
       
 16508 			      _L("RMobileLine::GetMobileLineStatus returned an error"));
       
 16509 	ASSERT_EQUALS(mobileLineStatus, RMobileCall::EStatusIdle,
       
 16510 			      _L("RMobileLine::GetMobileLineStatus did not return EStatusIdle as expected"));
       
 16511 
       
 16512 	// ===  Check line info ===
       
 16513 
       
 16514 	// Check RLine::GetCallInfo returns valid name.
       
 16515 	RLine::TCallInfo callInfo3;
       
 16516 	ASSERT_EQUALS(voiceLine.GetCallInfo(incomingCallId, callInfo3), KErrNone, _L("RLine::GetCallInfo returned an error"));
       
 16517 	ASSERT_TRUE(callInfo3.iCallName.Length() > 0, _L("RLine::GetCallInfo returned an invalid  name"));
       
 16518 	
       
 16519 	// Check RLine::GetCallInfo returns caps in set of KCapsVoice | KCapsDial.
       
 16520 	TUint expectedCallCapsFlags = RCall::KCapsVoice | RCall::KCapsDial;
       
 16521 	ASSERT_BITS_SET(callInfo3.iCallCapsFlags, expectedCallCapsFlags, KNoUnwantedBits, _L("RLine::GetCallInfo returned wrong caps"));	
       
 16522 	
       
 16523 	// Check RLine::GetCallInfo returns status of EStatusIdle.
       
 16524 	ASSERT_EQUALS(callInfo3.iStatus, RCall::EStatusIdle,
       
 16525 	              _L("RLine::GetCallInfo did not return EStatusIdle as expected."));
       
 16526 
       
 16527 	// Check RLine::GetInfo returns status of EStatusIdle.
       
 16528 	ASSERT_EQUALS(voiceLine.GetInfo(lineInfo), KErrNone, _L("RLine::GetInfo returned an error")); 
       
 16529 	ASSERT_EQUALS(lineInfo.iStatus, RCall::EStatusIdle,	_L("RLine::GetInfo did not return EStatusIdle as expected."));
       
 16530     
       
 16531 	////////////////////////////////////////////////////////////////
       
 16532 	// TEST END
       
 16533 	////////////////////////////////////////////////////////////////
       
 16534 
       
 16535     StartCleanup();
       
 16536 	
       
 16537 	// Pop
       
 16538 	// notifyIncomingCallStatus
       
 16539 	// notifyStatusChangeStatus
       
 16540 	// notifyMobileLineChangeStatus
       
 16541 	CleanupStack::PopAndDestroy(3, &notifyIncomingCallStatus);
       
 16542 	
       
 16543 	return TestStepResult();
       
 16544 	}
       
 16545 
       
 16546 TPtrC CCTSYIntegrationTestCallControl0055::GetTestStepName()
       
 16547 /**
       
 16548  * @return The test step name.
       
 16549  */
       
 16550 	{
       
 16551 	return  _L("CCTSYIntegrationTestCallControl0055");
       
 16552 	}
       
 16553 
       
 16554 
       
 16555 
       
 16556 CCTSYIntegrationTestCallControl0056::CCTSYIntegrationTestCallControl0056(CEtelSessionMgr& aEtelSessionMgr)
       
 16557 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 16558 /**
       
 16559  * Constructor.
       
 16560  */
       
 16561 	{
       
 16562 	SetTestStepName(CCTSYIntegrationTestCallControl0056::GetTestStepName());
       
 16563 	}
       
 16564 
       
 16565 CCTSYIntegrationTestCallControl0056::~CCTSYIntegrationTestCallControl0056()
       
 16566 /**
       
 16567  * Destructor.
       
 16568  */
       
 16569 	{
       
 16570 	}
       
 16571 
       
 16572 TVerdict CCTSYIntegrationTestCallControl0056::doTestStepL()
       
 16573 /**
       
 16574  * @SYMTestCaseID BA-CTSY-INT-CCON-0056
       
 16575  * @SYMFssID BA/CTSY/CCON-0056
       
 16576  * @SYMTestCaseDesc Remove SIM during call
       
 16577  * @SYMTestPriority High
       
 16578  * @SYMTestActions RMobilePhone::GetNetworkRegistrationStatus, RLine::NotifyStatusChange, RLine::GetStatus, RMobileLine::NotifyMobileLineStatusChange, RMobileLine::GetMobileLineStatus, RCall::NotifyStatusChange, RCall::GetStatus, RMobileCall::NotifyMobileCallStatusChange, RMobileCall::GetMobileCallStatus
       
 16579  * @SYMTestExpectedResults Pass - Phone is not registered on network after 35s of SIM removal.
       
 16580  * @SYMTestType CIT
       
 16581  * @SYMTestCaseDependencies live/manual
       
 16582  *
       
 16583  * Reason for test: Verify network registration status, call and line statuses are correct
       
 16584  *
       
 16585  * @return - TVerdict code
       
 16586  */
       
 16587 	{
       
 16588 
       
 16589 	////////////////////////////////////////////////////////////////
       
 16590 	// SET UP
       
 16591 	////////////////////////////////////////////////////////////////
       
 16592 
       
 16593 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 16594 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 16595  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
 16596 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 16597 	
       
 16598 	// Get Voice Line 1 
       
 16599 
       
 16600 	// Get Call 1 
       
 16601 
       
 16602 	// Dial a number that answers 
       
 16603 
       
 16604 	// Ensure call is connected before starting test 
       
 16605 
       
 16606 
       
 16607 	////////////////////////////////////////////////////////////////
       
 16608 	// SET UP END
       
 16609 	////////////////////////////////////////////////////////////////
       
 16610 	
       
 16611 	StartTest();
       
 16612 	
       
 16613 	////////////////////////////////////////////////////////////////
       
 16614 	// TEST START
       
 16615 	////////////////////////////////////////////////////////////////
       
 16616 	
       
 16617 	
       
 16618 	// Check RMobilePhone::GetNetworkRegistrationStatus returns ERegisteredOnHomeNetwork
       
 16619 
       
 16620 	// Remove SIM. 
       
 16621 
       
 16622 	// Wait for 35 seconds. 
       
 16623 
       
 16624 	// Check RMobilePhone::NotifyNetworkRegistrationStatusChange completes with one of ENotRegisteredSearching | ENotRegisteredEmergencyOnly
       
 16625 
       
 16626 	// Check RMobilePhone::GetNetworkRegistrationStatus returns one of ENotRegisteredSearching | ENotRegisteredEmergencyOnly
       
 16627 
       
 16628 	// ===  Check line status ===
       
 16629 
       
 16630 	// Check RLine::NotifyStatusChange completes with EStatusIdle
       
 16631 
       
 16632 	// Check RLine::GetStatus returns EStatusIdle
       
 16633 
       
 16634 	// Check RMobileLine::NotifyMobileLineStatusChange completes with EStatusIdle
       
 16635 
       
 16636 	// Check RMobileLine::GetMobileLineStatus returns EStatusIdle
       
 16637 
       
 16638 	// ===  Check call status ===
       
 16639 
       
 16640 	// Check RCall::NotifyStatusChange completes with EStatusIdle
       
 16641 
       
 16642 	// Check RCall::GetStatus returns EStatusIdle
       
 16643 
       
 16644 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusIdle
       
 16645 
       
 16646 	// Check RMobileCall::GetMobileCallStatus returns EStatusIdle
       
 16647 
       
 16648 	
       
 16649 	////////////////////////////////////////////////////////////////
       
 16650 	// TEST END
       
 16651 	////////////////////////////////////////////////////////////////
       
 16652 
       
 16653     StartCleanup();
       
 16654 	
       
 16655 	// Put any required test clean up here, then remove this comment
       
 16656 	
       
 16657 	return TestStepResult();
       
 16658 	}
       
 16659 
       
 16660 TPtrC CCTSYIntegrationTestCallControl0056::GetTestStepName()
       
 16661 /**
       
 16662  * @return The test step name.
       
 16663  */
       
 16664 	{
       
 16665 	return  _L("CCTSYIntegrationTestCallControl0056");
       
 16666 	}
       
 16667 
       
 16668 
       
 16669 
       
 16670 CCTSYIntegrationTestCallControl0057::CCTSYIntegrationTestCallControl0057(CEtelSessionMgr& aEtelSessionMgr)
       
 16671 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 16672 /**
       
 16673  * Constructor.
       
 16674  */
       
 16675 	{
       
 16676 	SetTestStepName(CCTSYIntegrationTestCallControl0057::GetTestStepName());
       
 16677 	}
       
 16678 
       
 16679 CCTSYIntegrationTestCallControl0057::~CCTSYIntegrationTestCallControl0057()
       
 16680 /**
       
 16681  * Destructor.
       
 16682  */
       
 16683 	{
       
 16684 	}
       
 16685 
       
 16686 TVerdict CCTSYIntegrationTestCallControl0057::doTestStepL()
       
 16687 /**
       
 16688  * @SYMTestCaseID BA-CTSY-INT-CCON-0057
       
 16689  * @SYMFssID BA/CTSY/CCON-0057
       
 16690  * @SYMTestCaseDesc Remove SIM during idle mode
       
 16691  * @SYMTestPriority High
       
 16692  * @SYMTestActions RMobileLine::NotifyMobileLineStatusChange, RMobileCall::GetMobileCallStatus, RCall::Dial, RMobilePhone::NotifyNetworkRegistrationStatusChange, RMobileCall::GetMobileCallInfo, RMobileCall::NotifyMobileCallStatusChange, RCall::NotifyStatusChange, RLine::NotifyStatusChange, RLine::GetStatus, RLine::GetStatus, RMobileLine::GetMobileLineStatus, RMobilePhone::GetNetworkRegistrationStatus, RMobileCall::DialEmergencyCall, RCall::GetStatus
       
 16693  * @SYMTestExpectedResults Pass - Only emergency numbers can be dialled without SIM.
       
 16694  * @SYMTestType CIT
       
 16695  * @SYMTestCaseDependencies simulated/manual
       
 16696  *
       
 16697  * Reason for test: Verify only emergency calls can be made without a SIM.
       
 16698  *
       
 16699  * @return - TVerdict code
       
 16700  */
       
 16701 	{
       
 16702 
       
 16703 	////////////////////////////////////////////////////////////////
       
 16704 	// SET UP
       
 16705 	////////////////////////////////////////////////////////////////
       
 16706 
       
 16707 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 16708 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 16709  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
 16710 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 16711 
       
 16712 	// Ensure phone is camped on simulated network. 
       
 16713 
       
 16714 	// Get Voice Line 1 
       
 16715 
       
 16716 	// Get Call 1 
       
 16717 
       
 16718 
       
 16719 	////////////////////////////////////////////////////////////////
       
 16720 	// SET UP END
       
 16721 	////////////////////////////////////////////////////////////////
       
 16722 	
       
 16723 	StartTest();
       
 16724 	
       
 16725 	////////////////////////////////////////////////////////////////
       
 16726 	// TEST START
       
 16727 	////////////////////////////////////////////////////////////////
       
 16728 	
       
 16729 	
       
 16730 	// Remove SIM. 
       
 16731 
       
 16732 	// Check RMobilePhone::NotifyNetworkRegistrationStatusChange completes with one of ENotRegisteredSearching | ENotRegisteredEmergencyOnly
       
 16733 
       
 16734 	// Check RMobilePhone::GetNetworkRegistrationStatus returns one of ENotRegisteredSearching | ENotRegisteredEmergencyOnly
       
 16735 
       
 16736 	// ===  Check line status and call status ===
       
 16737 
       
 16738 	// Check RLine::GetStatus returns EStatusIdle.
       
 16739 
       
 16740 	// Check RMobileLine::GetMobileLineStatus returns EStatusIdle.
       
 16741 
       
 16742 	// Check RCall::GetStatus returns EStatusIdle.
       
 16743 
       
 16744 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
 16745 
       
 16746 	// ===  Attempt to dial a non-emergency number ===
       
 16747 
       
 16748 	// Dial a non-emergency number with RCall::Dial 
       
 16749 
       
 16750 	// Wait for completion 
       
 16751 
       
 16752 	// Check error is returned.
       
 16753 
       
 16754 	// ===  Check line status and call status ===
       
 16755 
       
 16756 	// Check RLine::GetStatus returns EStatusIdle.
       
 16757 
       
 16758 	// Check RMobileLine::GetMobileLineStatus returns EStatusIdle.
       
 16759 
       
 16760 	// Check RCall::GetStatus returns EStatusIdle.
       
 16761 
       
 16762 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
 16763 
       
 16764 	// ===  Attempt to dial the international emergency number, simulate answering ===
       
 16765 
       
 16766 	// Dial emergency number with RCall::DialEmergencyCall 
       
 16767 
       
 16768 	// ===  Check call status ===
       
 16769 
       
 16770 	// Check RCall::NotifyStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
 16771 
       
 16772 	// Check RCall::GetStatus returns EStatusConnected.
       
 16773 
       
 16774 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
 16775 
       
 16776 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusConnected.
       
 16777 
       
 16778 	// ===  Check line status ===
       
 16779 
       
 16780 	// Check RLine::NotifyStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
 16781 
       
 16782 	// Check RLine::GetStatus returns EStatusConnected
       
 16783 
       
 16784 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
 16785 
       
 16786 	// Check RMobileLine::GetMobileLineStatus returns EStatusConnected
       
 16787 
       
 16788 	// ===  Check call info ===
       
 16789 
       
 16790 	// Check RMobileCall::GetMobileCallInfo returns valid call name
       
 16791 	// Check RMobileCall::GetMobileCallInfo returns valid line name
       
 16792 	// Check RMobileCall::GetMobileCallInfo returns correct number in iDialledParty.iTelNumber
       
 16793 	// Check RMobileCall::GetMobileCallInfo returns iEmergency == ETrue
       
 16794 	// Check RMobileCall::GetMobileCallInfo returns iStatus of EStatusConnected
       
 16795 	// Check RMobileCall::GetMobileCallInfo returns correct iRemoteNumber and iDirection in iRemoteParty
       
 16796 	// Check RMobileCall::GetMobileCallInfo returns correct iValid for returned parameters
       
 16797 
       
 16798 	// Hang up. 
       
 16799 
       
 16800 	// ===  Check call status ===
       
 16801 
       
 16802 	// Check RCall::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle.
       
 16803 
       
 16804 	// Check RCall::GetStatus returns EStatusIdle.
       
 16805 
       
 16806 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDisconnecting -> EStatusIdle.
       
 16807 
       
 16808 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
 16809 
       
 16810 	// ===  Check line status ===
       
 16811 
       
 16812 	// Check RMobileLine::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle
       
 16813 
       
 16814 	// Check RMobileLine::GetStatus returns EStatusIdle
       
 16815 
       
 16816 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusDisconnecting -> EStatusIdle
       
 16817 
       
 16818 	// Check RMobileLine::GetMobileLineStatus returns EStatusIdle
       
 16819 
       
 16820 	// ===  Attempt to dial national emergency number ===
       
 16821 
       
 16822 	// Dial emergency number with RCall::DialEmergencyCall 
       
 16823 
       
 16824 	// ===  Check call status ===
       
 16825 
       
 16826 	// Check RCall::NotifyStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
 16827 
       
 16828 	// Check RCall::GetStatus returns EStatusConnected.
       
 16829 
       
 16830 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
 16831 
       
 16832 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusConnected.
       
 16833 
       
 16834 	// ===  Check line status ===
       
 16835 
       
 16836 	// Check RLine::NotifyStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
 16837 
       
 16838 	// Check RLine::GetStatus returns EStatusConnected
       
 16839 
       
 16840 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
 16841 
       
 16842 	// Check RMobileLine::GetMobileLineStatus returns EStatusConnected
       
 16843 
       
 16844 	// ===  Check call info ===
       
 16845 
       
 16846 	// Check RMobileCall::GetMobileCallInfo returns valid call name
       
 16847 	// Check RMobileCall::GetMobileCallInfo returns valid line name
       
 16848 	// Check RMobileCall::GetMobileCallInfo returns correct number in iDialledParty.iTelNumber
       
 16849 	// Check RMobileCall::GetMobileCallInfo returns iEmergency == ETrue
       
 16850 	// Check RMobileCall::GetMobileCallInfo returns iStatus of EStatusConnected
       
 16851 	// Check RMobileCall::GetMobileCallInfo returns correct iRemoteNumber and iDirection in iRemoteParty
       
 16852 	// Check RMobileCall::GetMobileCallInfo returns correct iValid for returned parameters
       
 16853 
       
 16854 	// Hang up. 
       
 16855 
       
 16856 	// ===  Check call status ===
       
 16857 
       
 16858 	// Check RCall::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle.
       
 16859 
       
 16860 	// Check RCall::GetStatus returns EStatusIdle.
       
 16861 
       
 16862 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDisconnecting -> EStatusIdle.
       
 16863 
       
 16864 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
 16865 
       
 16866 	// ===  Check line status ===
       
 16867 
       
 16868 	// Check RMobileLine::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle
       
 16869 
       
 16870 	// Check RMobileLine::GetStatus returns EStatusIdle
       
 16871 
       
 16872 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusDisconnecting -> EStatusIdle
       
 16873 
       
 16874 	// Check RMobileLine::GetMobileLineStatus returns EStatusIdle
       
 16875 
       
 16876 	
       
 16877 	////////////////////////////////////////////////////////////////
       
 16878 	// TEST END
       
 16879 	////////////////////////////////////////////////////////////////
       
 16880 
       
 16881     StartCleanup();
       
 16882 	
       
 16883 	// Put any required test clean up here, then remove this comment
       
 16884 	
       
 16885 	return TestStepResult();
       
 16886 	}
       
 16887 
       
 16888 TPtrC CCTSYIntegrationTestCallControl0057::GetTestStepName()
       
 16889 /**
       
 16890  * @return The test step name.
       
 16891  */
       
 16892 	{
       
 16893 	return  _L("CCTSYIntegrationTestCallControl0057");
       
 16894 	}
       
 16895 
       
 16896 
       
 16897 
       
 16898 CCTSYIntegrationTestCallControl0058::CCTSYIntegrationTestCallControl0058(CEtelSessionMgr& aEtelSessionMgr)
       
 16899 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 16900 /**
       
 16901  * Constructor.
       
 16902  */
       
 16903 	{
       
 16904 	SetTestStepName(CCTSYIntegrationTestCallControl0058::GetTestStepName());
       
 16905 	}
       
 16906 
       
 16907 CCTSYIntegrationTestCallControl0058::~CCTSYIntegrationTestCallControl0058()
       
 16908 /**
       
 16909  * Destructor.
       
 16910  */
       
 16911 	{
       
 16912 	}
       
 16913 
       
 16914 TVerdict CCTSYIntegrationTestCallControl0058::doTestStepL()
       
 16915 /**
       
 16916  * @SYMTestCaseID BA-CTSY-INT-CCON-0058
       
 16917  * @SYMFssID BA/CTSY/CCON-0058
       
 16918  * @SYMTestCaseDesc Remove SIM and replace with another SIM.
       
 16919  * @SYMTestPriority High
       
 16920  * @SYMTestActions RMobilePhone::GetNetworkRegistrationStatus, RCall::Dial, RCall::HangUp, RLine::NotifyStatusChange, RLine::GetStatus, RMobileLine::NotifyMobileLineStatusChange, RMobileLine::GetMobileLineStatus, RCall::NotifyStatusChange, RCall::GetStatus, RMobileCall::NotifyMobileCallStatusChange, RMobileCall::GetMobileCallStatus
       
 16921  * @SYMTestExpectedResults Pass - Phone uses new SIM when SIM replaced.
       
 16922  * @SYMTestType CIT
       
 16923  * @SYMTestCaseDependencies live/manual
       
 16924  *
       
 16925  * Reason for test: Verify remote party receives call from new SIM phone number.
       
 16926  *
       
 16927  * @return - TVerdict code
       
 16928  */
       
 16929 	{
       
 16930 
       
 16931 	////////////////////////////////////////////////////////////////
       
 16932 	// SET UP
       
 16933 	////////////////////////////////////////////////////////////////
       
 16934 
       
 16935 	// Ensure phone is camped on network. 
       
 16936 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 16937 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 16938  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
 16939 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 16940 
       
 16941 	////////////////////////////////////////////////////////////////
       
 16942 	// SET UP END
       
 16943 	////////////////////////////////////////////////////////////////
       
 16944 	
       
 16945 	StartTest();
       
 16946 	
       
 16947 	////////////////////////////////////////////////////////////////
       
 16948 	// TEST START
       
 16949 	////////////////////////////////////////////////////////////////
       
 16950 	
       
 16951 	
       
 16952 	// Remove SIM. 
       
 16953 
       
 16954 	// Replace with another SIM. 
       
 16955 
       
 16956 	// Reinitialise the TSY? 
       
 16957 
       
 16958 	// Check RMobilePhone::GetNetworkRegistrationStatus returns one of ERegisteredOnHomeNetwork
       
 16959 
       
 16960 	// Get call 1. 
       
 16961 
       
 16962 	// Get voice line 1. 
       
 16963 
       
 16964 	// Dial outgoing call to RPS which answers. 
       
 16965 
       
 16966 	// ===  Check call status ===
       
 16967 
       
 16968 	// Check RCall::NotifyStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
 16969 
       
 16970 	// Check RCall::GetStatus returns EStatusConnected.
       
 16971 
       
 16972 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
 16973 
       
 16974 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusConnected.
       
 16975 
       
 16976 	// ===  Check line status ===
       
 16977 
       
 16978 	// Check RLine::NotifyStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
 16979 
       
 16980 	// Check RLine::GetStatus returns EStatusConnected
       
 16981 
       
 16982 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
 16983 
       
 16984 	// Check RMobileLine::GetMobileLineStatus returns EStatusConnected
       
 16985 
       
 16986 	// RPS returns MO number as being from the new SIM. 
       
 16987 
       
 16988 	// Hang up. 
       
 16989 
       
 16990 	// ===  Check call status ===
       
 16991 
       
 16992 	// Check RCall::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle.
       
 16993 
       
 16994 	// Check RCall::GetStatus returns EStatusIdle.
       
 16995 
       
 16996 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDisconnecting -> EStatusIdle.
       
 16997 
       
 16998 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
 16999 
       
 17000 	// ===  Check line status ===
       
 17001 
       
 17002 	// Check RMobileLine::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle
       
 17003 
       
 17004 	// Check RMobileLine::GetStatus returns EStatusIdle
       
 17005 
       
 17006 	// Check RMobileLine::NotifyMobileLineStatusChange completes with with EStatusDisconnecting -> EStatusIdle
       
 17007 
       
 17008 	// Check RMobileLine::GetMobileLineStatus returns EStatusIdle
       
 17009 
       
 17010 	// RPS dials old SIM number. 
       
 17011 
       
 17012 	// Verify phone does not respond. 
       
 17013 
       
 17014 	
       
 17015 	////////////////////////////////////////////////////////////////
       
 17016 	// TEST END
       
 17017 	////////////////////////////////////////////////////////////////
       
 17018 
       
 17019     StartCleanup();
       
 17020 	
       
 17021 	// Put any required test clean up here, then remove this comment
       
 17022 	
       
 17023 	return TestStepResult();
       
 17024 	}
       
 17025 
       
 17026 TPtrC CCTSYIntegrationTestCallControl0058::GetTestStepName()
       
 17027 /**
       
 17028  * @return The test step name.
       
 17029  */
       
 17030 	{
       
 17031 	return  _L("CCTSYIntegrationTestCallControl0058");
       
 17032 	}
       
 17033 
       
 17034 CCTSYIntegrationTestCallControl0059::CCTSYIntegrationTestCallControl0059(CEtelSessionMgr& aEtelSessionMgr)
       
 17035 	: CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 17036 /**
       
 17037  * Constructor.
       
 17038  */
       
 17039 	{
       
 17040 	SetTestStepName(CCTSYIntegrationTestCallControl0059::GetTestStepName());
       
 17041 	}
       
 17042 
       
 17043 CCTSYIntegrationTestCallControl0059::~CCTSYIntegrationTestCallControl0059()
       
 17044 /**
       
 17045  * Destructor.
       
 17046  */
       
 17047 	{
       
 17048 	}
       
 17049 
       
 17050 TVerdict CCTSYIntegrationTestCallControl0059::doTestStepL()
       
 17051 /**
       
 17052  * @SYMTestCaseID BA-CTSY-INT-CCON-0059
       
 17053  * @SYMFssID BA/CTSY/CCON-0059
       
 17054  * @SYMTestCaseDesc Update life time parameter with call duration
       
 17055  * @SYMTestPriority High
       
 17056  * @SYMTestActions
       
 17057  * @SYMTestExpectedResults Pass - Life time param updated after call executed
       
 17058  * @SYMTestType CIT
       
 17059  * @SYMTestCaseDependencies live/automatic
       
 17060  *
       
 17061  * Reason for test
       
 17062  *
       
 17063  * @return - TVerdict code
       
 17064  */
       
 17065 	{
       
 17066 
       
 17067 	////////////////////////////////////////////////////////////////
       
 17068 	// SET UP
       
 17069 	////////////////////////////////////////////////////////////////
       
 17070 	
       
 17071 	// Check phone supports KCapsVoice
       
 17072 	// Get Voice line 1 
       
 17073 	RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
 17074 	// Get call 1 
       
 17075 	RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
 17076 
       
 17077 	RLine::TCaps lineCaps; 
       
 17078 	CHECK_TRUE_L(voiceLine.GetCaps(lineCaps) == KErrNone,  
       
 17079 			_L("RMobileLine::GetCaps returned an error"));
       
 17080 	CHECK_BITS_SET_L(lineCaps.iFlags, RLine::KCapsVoice, KNoUnwantedBits,  
       
 17081 			_L("RLine::GetCaps returned wrong caps"));	
       
 17082 
       
 17083 	// Ensure phone is camped on network. 
       
 17084 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
       
 17085 	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 17086  	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
       
 17087 				   _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 17088 	RMmCustomAPI& customApi = iEtelSessionMgr.GetCustomApiL(KMainServer, KMainPhone, KMainCustomApi);					   
       
 17089 
       
 17090 	////////////////////////////////////////////////////////////////
       
 17091 	// SET UP END
       
 17092 	////////////////////////////////////////////////////////////////
       
 17093 	
       
 17094 	StartTest();
       
 17095 	
       
 17096 	////////////////////////////////////////////////////////////////
       
 17097 	// TEST START
       
 17098 	////////////////////////////////////////////////////////////////
       
 17099 	
       
 17100 	// calling RMmCustomAPI::GetLifeTime() to retrieve current LTSY value for life time param before the call:
       
 17101     TExtEtelRequestStatus getLifeTimeStatus(customApi, ECustomGetLifeTimeIPC);    
       
 17102 	CleanupStack::PushL(getLifeTimeStatus);	
       
 17103     RMmCustomAPI::TLifeTimeData ltData;
       
 17104     TPckg<RMmCustomAPI::TLifeTimeData> ltPckg(ltData);
       
 17105     customApi.GetLifeTime(getLifeTimeStatus, ltPckg);    
       
 17106     ASSERT_EQUALS(WaitForRequestWithTimeOut(getLifeTimeStatus, ETimeLong), KErrNone, _L("RMmCustomAPI::GetLifeTime timed out"));
       
 17107     ASSERT_EQUALS(getLifeTimeStatus.Int(), KErrNone, _L("RMmCustomAPI::GetLifeTime returned an error"));	
       
 17108 	DEBUG_PRINTF3(_L("Life Time param before the call: hours=%d, min=%d"), ltData.iHours, ltData.iMinutes);
       
 17109     
       
 17110 			
       
 17111 	// post a notifier for RMobileCall::NotifyMobileCallStatusChange
       
 17112 	TExtEtelRequestStatus notifyMobileCallChangeStatus(call1, EMobileCallNotifyMobileCallStatusChange);
       
 17113 	CleanupStack::PushL(notifyMobileCallChangeStatus);
       
 17114 	RMobileCall::TMobileCallStatus mobileCallStatus;
       
 17115 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
 17116 	
       
 17117 	// Dial RPS which answers 
       
 17118 	TPtrC number;
       
 17119 	GetRPSNumber(EVoiceLine,number);
       
 17120 	RPSAnswerNextCallL(EVoiceLine);
       
 17121 	
       
 17122 	TCoreEtelRequestStatus<RMobileCall> dialStatus(call1, &RCall::DialCancel);
       
 17123 	CleanupStack::PushL(dialStatus);											 
       
 17124 	call1.Dial(dialStatus, number);	
       
 17125 	ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeMedium), KErrNone,  
       
 17126 			_L("RCall::Dial timed-out"));
       
 17127 	ASSERT_EQUALS(dialStatus.Int(), KErrNone,  
       
 17128 			_L("RCall::Dial Expected KErrNone, but an error returned"));
       
 17129 			
       
 17130 	// ===  Check call status ===
       
 17131 	
       
 17132 	const TInt wantedStatus = KErrNone;	
       
 17133 	
       
 17134 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDialling -> EStatusConnecting -> EStatusConnected.
       
 17135 	RMobileCall::TMobileCallStatus expectedMobileCallStatus = RMobileCall::EStatusDialling;
       
 17136 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
 17137 															notifyMobileCallChangeStatus,
       
 17138 															mobileCallStatus,
       
 17139 															expectedMobileCallStatus,
       
 17140 															wantedStatus);
       
 17141 
       
 17142 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
 17143 	expectedMobileCallStatus = RMobileCall::EStatusConnecting;
       
 17144 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
 17145 															notifyMobileCallChangeStatus,
       
 17146 															mobileCallStatus,
       
 17147 															expectedMobileCallStatus,
       
 17148 															wantedStatus);
       
 17149 
       
 17150 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
 17151 	expectedMobileCallStatus = RMobileCall::EStatusConnected;															
       
 17152 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
 17153 															notifyMobileCallChangeStatus,
       
 17154 															mobileCallStatus,
       
 17155 															expectedMobileCallStatus,
       
 17156 															wantedStatus);
       
 17157 
       
 17158 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusConnected.
       
 17159 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
 17160 			_L("RMobileCall::GetMobileStatus returned an error"));
       
 17161 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusConnected,  
       
 17162 			_L("RMobileCall::GetMobileStatus did not return a status EStatusConnected"));
       
 17163 			
       
 17164 	User::After(180000000);	// Wait added for call duration of 3min
       
 17165 	
       
 17166 	//==== Post Notifiers ========
       
 17167 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
 17168 	
       
 17169 	// RPS hangs up. 
       
 17170 	ASSERT_EQUALS(RPSHangupL(EVoiceLine,0), KErrNone, _L("CCTSYIntegrationTestSuiteStepBase::RPSHangup returned an error"));
       
 17171 	
       
 17172 	// Check RMobileCall::NotifyMobileCallStatusChange completes with EStatusDisconnecting -> EStatusIdle.
       
 17173 	expectedMobileCallStatus = RMobileCall::EStatusDisconnecting;
       
 17174 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
 17175 															notifyMobileCallChangeStatus,
       
 17176 															mobileCallStatus,
       
 17177 															expectedMobileCallStatus,
       
 17178 															wantedStatus);
       
 17179 
       
 17180 	call1.NotifyMobileCallStatusChange(notifyMobileCallChangeStatus, mobileCallStatus);
       
 17181 	expectedMobileCallStatus = RMobileCall::EStatusIdle;
       
 17182 	iCallControlTestHelper.WaitForMobileCallNotifyMobileCallStatusChange(call1,
       
 17183 															notifyMobileCallChangeStatus,
       
 17184 															mobileCallStatus,
       
 17185 															expectedMobileCallStatus,
       
 17186 															wantedStatus);
       
 17187 															
       
 17188 	// Check RMobileCall::GetMobileCallStatus returns status of EStatusIdle.
       
 17189 	ASSERT_EQUALS(call1.GetMobileCallStatus(mobileCallStatus), KErrNone,  
       
 17190 			_L("RMobileCall::GetMobileStatus returned an error"));
       
 17191 	ASSERT_EQUALS(mobileCallStatus, RMobileCall::EStatusIdle,  
       
 17192 			_L("RMobileCall::GetMobileStatus did not return a status EStatusIdle"));
       
 17193 			
       
 17194 	// calling RMmCustomAPI::GetLifeTime() to retrieve current LTSY value for life time param after the call:
       
 17195     customApi.GetLifeTime(getLifeTimeStatus, ltPckg);    
       
 17196     ASSERT_EQUALS(WaitForRequestWithTimeOut(getLifeTimeStatus, ETimeLong), KErrNone, _L("RMmCustomAPI::GetLifeTime timed out"));
       
 17197     ASSERT_EQUALS(getLifeTimeStatus.Int(), KErrNone, _L("RMmCustomAPI::GetLifeTime returned an error"));	
       
 17198 	DEBUG_PRINTF3(_L("Life Time param after the call: hours=%d, min=%d"), ltData.iHours, ltData.iMinutes);											
       
 17199 	
       
 17200 	////////////////////////////////////////////////////////////////
       
 17201 	// TEST END
       
 17202 	////////////////////////////////////////////////////////////////
       
 17203 
       
 17204     StartCleanup();
       
 17205 	
       
 17206 	// Put any required test clean up here, then remove this comment
       
 17207 	
       
 17208 	CleanupStack::PopAndDestroy(3,&getLifeTimeStatus);	
       
 17209 	
       
 17210 	return TestStepResult();
       
 17211 	}
       
 17212 
       
 17213 TPtrC CCTSYIntegrationTestCallControl0059::GetTestStepName()
       
 17214 /**
       
 17215  * @return The test step name.
       
 17216  */
       
 17217 	{
       
 17218 	return  _L("CCTSYIntegrationTestCallControl0059");
       
 17219 	}
       
 17220 
       
 17221 
       
 17222 
       
 17223 CCTSYIntegrationTestCallControl0060::CCTSYIntegrationTestCallControl0060(CEtelSessionMgr& aEtelSessionMgr)
       
 17224     : CCTSYIntegrationTestCallControlBase(aEtelSessionMgr)
       
 17225 /**
       
 17226  * Constructor.
       
 17227  */
       
 17228     {
       
 17229     SetTestStepName(CCTSYIntegrationTestCallControl0060::GetTestStepName());
       
 17230     }
       
 17231 
       
 17232 CCTSYIntegrationTestCallControl0060::~CCTSYIntegrationTestCallControl0060()
       
 17233 /**
       
 17234  * Destructor.
       
 17235  */
       
 17236     {
       
 17237     }
       
 17238 
       
 17239 TVerdict CCTSYIntegrationTestCallControl0060::doTestStepL()
       
 17240 /**
       
 17241  * @SYMTestCaseID BA-CTSY-INT-CCON-0060
       
 17242  * @SYMFssID BA/CTSY/CCON-0060
       
 17243  * @SYMTestCaseDesc Update life time parameter with call duration
       
 17244  * @SYMTestPriority High
       
 17245  * @SYMTestActions
       
 17246  * @SYMTestExpectedResults Pass - Life time param updated after call executed
       
 17247  * @SYMTestType CIT
       
 17248  * @SYMTestCaseDependencies live/automatic
       
 17249  *
       
 17250  * Reason for test
       
 17251  *
       
 17252  * @return - TVerdict code
       
 17253  */
       
 17254     {
       
 17255     ////////////////////////////////////////////////////////////////
       
 17256     // SET UP
       
 17257     ////////////////////////////////////////////////////////////////
       
 17258     RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
       
 17259     
       
 17260     // Get Voice line 1 
       
 17261     RMobileLine& voiceLine = iEtelSessionMgr.GetLineL(KMainServer, KMainPhone, KVoiceLine);
       
 17262 
       
 17263     // Get call 1 
       
 17264     RMobileCall& call1 = iEtelSessionMgr.GetCallL(KMainServer, KMainPhone, KVoiceLine, KCall1);
       
 17265         
       
 17266     // Check phone supports KCapsVoice
       
 17267     RLine::TCaps lineCaps; 
       
 17268     CHECK_EQUALS_L(voiceLine.GetCaps(lineCaps), KErrNone, 
       
 17269             _L("RMobileLine::GetCaps returned an error"));
       
 17270     CHECK_BITS_SET_L(lineCaps.iFlags, RLine::KCapsVoice, KNoUnwantedBits, 
       
 17271             _L("RLine::GetCaps returned wrong caps"));
       
 17272     
       
 17273     // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL      
       
 17274     CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
       
 17275     RMmCustomAPI& customApi = iEtelSessionMgr.GetCustomApiL(KMainServer, KMainPhone, KMainCustomApi);     
       
 17276     
       
 17277     ////////////////////////////////////////////////////////////////
       
 17278     // SET UP END
       
 17279     ////////////////////////////////////////////////////////////////
       
 17280     
       
 17281     StartTest();
       
 17282     
       
 17283     ////////////////////////////////////////////////////////////////
       
 17284     // TEST START
       
 17285     ////////////////////////////////////////////////////////////////
       
 17286     
       
 17287     // calling RMmCustomAPI::GetLifeTime() to retrieve current LTSY value for life time param before the call:
       
 17288     TExtEtelRequestStatus getLifeTimeStatus(customApi, ECustomGetLifeTimeIPC);    
       
 17289     CleanupStack::PushL(getLifeTimeStatus); 
       
 17290     
       
 17291     RMmCustomAPI::TLifeTimeData lifeTimeData;
       
 17292     lifeTimeData.iHours = 0;
       
 17293     lifeTimeData.iMinutes = 0;  
       
 17294     TPckg<RMmCustomAPI::TLifeTimeData> lifeTimePckg(lifeTimeData);
       
 17295     
       
 17296     customApi.GetLifeTime(getLifeTimeStatus, lifeTimePckg);    
       
 17297     ASSERT_EQUALS(WaitForRequestWithTimeOut(getLifeTimeStatus, ETimeLong), KErrNone, _L("RMmCustomAPI::GetLifeTime timed out"));
       
 17298     ASSERT_EQUALS(getLifeTimeStatus.Int(), KErrNone, _L("RMmCustomAPI::GetLifeTime returned an error"));    
       
 17299     DEBUG_PRINTF3(_L("Life Time param before the call: hours=%d, min=%d"), lifeTimeData.iHours, lifeTimeData.iMinutes);
       
 17300     
       
 17301     TUint8 minutes = lifeTimeData.iMinutes ;
       
 17302     
       
 17303     // Check RPhone::GetLineInfo returns iStatus of EStatusIdle
       
 17304     RPhone::TLineInfo lineInfo;
       
 17305     TInt lineIndex=0;
       
 17306     ASSERT_EQUALS(phone.GetLineInfo(lineIndex, lineInfo), KErrNone,
       
 17307             _L("RPhone::GetLineInfo returned an error"));
       
 17308     ASSERT_EQUALS(lineInfo.iStatus, RCall::EStatusIdle, 
       
 17309             _L("RPhone::GetLineInfo wrong iStatus, should be EStatusIdle"));
       
 17310     
       
 17311     // Check RPhone::GetLineInfo returns iLineCapsFlags of KCapsVoice
       
 17312     ASSERT_BITS_SET(lineInfo.iLineCapsFlags, RLine::KCapsVoice, KNoUnwantedBits, 
       
 17313             _L("RPhone::GetLineInfo returned wrong caps")); 
       
 17314 
       
 17315     // Check RPhone::GetLineInfo returns a valid line name
       
 17316     ASSERT_TRUE(lineInfo.iName.Length() >0,  
       
 17317             _L("RPhone::GetLineInfo wrong call name"));
       
 17318     
       
 17319     // Get the voice number that answers.
       
 17320     TPtrC number; 
       
 17321     ASSERT_TRUE(GetStringFromConfig(KIniVoiceNumSection, KIniVoiceNumber1, number) != EFalse,             
       
 17322             _L("CTestStep::GetStringFromConfig did not complete as expected"));
       
 17323     
       
 17324     TCoreEtelRequestStatus<RCall> dialStatus(call1, &RCall::DialCancel);
       
 17325     CleanupStack::PushL(dialStatus);
       
 17326     
       
 17327     // make 3 calls 70 seconds each and check if Life Timer is increased by at least a minute each time
       
 17328     TInt callCount = 3;
       
 17329     
       
 17330     for (TInt i = 0; i < callCount; i++)
       
 17331         {
       
 17332         call1.Dial(dialStatus, number); 
       
 17333         ASSERT_EQUALS(WaitForRequestWithTimeOut(dialStatus, ETimeMedium), KErrNone, 
       
 17334                 _L("RCall::Dial timed-out"));
       
 17335         ASSERT_EQUALS(dialStatus.Int(), KErrNone,  
       
 17336                 _L("RCall::Dial returned with an error"));
       
 17337 
       
 17338         // Check RPhone::GetLineInfo returns iStatus of EStatusConnected
       
 17339         ASSERT_EQUALS(phone.GetLineInfo(lineIndex, lineInfo), KErrNone,  
       
 17340                 _L("RPhone::GetLineInfo returned an error"));
       
 17341         ASSERT_EQUALS(lineInfo.iStatus, RCall::EStatusConnected, 
       
 17342                 _L("RPhone::GetLineInfo wrong iStatus, should be EStatusConnected"));
       
 17343 
       
 17344         // Check RPhone::GetLineInfo returns a valid line name
       
 17345         ASSERT_TRUE(lineInfo.iName.Length() >0,  
       
 17346                 _L("RPhone::GetLineInfo wrong call name"));
       
 17347         
       
 17348         User::After(70*KOneSecond);   // Wait added for call duration of just over a minute
       
 17349      
       
 17350         // hang up the active call
       
 17351         TCoreEtelRequestStatus<RCall> hangUpStatus (call1,&RCall::HangUpCancel);    
       
 17352         CleanupStack::PushL(hangUpStatus);
       
 17353         call1.HangUp(hangUpStatus);
       
 17354         WaitForRequestWithTimeOut(hangUpStatus, ETimeMedium);   
       
 17355         
       
 17356         // calling RMmCustomAPI::GetLifeTime() to retrieve current LTSY value for life time param after the call:
       
 17357         customApi.GetLifeTime(getLifeTimeStatus, lifeTimePckg);
       
 17358 
       
 17359         ASSERT_EQUALS(WaitForRequestWithTimeOut(getLifeTimeStatus, ETimeLong), KErrNone, _L("RMmCustomAPI::GetLifeTime timed out"));
       
 17360         ASSERT_EQUALS(getLifeTimeStatus.Int(), KErrNone, _L("RMmCustomAPI::GetLifeTime returned an error"));    
       
 17361         DEBUG_PRINTF3(_L("Life Time param after the call: hours=%d, min=%d"), lifeTimeData.iHours, lifeTimeData.iMinutes);   
       
 17362         
       
 17363         minutes++;
       
 17364         ASSERT_TRUE( minutes <= lifeTimeData.iMinutes, _L("Life Time was not updated properly") );
       
 17365         }
       
 17366 
       
 17367     ////////////////////////////////////////////////////////////////
       
 17368     // TEST END
       
 17369     ////////////////////////////////////////////////////////////////
       
 17370 
       
 17371     StartCleanup();
       
 17372     CleanupStack::PopAndDestroy(3,&getLifeTimeStatus);
       
 17373     return TestStepResult();
       
 17374     }
       
 17375 
       
 17376 TPtrC CCTSYIntegrationTestCallControl0060::GetTestStepName()
       
 17377 /**
       
 17378  * @return The test step name.
       
 17379  */
       
 17380     {
       
 17381     return  _L("CCTSYIntegrationTestCallControl0060");
       
 17382     }