--- /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();
+ }