telephonyserverplugins/multimodetsy/test/Te_Misc/Te_Misc.cpp
changeset 0 3553901f7fa8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/multimodetsy/test/Te_Misc/Te_Misc.cpp	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,1305 @@
+// Copyright (c) 2002-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:
+// This file contains the main methods that test the Misc
+// Functionality of the MMTSY
+// 
+//
+
+/**
+ @file
+*/
+
+#include "Te_Misc.h"
+
+const TInt KOneSecond=1000000;		// Used in a time out function, 1 second (in microSeconds)
+
+
+/*-- Server info Test -----------------------------------------------------------------*/
+
+CServerInfo::CServerInfo()
+/** Each test step initialises it's own name
+*/
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	SetTestStepName(_L("ServerInfo"));
+	}
+
+TVerdict CServerInfo::doTestStepL( void )
+/**
+ * This function retrieves the number of phones supported by the loaded ETel Tsy
+ * Modules. Also gets information associated with the phone and queries the Tsy
+ * about its supported functionality.
+ */
+	{
+	TInt numOfPhones;
+	TESTL(iTelServer.EnumeratePhones(numOfPhones)==KErrNone);
+	INFO_PRINTF2(_L("No. of phones supported by loaded ETel modules = %d"), numOfPhones);
+
+	// Phone information
+	RTelServer::TPhoneInfo phoneInfo;
+	TEST_CHECKL(iTelServer.GetPhoneInfo(numOfPhones-1, phoneInfo),KErrNone, _L("Failed GetPhoneInfo()"));
+
+	// Get the Network Type
+	const TText* type=_S("Unknown");
+	switch(phoneInfo.iNetworkType)
+		{
+		case RTelServer::ENetworkTypeWiredAnalog:				
+			type=_S("Wired Analog Network"); break;
+		case RTelServer::ENetworkTypeWiredDigital:
+			type=_S("Wired Digital Network"); break;
+		case RTelServer::ENetworkTypeMobileAnalog:
+			type=_S("Mobile Analog Network"); break;
+		case RTelServer::ENetworkTypeMobileDigital:
+			type=_S("Mobile Digital Network"); break;
+		default:
+			type=_S("Unknown Network Type"); break;
+		}
+
+	INFO_PRINTF2(_L("Network Type : %s"), type);
+	INFO_PRINTF2(_L("Phone's name : %S"), &phoneInfo.iName);
+	INFO_PRINTF2(_L("No. of lines supported by the phone : %d"), phoneInfo.iNumberOfLines);
+	INFO_PRINTF2(_L("Extensions supported by Tsy Module : %d"), phoneInfo.iExtensions);
+	
+
+	// Query TSY about supported functionality
+	TBool result;
+	TInt mixin=1; // same value used by etel\tetel\t_hyres1.cpp
+
+	TBuf<10> tsyName;
+	tsyName = KMmtsyName;
+
+	TESTL(iTelServer.IsSupportedByModule(tsyName, mixin, result)==KErrNone);
+	INFO_PRINTF1(_L("Querying TSY about supported functionality is Successful"));
+
+	return TestStepResult();
+	}
+
+
+
+
+/*-- Signal And Battery Strength Test -------------------------------------------------*/
+
+CSignalAndBatteryStrengthTest::CSignalAndBatteryStrengthTest()
+/** Each test step initialises it's own name
+*/
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	SetTestStepName(_L("SignalAndBatteryStrengthTest"));
+	}
+
+TVerdict CSignalAndBatteryStrengthTest::doTestStepL( void )	
+/** 
+ * This method retrieves a phone's Signal and Battery Strength Information.
+ */
+	{
+	INFO_PRINTF1(_L("Get Signal And Battery Strength Information"));
+
+	// Test Getting Battery caps
+	INFO_PRINTF1(_L("Calling RMobilePhone::GetBatteryCaps()"));
+	TUint32 aCaps;
+	TEST_CHECKL(iPhone.GetBatteryCaps(aCaps), KErrNone, _L("Failed RMobilePhone::GetBatteryCaps()")) ;
+
+	//Print Capabilities
+	if(aCaps & RMobilePhone::KCapsGetBatteryInfo)
+		{
+		INFO_PRINTF1(_L("Phone supports requests to get the current battery info"));
+		}
+	if(aCaps & RMobilePhone::KCapsNotifyBatteryInfoChange)
+		{
+		INFO_PRINTF1(_L("Phone supports requests for notification of change in battery information."));
+		}
+
+
+	//Test Getting Signal caps
+	INFO_PRINTF1(_L("Calling RMobilePhone::GetSignalCaps()"));
+	TEST_CHECKL(iPhone.GetSignalCaps(aCaps), KErrNone, _L("Failed RMobilePhone::GetSignalCaps()"));
+
+	//Print Capabilities
+	if(aCaps & RMobilePhone::KCapsGetSignalStrength)
+		{
+		INFO_PRINTF1(_L("Phone supports requests to get the current signal strength"));
+		}
+	if(aCaps & RMobilePhone::KCapsNotifySignalStrengthChange)
+		{
+		INFO_PRINTF1(_L("Phone supports requests for notification of change in signal strength"));
+		}
+
+
+	//Test Getting Battery Info
+	INFO_PRINTF1(_L("Calling RMobilePhone::GetBatteryInfo()"));
+	RMobilePhone::TMobilePhoneBatteryInfoV1 battery;
+	iPhone.GetBatteryInfo(iStatus, battery);
+	User::WaitForRequest(iStatus);
+	if (iStatus==KErrNone)
+		{
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("Battery status : %d")), battery.iStatus);
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("Battery charge level : %d")), battery.iChargeLevel);
+		}
+	else
+		{
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("Battery charge, Error %d returned.")), iStatus.Int());
+		SetTestStepResult(EFail);
+		}
+
+
+	//Get Signal Strength
+	TInt32 signalStrength;
+	TInt8 bars;
+
+	INFO_PRINTF1(_L("Calling RMobilePhone::GetSignalStrength()"));
+	iPhone.GetSignalStrength(iStatus, signalStrength, bars);
+	User::WaitForRequest(iStatus);
+	if (iStatus==KErrNone)
+		{
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("Signal strength (in dBm) : %d")), signalStrength);
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("Signal strength (in display bars) : %d")), bars);
+		}
+
+	else
+		{
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("Signal strength, Error %d returned.")), iStatus.Int());
+		SetTestStepResult(EFail);
+		}
+
+
+	//Test Cancelling requests
+	INFO_PRINTF1(_L("Performing Cancel Requests for the above functions"));
+
+	iPhone.GetBatteryInfo(iStatus, battery);
+	iPhone.CancelAsyncRequest(EMobilePhoneGetBatteryInfo);
+	User::WaitForRequest(iStatus);
+	INFO_PRINTF2(TRefByValue<const TDesC>(_L("GetBatteryInfo Cancel status = %d")), iStatus.Int());
+	User::After(1000000); //Wait for phone to produce response and for TSY to reject it
+
+	iPhone.GetSignalStrength(iStatus, signalStrength, bars);
+	iPhone.CancelAsyncRequest(EMobilePhoneGetSignalStrength);
+	User::WaitForRequest(iStatus);
+	INFO_PRINTF2(TRefByValue<const TDesC>(_L("GetSignalStrength Cancel status = %d")), iStatus.Int());
+	User::After(1000000); //Wait for phone to produce response and for TSY to reject it
+
+	return TestStepResult();
+	}
+
+
+/*-- Manufacturer Info Test -----------------------------------------------------------*/
+CManufacturerInfoTest::CManufacturerInfoTest()
+/** Each test step initialises it's own name
+*/
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	SetTestStepName(_L("ManufacturerInfoTest"));
+	}
+
+TVerdict CManufacturerInfoTest::doTestStepL( void )	
+/** 
+ * This method retrieves a phone's Signal and Battery Strength Information.
+ */
+	{
+	INFO_PRINTF1(_L("Get Manufacturer ID, Model ID, Revision ID and Serial Number"));
+
+	//Test Getting Phone Identity Caps
+	INFO_PRINTF1(_L("Calling RMobilePhone::GetIdentityCaps()"));
+	TUint32 aCaps;
+	TInt ret = iPhone.GetIdentityCaps(aCaps);
+	if(ret) 
+		{
+		INFO_PRINTF2(_L("RMobilePhone::GetIdentityCaps() returned %d"), ret);
+		SetTestStepResult(EFail);
+		}
+
+	if(aCaps & RMobilePhone::KCapsGetManufacturer)
+		{
+		INFO_PRINTF1(_L("Phone can return the identity of its manufacturer"));
+		}
+	if(aCaps & RMobilePhone::KCapsGetModel)
+		{
+		INFO_PRINTF1(_L("Phone can return the identity of its model"));
+		}
+	if(aCaps & RMobilePhone::KCapsGetRevision)
+		{
+		INFO_PRINTF1(_L("Phone can return the identity of its revision"));
+		}
+	if(aCaps & RMobilePhone::KCapsGetSerialNumber)
+		{
+		INFO_PRINTF1(_L("Phone can return the identity of its serial number"));
+		}
+	if(aCaps & RMobilePhone::KCapsGetSubscriberId)
+		{	
+		INFO_PRINTF1(_L("Phone can return the identity of its subscriber"));
+		}
+
+
+	INFO_PRINTF1(_L("Calling RMobilePhone::GetPhoneId()"));
+	RMobilePhone::TMobilePhoneIdentityV1 phoneId;
+	iPhone.GetPhoneId(iStatus, phoneId);
+	User::WaitForRequest(iStatus);
+
+	if (iStatus==KErrNone)
+		{
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("Manufacturer ID : %S")), &phoneId.iManufacturer);
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("Model ID : %S")), &phoneId.iModel);
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("Revision ID : %S")), &phoneId.iRevision);
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("Serial number : %S")), &phoneId.iSerialNumber);
+		}
+	else
+		{
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("Error RMobilePhone::GetPhoneId() returned %d")), iStatus.Int());
+		SetTestStepResult(EFail);
+		}
+		
+	return TestStepResult();	
+	}
+
+/*-- Subscriber ID Test -----------------------------------------------------------*/
+CSubscriberIdTest::CSubscriberIdTest()
+/** Each test step initialises it's own name
+*/
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	SetTestStepName(_L("SubscriberIdTest"));
+	}
+
+TVerdict CSubscriberIdTest::doTestStepL( void )	
+/** 
+ * This method retrieves a phone's subscriber ID
+ */
+	{
+	INFO_PRINTF1(_L("Get Subscriber ID"));
+
+	// Get subscriber ID test
+	INFO_PRINTF1(_L("Calling RMobilePhone::GetSubscriberId()"));
+	RMobilePhone::TMobilePhoneSubscriberId subId;
+	iPhone.GetSubscriberId(iStatus, subId);
+	User::WaitForRequest(iStatus);
+	
+	// Do not consider KErrNotSupported return code as a test failure
+	if(iStatus==KErrNotSupported)
+		{	
+		INFO_PRINTF1(_L("***Phone returned KErrNotSupported***"));
+		}
+	else if(iStatus!=KErrNone)
+		{
+		// Log that and error occurred
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("GetSubscriberId failed with status %d")), iStatus.Int());
+		SetTestStepResult(EFail);
+		}
+
+	if(iStatus==KErrNone)
+		{
+		// Log the Subscriber ID returned
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("SubscriberId: %S")), &subId);
+		}
+							
+	
+	// Get subscriber ID and then cancel test
+	iPhone.GetSubscriberId(iStatus, subId);
+	iPhone.CancelAsyncRequest(EMobilePhoneGetSubscriberId);
+	User::WaitForRequest(iStatus);
+	INFO_PRINTF2(TRefByValue<const TDesC>(_L("RMobilePhone::GetSubscriberIdCancel status = %d")), iStatus.Int());
+
+	return TestStepResult();
+	}
+
+
+
+/*-- Phone Store Test -----------------------------------------------------------------*/
+
+CPhoneStoreTest::CPhoneStoreTest()
+/** Each test step initialises it's own name
+*/
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	SetTestStepName(_L("PhoneStoreTest"));
+	}
+
+TVerdict CPhoneStoreTest::doTestStepL( void )	
+/** 
+ * This method retrieves various phone store information
+ */	
+
+	{
+	// Get phone store info for various phonebook
+	INFO_PRINTF1(_L("Test the Phone Stores"));
+
+	//Get phone store info for IccAdnPhoneBook
+	INFO_PRINTF1(_L("Calling RMobilePhone::GetPhoneStoreInfo() for KETelIccAdnPhoneBook"));
+	RMobilePhoneStore::TMobilePhoneStoreInfoV1 info;
+	RMobilePhoneStore::TMobilePhoneStoreInfoV1Pckg infoPckg(info);
+	iPhone.GetPhoneStoreInfo(iStatus, infoPckg, KETelIccAdnPhoneBook);
+	User::WaitForRequest(iStatus);
+
+	if(iStatus==KErrNone)
+		{	
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("Store Name: %S")), &info.iName);
+		TESTL(info.iType==RMobilePhoneStore::EPhoneBookStore);
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("Number of used entries: %d")), info.iUsedEntries);
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("Number of total entries: %d")), info.iTotalEntries);
+		}
+	else if (iStatus==KErrNotSupported)
+		{
+		INFO_PRINTF1(_L("***Phone returned KErrNotSupported***"));
+		}
+	else 
+		{
+		// Log that and error occurred
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("GetPhoneStoreInfo failed with status %d")), iStatus.Int());
+		SetTestStepResult(EFail);
+		}
+
+	//Get phonebook store info for MeAdnPhoneBook
+	INFO_PRINTF1(_L("Calling RMobilePhone::GetPhoneStoreInfo() for KETelMeAdnPhoneBook"));
+	RMobilePhoneBookStore::TMobilePhoneBookInfoV1 phbkInfo;
+	RMobilePhoneBookStore::TMobilePhoneBookInfoV1Pckg phbkInfoPckg(phbkInfo);
+	iPhone.GetPhoneStoreInfo(iStatus, phbkInfoPckg, KETelMeAdnPhoneBook);
+	User::WaitForRequest(iStatus);
+
+	if(iStatus==KErrNone)
+		{
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("Store Name: %S")), &phbkInfo.iName);
+		TESTL(phbkInfo.iType==RMobilePhoneStore::EPhoneBookStore);
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("Number of used entries: %d")), phbkInfo.iUsedEntries);
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("Number of total entries: %d")), phbkInfo.iTotalEntries);
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("Max text length: %d")), phbkInfo.iMaxTextLength);
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("Max number length: %d")), phbkInfo.iMaxNumLength);
+		}
+	else if(iStatus==KErrNotSupported)
+		{
+		INFO_PRINTF1(_L("***Phone returned KErrNotSupported***"));
+		}
+	else
+		{
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("GetPhoneStoreInfo failed with status %d")), iStatus.Int());
+		SetTestStepResult(EFail);
+		}
+
+	// Get phone store info for KETelOwnNumberStore
+	INFO_PRINTF1(_L("Calling RMobilePhone::GetPhoneStoreInfo() for KETelOwnNumberStore"));
+	iPhone.GetPhoneStoreInfo(iStatus, infoPckg, KETelOwnNumberStore);
+	User::WaitForRequest(iStatus);
+
+	if(iStatus==KErrNone)
+		{
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("Store Name: %S")), &info.iName);
+		TESTL(info.iType==RMobilePhoneStore::EOwnNumberStore);
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("Number of used entries: %d")), info.iUsedEntries);
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("Number of total entries: %d")), info.iTotalEntries);
+		}
+	else if(iStatus==KErrNotSupported)
+		{
+		INFO_PRINTF1(_L("***Phone returned KErrNotSupported***"));
+		}
+	else
+		{
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("GetPhoneStoreInfo failed with status %d")), iStatus.Int());
+		SetTestStepResult(EFail);
+		}
+
+	//Get own number store information
+	INFO_PRINTF1(_L("Calling RMobilePhone::GetPhoneStoreInfo() for KETelOwnNumberStore..."));
+	INFO_PRINTF1(_L("...but this time passing in a TMobileONStoreInfoV1Pckg"));
+	RMobileONStore::TMobileONStoreInfoV1 onInfo;
+	RMobileONStore::TMobileONStoreInfoV1Pckg onInfoPckg(onInfo);
+	iPhone.GetPhoneStoreInfo(iStatus, onInfoPckg, KETelOwnNumberStore);
+	User::WaitForRequest(iStatus);	
+
+	if(iStatus==KErrNone)
+		{
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("Store Name: %S")), &onInfo.iName);
+		TESTL(onInfo.iType==RMobilePhoneStore::EOwnNumberStore);
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("Number of used entries: %d")), onInfo.iUsedEntries);
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("Number of total entries: %d")), onInfo.iTotalEntries);
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("Max text length: %d")), onInfo.iTextLen);
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("Max number length: %d")), onInfo.iNumberLen);
+		}
+	else if(iStatus==KErrNotSupported)
+		{
+		INFO_PRINTF1(_L("***Phone returned KErrNotSupported***"));
+		}
+	else
+		{
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("GetPhoneStoreInfo failed with status %d")), iStatus.Int());
+		SetTestStepResult(EFail);
+		}
+
+	return TestStepResult();
+	}
+
+
+/*-- Own Number Test ------------------------------------------------------------------*/
+
+COwnNumberTest::COwnNumberTest()
+/** Each test step initialises it's own name
+*/
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	SetTestStepName(_L("OwnNumberTest"));
+	}
+
+TVerdict COwnNumberTest::doTestStepL( void )	
+/** 
+ * This method test own number storage
+ */	
+	{
+	INFO_PRINTF1(_L("Own number tests"));
+	
+	RMobileONStore iOwnNumberStore;
+
+	// Check that TSY supports Own Number Store
+	TBool supported;
+	TInt ret;
+	
+	ret = iTelServer.IsSupportedByModule(KMmtsyName, KETelFuncMobileOwnNumberStore, supported);
+
+	if ((ret==KErrNone) && (supported))
+		{
+		// Open RMobileONStore
+		ret=iOwnNumberStore.Open(iPhone);
+
+		if (ret!=KErrNone)
+			{
+			INFO_PRINTF2(_L("Failed to open Own Number store (%d)"), ret);
+			return EFail;
+			}
+
+		// Get Own Number Information
+		RMobileONStore::TMobileONStoreInfoV1 ownNumberInfo;
+		RMobileONStore::TMobileONStoreInfoV1Pckg ownNumberInfoPckg(ownNumberInfo);
+	
+		iOwnNumberStore.GetInfo(iStatus, ownNumberInfoPckg);
+		User::WaitForRequest(iStatus);
+	
+		if ((iStatus==KErrNone) && (ownNumberInfo.iType==RMobilePhoneStore::EOwnNumberStore))
+			{
+			INFO_PRINTF2(TRefByValue<const TDesC>(_L("Store Name: %S")), &ownNumberInfo.iName);
+			INFO_PRINTF2(TRefByValue<const TDesC>(_L("Store Caps: %d")), ownNumberInfo.iCaps);
+			INFO_PRINTF2(TRefByValue<const TDesC>(_L("Number of Entries: %d")), ownNumberInfo.iUsedEntries);
+			INFO_PRINTF2(TRefByValue<const TDesC>(_L("Maximum no. of entries: %d")), ownNumberInfo.iTotalEntries);
+			INFO_PRINTF2(TRefByValue<const TDesC>(_L("Max. length of tel.no: %d")), ownNumberInfo.iNumberLen);
+			INFO_PRINTF2(TRefByValue<const TDesC>(_L("Max. length of text: %d")), ownNumberInfo.iTextLen);
+			}
+		else if (iStatus==KErrNotSupported)
+			{
+			INFO_PRINTF1(TRefByValue<const TDesC>(_L("GetOwnNumberInfo not supported by this phone")));
+			}
+		else
+			{
+			INFO_PRINTF3(TRefByValue<const TDesC>(_L("GetOwnNumberInfo failed - status: %d, store type: %d")), iStatus.Int(), ownNumberInfo.iType);
+			SetTestStepResult(EFail);
+			}
+
+		// Own Number Entry
+		RMobileONStore::TMobileONEntryV1 ownNumberEntry;
+		RMobileONStore::TMobileONEntryV1Pckg ownNumberEntryPckg(ownNumberEntry);
+
+		for (TInt i=1; i<=ownNumberInfo.iTotalEntries; i++)
+			{
+			ownNumberEntry.iIndex = i;
+	
+			iOwnNumberStore.Read(iStatus, ownNumberEntryPckg);
+			User::WaitForRequest(iStatus);
+		
+			if (iStatus==KErrNone)
+				{	
+				INFO_PRINTF2(_L("GetOwnNumberEntry (%d) was successful"),i);
+				INFO_PRINTF2(TRefByValue<const TDesC>(_L("Number: %S")), &ownNumberEntry.iNumber.iTelNumber);
+				}
+			else if (iStatus==KErrNotFound)
+				{
+				INFO_PRINTF2(_L("No Own Number Entry (%d) was found."),i);
+				}
+			else if (iStatus==KErrNotSupported)
+				{
+				INFO_PRINTF1(TRefByValue<const TDesC>(_L("GetOwnNumberEntry not supported by this phone")));
+				}
+			else
+				{	
+				INFO_PRINTF2(TRefByValue<const TDesC>(_L("GetOwnNumberEntry status %d")), iStatus.Int());
+				}
+			}
+
+		// Close and reopen store to test read before getinfo request
+		iOwnNumberStore.Close();
+		ret=iOwnNumberStore.Open(iPhone);
+		if (ret!=KErrNone)
+			{
+			INFO_PRINTF2(_L("Failed to open Own Number store (%d)"), ret);
+			SetTestStepResult(EFail);
+			}
+
+		// Own Number Entry
+		RMobileONStore::TMobileONEntryV1 ownNumberEntry2;
+		ownNumberEntry2.iIndex = 2;
+	
+		RMobileONStore::TMobileONEntryV1Pckg ownNumberEntryPckg2(ownNumberEntry2);
+	
+		iOwnNumberStore.Read(iStatus, ownNumberEntryPckg2);
+		User::WaitForRequest(iStatus);
+		
+		if (iStatus==KErrNone)
+			{	
+			INFO_PRINTF1(_L("GetOwnNumberEntry (2) was successful"));
+			INFO_PRINTF2(TRefByValue<const TDesC>(_L("Number: %S")), &ownNumberEntry2.iNumber.iTelNumber);
+			}
+		else if (iStatus==KErrNotFound)
+			{
+			INFO_PRINTF1(_L("No Own Number Entry (2) was found."));
+			}
+		else if (iStatus==KErrNotSupported)
+			{
+			INFO_PRINTF1(TRefByValue<const TDesC>(_L("GetOwnNumberEntry not supported by this phone")));
+			}
+		else
+			{
+			INFO_PRINTF2(TRefByValue<const TDesC>(_L("GetOwnNumberEntry (index 2) status %d")), iStatus.Int());			
+			}
+
+
+		//Test Cancel Requests
+		INFO_PRINTF1(_L("Performing Cancel Requests for the above functions"));
+		iOwnNumberStore.GetInfo(iStatus, ownNumberInfoPckg);
+		iOwnNumberStore.CancelAsyncRequest(EMobilePhoneStoreGetInfo);
+		User::WaitForRequest(iStatus);
+		if (iStatus!=KErrNotSupported)
+			{
+			INFO_PRINTF2(TRefByValue<const TDesC>(_L("RMobileONStore::GetInfoCancel status = %d")), iStatus.Int());
+			}
+
+		ownNumberEntry2.iIndex = 1;	
+		iOwnNumberStore.Read(iStatus, ownNumberEntryPckg2);
+		iOwnNumberStore.CancelAsyncRequest(EMobilePhoneStoreRead);
+		User::WaitForRequest(iStatus);
+		if (iStatus!=KErrNotSupported)
+			{
+			INFO_PRINTF2(TRefByValue<const TDesC>(_L("RMobileONStore::ReadCancel status = %d")), iStatus.Int());
+			}
+
+		iOwnNumberStore.Close();
+		}
+	else
+		{
+		INFO_PRINTF1(_L("TSY does not support Own Number store"));
+		}
+
+	return TestStepResult();
+	}
+
+
+/*-- Get Caps Test --------------------------------------------------------------------*/
+
+CGetCaps::CGetCaps()
+/** Each test step initialises it's own name
+*/
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	SetTestStepName(_L("GetCaps"));
+	}
+
+TVerdict CGetCaps::doTestStepL( void )	
+/** 
+ * This method test own number storage
+ */	
+	{
+	INFO_PRINTF1(_L("Get Phone Capabilities"));
+	
+	TInt ret;
+
+	// Get Caps and print them
+	INFO_PRINTF1(_L("Calling RMobilePhone::GetCaps()"));
+	RPhone::TCaps aCaps;
+	ret = iPhone.GetCaps(aCaps);
+	if(ret) 
+		{
+		INFO_PRINTF2(_L("RMobilePhone::GetCaps() returned: %d"), ret);
+		SetTestStepResult(EFail);
+		}
+	if(aCaps.iFlags & RPhone::KCapsUnknown)
+		{
+		INFO_PRINTF1(_L("The capabilities of the phone are not currently known"));
+		}
+	if(aCaps.iFlags & RPhone::KCapsData)
+		{
+		INFO_PRINTF1(_L("The phone supports data calls"));
+		}
+	if(aCaps.iFlags & RPhone::KCapsFaxClassOne)
+		{
+		INFO_PRINTF1(_L("The phone supports the fax class 1 interface"));
+		}
+	if(aCaps.iFlags &	RPhone::KCapsFaxClassOnePointZero)
+		{
+		INFO_PRINTF1(_L("The phone supports the fax class 1.0 interface"));
+		}
+	if(aCaps.iFlags & RPhone::KCapsFaxClassTwo)
+		{
+		INFO_PRINTF1(_L("The phone supports the fax class 2 interface"));
+		}
+	if(aCaps.iFlags & RPhone::KCapsFaxClassTwoPointZero)
+		{
+		INFO_PRINTF1(_L("The phone supports the fax class 2.0 interface"));
+		}
+	if(aCaps.iFlags & RPhone::KCapsFaxClassTwoPointOne)
+		{
+		INFO_PRINTF1(_L("The phone supports the fax class 2.1 interface"));
+		}
+	if(aCaps.iFlags & RPhone::KCapsVoice)
+		{
+		INFO_PRINTF1(_L("The phone supports voice calls"));
+		}
+	if(aCaps.iFlags & RPhone::KCapsEventModemDetection)
+		{
+		INFO_PRINTF1(_L("The phone supports modem detection events"));
+		}
+	if(aCaps.iFlags & RPhone::KCapsStealCommPort)
+		{
+		INFO_PRINTF1(_L("The phone supports the ability to take the comms port"));
+		}
+
+
+	// Gets Status and prints info
+	INFO_PRINTF1(_L("Calling RMobilePhone::GetStatus()"));	
+	RPhone::TStatus phoneStatus;
+	ret = iPhone.GetStatus(phoneStatus);
+	if(ret) 
+		{
+		INFO_PRINTF2(_L("RMobilePhone::GetStatus() returned %d"), ret);
+		SetTestStepResult(EFail);
+		}
+
+	switch(phoneStatus.iMode)
+		{
+		case RPhone::EModeUnknown:
+			INFO_PRINTF1(_L("The phone is currently in an unknown state"));
+			break;
+
+		case RPhone::EModeIdle:
+			INFO_PRINTF1(_L("The phone is currently idle"));
+			break;
+
+		case RPhone::EModeEstablishingLink:
+			INFO_PRINTF1(_L("The phone is currently trying to establish a call"));
+			break;
+
+		case RPhone::EModeOnlineData:
+			INFO_PRINTF1(_L("The phone is in the connected and \"on-line data\" state"));
+			break;
+
+		case RPhone::EModeOnlineCommand:
+			INFO_PRINTF1(_L("The phone is in the connected and \"on-line command\" state"));
+			break;
+
+		}
+
+	//Get and print info
+	INFO_PRINTF1(_L("Calling RMobilePhone::GetInfo()"));
+	RPhone::TPhoneInfo phoneInfo;
+	ret = iPhone.GetInfo(phoneInfo);
+	if(ret) 
+		{
+		INFO_PRINTF2(_L("RMobilePhone::GetInfo() returned %d"), ret);
+		SetTestStepResult(EFail);
+		}
+
+	switch(phoneInfo.iDetection)
+		{
+		case RPhone::EDetectedPresent:
+			INFO_PRINTF1(_L("The local modem is present"));
+			break;
+
+		case RPhone::EDetectedNotPresent:
+			INFO_PRINTF1(_L("The local modem is not present"));
+			break;
+
+		case RPhone::EDetectedUnknown:
+			INFO_PRINTF1(_L("Status of the local modem not detected"));
+			break;
+		}
+
+	return TestStepResult();
+	}
+
+
+/*-- Get Lines Status Test ------------------------------------------------------------*/
+
+CGetLinesStatus::CGetLinesStatus()
+/** Each test step initialises it's own name
+*/
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	SetTestStepName(_L("GetLinesStatus"));
+	}
+
+TVerdict CGetLinesStatus::doTestStepL( void )	
+/** 
+ * This method tests getting the line status
+ */	
+	{
+	INFO_PRINTF1(_L("Get Lines Status"));
+
+	TInt aCount;
+	TInt i;					// Loop counter
+	RPhone::TLineInfo	lineInfo;
+
+	//Test Enumeratting the lines
+	INFO_PRINTF1(_L("Calling RPhone::EnumerateLines()"));
+	TInt ret = iPhone.EnumerateLines(aCount);
+	if(ret) 
+		{
+		INFO_PRINTF2(_L("RPhone::EnumerateLines() returned %d"), ret);
+		SetTestStepResult(EFail);
+		}
+	
+	INFO_PRINTF2(_L("There are %d lines on this phone"), aCount);
+
+	INFO_PRINTF1(_L("Calling RPhone::GetLineInfo()"));
+	for(i=0;i<aCount;i++)
+		{
+		ret = iPhone.GetLineInfo(i, lineInfo);
+		if(ret) 
+			{
+			INFO_PRINTF2(_L("RPhone::GetLineInfo() returned %d"), ret);
+			SetTestStepResult(EFail);
+			}
+
+		switch(lineInfo.iStatus)
+			{
+			case RCall::EStatusUnknown:
+				INFO_PRINTF3(_L("Line index %d: %S, Status: The call status is not currently known"), i+1, &lineInfo.iName);
+				break;
+
+			case RCall::EStatusIdle:
+				INFO_PRINTF3(_L("Line index %d: %S, Status: The call is idle"), i+1, &lineInfo.iName);
+				break;
+			
+			case RCall::EStatusDialling:   
+				INFO_PRINTF3(_L("Line index %d: %S, Status: The call is dialling."), i+1, &lineInfo.iName);
+				break;
+
+			case RCall::EStatusRinging:
+				INFO_PRINTF3(_L("Line index %d: %S, Status: The call is ringing "), i+1, &lineInfo.iName);
+				break;
+
+			case RCall::EStatusAnswering:
+				INFO_PRINTF3(_L("Line index %d: %S, Status: The call is being answered"), i+1, &lineInfo.iName);
+				break;
+
+			case RCall::EStatusConnecting:
+				INFO_PRINTF3(_L("Line index %d: %S, Status: The call is connecting"), i+1, &lineInfo.iName);
+				break;
+
+			case RCall::EStatusConnected:
+				INFO_PRINTF3(_L("Line index %d: %S, Status: The call is connected and active"), i+1, &lineInfo.iName);
+				break;
+
+			case RCall::EStatusHangingUp:
+				INFO_PRINTF3(_L("Line index %d: %S, Status: The call is being terminated"), i+1, &lineInfo.iName);
+				break;
+
+			}
+
+		// Waits a bit
+		User::After( 3 * KOneSecond);
+
+		if(lineInfo.iLineCapsFlags & RLine::KCapsData)
+			{
+			INFO_PRINTF1(_L("The line supports data connections"));
+			}	
+		if(lineInfo.iLineCapsFlags & RLine::KCapsFax)
+			{
+			INFO_PRINTF1(_L("The line supports fax connections"));
+			}
+		if(lineInfo.iLineCapsFlags & RLine::KCapsVoice)
+			{
+			INFO_PRINTF1(_L("The line supports voice connections"));
+			}
+		if(lineInfo.iLineCapsFlags & RLine::KCapsEventIncomingCall)
+			{
+			INFO_PRINTF1(_L("The line supports incoming call notification requests"));
+			}
+		}
+
+	return TestStepResult();
+	}
+
+/*-- Get Multimode Caps Test ----------------------------------------------------------*/
+
+CGetMultimodeCaps::CGetMultimodeCaps()
+/** Each test step initialises it's own name
+*/
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	SetTestStepName(_L("GetMultimodeCaps"));
+	}
+
+TVerdict CGetMultimodeCaps::doTestStepL( void )	
+/** 
+ * This method tests getting the phone's multimode capabilities
+ */	
+	{
+	INFO_PRINTF1(_L("Testing the phone's Multimode caps"));
+	
+	INFO_PRINTF1(_L("Calling RMobilePhone::GetMultimodeCaps()"));
+	TUint32 aCaps;
+	TInt ret = iPhone.GetMultimodeCaps(aCaps);
+	if(ret) 
+		{
+		INFO_PRINTF2(_L("RMobilePhone::GetMultimodeCaps returned %d"), ret);
+		return EFail;
+		}
+
+	if(aCaps & RMobilePhone::KCapsGsmSupported)
+		{
+		INFO_PRINTF1(_L("Phone can operate in GSM 900/1800/1900 mode"));
+		}
+	if(aCaps & RMobilePhone::KCapsGprsSupported)
+		{
+		INFO_PRINTF1(_L("Phone can operate in GPRS mode"));
+		}
+	if(aCaps & RMobilePhone::KCapsAmpsSupported)
+		{
+		INFO_PRINTF1(_L("Phone can operate in AMPS 800 mode"));
+		}
+	if(aCaps & RMobilePhone::KCapsCdma95Supported)
+		{
+		INFO_PRINTF1(_L("Phone can operate in CDMA95 800/1900 mode"));
+		}
+	if(aCaps & RMobilePhone::KCapsCdma2000Supported)
+		{
+		INFO_PRINTF1(_L("Phone can operate in CDMA2000 800/1900 mode"));
+		}
+	if(aCaps & RMobilePhone::KCapsWcdmaSupported)
+		{
+		INFO_PRINTF1(_L("Phone can operate in W-CDMA mode"));
+		}
+
+	return EPass;
+	}
+
+
+/*-- Get Network Caps Test ------------------------------------------------------------*/
+
+CGetNetworkCaps::CGetNetworkCaps()
+/** Each test step initialises it's own name
+*/
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	SetTestStepName(_L("GetNetworkCaps"));
+	}
+
+TVerdict CGetNetworkCaps::doTestStepL( void )	
+/** 
+ * This method tests getting Network Capabilities
+ */	
+	{
+	INFO_PRINTF1(_L("Get Network Caps"));
+
+	INFO_PRINTF1(_L("Calling RMobilePhone::GetNetworkCaps()"));
+	TUint32 aCaps;
+	TInt ret = iPhone.GetNetworkCaps(aCaps);
+	if(ret==KErrNotSupported)	// Do not consider KErrNotSupported as a test failure
+		{
+		INFO_PRINTF1(_L("***Phone returned KErrNotSupported***"));
+		}
+	else if(ret!=KErrNone) 
+		{
+		INFO_PRINTF2(_L("RMobilePhone::GetNetworkCaps() returned %d/n"), ret);
+		return EFail;
+		}
+
+	if(aCaps & RMobilePhone::KCapsGetRegistrationStatus)
+		{
+		INFO_PRINTF1(_L("The phone supports retrieval of current registration status"));
+		}
+	if(aCaps & RMobilePhone::KCapsNotifyRegistrationStatus)
+		{
+		INFO_PRINTF1(_L("The phone supports notifications of change in registration status"));
+		}
+	if(aCaps & RMobilePhone::KCapsGetCurrentMode)
+		{
+		INFO_PRINTF1(_L("The phone supports retrieval of current mode"));
+		}
+	if(aCaps & RMobilePhone::KCapsNotifyMode)
+		{
+		INFO_PRINTF1(_L("The phone supports notification of change in mode"));
+		}
+	if(aCaps & RMobilePhone::KCapsGetCurrentNetwork)
+		{
+		INFO_PRINTF1(_L("phone supports retrieval of current network information"));
+		}
+	if(aCaps & RMobilePhone::KCapsNotifyCurrentNetwork)
+		{
+		INFO_PRINTF1(_L("The phone supports notification of change of current network"));
+		}
+	if(aCaps & RMobilePhone::KCapsGetHomeNetwork)
+		{
+		INFO_PRINTF1(_L("The phone supports retrieval of home network information"));
+		}
+	if(aCaps & RMobilePhone::KCapsGetDetectedNetworks)
+		{
+		INFO_PRINTF1(_L("The phone supports retrieval of a list of detected networks"));
+		}
+	if(aCaps & RMobilePhone::KCapsManualNetworkSelection)
+		{
+		INFO_PRINTF1(_L("The phone supports manual network selection mode"));
+		}
+	if(aCaps & RMobilePhone::KCapsGetNITZInfo)
+		{
+		INFO_PRINTF1(_L("The phone supports retrieval of time/date from the network"));
+		}
+	if(aCaps & RMobilePhone::KCapsNotifyNITZInfo)
+		{	
+		INFO_PRINTF1(_L("The phone supports notification of new updates of time/date from the network"));
+		}
+
+
+	return EPass;
+
+	}
+
+
+/*-- Get Current Mode Test ------------------------------------------------------------*/
+CGetCurrentMode::CGetCurrentMode()
+/** Each test step initialises it's own name
+*/
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	SetTestStepName(_L("GetCurrentMode"));
+	}
+
+TVerdict CGetCurrentMode::doTestStepL( void )	
+/** 
+ * This method tests getting the current mode that the phone is in
+ */	
+	{
+	INFO_PRINTF1(_L("Testing the current mode and notification"));
+	
+	INFO_PRINTF1(_L("Calling RMobilePhone::GetCurrentMode()"));
+	RMobilePhone::TMobilePhoneNetworkMode netMode;
+	TInt ret = iPhone.GetCurrentMode(netMode);
+	if(ret==KErrNotSupported)		// Do not consider KErrNotSupported as a test failure
+		{
+		INFO_PRINTF1(_L("***Phone returned KErrNotSupported***"));
+		}
+	else if(ret!=KErrNone)
+		{	
+		// Log error code and return with error code so that AutoTest logs this as a test failure
+		INFO_PRINTF2(_L("RMobilePhone::GetCurrentMode() returned %d"), ret);
+		return EFail;
+		}
+
+	if(ret==KErrNone)
+		{
+		switch(netMode)
+			{
+		case RMobilePhone::	ENetworkModeUnregistered:
+			INFO_PRINTF1(_L("ME is not registered."));
+			break;
+		case RMobilePhone::ENetworkModeGsm:
+			INFO_PRINTF1(_L("GSM or DCS1800 network."));
+			break;
+		case RMobilePhone::ENetworkModeAmps:
+			INFO_PRINTF1(_L("AMPS network"));
+			break;
+		case RMobilePhone::ENetworkModeCdma95:
+			INFO_PRINTF1(_L("CDMA95 network."));
+			break;
+		case RMobilePhone::ENetworkModeCdma2000:
+			INFO_PRINTF1(_L("CDMA2000 network."));
+			break;
+		case RMobilePhone::ENetworkModeWcdma:
+			INFO_PRINTF1(_L("WCDMA network"));
+		case RMobilePhone::ENetworkModeTdcdma:
+			INFO_PRINTF1(_L("TD-CDMA network"));
+		case RMobilePhone::ENetworkModeUnknown:
+		default:
+			INFO_PRINTF1(_L("Network mode is unknown"));
+			break;
+			}
+		}
+	
+	return EPass;
+	}
+
+
+/*-- Async Network List Retrieval Test ------------------------------------------------*/
+
+CGetAsyncNetList::CTestAsyncGetNetList* CGetAsyncNetList::CTestAsyncGetNetList::NewLC(RMobilePhone& aPhone)
+	{
+    CTestAsyncGetNetList* r=new(ELeave) CTestAsyncGetNetList(aPhone);
+    CleanupStack::PushL(r);
+    r->ConstructL();
+    return r;
+    }
+      
+CGetAsyncNetList::CTestAsyncGetNetList::CTestAsyncGetNetList(RMobilePhone& aPhone)
+    : CActive(EPriorityNormal), iPhone(aPhone), iCompleteCode(KErrNone)
+    {
+	}
+      
+void CGetAsyncNetList::CTestAsyncGetNetList::ConstructL()
+	{
+	CActiveScheduler::Add(this);
+	iRetrieve=CRetrieveMobilePhoneDetectedNetworks::NewL(iPhone);
+    }
+         
+CGetAsyncNetList::CTestAsyncGetNetList::~CTestAsyncGetNetList()
+    {
+	delete iRetrieve;
+	}
+      
+void CGetAsyncNetList::CTestAsyncGetNetList::Start()
+    {
+    iRetrieve->Start(iStatus);
+    SetActive();
+    }       
+
+CMobilePhoneNetworkList* CGetAsyncNetList::CTestAsyncGetNetList::RetrieveList()
+	{
+	CMobilePhoneNetworkList* ptr=NULL;
+	TRAP_IGNORE(ptr=iRetrieve->RetrieveListL()); // trap and ignore err
+	return ptr;
+	}
+          
+void CGetAsyncNetList::CTestAsyncGetNetList::RunL()
+	{
+	iCompleteCode=iStatus.Int();
+	CActiveScheduler::Stop();
+	}	
+
+
+TInt CGetAsyncNetList::CTestAsyncGetNetList::CompleteCode()
+	{
+	return iCompleteCode;
+	}
+
+void CGetAsyncNetList::CTestAsyncGetNetList::DoCancel()
+    {
+    iRetrieve->Cancel();
+    }
+
+CGetAsyncNetList::CGetAsyncNetList()
+/** Each test step initialises it's own name
+*/
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	SetTestStepName(_L("GetAsyncNetList"));
+	}
+
+TVerdict CGetAsyncNetList::doTestStepL()
+/** 
+ * This method tests asynchronously getting a list of detected networks
+ */	
+	{
+	INFO_PRINTF1(_L("Testing Async retrieval of Network list"));
+
+	iTestScheduler = new (ELeave) CActiveScheduler;
+	CActiveScheduler::Install(iTestScheduler);
+
+	CTestAsyncGetNetList* netRetrieveList = CTestAsyncGetNetList::NewLC(iPhone);	
+	
+	INFO_PRINTF1(_L("Starting ActiveObject CRetrieveMobilePhoneDetectedNetworks"));
+	netRetrieveList->Start();
+	CActiveScheduler::Start();
+
+
+	// Get completion code from netRetrieveList
+	const TInt completeCode = netRetrieveList->CompleteCode();
+	if(completeCode==KErrNotSupported)		// Do not consider KErrNotSupported a test failure
+		{
+		INFO_PRINTF1(_L("***Phone returned KErrNotSupported***"));
+		}
+	else if(completeCode!=KErrNone)
+		{
+		// Log that and error occurred
+		INFO_PRINTF2(TRefByValue<const TDesC>(_L("Failed with error code %d")),completeCode);
+		return EFail;
+		}
+
+
+	TInt i;			// Loop counter
+	CMobilePhoneNetworkList* retList=NULL;
+	RMobilePhone::TMobilePhoneNetworkInfoV1 anEntry;
+
+	if(completeCode==KErrNone)
+		{
+		retList = netRetrieveList->RetrieveList();
+		const TInt count = retList->Enumerate();
+		INFO_PRINTF2(_L("%d networks detected"), count);
+
+		for(i=0; i<count; i++)
+			{
+			anEntry = retList->GetEntryL(i);	
+			INFO_PRINTF3(_L("Network %d: %S"), i+1, &anEntry.iLongName);
+			INFO_PRINTF1(_L("Mode of the network: "));
+		
+			switch(anEntry.iMode)
+				{
+			case RMobilePhone::ENetworkModeUnregistered:
+				INFO_PRINTF1(_L("ME is not registered."));
+				break;
+			case RMobilePhone::ENetworkModeGsm:
+				INFO_PRINTF1(_L("GSM or DCS1800 network."));
+				break;
+			case RMobilePhone::ENetworkModeAmps:
+				INFO_PRINTF1(_L("	AMPS network"));
+				break;
+			case RMobilePhone::ENetworkModeCdma95:
+				INFO_PRINTF1(_L("CDMA95 network"));
+				break;
+			case RMobilePhone::ENetworkModeCdma2000:
+				INFO_PRINTF1(_L("CDMA2000 network"));
+				break;
+			case RMobilePhone::ENetworkModeWcdma:
+				INFO_PRINTF1(_L("WCDMA network."));
+				break;
+			case RMobilePhone::ENetworkModeTdcdma:
+				INFO_PRINTF1(_L("TD-CDMA network."));
+				break;
+			case RMobilePhone::ENetworkModeUnknown:
+			default:
+				INFO_PRINTF1(_L("Network mode is unknown."));
+				break;
+				}
+	
+			INFO_PRINTF1(_L("Status of the network: "));
+			switch(anEntry.iStatus)
+				{
+			case RMobilePhone::ENetworkStatusUnknown:
+				INFO_PRINTF1(_L("Status is unknown"));
+				break;
+			case RMobilePhone::ENetworkStatusAvailable:
+				INFO_PRINTF1(_L("A network that the ME is allowed to register to"));
+				break;
+			case RMobilePhone::ENetworkStatusCurrent:
+				INFO_PRINTF1(_L("The currently registered network."));
+				break;
+			case RMobilePhone::ENetworkStatusForbidden:
+				INFO_PRINTF1(_L("A network that the ME is not allowed to register to"));
+				break;
+				}
+
+			INFO_PRINTF2(_L("Country code: %S"), &anEntry.iCountryCode);
+			INFO_PRINTF2(_L("The system identity (SID) of the CDMA network: %S"), &anEntry.iCdmaSID);
+			INFO_PRINTF2(_L("The system identity (SID) of the AMPS network: %S"), &anEntry.iAnalogSID);
+			INFO_PRINTF2(_L("The network identity (NID in CDMA and MNC in GSM): %S"), &anEntry.iNetworkId);
+			INFO_PRINTF2(_L("The alpha-tag displayed when this is the serving network: %S"), &anEntry.iDisplayTag);
+			INFO_PRINTF2(_L("The short name (up to 8 characters) of the network operator: %S"), &anEntry.iShortName);
+			INFO_PRINTF2(_L("The long name (up to 16 characters) of the network operator.: %S"), &anEntry.iLongName);
+			}
+
+		}
+	CleanupStack::PopAndDestroy(); // netRetrieveList;
+	delete retList;
+	delete iTestScheduler;
+	return EPass;
+	}
+
+
+/*-- Functional Unit Support Test -----------------------------------------------------*/
+CIsSupportedByModuleTest::CIsSupportedByModuleTest()
+/** Each test step initialises it's own name
+*/
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	SetTestStepName(_L("IsSupportedByModuleTest"));
+	}
+
+
+TBool CIsSupportedByModuleTest::doIsSupportedByModuleTest(TInt aMixin)
+	{
+	TBool isSupported(EFalse);
+	TInt ret=iTelServer.IsSupportedByModule(KMmtsyName,aMixin,isSupported);
+	if(ret==KErrNone)
+		{
+		INFO_PRINTF2(_L("%d functional unit is supported!"), aMixin);
+		return ETrue;		
+		}		
+	else
+		{
+		INFO_PRINTF2(_L("%d functional unit is NOT supported"), aMixin);
+		return EFalse;
+		}
+	}
+
+TVerdict CIsSupportedByModuleTest::doTestStepL( void )	
+/** 
+ * This method tests is certain Functional Units are supported
+ */	
+	{
+	TBool isSupported(EFalse);
+	
+	isSupported = doIsSupportedByModuleTest(KETelFuncMobileNetwork);
+	if(!isSupported)
+		{
+		SetTestStepResult(EFail);
+		}
+
+	isSupported = doIsSupportedByModuleTest(KETelFuncMobileIdentity);
+	if(!isSupported)
+		{
+		SetTestStepResult(EFail);
+		}
+
+	isSupported = doIsSupportedByModuleTest(KETelFuncMobilePower);
+	if(!isSupported)
+		{
+		SetTestStepResult(EFail);
+		}
+
+	isSupported = doIsSupportedByModuleTest(KETelFuncMobileSignal);
+	if(!isSupported)
+		{
+		SetTestStepResult(EFail);
+		}
+
+	isSupported = doIsSupportedByModuleTest(KETelFuncMobileDataCall);
+	if(!isSupported)
+		{
+		SetTestStepResult(EFail);
+		}
+
+	isSupported = doIsSupportedByModuleTest(KETelFuncMobileSmsMessaging);
+	if(!isSupported)
+		{
+		SetTestStepResult(EFail);
+		}
+
+	isSupported = doIsSupportedByModuleTest(KETelFuncMobilePhonebook);
+	if(!isSupported)
+		{
+		SetTestStepResult(EFail);
+		}
+	isSupported = doIsSupportedByModuleTest(KETelFuncMobileSmsStore);
+	if(!isSupported)
+		{
+		SetTestStepResult(EFail);
+		}
+	isSupported = doIsSupportedByModuleTest(KETelFuncMobileOwnNumberStore);
+	if(!isSupported)
+		{
+		SetTestStepResult(EFail);
+		}
+	return TestStepResult();
+	}