telephonyserverplugins/multimodetsy/test/Te_LoopBack/Te_LoopBackcmessstor.cpp
changeset 0 3553901f7fa8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/multimodetsy/test/Te_LoopBack/Te_LoopBackcmessstor.cpp	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,436 @@
+// Copyright (c) 1997-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 implements test scenarios for message storage with both old and 
+// new format PDU's.
+// See CDataCall.cpp for fully documented test scenario.
+// 
+//
+
+/**
+ @file
+*/
+
+
+
+#include "Te_LoopBackcmessstor.h"
+#include "../../hayes/TSYCONFG.H" // for KInternetAccessPoint
+
+//
+// Test-side class
+// With the assistance of the base class, this class must start the emulator
+// and drive the ETel API.
+//
+CTestDriveMessStor* CTestDriveMessStor::NewL(const TScriptList aScriptListEntry)
+	{
+	CTestDriveMessStor* aA = new (ELeave) CTestDriveMessStor(aScriptListEntry);
+	CleanupStack::PushL(aA);
+	aA->ConstructL();
+	CleanupStack::Pop();
+	return (aA);
+	}
+
+CTestDriveMessStor::CTestDriveMessStor(const TScriptList aScriptListEntry) :
+	iScriptListEntry(aScriptListEntry)
+	{}
+
+CTestDriveMessStor::~CTestDriveMessStor()
+	{}
+
+TInt CTestDriveMessStor::RunTestL()
+	{
+	iCurrentScript = iScriptListEntry;
+	return StartEmulatorL();
+	}
+
+
+
+TInt CTestDriveMessStor::DriveETelApiL()
+//
+// This function contains the real meat of the Client-side test code
+//
+	{
+	
+// create the SMS objects
+	RMobileSmsMessaging sms;
+	RMobileSmsStore smsSimStore;    // SIM
+
+	TRequestStatus reqStatus;
+
+	INFO_PRINTF1(_L("Opening SMS Messaging...\n"));
+
+	TESTL(sms.Open(iPhone) == KErrNone);
+
+	INFO_PRINTF1(_L("Initialising the Phone...\n"));
+
+	RMobilePhone::TMMTableSettings tableSettings;
+	tableSettings.iLocId=KInternetAccessPoint;
+	RMobilePhone::TMMTableSettingsPckg tableSettingsPckg(tableSettings);
+	iPhone.InitialiseMM(reqStatus, tableSettingsPckg); 	
+
+	User::WaitForRequest(reqStatus);
+	TESTL(reqStatus == KErrNone);
+
+
+// get the SMS Messaging capabilities
+	TestSmsMessagingCapablitiesL(sms);
+
+	INFO_PRINTF1(_L("Opening SMS SIM Storage...\n"));
+	TInt ret = smsSimStore.Open(sms, KETelCombinedSmsStore); // OK
+	TESTL(ret == KErrNone);
+
+// display the SMS SIM  Combined Storage capabilities
+	TestSmsSimStorageCapablitiesL(smsSimStore);
+
+	sms.NotifySmspListChange(reqStatus);  
+// Test the SMS SIM Storage  by storing SMSpLIST 
+	TestSmsStorage(sms);
+	User::WaitForRequest(reqStatus); 
+	INFO_PRINTF2(_L("\nNotifySmspListChange returns = %d\n"),reqStatus.Int());
+
+	
+// Display SMS SIM Storage  - Requires AO for getting the Smsplist
+
+ 	RMobileSmsMessaging::TMobileSmspEntryV1 aSmspEntry;
+	TRAP_IGNORE(GetSmspListL(aSmspEntry,sms));		// trap and ignore error
+ 	
+ 	DisplaySmspEntry(aSmspEntry);
+
+	smsSimStore.Close();
+	sms.Close();
+
+	return (KErrNone);
+	}
+
+
+
+
+void CTestDriveMessStor::DisplaySmsCaps(RMobileSmsMessaging::TMobileSmsCapsV1& aSmsCaps)
+	{
+	INFO_PRINTF1(_L("  SMS Supported Modes:\n"));
+
+	if (aSmsCaps.iSmsMode & RMobileSmsMessaging::KCapsGsmSms)
+		INFO_PRINTF1(_L("    GSM SMS Supported\n"));
+	if (!(aSmsCaps.iSmsMode & RMobileSmsMessaging::KCapsGsmSms))
+		INFO_PRINTF2(_L("    SMS Mode = 0x%x\n"), aSmsCaps.iSmsMode);
+	INFO_PRINTF1(_L("  SMS Supported Controls:\n"));
+	if (aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsReceiveStored)
+		INFO_PRINTF1(_L("    Receive Stored Supported\n"));
+	if (aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsReceiveUnstoredPhoneAck)
+		INFO_PRINTF1(_L("    Receive Unstored Phone Ack Supported\n"));
+	if (aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsReceiveUnstoredClientAck)
+		INFO_PRINTF1(_L("    Receive Unstored Client Ack Supported\n"));
+	if (aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsReceiveEither)
+		INFO_PRINTF1(_L("    Receive Any Supported\n"));
+	if (aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsSendNoAck)
+		INFO_PRINTF1(_L("    Send No Ack Supported\n"));
+	if (aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsSendWithAck)
+		INFO_PRINTF1(_L("    Send With Ack Supported\n"));
+ 	if (aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsCreateAck)
+ 		INFO_PRINTF1(_L("     CapsCreate with Ack Supported\n"));
+	if (aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsGetSmspList)
+		INFO_PRINTF1(_L("    Get Smsp List Supported\n"));
+	if (aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsSetSmspList)
+		INFO_PRINTF1(_L("    Set Smsp List Supported\n"));
+
+	if (!(aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsReceiveStored)            &&
+		!(aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsReceiveUnstoredPhoneAck)  &&
+		!(aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsReceiveUnstoredClientAck) &&
+		!(aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsReceiveEither)            &&
+		!(aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsSendNoAck)                &&
+		!(aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsSendWithAck)              &&
+ 		!(aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsCreateAck)                &&
+		!(aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsGetSmspList)              &&
+		!(aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsSetSmspList))
+		INFO_PRINTF2(_L("    SMS Controls = 0x%x\n"), aSmsCaps.iSmsControl);
+
+	INFO_PRINTF1(_L("\n"));
+}
+
+
+void CTestDriveMessStor::DisplayPhoneStoreInfo(RMobilePhoneStore::TMobilePhoneStoreInfoV1& aStoreInfo)
+	{
+	INFO_PRINTF1(_L("Mobile Phone Store Info:\n"));
+	INFO_PRINTF2(_L("  Name = %S\n"), &aStoreInfo.iName);\
+
+	switch (aStoreInfo.iType)
+		{
+		case RMobilePhoneStore::EPhoneStoreTypeUnknown:
+			INFO_PRINTF1(_L("  Type = Unknown\n"));
+			break;
+		case RMobilePhoneStore::EShortMessageStore:
+			INFO_PRINTF1(_L("  Type = Short Message\n"));
+			break;
+		case RMobilePhoneStore::ENamStore:
+			INFO_PRINTF1(_L("  Type = NAM\n"));
+			break;
+		case RMobilePhoneStore::EPhoneBookStore:
+			INFO_PRINTF1(_L("  Type = Phonebook\n"));
+			break;
+		case RMobilePhoneStore::EEmergencyNumberStore:
+			INFO_PRINTF1(_L("  Type = Emergency Number\n"));
+			break;
+		case RMobilePhoneStore::EOwnNumberStore:
+			INFO_PRINTF1(_L("  Type = Own Number\n"));
+			break;
+		default:
+			INFO_PRINTF2(_L("  Type = %d\n"), aStoreInfo.iType);
+			break;
+		}
+
+	INFO_PRINTF2(_L("  Total Entries = %d\n"), aStoreInfo.iTotalEntries);
+	INFO_PRINTF2(_L("  Used Entries  = %d\n"), aStoreInfo.iUsedEntries);
+
+
+	// display the caps for the base class RMobilePhoneStore
+	INFO_PRINTF2(_L("  SMS Store Capabilities = 0x%x\n"), aStoreInfo.iCaps);
+	INFO_PRINTF1(_L("  Phone Store Capabilities:\n"));
+	if (aStoreInfo.iCaps & static_cast<TUint32>(RMobilePhoneStore::KCapsWholeStore))
+		INFO_PRINTF1(_L("  Whole Store Supported\n"));
+	if (aStoreInfo.iCaps & RMobilePhoneStore::KCapsIndividualEntry)
+		INFO_PRINTF1(_L("  Individual Entry Supported\n"));
+	if (aStoreInfo.iCaps & RMobilePhoneStore::KCapsReadAccess)
+		INFO_PRINTF1(_L("  Read Access Supported\n"));
+	if (aStoreInfo.iCaps & RMobilePhoneStore::KCapsWriteAccess)
+		INFO_PRINTF1(_L("  Write Access Supported\n"));
+	if (aStoreInfo.iCaps & RMobilePhoneStore::KCapsDeleteAll)
+		INFO_PRINTF1(_L("  Delete All Supported\n"));
+	if (aStoreInfo.iCaps & RMobilePhoneStore::KCapsNotifyEvent)
+		INFO_PRINTF1(_L("  Notify Event Supported\n"));
+
+	// display the caps for the derived class RMobileSmsStore
+	// these caps use the same variable as the base class
+	INFO_PRINTF1(_L("  SMS Store Capabilities:\n"));
+	if (aStoreInfo.iCaps & RMobileSmsStore::KCapsUnreadMessages)
+		INFO_PRINTF1(_L("  Unread Messages Supported\n"));
+	if (aStoreInfo.iCaps & RMobileSmsStore::KCapsReadMessages)
+		INFO_PRINTF1(_L("  Read Messages Supported\n"));
+	if (aStoreInfo.iCaps & RMobileSmsStore::KCapsSentMessages)
+		INFO_PRINTF1(_L("  Sent Messages Supported\n"));
+	if (aStoreInfo.iCaps & RMobileSmsStore::KCapsUnsentMessages)
+		INFO_PRINTF1(_L("  Unsent Messages Supported\n"));
+	if (aStoreInfo.iCaps & RMobileSmsStore::KCapsGsmMessages)
+		INFO_PRINTF1(_L("  GSM Messages Supported\n"));
+	}
+
+
+void CTestDriveMessStor::DisplaySmspEntry(RMobileSmsMessaging::TMobileSmspEntryV1& aSmspEntry)
+	{
+	INFO_PRINTF1(_L("SMS Param Entry:\n"));
+	INFO_PRINTF2(_L("  Index = %d:\n"), aSmspEntry.iIndex);
+	INFO_PRINTF2(_L("  Text = %S:\n"), &aSmspEntry.iText);
+	INFO_PRINTF2(_L("  Valid Params = %d\n"), aSmspEntry.iValidityPeriod);
+
+	INFO_PRINTF1(_L("  Destination:\n"));
+	DisplayMobileAddr(aSmspEntry.iDestination);
+
+	INFO_PRINTF1(_L("  SCA:\n"));
+	DisplayMobileAddr(aSmspEntry.iServiceCentre);
+
+	INFO_PRINTF2(_L("  Protocol Id     = %d\n"), aSmspEntry.iProtocolId);
+	INFO_PRINTF2(_L("  DCS             = %d\n"), aSmspEntry.iDcs);
+	INFO_PRINTF2(_L("  Validity Period = %d\n"), aSmspEntry.iValidityPeriod);
+	}
+
+
+void CTestDriveMessStor::DisplayMobileAddr(RMobilePhone::TMobileAddress aMobileAddr)
+	{
+	switch (aMobileAddr.iTypeOfNumber)
+		{
+		case RMobilePhone::EUnknownNumber:
+			INFO_PRINTF1(_L("    Type of Number = Unknown\n"));
+			break;
+		case RMobilePhone::EInternationalNumber:
+			INFO_PRINTF1(_L("    Type of Number = International\n"));
+			break;
+		case RMobilePhone::ENationalNumber:
+			INFO_PRINTF1(_L("    Type of Number = National\n"));
+			break;
+		case RMobilePhone::ENetworkSpecificNumber:
+			INFO_PRINTF1(_L("    Type of Number = Network Specific\n"));
+			break;
+		case RMobilePhone::ESubscriberNumber:
+			INFO_PRINTF1(_L("    Type of Number = Subscriber\n"));
+			break;
+		case RMobilePhone::EAbbreviatedNumber:
+			INFO_PRINTF1(_L("    Type of Number = Abbreviated\n"));
+			break;
+		default:
+			INFO_PRINTF2(_L("    Type of Number = %d\n"), aMobileAddr.iTypeOfNumber);
+			break;
+		}
+
+	switch (aMobileAddr.iNumberPlan)
+		{
+		case RMobilePhone::EUnknownNumberingPlan:
+			INFO_PRINTF1(_L("    Number Plan = Unknown\n"));
+			break;
+		case RMobilePhone::EIsdnNumberPlan:
+			INFO_PRINTF1(_L("    Number Plan = ISDN\n"));
+			break;
+		case RMobilePhone::EDataNumberPlan:
+			INFO_PRINTF1(_L("    Number Plan = Data\n"));
+			break;
+		case RMobilePhone::ETelexNumberPlan:
+			INFO_PRINTF1(_L("    Number Plan = Telex\n"));
+			break;
+		case RMobilePhone::EPrivateNumberPlan:
+			INFO_PRINTF1(_L("    Number Plan = Private\n"));
+			break;
+		case RMobilePhone::ENationalNumberPlan:
+			INFO_PRINTF1(_L("    Number Plan = National\n"));
+			break;
+		default:
+			INFO_PRINTF2(_L("    Number Plan = %d\n"), aMobileAddr.iNumberPlan);
+			break;
+		}
+
+	INFO_PRINTF2(_L("  Tel # = %S\n"), &aMobileAddr.iTelNumber);
+
+	}
+
+
+void CTestDriveMessStor::TestSmsMessagingCapablitiesL(RMobileSmsMessaging& aSms)
+	{
+	INFO_PRINTF1(_L("Getting SMS Capabilities...\n\n"));
+	RMobileSmsMessaging::TMobileSmsCapsV1     smsCaps;
+	RMobileSmsMessaging::TMobileSmsCapsV1Pckg smsCapsPckg(smsCaps);
+	
+	TInt ret = aSms.GetCaps(smsCapsPckg);
+	TESTL(ret == KErrNone);
+	smsCaps = smsCapsPckg();
+	DisplaySmsCaps(smsCaps);
+	}
+
+
+void CTestDriveMessStor::TestSmsSimStorageCapablitiesL(RMobileSmsStore& aSmsSimStore)
+	{
+	INFO_PRINTF1(_L("Getting SMS SIM Store Info...\n"));
+	RMobilePhoneStore::TMobilePhoneStoreInfoV1     simStoreInfo;
+	RMobilePhoneStore::TMobilePhoneStoreInfoV1Pckg simStoreInfoPckg(simStoreInfo);
+
+	TRequestStatus reqStatus;
+	aSmsSimStore.GetInfo(reqStatus, simStoreInfoPckg);
+	User::WaitForRequest(reqStatus);
+	TESTL(reqStatus == KErrNone);
+	simStoreInfo = simStoreInfoPckg();
+	DisplayPhoneStoreInfo(simStoreInfo);
+	}
+
+void CTestDriveMessStor::TestSmsStorage(RMobileSmsMessaging& aSms)
+	{
+	TRAP_IGNORE(DoTestSmsStorageL(aSms));
+	}
+
+void CTestDriveMessStor::DoTestSmsStorageL(RMobileSmsMessaging& aSms)
+	{
+	INFO_PRINTF1(_L("Store new SMSP list\n"));
+
+	RMobileSmsMessaging::TMobileSmspEntryV1 newSmspEntry;
+
+	newSmspEntry.iValidParams = RMobileSmsMessaging::KSCAIncluded;
+	newSmspEntry.iServiceCentre.iTypeOfNumber=RMobilePhone::EInternationalNumber;
+	newSmspEntry.iServiceCentre.iNumberPlan=RMobilePhone:: EIsdnNumberPlan;
+	newSmspEntry.iServiceCentre.iTelNumber.Copy(_L("441632960000"));
+
+	CMobilePhoneSmspList* smspList = CMobilePhoneSmspList::NewL();
+	CleanupStack::PushL(smspList);
+
+	smspList->AddEntryL(newSmspEntry);
+
+	TRequestStatus reqStatus;
+	
+	aSms.StoreSmspListL(reqStatus, smspList);
+	User::WaitForRequest(reqStatus);
+	TESTL(reqStatus.Int()==KErrNone);  
+
+	CleanupStack::PopAndDestroy(); // smspList;
+	}
+
+
+void CTestDriveMessStor::GetSmspListL(RMobileSmsMessaging::TMobileSmspEntryV1& aSmspEntry,RMobileSmsMessaging& aSms)
+/**
+ * This function tests CRetrieveMobilePhoneSmspList
+ */
+	{
+	CTestGetSmspList* retrieveSmspList;
+	CMobilePhoneSmspList* smspList;
+// We have 	ActiveScheduler already
+//	CActiveScheduler* testActiveScheduler = new(ELeave) CActiveScheduler();
+//	TESTL(testActiveScheduler != NULL);
+//	CActiveScheduler::Install(testActiveScheduler);
+
+	retrieveSmspList = CTestGetSmspList::NewLC(aSms);
+	CleanupStack::PushL(retrieveSmspList);
+
+	retrieveSmspList->Start();
+	CActiveScheduler::Start();
+
+	smspList = retrieveSmspList->RetrieveList();
+
+	TInt count = smspList->Enumerate();
+	INFO_PRINTF2(_L("SMSP list has %d entries\n"), count);
+
+	TInt i;
+	for (i=0; i<count; i++)
+		{
+		aSmspEntry = smspList->GetEntryL(i);
+		INFO_PRINTF3(_L("Entry %d: Service Centre = >%S<\n"),i,&aSmspEntry.iServiceCentre.iTelNumber);
+		}
+
+	CleanupStack::PopAndDestroy(); // retrieveSmspList;
+	delete smspList;
+//	delete testActiveScheduler;
+//	User::After(1000000);		// Give user time to see the test results 
+	}
+
+//
+// Emulator-side class
+// With the assistance of the base class, this class must run the designated script
+//
+CTestMessStor* CTestMessStor::NewL(const TScript* aScript)
+	{
+	CTestMessStor* aA = new (ELeave) CTestMessStor(aScript);
+	CleanupStack::PushL(aA);
+	aA->ConstructL();
+	CleanupStack::Pop();
+	return (aA);
+	}
+
+CTestMessStor::CTestMessStor(const TScript* aScript) :
+	iScript(aScript)
+	{}
+
+void CTestMessStor::ConstructL()
+	{
+	CATScriptEng::ConstructL();
+	}
+
+CTestMessStor::~CTestMessStor()
+	{}
+
+TInt CTestMessStor::Start()
+	{
+	StartScript(iScript);
+	return (KErrNone);
+	}
+
+void CTestMessStor::SpecificAlgorithmL(TInt /* aParam */)
+	{
+	}
+
+void CTestMessStor::Complete(TInt aError)
+	{
+	iReturnValue = aError;
+	CActiveScheduler::Stop();
+	}