telephonyserverplugins/common_tsy/test/integration/src/tsimtsytesthelper.cpp
branchopencode
changeset 24 6638e7f4bd8f
parent 0 3553901f7fa8
--- a/telephonyserverplugins/common_tsy/test/integration/src/tsimtsytesthelper.cpp	Mon May 03 13:37:20 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/integration/src/tsimtsytesthelper.cpp	Thu May 06 15:10:38 2010 +0100
@@ -1,525 +1,525 @@
-// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-#include "tsimtsytesthelper.h" 
-#include "cctsyinidata.h"
-
-/**
-* Constructor
-*/	
-TSimTsyTestHelper::TSimTsyTestHelper(CCTSYIntegrationTestSuiteStepBase& aTestStep)
-			: TTsyTestHelperBase( aTestStep )
-	{
-	}
-/**
-* Notify reset for RMobilePhone::NotifyUSimApplicationsInfoChange
-*/	
-void TSimTsyTestHelper::WaitForMobilePhoneNotifyUSimApplicationsInfoChange( 
-				RMobilePhone& aMobilePhone,
-				TEtelRequestBase& aRequestStatus,
-				TInt& aCount, 
-				TInt aExpectedCount,
-				RMobilePhone::TAID &aActiveAID,
-				TInt aWantedStatus )
-
-	{
-	// Wait for the request to complete	
-	TInt err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);	
-	ASSERT_EQUALS(err, KErrNone, _L("RMobilePhone::NotifyUSimApplicationsInfoChange did not complete"))
-	
-	while (	err == KErrNone && aRequestStatus.Int() == KErrNone  	
-							&& aCount != aExpectedCount )
-		{
-		// Request has completed with incorrect result. Consume any outstanding
-		// Repost notification until timeout or we get the right result.
-		
-		aMobilePhone.NotifyUSimApplicationsInfoChange(aRequestStatus, aCount, aActiveAID);
-		err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);
-		}
-		
-	ASSERT_EQUALS(aRequestStatus.Int(), aWantedStatus, _L("RMobilePhone::NotifyUSimApplicationsInfoChange Wrong completion status"))	
-	ASSERT_EQUALS(aCount, aExpectedCount, 
-				_L("RMobilePhone::NotifyUSimApplicationsInfoChange Wrong result"))	
-	
-	// Cancel request if it is still pending	
-	if (aRequestStatus.Int() == KRequestPending)	
-		{
-		aRequestStatus.Cancel();
-		}
-	}
-
-		
-/**
-* Notify reset for RMobilePhone::NotifyUSimAppsSelectionModeChange
-*/	
-void TSimTsyTestHelper::WaitForMobilePhoneNotifyUSimAppsSelectionModeChange( 
-				RMobilePhone& aMobilePhone,
-				TEtelRequestBase& aRequestStatus,
-				RMobilePhone::TUSimSelectionMode& aUSimSelectionMode, 
-				RMobilePhone::TUSimSelectionMode aExpectedUSimSelectionMode,
-				TInt aWantedStatus )
-
-	{
-	// Wait for the request to complete	
-	TInt err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);	
-	ASSERT_EQUALS(err, KErrNone, _L("RMobilePhone::NotifyUSimAppsSelectionModeChange did not complete"))
-	
-	while (	err == KErrNone && aRequestStatus.Int() == KErrNone  	
-							&& aUSimSelectionMode != aExpectedUSimSelectionMode )
-		{
-		// Request has completed with incorrect result. Consume any outstanding
-		// Repost notification until timeout or we get the right result.
-		
-		aMobilePhone.NotifyUSimAppsSelectionModeChange(aRequestStatus, aUSimSelectionMode);
-		err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);
-		}
-		
-	ASSERT_EQUALS(aRequestStatus.Int(), aWantedStatus, _L("RMobilePhone::NotifyUSimAppsSelectionModeChange Wrong completion status"))	
-	ASSERT_EQUALS(aUSimSelectionMode, aExpectedUSimSelectionMode, 
-				_L("RMobilePhone::NotifyUSimAppsSelectionModeChange Wrong result"))	
-	
-	// Cancel request if it is still pending	
-	if (aRequestStatus.Int() == KRequestPending)	
-		{
-		aRequestStatus.Cancel();
-		}
-	}
-
-		
-/**
-* Notify reset for RMobilePhone::NotifyUUSSettingChange
-*/	
-void TSimTsyTestHelper::WaitForMobilePhoneNotifyUUSSettingChange( 
-				RMobilePhone& aMobilePhone,
-				TEtelRequestBase& aRequestStatus,
-				RMobilePhone::TMobilePhoneUUSSetting& aSetting, 
-				RMobilePhone::TMobilePhoneUUSSetting aExpectedSetting,
-				TInt aWantedStatus )
-
-	{
-	// Wait for the request to complete	
-	TInt err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);	
-	ASSERT_EQUALS(err, KErrNone, _L("RMobilePhone::NotifyUUSSettingChange did not complete"))
-	
-	while (	err == KErrNone && aRequestStatus.Int() == KErrNone  	
-							&& aSetting != aExpectedSetting )
-		{
-		// Request has completed with incorrect result. Consume any outstanding
-		// Repost notification until timeout or we get the right result.
-		
-		aMobilePhone.NotifyUUSSettingChange(aRequestStatus, aSetting);
-		err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);
-		}
-		
-	ASSERT_EQUALS(aRequestStatus.Int(), aWantedStatus, _L("RMobilePhone::NotifyUUSSettingChange Wrong completion status"))	
-	ASSERT_EQUALS(aSetting, aExpectedSetting, 
-				_L("RMobilePhone::NotifyUUSSettingChange Wrong result"))	
-	
-	// Cancel request if it is still pending	
-	if (aRequestStatus.Int() == KRequestPending)	
-		{
-		aRequestStatus.Cancel();
-		}
-	}
-
-		
-/**
-* Notify reset for RMobilePhone::NotifyIccMessageWaitingIndicatorsChange
-*/	
-void TSimTsyTestHelper::WaitForMobilePhoneNotifyIccMessageWaitingIndicatorsChange( 
-				RMobilePhone& aMobilePhone,
-				TEtelRequestBase& aRequestStatus,
-				TCmpBase<RMobilePhone::TMobilePhoneMessageWaitingV1> &aMobilePhoneMessageWaitingV1,
-				TInt aWantedStatus )
-
-	{
-	// Wait for the request to complete	
-	TInt err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);	
-	ASSERT_EQUALS(err, KErrNone, _L("RMobilePhone::NotifyIccMessageWaitingIndicatorsChange did not complete"))
-	
-	while (	err == KErrNone && aRequestStatus.Int() == KErrNone  	
-							&& !aMobilePhoneMessageWaitingV1.IsEqual(ENoLogError) )
-		{
-		// Request has completed with incorrect result. Consume any outstanding
-		// Repost notification until timeout or we get the right result.		
-		RMobilePhone::TMobilePhoneMessageWaitingV1Pckg pkgParam( aMobilePhoneMessageWaitingV1.GetValue() );
-		aMobilePhone.NotifyIccMessageWaitingIndicatorsChange(aRequestStatus, pkgParam);
-		err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);
-		}
-
-	ASSERT_EQUALS(aRequestStatus.Int(), aWantedStatus, _L("RMobilePhone::NotifyIccMessageWaitingIndicatorsChange Wrong completion status"))	
-	ASSERT_TRUE(aMobilePhoneMessageWaitingV1.IsEqual(ELogError), 
-				_L("RMobilePhone::NotifyIccMessageWaitingIndicatorsChange Wrong result"))	
-	
-	// Cancel request if it is still pending	
-	if (aRequestStatus.Int() == KRequestPending)	
-		{
-		aRequestStatus.Cancel();
-		}
-	}
-
-		
-/**
-* Notify reset for RMobilePhone::NotifyImsAuthorizationInfoChange
-*/	
-void TSimTsyTestHelper::WaitForMobilePhoneNotifyImsAuthorizationInfoChange( 
-				TEtelRequestBase& aRequestStatus,
-				TInt aWantedStatus )
-
-	{
-	// Wait for the request to complete	
-	TInt err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);	
-	ASSERT_EQUALS(err, KErrNone, _L("RMobilePhone::NotifyImsAuthorizationInfoChange did not complete"))
-	ASSERT_EQUALS(aRequestStatus.Int(), aWantedStatus, _L("RMobilePhone::NotifyImsAuthorizationInfoChange Wrong completion status"))		
-	// Cancel request if it is still pending	
-	if (aRequestStatus.Int() == KRequestPending)	
-		{
-		aRequestStatus.Cancel();
-		}
-	}
-
-		
-/**
-* Notify reset for RMobilePhone::NotifySmartCardApplicationInfoChange
-*/	
-void TSimTsyTestHelper::WaitForMobilePhoneNotifySmartCardApplicationInfoChange( 
-				RMobilePhone& aMobilePhone,
-				TEtelRequestBase& aRequestStatus,
-				RMobilePhone::TAID& aAID, 
-				RMobilePhone::TAID& aExpectedAID,
-				RMobilePhone::TSmartCardApplicationEvent &aEvent,
-				TInt aWantedStatus )
-
-	{
-	// Wait for the request to complete	
-	TInt err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);	
-	ASSERT_EQUALS(err, KErrNone, _L("RMobilePhone::NotifySmartCardApplicationInfoChange did not complete"))
-	
-	while (	err == KErrNone && aRequestStatus.Int() == KErrNone  	
-							&& aAID != aExpectedAID )
-		{
-		// Request has completed with incorrect result. Consume any outstanding
-		// Repost notification until timeout or we get the right result.
-		
-		aMobilePhone.NotifySmartCardApplicationInfoChange(aRequestStatus, aAID, aEvent);
-		err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);
-		}
-		
-	ASSERT_EQUALS(aRequestStatus.Int(), aWantedStatus, _L("RMobilePhone::NotifySmartCardApplicationInfoChange Wrong completion status"))	
-	ASSERT_EQUALS_DES8(aAID, aExpectedAID, 
-				_L("RMobilePhone::NotifySmartCardApplicationInfoChange Wrong result"))	
-	
-	// Cancel request if it is still pending	
-	if (aRequestStatus.Int() == KRequestPending)	
-		{
-		aRequestStatus.Cancel();
-		}
-	}
-
-		
-/**
-* Notify reset for RMobilePhone::NotifyMailboxNumbersChange
-*/	
-void TSimTsyTestHelper::WaitForMobilePhoneNotifyMailboxNumbersChange( 
-				RMobilePhone& aMobilePhone,
-				TEtelRequestBase& aRequestStatus,
-				TCmpBase<RMobilePhone::TMobilePhoneVoicemailIdsV3> &aMobilePhoneVoicemailIdsV3,
-				TInt aWantedStatus )
-
-	{
-	// Wait for the request to complete	
-	TInt err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);	
-	ASSERT_EQUALS(err, KErrNone, _L("RMobilePhone::NotifyMailboxNumbersChange did not complete"))
-	
-	while (	err == KErrNone && aRequestStatus.Int() == KErrNone  	
-							&& !aMobilePhoneVoicemailIdsV3.IsEqual(ENoLogError) )
-		{
-		// Request has completed with incorrect result. Consume any outstanding
-		// Repost notification until timeout or we get the right result.		
-		RMobilePhone::TMobilePhoneVoicemailIdsV3Pckg pkgParam( aMobilePhoneVoicemailIdsV3.GetValue() );
-		aMobilePhone.NotifyMailboxNumbersChange(aRequestStatus, pkgParam);
-		err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);
-		}
-
-	ASSERT_EQUALS(aRequestStatus.Int(), aWantedStatus, _L("RMobilePhone::NotifyMailboxNumbersChange Wrong completion status"))	
-	ASSERT_TRUE(aMobilePhoneVoicemailIdsV3.IsEqual(ELogError), 
-				_L("RMobilePhone::NotifyMailboxNumbersChange Wrong result"))	
-	
-	// Cancel request if it is still pending	
-	if (aRequestStatus.Int() == KRequestPending)	
-		{
-		aRequestStatus.Cancel();
-		}
-	}
-
-		
-/**
-* Notify reset for RMobilePhoneStore::NotifyStoreEvent
-*/	
-void TSimTsyTestHelper::WaitForMobilePhoneStoreNotifyStoreEvent( 
-				RMobilePhoneStore& aMobilePhoneStore,
-				TEtelRequestBase& aRequestStatus,
-				TUint32& aEvent, 
-				TUint32 aExpectedEvent,
-				TInt &aIndex,
-				TInt aWantedStatus )
-
-	{
-	// Wait for the request to complete	
-	TInt err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeMedium);	
-	ASSERT_EQUALS(err, KErrNone, _L("RMobilePhoneStore::NotifyStoreEvent did not complete"))
-
-	while (	err == KErrNone && aRequestStatus.Int() == KErrNone  	
-							&& aEvent != aExpectedEvent )
-		{
-		// Request has completed with incorrect result. Consume any outstanding
-		// Repost notification until timeout or we get the right result.
-		
-		aMobilePhoneStore.NotifyStoreEvent(aRequestStatus, aEvent, aIndex);
-		err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeMedium);
-		}
-		
-	ASSERT_EQUALS(aRequestStatus.Int(), aWantedStatus, _L("RMobilePhoneStore::NotifyStoreEvent Wrong completion status"))	
-	ASSERT_EQUALS(aEvent, aExpectedEvent, 
-				_L("RMobilePhoneStore::NotifyStoreEvent Wrong result"))	
-	
-	// Cancel request if it is still pending	
-	if (aRequestStatus.Int() == KRequestPending)	
-		{
-		aRequestStatus.Cancel();
-		}
-	}
-
-		
-/**
-* Notify reset for RMobileSmartCardEap::NotifyEapMethodAccessStatusChange
-*/	
-void TSimTsyTestHelper::WaitForMobileSmartCardEapNotifyEapMethodAccessStatusChange( 
-				RMobileSmartCardEap& aMobileSmartCardEap,
-				TEtelRequestBase& aRequestStatus,
-				RMobileSmartCardEap::TEapMethodAccessStatus& aEapMethodStatus, 
-				RMobileSmartCardEap::TEapMethodAccessStatus aExpectedEapMethodStatus,
-				TInt aWantedStatus )
-
-	{
-	// Wait for the request to complete	
-	TInt err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);	
-	ASSERT_EQUALS(err, KErrNone, _L("RMobileSmartCardEap::NotifyEapMethodAccessStatusChange did not complete"))
-	
-	while (	err == KErrNone && aRequestStatus.Int() == KErrNone  	
-							&& aEapMethodStatus != aExpectedEapMethodStatus )
-		{
-		// Request has completed with incorrect result. Consume any outstanding
-		// Repost notification until timeout or we get the right result.
-		
-		aMobileSmartCardEap.NotifyEapMethodAccessStatusChange(aRequestStatus, aEapMethodStatus);
-		err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);
-		}
-		
-	ASSERT_EQUALS(aRequestStatus.Int(), aWantedStatus, _L("RMobileSmartCardEap::NotifyEapMethodAccessStatusChange Wrong completion status"))	
-	ASSERT_EQUALS(aEapMethodStatus, aExpectedEapMethodStatus, 
-				_L("RMobileSmartCardEap::NotifyEapMethodAccessStatusChange Wrong result"))	
-	
-	// Cancel request if it is still pending	
-	if (aRequestStatus.Int() == KRequestPending)	
-		{
-		aRequestStatus.Cancel();
-		}
-	}
-#if 0
-template<typename T>		
-TInt TSimTsyTestHelper::GetNumberOfUsedEntriesInStoreL(	
-		RMobilePhoneStore& aPhoneStore, 
-		const TDesC& aStoreName,
-		T& aInfoPkg,
-		RMobilePhone& aPhone,
-		TInt& aUsedEntries1, 
-		TInt& aUsedEntries2)
-/**
- * Uses two methods of getting the number of entries in the ICC SMS store.
- * 
- * @param aSmsStore SMS store subsession
- * @param aGetInfoError Error returned by RMobilePhoneStore::GetInfo. If this is  
- * KErrNone, aUsedEntries is valid.
- * @param aUsedEntries Number of used entries as returned by RMobilePhoneStore::GetInfo
- * @param aGetPhoneStoreInfoError Error returned by RMobilePhone::GetPhoneStoreInfo. If this is
- * KErrNone, this indicates that aUsedEntries2 is valid.
- * @param aUsedEntriews2 Number of used entries as returned by RMobilePhone::GetPhoneStoreInfo
- * 
- * @return KErrNone if one of the get info APIs are supported, KErrNotSupported if neither
- * are supported.
- */
-	{
-	// Get number of entries using RMobilePhoneStore::GetInfo
-	TExtEtelRequestStatus getInfoStatus (aPhoneStore,EMobilePhoneStoreGetInfo);	
-	CleanupStack::PushL(getInfoStatus);
-	aPhoneStore.GetInfo(getInfoStatus,aInfoPkg);
-	ASSERT_EQUALS(iTestStep.WaitForRequestWithTimeOut(getInfoStatus, ETimeMedium), KErrNone,_L("RMobileSmsStore::GetInfo timed out"));
-	if (getInfoStatus.Int() == KErrNone)
-		{
-		aUsedEntries1 = aInfoPkg().iUsedEntries;
-		}
-	else
-		{
-		DEBUG_PRINTF2(_L("RMobilePhoneStore::GetInfo returned with error = %d"), getInfoStatus.Int());
-		}
-
-	// Get number of entries using RMobilePhone::GetPhoneStoreInfo
-	TExtEtelRequestStatus getInfoStatus2 (aPhoneStore,EMobilePhoneStoreGetInfo);	
-	CleanupStack::PushL(getInfoStatus2);	
-	aPhone.GetPhoneStoreInfo(getInfoStatus2,aInfoPkg, aStoreName);
-	ASSERT_EQUALS(iTestStep.WaitForRequestWithTimeOut(getInfoStatus2, ETimeMedium), KErrNone,_L("RMobilePhone::GetPhoneStoreInfo timed out"));
-	if (getInfoStatus2.Int() == KErrNone)
-		{
-		aUsedEntries2 = aInfoPkg().iUsedEntries;
-		}
-	else
-		{
-		DEBUG_PRINTF2(_L("RMobilePhone::GetPhoneStoreInfo returned with error = %d"), getInfoStatus2.Int());
-		}
-	
-	if (getInfoStatus.Int() == KErrNone || getInfoStatus2.Int() == KErrNone)
-		{
-		CleanupStack::PopAndDestroy(2);
-		return KErrNone;
-		}
-	else
-		{
-		CleanupStack::PopAndDestroy(2);
-		return KErrNotSupported;
-		}
-	}
-
-
-TInt TSimTsyTestHelper::AssertNumberOfUsedEntriesCorrectL
-						(RMobilePhoneStore& aPhoneStore, 
-						const TDesC& aStoreName,
-						T& aInfoPkg,
-						RMobilePhone& aPhone,
-						TInt aExpectedGetInfoEntries, 
-						TInt aExpectedGetPhoneStoreInfoEntries)
-/**
- * Call RMobilePhone::GetPhoneStoreInfo and RMobilePhoneStore::GetInfo  and checks
- * that the number of used entries in the phone book is the expected value if the
- * API is supported.
- * 
- * @param aPhoneStore Reference to phone store subsession.
- * @param aStoreName Store name from Etelmm
- * @param aExpectedGetInfoEntries A expected number of entries to be returned by 
- * RMobilePhoneStore::GetInfo
- * @param aExpectedGetPhoneStoreInfoEntries A expected number of entries to be
- * returned by RMobilePhone::GetPhoneStoreInfo
- * 
- * @return KErrNone if RMobilePhone::GetPhoneStoreInfo or RMobilePhoneStore::GetInfo
- * completed with KErrNone. KErrNotSupported otherwise.
- */
-	{
-	// Check RMobilePhoneStore::GetInfo returns iUsedEntries which is equal to aExpectedGetInfoEntries
-	TExtEtelRequestStatus getInfoStatus (aPhoneStore, EMobilePhoneStoreGetInfo);	
-	CleanupStack::PushL(getInfoStatus);
-	aPhoneStore.GetInfo(getInfoStatus,aInfoPkg);
-	ASSERT_EQUALS(iTestStep.WaitForRequestWithTimeOut(getInfoStatus, ETimeMedium), KErrNone, _L("RMobilePhoneStore::GetInfo, Timed out"))	
-
-	if (getInfoStatus.Int() == KErrNone)
-		{
-		ASSERT_EQUALS(getInfoStatus.Int(), KErrNone, _L("RMobilePhoneStore::GetInfo returned an error"))			
-		ASSERT_EQUALS(aExpectedGetInfoEntries, (aInfoPkg().iUsedEntries), _L("RMobilePhoneStore::GetInfo Unexpected number of iUsedEntries returned" ))
-		}
-	
-	// Check RMobilePhone::GetPhoneStoreInfo returns iUsedEntries which is equal to aExpectedGetPhoneStoreInfoEntries
-	TExtEtelRequestStatus getInfoStatus2 (aPhoneStore, EMobilePhoneStoreGetInfo);
-	CleanupStack::PushL(getInfoStatus2);	
-	aPhone.GetPhoneStoreInfo(getInfoStatus2,aInfoPkg, aStoreName);
-	ASSERT_EQUALS(iTestStep.WaitForRequestWithTimeOut(getInfoStatus2, ETimeMedium), KErrNone, _L("RMobilePhone::GetPhoneStoreInfo timed out"))
-
-	if (getInfoStatus2.Int() == KErrNone)
-		{
-		ASSERT_EQUALS(getInfoStatus2.Int(), KErrNone, _L("RMobilePhone::GetPhoneStoreInfo returned an error"))			
-		ASSERT_EQUALS(aExpectedGetPhoneStoreInfoEntries, (aInfoPkg().iUsedEntries ), _L("RMobilePhone::GetPhoneStoreInfo Unexpected number of iUsedEntries returned" ))
-		}
-	
-	if (getInfoStatus.Int() == KErrNone || getInfoStatus2.Int() == KErrNone)
-		{
-		CleanupStack::PopAndDestroy(2);
-		return KErrNone;
-		}
-	else
-		{
-		CleanupStack::PopAndDestroy(2);
-		return KErrNotSupported;
-		}
-	}
-#endif
-
-void TSimTsyTestHelper::VerifyPin2L(RMobilePhone& aMobilePhone, TNetworkTsyTestHelper& aNetworkTsyTestHelper)
-/**
- * member function for enabling pin2 for FDN phone book
- * @param aMobilePhone reference to RMobilePhone
- * @param aNetworkTsyTestHelper reference to TNetworkTsyTestHelper
- *
- * @return void.
- */
-	{
-
-	const TDesC* networkSection = NULL;
-	aNetworkTsyTestHelper.GetNetworkPasswordsSectionL(aMobilePhone,networkSection);
-	
-	// Get the password from the ini file
-	TPtrC password; 
-	CHECK_TRUE_L(iTestStep.GetStringFromConfig(*networkSection, KIniPin2, password) != EFalse, 
-			_L("GetStringFromConfig returned with an error"));
-
-	TExtEtelRequestStatus notifySecurityEventStatus(aMobilePhone, EMobilePhoneNotifySecurityEvent);
-	CleanupStack::PushL( notifySecurityEventStatus );
-	RMobilePhone::TMobilePhoneSecurityEvent securityEvent;
-	aMobilePhone.NotifySecurityEvent(notifySecurityEventStatus, securityEvent);
-
-	TExtEtelRequestStatus verifySecurityCodeStatus(aMobilePhone, EMobilePhoneVerifySecurityCode);
-	CleanupStack::PushL( verifySecurityCodeStatus );
-	RMobilePhone::TMobilePassword dummyUnblockCode; 
-	
-	aMobilePhone.VerifySecurityCode( verifySecurityCodeStatus, RMobilePhone::ESecurityCodePin2, 
-								password, dummyUnblockCode );
-							
-	CHECK_EQUALS_L(iTestStep.WaitForRequestWithTimeOut(verifySecurityCodeStatus, ETimeMedium), 
-			KErrNone, _L("RMobilePhone::VerifySecurityCode timed-out"));
-	CHECK_EQUALS_L( verifySecurityCodeStatus.Int(), KErrNone, _L("RMobilePhone::VerifySecurityCode returned with an error"));
-	
-	TInt err = iTestStep.WaitForRequestWithTimeOut(notifySecurityEventStatus, ETimeShort);	
-	CHECK_EQUALS_L(err, KErrNone, _L("RMobilePhone::NotifySecurityEvent did not complete"))
-	
-	while (	err == KErrNone && notifySecurityEventStatus.Int() == KErrNone  	
-							&& securityEvent != RMobilePhone::EPin2Verified )
-		{
-		// Request has completed with incorrect result. Consume any outstanding
-		// Repost notification until timeout or we get the right result.
-		
-		aMobilePhone.NotifySecurityEvent(notifySecurityEventStatus, securityEvent);
-		err = iTestStep.WaitForRequestWithTimeOut(notifySecurityEventStatus, ETimeShort);
-		}
-		
-	CHECK_EQUALS_L(notifySecurityEventStatus.Int(), KErrNone, _L("RMobilePhone::NotifySecurityEvent Wrong completion status"))	
-	CHECK_EQUALS_L(securityEvent, RMobilePhone::EPin2Verified, 
-				_L("RMobilePhone::NotifySecurityEvent Wrong result"))	
-	
-	// Cancel request if it is still pending	
-	if (notifySecurityEventStatus.Int() == KRequestPending)	
-		{
-		notifySecurityEventStatus.Cancel();
-		}
-	
-	CleanupStack::PopAndDestroy(2,&notifySecurityEventStatus);
-
-	}
+// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "tsimtsytesthelper.h" 
+#include "cctsyinidata.h"
+
+/**
+* Constructor
+*/	
+TSimTsyTestHelper::TSimTsyTestHelper(CCTSYIntegrationTestSuiteStepBase& aTestStep)
+			: TTsyTestHelperBase( aTestStep )
+	{
+	}
+/**
+* Notify reset for RMobilePhone::NotifyUSimApplicationsInfoChange
+*/	
+void TSimTsyTestHelper::WaitForMobilePhoneNotifyUSimApplicationsInfoChange( 
+				RMobilePhone& aMobilePhone,
+				TEtelRequestBase& aRequestStatus,
+				TInt& aCount, 
+				TInt aExpectedCount,
+				RMobilePhone::TAID &aActiveAID,
+				TInt aWantedStatus )
+
+	{
+	// Wait for the request to complete	
+	TInt err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);	
+	ASSERT_EQUALS(err, KErrNone, _L("RMobilePhone::NotifyUSimApplicationsInfoChange did not complete"))
+	
+	while (	err == KErrNone && aRequestStatus.Int() == KErrNone  	
+							&& aCount != aExpectedCount )
+		{
+		// Request has completed with incorrect result. Consume any outstanding
+		// Repost notification until timeout or we get the right result.
+		
+		aMobilePhone.NotifyUSimApplicationsInfoChange(aRequestStatus, aCount, aActiveAID);
+		err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);
+		}
+		
+	ASSERT_EQUALS(aRequestStatus.Int(), aWantedStatus, _L("RMobilePhone::NotifyUSimApplicationsInfoChange Wrong completion status"))	
+	ASSERT_EQUALS(aCount, aExpectedCount, 
+				_L("RMobilePhone::NotifyUSimApplicationsInfoChange Wrong result"))	
+	
+	// Cancel request if it is still pending	
+	if (aRequestStatus.Int() == KRequestPending)	
+		{
+		aRequestStatus.Cancel();
+		}
+	}
+
+		
+/**
+* Notify reset for RMobilePhone::NotifyUSimAppsSelectionModeChange
+*/	
+void TSimTsyTestHelper::WaitForMobilePhoneNotifyUSimAppsSelectionModeChange( 
+				RMobilePhone& aMobilePhone,
+				TEtelRequestBase& aRequestStatus,
+				RMobilePhone::TUSimSelectionMode& aUSimSelectionMode, 
+				RMobilePhone::TUSimSelectionMode aExpectedUSimSelectionMode,
+				TInt aWantedStatus )
+
+	{
+	// Wait for the request to complete	
+	TInt err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);	
+	ASSERT_EQUALS(err, KErrNone, _L("RMobilePhone::NotifyUSimAppsSelectionModeChange did not complete"))
+	
+	while (	err == KErrNone && aRequestStatus.Int() == KErrNone  	
+							&& aUSimSelectionMode != aExpectedUSimSelectionMode )
+		{
+		// Request has completed with incorrect result. Consume any outstanding
+		// Repost notification until timeout or we get the right result.
+		
+		aMobilePhone.NotifyUSimAppsSelectionModeChange(aRequestStatus, aUSimSelectionMode);
+		err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);
+		}
+		
+	ASSERT_EQUALS(aRequestStatus.Int(), aWantedStatus, _L("RMobilePhone::NotifyUSimAppsSelectionModeChange Wrong completion status"))	
+	ASSERT_EQUALS(aUSimSelectionMode, aExpectedUSimSelectionMode, 
+				_L("RMobilePhone::NotifyUSimAppsSelectionModeChange Wrong result"))	
+	
+	// Cancel request if it is still pending	
+	if (aRequestStatus.Int() == KRequestPending)	
+		{
+		aRequestStatus.Cancel();
+		}
+	}
+
+		
+/**
+* Notify reset for RMobilePhone::NotifyUUSSettingChange
+*/	
+void TSimTsyTestHelper::WaitForMobilePhoneNotifyUUSSettingChange( 
+				RMobilePhone& aMobilePhone,
+				TEtelRequestBase& aRequestStatus,
+				RMobilePhone::TMobilePhoneUUSSetting& aSetting, 
+				RMobilePhone::TMobilePhoneUUSSetting aExpectedSetting,
+				TInt aWantedStatus )
+
+	{
+	// Wait for the request to complete	
+	TInt err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);	
+	ASSERT_EQUALS(err, KErrNone, _L("RMobilePhone::NotifyUUSSettingChange did not complete"))
+	
+	while (	err == KErrNone && aRequestStatus.Int() == KErrNone  	
+							&& aSetting != aExpectedSetting )
+		{
+		// Request has completed with incorrect result. Consume any outstanding
+		// Repost notification until timeout or we get the right result.
+		
+		aMobilePhone.NotifyUUSSettingChange(aRequestStatus, aSetting);
+		err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);
+		}
+		
+	ASSERT_EQUALS(aRequestStatus.Int(), aWantedStatus, _L("RMobilePhone::NotifyUUSSettingChange Wrong completion status"))	
+	ASSERT_EQUALS(aSetting, aExpectedSetting, 
+				_L("RMobilePhone::NotifyUUSSettingChange Wrong result"))	
+	
+	// Cancel request if it is still pending	
+	if (aRequestStatus.Int() == KRequestPending)	
+		{
+		aRequestStatus.Cancel();
+		}
+	}
+
+		
+/**
+* Notify reset for RMobilePhone::NotifyIccMessageWaitingIndicatorsChange
+*/	
+void TSimTsyTestHelper::WaitForMobilePhoneNotifyIccMessageWaitingIndicatorsChange( 
+				RMobilePhone& aMobilePhone,
+				TEtelRequestBase& aRequestStatus,
+				TCmpBase<RMobilePhone::TMobilePhoneMessageWaitingV1> &aMobilePhoneMessageWaitingV1,
+				TInt aWantedStatus )
+
+	{
+	// Wait for the request to complete	
+	TInt err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);	
+	ASSERT_EQUALS(err, KErrNone, _L("RMobilePhone::NotifyIccMessageWaitingIndicatorsChange did not complete"))
+	
+	while (	err == KErrNone && aRequestStatus.Int() == KErrNone  	
+							&& !aMobilePhoneMessageWaitingV1.IsEqual(ENoLogError) )
+		{
+		// Request has completed with incorrect result. Consume any outstanding
+		// Repost notification until timeout or we get the right result.		
+		RMobilePhone::TMobilePhoneMessageWaitingV1Pckg pkgParam( aMobilePhoneMessageWaitingV1.GetValue() );
+		aMobilePhone.NotifyIccMessageWaitingIndicatorsChange(aRequestStatus, pkgParam);
+		err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);
+		}
+
+	ASSERT_EQUALS(aRequestStatus.Int(), aWantedStatus, _L("RMobilePhone::NotifyIccMessageWaitingIndicatorsChange Wrong completion status"))	
+	ASSERT_TRUE(aMobilePhoneMessageWaitingV1.IsEqual(ELogError), 
+				_L("RMobilePhone::NotifyIccMessageWaitingIndicatorsChange Wrong result"))	
+	
+	// Cancel request if it is still pending	
+	if (aRequestStatus.Int() == KRequestPending)	
+		{
+		aRequestStatus.Cancel();
+		}
+	}
+
+		
+/**
+* Notify reset for RMobilePhone::NotifyImsAuthorizationInfoChange
+*/	
+void TSimTsyTestHelper::WaitForMobilePhoneNotifyImsAuthorizationInfoChange( 
+				TEtelRequestBase& aRequestStatus,
+				TInt aWantedStatus )
+
+	{
+	// Wait for the request to complete	
+	TInt err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);	
+	ASSERT_EQUALS(err, KErrNone, _L("RMobilePhone::NotifyImsAuthorizationInfoChange did not complete"))
+	ASSERT_EQUALS(aRequestStatus.Int(), aWantedStatus, _L("RMobilePhone::NotifyImsAuthorizationInfoChange Wrong completion status"))		
+	// Cancel request if it is still pending	
+	if (aRequestStatus.Int() == KRequestPending)	
+		{
+		aRequestStatus.Cancel();
+		}
+	}
+
+		
+/**
+* Notify reset for RMobilePhone::NotifySmartCardApplicationInfoChange
+*/	
+void TSimTsyTestHelper::WaitForMobilePhoneNotifySmartCardApplicationInfoChange( 
+				RMobilePhone& aMobilePhone,
+				TEtelRequestBase& aRequestStatus,
+				RMobilePhone::TAID& aAID, 
+				RMobilePhone::TAID& aExpectedAID,
+				RMobilePhone::TSmartCardApplicationEvent &aEvent,
+				TInt aWantedStatus )
+
+	{
+	// Wait for the request to complete	
+	TInt err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);	
+	ASSERT_EQUALS(err, KErrNone, _L("RMobilePhone::NotifySmartCardApplicationInfoChange did not complete"))
+	
+	while (	err == KErrNone && aRequestStatus.Int() == KErrNone  	
+							&& aAID != aExpectedAID )
+		{
+		// Request has completed with incorrect result. Consume any outstanding
+		// Repost notification until timeout or we get the right result.
+		
+		aMobilePhone.NotifySmartCardApplicationInfoChange(aRequestStatus, aAID, aEvent);
+		err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);
+		}
+		
+	ASSERT_EQUALS(aRequestStatus.Int(), aWantedStatus, _L("RMobilePhone::NotifySmartCardApplicationInfoChange Wrong completion status"))	
+	ASSERT_EQUALS_DES8(aAID, aExpectedAID, 
+				_L("RMobilePhone::NotifySmartCardApplicationInfoChange Wrong result"))	
+	
+	// Cancel request if it is still pending	
+	if (aRequestStatus.Int() == KRequestPending)	
+		{
+		aRequestStatus.Cancel();
+		}
+	}
+
+		
+/**
+* Notify reset for RMobilePhone::NotifyMailboxNumbersChange
+*/	
+void TSimTsyTestHelper::WaitForMobilePhoneNotifyMailboxNumbersChange( 
+				RMobilePhone& aMobilePhone,
+				TEtelRequestBase& aRequestStatus,
+				TCmpBase<RMobilePhone::TMobilePhoneVoicemailIdsV3> &aMobilePhoneVoicemailIdsV3,
+				TInt aWantedStatus )
+
+	{
+	// Wait for the request to complete	
+	TInt err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);	
+	ASSERT_EQUALS(err, KErrNone, _L("RMobilePhone::NotifyMailboxNumbersChange did not complete"))
+	
+	while (	err == KErrNone && aRequestStatus.Int() == KErrNone  	
+							&& !aMobilePhoneVoicemailIdsV3.IsEqual(ENoLogError) )
+		{
+		// Request has completed with incorrect result. Consume any outstanding
+		// Repost notification until timeout or we get the right result.		
+		RMobilePhone::TMobilePhoneVoicemailIdsV3Pckg pkgParam( aMobilePhoneVoicemailIdsV3.GetValue() );
+		aMobilePhone.NotifyMailboxNumbersChange(aRequestStatus, pkgParam);
+		err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);
+		}
+
+	ASSERT_EQUALS(aRequestStatus.Int(), aWantedStatus, _L("RMobilePhone::NotifyMailboxNumbersChange Wrong completion status"))	
+	ASSERT_TRUE(aMobilePhoneVoicemailIdsV3.IsEqual(ELogError), 
+				_L("RMobilePhone::NotifyMailboxNumbersChange Wrong result"))	
+	
+	// Cancel request if it is still pending	
+	if (aRequestStatus.Int() == KRequestPending)	
+		{
+		aRequestStatus.Cancel();
+		}
+	}
+
+		
+/**
+* Notify reset for RMobilePhoneStore::NotifyStoreEvent
+*/	
+void TSimTsyTestHelper::WaitForMobilePhoneStoreNotifyStoreEvent( 
+				RMobilePhoneStore& aMobilePhoneStore,
+				TEtelRequestBase& aRequestStatus,
+				TUint32& aEvent, 
+				TUint32 aExpectedEvent,
+				TInt &aIndex,
+				TInt aWantedStatus )
+
+	{
+	// Wait for the request to complete	
+	TInt err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeMedium);	
+	ASSERT_EQUALS(err, KErrNone, _L("RMobilePhoneStore::NotifyStoreEvent did not complete"))
+
+	while (	err == KErrNone && aRequestStatus.Int() == KErrNone  	
+							&& aEvent != aExpectedEvent )
+		{
+		// Request has completed with incorrect result. Consume any outstanding
+		// Repost notification until timeout or we get the right result.
+		
+		aMobilePhoneStore.NotifyStoreEvent(aRequestStatus, aEvent, aIndex);
+		err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeMedium);
+		}
+		
+	ASSERT_EQUALS(aRequestStatus.Int(), aWantedStatus, _L("RMobilePhoneStore::NotifyStoreEvent Wrong completion status"))	
+	ASSERT_EQUALS(aEvent, aExpectedEvent, 
+				_L("RMobilePhoneStore::NotifyStoreEvent Wrong result"))	
+	
+	// Cancel request if it is still pending	
+	if (aRequestStatus.Int() == KRequestPending)	
+		{
+		aRequestStatus.Cancel();
+		}
+	}
+
+		
+/**
+* Notify reset for RMobileSmartCardEap::NotifyEapMethodAccessStatusChange
+*/	
+void TSimTsyTestHelper::WaitForMobileSmartCardEapNotifyEapMethodAccessStatusChange( 
+				RMobileSmartCardEap& aMobileSmartCardEap,
+				TEtelRequestBase& aRequestStatus,
+				RMobileSmartCardEap::TEapMethodAccessStatus& aEapMethodStatus, 
+				RMobileSmartCardEap::TEapMethodAccessStatus aExpectedEapMethodStatus,
+				TInt aWantedStatus )
+
+	{
+	// Wait for the request to complete	
+	TInt err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);	
+	ASSERT_EQUALS(err, KErrNone, _L("RMobileSmartCardEap::NotifyEapMethodAccessStatusChange did not complete"))
+	
+	while (	err == KErrNone && aRequestStatus.Int() == KErrNone  	
+							&& aEapMethodStatus != aExpectedEapMethodStatus )
+		{
+		// Request has completed with incorrect result. Consume any outstanding
+		// Repost notification until timeout or we get the right result.
+		
+		aMobileSmartCardEap.NotifyEapMethodAccessStatusChange(aRequestStatus, aEapMethodStatus);
+		err = iTestStep.WaitForRequestWithTimeOut(aRequestStatus, ETimeShort);
+		}
+		
+	ASSERT_EQUALS(aRequestStatus.Int(), aWantedStatus, _L("RMobileSmartCardEap::NotifyEapMethodAccessStatusChange Wrong completion status"))	
+	ASSERT_EQUALS(aEapMethodStatus, aExpectedEapMethodStatus, 
+				_L("RMobileSmartCardEap::NotifyEapMethodAccessStatusChange Wrong result"))	
+	
+	// Cancel request if it is still pending	
+	if (aRequestStatus.Int() == KRequestPending)	
+		{
+		aRequestStatus.Cancel();
+		}
+	}
+#if 0
+template<typename T>		
+TInt TSimTsyTestHelper::GetNumberOfUsedEntriesInStoreL(	
+		RMobilePhoneStore& aPhoneStore, 
+		const TDesC& aStoreName,
+		T& aInfoPkg,
+		RMobilePhone& aPhone,
+		TInt& aUsedEntries1, 
+		TInt& aUsedEntries2)
+/**
+ * Uses two methods of getting the number of entries in the ICC SMS store.
+ * 
+ * @param aSmsStore SMS store subsession
+ * @param aGetInfoError Error returned by RMobilePhoneStore::GetInfo. If this is  
+ * KErrNone, aUsedEntries is valid.
+ * @param aUsedEntries Number of used entries as returned by RMobilePhoneStore::GetInfo
+ * @param aGetPhoneStoreInfoError Error returned by RMobilePhone::GetPhoneStoreInfo. If this is
+ * KErrNone, this indicates that aUsedEntries2 is valid.
+ * @param aUsedEntriews2 Number of used entries as returned by RMobilePhone::GetPhoneStoreInfo
+ * 
+ * @return KErrNone if one of the get info APIs are supported, KErrNotSupported if neither
+ * are supported.
+ */
+	{
+	// Get number of entries using RMobilePhoneStore::GetInfo
+	TExtEtelRequestStatus getInfoStatus (aPhoneStore,EMobilePhoneStoreGetInfo);	
+	CleanupStack::PushL(getInfoStatus);
+	aPhoneStore.GetInfo(getInfoStatus,aInfoPkg);
+	ASSERT_EQUALS(iTestStep.WaitForRequestWithTimeOut(getInfoStatus, ETimeMedium), KErrNone,_L("RMobileSmsStore::GetInfo timed out"));
+	if (getInfoStatus.Int() == KErrNone)
+		{
+		aUsedEntries1 = aInfoPkg().iUsedEntries;
+		}
+	else
+		{
+		DEBUG_PRINTF2(_L("RMobilePhoneStore::GetInfo returned with error = %d"), getInfoStatus.Int());
+		}
+
+	// Get number of entries using RMobilePhone::GetPhoneStoreInfo
+	TExtEtelRequestStatus getInfoStatus2 (aPhoneStore,EMobilePhoneStoreGetInfo);	
+	CleanupStack::PushL(getInfoStatus2);	
+	aPhone.GetPhoneStoreInfo(getInfoStatus2,aInfoPkg, aStoreName);
+	ASSERT_EQUALS(iTestStep.WaitForRequestWithTimeOut(getInfoStatus2, ETimeMedium), KErrNone,_L("RMobilePhone::GetPhoneStoreInfo timed out"));
+	if (getInfoStatus2.Int() == KErrNone)
+		{
+		aUsedEntries2 = aInfoPkg().iUsedEntries;
+		}
+	else
+		{
+		DEBUG_PRINTF2(_L("RMobilePhone::GetPhoneStoreInfo returned with error = %d"), getInfoStatus2.Int());
+		}
+	
+	if (getInfoStatus.Int() == KErrNone || getInfoStatus2.Int() == KErrNone)
+		{
+		CleanupStack::PopAndDestroy(2);
+		return KErrNone;
+		}
+	else
+		{
+		CleanupStack::PopAndDestroy(2);
+		return KErrNotSupported;
+		}
+	}
+
+
+TInt TSimTsyTestHelper::AssertNumberOfUsedEntriesCorrectL
+						(RMobilePhoneStore& aPhoneStore, 
+						const TDesC& aStoreName,
+						T& aInfoPkg,
+						RMobilePhone& aPhone,
+						TInt aExpectedGetInfoEntries, 
+						TInt aExpectedGetPhoneStoreInfoEntries)
+/**
+ * Call RMobilePhone::GetPhoneStoreInfo and RMobilePhoneStore::GetInfo  and checks
+ * that the number of used entries in the phone book is the expected value if the
+ * API is supported.
+ * 
+ * @param aPhoneStore Reference to phone store subsession.
+ * @param aStoreName Store name from Etelmm
+ * @param aExpectedGetInfoEntries A expected number of entries to be returned by 
+ * RMobilePhoneStore::GetInfo
+ * @param aExpectedGetPhoneStoreInfoEntries A expected number of entries to be
+ * returned by RMobilePhone::GetPhoneStoreInfo
+ * 
+ * @return KErrNone if RMobilePhone::GetPhoneStoreInfo or RMobilePhoneStore::GetInfo
+ * completed with KErrNone. KErrNotSupported otherwise.
+ */
+	{
+	// Check RMobilePhoneStore::GetInfo returns iUsedEntries which is equal to aExpectedGetInfoEntries
+	TExtEtelRequestStatus getInfoStatus (aPhoneStore, EMobilePhoneStoreGetInfo);	
+	CleanupStack::PushL(getInfoStatus);
+	aPhoneStore.GetInfo(getInfoStatus,aInfoPkg);
+	ASSERT_EQUALS(iTestStep.WaitForRequestWithTimeOut(getInfoStatus, ETimeMedium), KErrNone, _L("RMobilePhoneStore::GetInfo, Timed out"))	
+
+	if (getInfoStatus.Int() == KErrNone)
+		{
+		ASSERT_EQUALS(getInfoStatus.Int(), KErrNone, _L("RMobilePhoneStore::GetInfo returned an error"))			
+		ASSERT_EQUALS(aExpectedGetInfoEntries, (aInfoPkg().iUsedEntries), _L("RMobilePhoneStore::GetInfo Unexpected number of iUsedEntries returned" ))
+		}
+	
+	// Check RMobilePhone::GetPhoneStoreInfo returns iUsedEntries which is equal to aExpectedGetPhoneStoreInfoEntries
+	TExtEtelRequestStatus getInfoStatus2 (aPhoneStore, EMobilePhoneStoreGetInfo);
+	CleanupStack::PushL(getInfoStatus2);	
+	aPhone.GetPhoneStoreInfo(getInfoStatus2,aInfoPkg, aStoreName);
+	ASSERT_EQUALS(iTestStep.WaitForRequestWithTimeOut(getInfoStatus2, ETimeMedium), KErrNone, _L("RMobilePhone::GetPhoneStoreInfo timed out"))
+
+	if (getInfoStatus2.Int() == KErrNone)
+		{
+		ASSERT_EQUALS(getInfoStatus2.Int(), KErrNone, _L("RMobilePhone::GetPhoneStoreInfo returned an error"))			
+		ASSERT_EQUALS(aExpectedGetPhoneStoreInfoEntries, (aInfoPkg().iUsedEntries ), _L("RMobilePhone::GetPhoneStoreInfo Unexpected number of iUsedEntries returned" ))
+		}
+	
+	if (getInfoStatus.Int() == KErrNone || getInfoStatus2.Int() == KErrNone)
+		{
+		CleanupStack::PopAndDestroy(2);
+		return KErrNone;
+		}
+	else
+		{
+		CleanupStack::PopAndDestroy(2);
+		return KErrNotSupported;
+		}
+	}
+#endif
+
+void TSimTsyTestHelper::VerifyPin2L(RMobilePhone& aMobilePhone, TNetworkTsyTestHelper& aNetworkTsyTestHelper)
+/**
+ * member function for enabling pin2 for FDN phone book
+ * @param aMobilePhone reference to RMobilePhone
+ * @param aNetworkTsyTestHelper reference to TNetworkTsyTestHelper
+ *
+ * @return void.
+ */
+	{
+
+	const TDesC* networkSection = NULL;
+	aNetworkTsyTestHelper.GetNetworkPasswordsSectionL(aMobilePhone,networkSection);
+	
+	// Get the password from the ini file
+	TPtrC password; 
+	CHECK_TRUE_L(iTestStep.GetStringFromConfig(*networkSection, KIniPin2, password) != EFalse, 
+			_L("GetStringFromConfig returned with an error"));
+
+	TExtEtelRequestStatus notifySecurityEventStatus(aMobilePhone, EMobilePhoneNotifySecurityEvent);
+	CleanupStack::PushL( notifySecurityEventStatus );
+	RMobilePhone::TMobilePhoneSecurityEvent securityEvent;
+	aMobilePhone.NotifySecurityEvent(notifySecurityEventStatus, securityEvent);
+
+	TExtEtelRequestStatus verifySecurityCodeStatus(aMobilePhone, EMobilePhoneVerifySecurityCode);
+	CleanupStack::PushL( verifySecurityCodeStatus );
+	RMobilePhone::TMobilePassword dummyUnblockCode; 
+	
+	aMobilePhone.VerifySecurityCode( verifySecurityCodeStatus, RMobilePhone::ESecurityCodePin2, 
+								password, dummyUnblockCode );
+							
+	CHECK_EQUALS_L(iTestStep.WaitForRequestWithTimeOut(verifySecurityCodeStatus, ETimeMedium), 
+			KErrNone, _L("RMobilePhone::VerifySecurityCode timed-out"));
+	CHECK_EQUALS_L( verifySecurityCodeStatus.Int(), KErrNone, _L("RMobilePhone::VerifySecurityCode returned with an error"));
+	
+	TInt err = iTestStep.WaitForRequestWithTimeOut(notifySecurityEventStatus, ETimeShort);	
+	CHECK_EQUALS_L(err, KErrNone, _L("RMobilePhone::NotifySecurityEvent did not complete"))
+	
+	while (	err == KErrNone && notifySecurityEventStatus.Int() == KErrNone  	
+							&& securityEvent != RMobilePhone::EPin2Verified )
+		{
+		// Request has completed with incorrect result. Consume any outstanding
+		// Repost notification until timeout or we get the right result.
+		
+		aMobilePhone.NotifySecurityEvent(notifySecurityEventStatus, securityEvent);
+		err = iTestStep.WaitForRequestWithTimeOut(notifySecurityEventStatus, ETimeShort);
+		}
+		
+	CHECK_EQUALS_L(notifySecurityEventStatus.Int(), KErrNone, _L("RMobilePhone::NotifySecurityEvent Wrong completion status"))	
+	CHECK_EQUALS_L(securityEvent, RMobilePhone::EPin2Verified, 
+				_L("RMobilePhone::NotifySecurityEvent Wrong result"))	
+	
+	// Cancel request if it is still pending	
+	if (notifySecurityEventStatus.Int() == KRequestPending)	
+		{
+		notifySecurityEventStatus.Cancel();
+		}
+	
+	CleanupStack::PopAndDestroy(2,&notifySecurityEventStatus);
+
+	}