telephonyserverplugins/multimodetsy/test/Te_LoopBack/Te_LoopBackCRxMess.cpp
changeset 0 3553901f7fa8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/multimodetsy/test/Te_LoopBack/Te_LoopBackCRxMess.cpp	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,488 @@
+// 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 various receive message tests.
+// See CDataCall.cpp for fully documented test scenario.
+// 
+//
+
+/**
+ @file
+*/
+
+#include <e32test.h>
+#include <etelmm.h>
+#include "Te_LoopBackcrxmess.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.
+//
+CTestDriveRxMess* CTestDriveRxMess::NewL(const TScriptList aScriptListEntry)
+	{
+	CTestDriveRxMess* aA=new(ELeave) CTestDriveRxMess(aScriptListEntry);
+	CleanupStack::PushL(aA);
+	aA->ConstructL();
+	CleanupStack::Pop();
+	return aA;
+	}
+
+CTestDriveRxMess::CTestDriveRxMess(const TScriptList aScriptListEntry) : iScriptListEntry(aScriptListEntry)
+	{
+	// NOP
+	}
+
+TInt CTestDriveRxMess::RunTestL()
+	{
+	iCurrentScript=iScriptListEntry;
+	return StartEmulatorL();
+	}
+
+TInt CTestDriveRxMess::DriveETelApiL() //1
+//
+// This function contains the real meat of the Client-side test code
+//
+	{
+	TRequestStatus	reqStatus;
+	INFO_PRINTF1(_L("Initialising the Phone..."));
+
+	RMobilePhone::TMMTableSettings tableSettings;
+	tableSettings.iLocId=KInternetAccessPoint;
+	RMobilePhone::TMMTableSettingsPckg tableSettingsPckg(tableSettings);
+	iPhone.InitialiseMM(reqStatus , tableSettingsPckg);
+
+	User::WaitForRequest(reqStatus);
+
+	TESTL(reqStatus == KErrNone);
+
+	RMobileSmsMessaging sms;
+
+	INFO_PRINTF1(_L("Opening Sms Messaging"));
+
+	TESTL(sms.Open(iPhone)==KErrNone);
+
+	RMobileSmsMessaging::TMobileSmsCapsV1     smsCaps;
+	RMobileSmsMessaging::TMobileSmsCapsV1Pckg smsCapsPckg(smsCaps);
+
+	sms.GetCaps(smsCapsPckg);
+	smsCaps = smsCapsPckg();
+	DispCaps(smsCaps);
+
+	TRequestStatus	stat1, stat2;
+	sms.SetReceiveMode (stat1, RMobileSmsMessaging::EReceiveStored);
+	User::WaitForRequest(stat1);
+	TESTL(stat1 == KErrNone);
+
+	if(stat1 == KErrNone)
+		{
+		RMobileSmsMessaging::TMobileSmsGsmTpdu pdu;
+		RMobileSmsMessaging::TMobileSmsReceiveAttributesV1 attrib;
+		RMobileSmsMessaging::TMobileSmsReceiveAttributesV1Pckg attribPkg(attrib);
+		sms.ReceiveMessage(stat2, pdu, attribPkg);
+ 		User::WaitForRequest(stat2);
+		TESTL(stat2 == KErrNone);
+ 		attrib=attribPkg();
+ 		DispSmsAttributes(attrib);
+		}
+
+	INFO_PRINTF1(_L("Closing SMS Messaging..."));
+	sms.Close();
+	return KErrNone;
+	}
+
+//
+// Emulator-side class
+// With the assistance of the base class, this class must run the designated script
+//
+CTestRxMess* CTestRxMess::NewL(const TScript* aScript)
+	{
+	CTestRxMess* aA=new(ELeave) CTestRxMess(aScript);
+	CleanupStack::PushL(aA);
+	aA->ConstructL();
+	CleanupStack::Pop();
+	return aA;
+	}
+
+CTestRxMess::CTestRxMess(const TScript* aScript) : iScript(aScript)
+	{
+	// NOP
+	}
+
+void CTestRxMess::ConstructL()
+	{
+	CATScriptEng::ConstructL();
+	}
+
+TInt CTestRxMess::Start()
+	{
+	StartScript(iScript);
+	return KErrNone;
+	}
+
+void CTestRxMess::SpecificAlgorithmL(TInt /* aParam */)
+	{
+	}
+
+void CTestRxMess::Complete(TInt aError)
+	{
+	iReturnValue=aError;
+	CActiveScheduler::Stop();
+	}
+
+//
+// Test the SMS Notification Request
+//
+CTestDriveNotMess* CTestDriveNotMess::NewL(const TScriptList aScriptListEntry)
+	{
+	CTestDriveNotMess* aA=new(ELeave) CTestDriveNotMess(aScriptListEntry);
+	CleanupStack::PushL(aA);
+	aA->ConstructL();
+	CleanupStack::Pop();
+	return aA;
+	}
+
+CTestDriveNotMess::CTestDriveNotMess(const TScriptList aScriptListEntry) : iScriptListEntry(aScriptListEntry)
+	{
+	// NOP
+	}
+
+TInt CTestDriveNotMess::RunTestL()
+	{
+	iCurrentScript=iScriptListEntry;
+	return StartEmulatorL();
+	}
+
+TInt CTestDriveNotMess::DriveETelApiL() //2
+//
+// This function contains the real meat of the Client-side test code
+//
+	{
+	// Since NotifySmsMessageArrived is no more supported, we just have to
+	// test with 1 script. We don't have to do post notify, read sim. and
+	// then post notify, wait for complete, and post read.
+	// Also SetReceiveMode requires a completed iPhone initialization.
+	RMobileSmsMessaging sms;
+
+	TRequestStatus	reqStatus, stat1, stat2, stat3;
+	INFO_PRINTF1(_L("Initialising the Phone..."));
+
+	RMobilePhone::TMMTableSettings tableSettings;
+	tableSettings.iLocId=KInternetAccessPoint;
+	RMobilePhone::TMMTableSettingsPckg tableSettingsPckg(tableSettings);
+	iPhone.InitialiseMM(reqStatus, tableSettingsPckg); 	
+
+	User::WaitForRequest(reqStatus);
+	TESTL(reqStatus == KErrNone);
+
+	INFO_PRINTF1(_L("Opening Sms Messaging"));
+	TESTL(sms.Open(iPhone) == KErrNone);
+
+	RMobileSmsMessaging::TMobileSmsReceiveMode aReceiveMode;
+	// KErrNotSupported is normal response as there can be only
+	// one sms client who knows if the mode is changed.
+	sms.NotifyReceiveModeChange(stat3, aReceiveMode); 
+	
+	// set to CMTI mode (CNMI=0,1)
+	sms.SetReceiveMode (stat1, RMobileSmsMessaging::EReceiveStored);
+	User::WaitForRequest(stat1);
+	TESTL(stat1==KErrNone);
+
+	User::WaitForRequest(stat3);
+	INFO_PRINTF2(_L("Sms Messaging: NotifyReceiveModeChange Not Supported = %d"), stat3.Int());
+
+	if(stat1==KErrNone)
+		{
+		RMobileSmsMessaging::TMobileSmsGsmTpdu rxPdu;			
+		RMobileSmsMessaging::TMobileSmsReceiveAttributesV1 attrib;
+		RMobileSmsMessaging::TMobileSmsReceiveAttributesV1Pckg attribPkg(attrib);
+		sms.ReceiveMessage(stat2, rxPdu, attribPkg);
+		User::WaitForRequest(stat2);
+		TESTL(stat2==KErrNone);
+		attrib=attribPkg();
+ 		//TestDriveRxMess->
+		DispSmsAttributes(attrib);
+		}
+
+	INFO_PRINTF1(_L("Closing SMS Messaging..."));
+	sms.Close();
+	return KErrNone;
+	}
+
+//
+// Test-side class
+// Test CMT based incoming SMS messages
+//
+CTestDriveRxMessCmt* CTestDriveRxMessCmt::NewL(const TScriptList aScriptListEntry)
+	{
+	CTestDriveRxMessCmt* aA=new(ELeave) CTestDriveRxMessCmt(aScriptListEntry);
+	CleanupStack::PushL(aA);
+	aA->ConstructL();
+	CleanupStack::Pop();
+	return aA;
+	}
+
+CTestDriveRxMessCmt::CTestDriveRxMessCmt(const TScriptList aScriptListEntry) : iScriptListEntry(aScriptListEntry)
+	{
+	// NOP
+	}
+
+TInt CTestDriveRxMessCmt::RunTestL()
+	{
+	iCurrentScript=iScriptListEntry;
+	return StartEmulatorL();
+	}
+
+TInt CTestDriveRxMessCmt::DriveETelApiL() //3
+//
+// This function contains the real meat of the Client-side test code
+//
+	{
+	TRequestStatus reqStatus;
+
+	INFO_PRINTF1(_L("Initialising the Phone..."));
+
+	RMobilePhone::TMMTableSettings tableSettings;
+	tableSettings.iLocId=KInternetAccessPoint;
+	RMobilePhone::TMMTableSettingsPckg tableSettingsPckg(tableSettings);
+	iPhone.InitialiseMM(reqStatus, tableSettingsPckg); 	
+
+	User::WaitForRequest(reqStatus);
+	TESTL(reqStatus == KErrNone);
+
+	RMobileSmsMessaging sms;
+	INFO_PRINTF1(_L("Opening Sms Messaging"));
+	TESTL(sms.Open(iPhone)==KErrNone);
+
+    TRequestStatus	stat1,stat2;
+	sms.SetReceiveMode(stat1, RMobileSmsMessaging::EReceiveUnstoredPhoneAck);
+	User::WaitForRequest(stat1);
+	TESTL(stat1 == KErrNone);  
+
+	RMobileSmsMessaging::TMobileSmsGsmTpdu pdu;		
+	RMobileSmsMessaging::TMobileSmsReceiveAttributesV1 attrib;
+	RMobileSmsMessaging::TMobileSmsReceiveAttributesV1Pckg attribPkg(attrib);
+	INFO_PRINTF1(_L("Closing SMS Messaging..."));
+	sms.ReceiveMessage(stat2, pdu, attribPkg);
+	User::WaitForRequest(stat2);
+	TESTL(stat2 == KErrNone); 
+	attrib=attribPkg();
+	//aTestDriveRxMess->
+	DispSmsAttributes(attrib);
+
+	INFO_PRINTF1(_L("Rx CMT type message"));
+	sms.ReceiveMessage(stat2, pdu, attribPkg);
+	User::WaitForRequest(stat2);
+	TESTL(stat2 == KErrNone); 
+	attrib=attribPkg();
+	DispSmsAttributes(attrib);
+ 
+	INFO_PRINTF1(_L("Closing SMS Messaging..."));
+	sms.Close();
+	return KErrNone;
+	}
+
+//
+// Test-side class
+// Test CMT based incoming SMS Notifications
+//
+CTestDriveNotMessCmt* CTestDriveNotMessCmt::NewL(const TScriptList aScriptListEntry)
+	{
+	CTestDriveNotMessCmt* aA=new(ELeave) CTestDriveNotMessCmt(aScriptListEntry);
+	CleanupStack::PushL(aA);
+	aA->ConstructL();
+	CleanupStack::Pop();
+	return aA;
+	}
+
+CTestDriveNotMessCmt::CTestDriveNotMessCmt(const TScriptList aScriptListEntry) : iScriptListEntry(aScriptListEntry)
+	{
+	// NOP
+	}
+
+TInt CTestDriveNotMessCmt::RunTestL()
+	{
+	iCurrentScript=iScriptListEntry;
+	return StartEmulatorL();
+	}
+
+TInt CTestDriveNotMessCmt::DriveETelApiL() //4
+//
+// This function contains the real meat of the Client-side test code
+//
+	{
+	RMobileSmsMessaging sms;
+
+	TRequestStatus	reqStatus, stat1, stat2, stat3;
+	INFO_PRINTF1(_L("Initialising the Phone..."));
+	
+	RMobilePhone::TMMTableSettings tableSettings;
+	tableSettings.iLocId=KInternetAccessPoint;
+	RMobilePhone::TMMTableSettingsPckg tableSettingsPckg(tableSettings);
+	iPhone.InitialiseMM(reqStatus, tableSettingsPckg);
+
+	User::WaitForRequest(reqStatus);
+	TESTL(reqStatus == KErrNone);
+
+	INFO_PRINTF1(_L("Opening Sms Messaging"));
+	TESTL(sms.Open(iPhone) == KErrNone);
+
+	RMobileSmsMessaging::TMobileSmsReceiveMode aReceiveMode;
+	sms.NotifyReceiveModeChange(stat3, aReceiveMode);
+
+	sms.SetReceiveMode (stat1, RMobileSmsMessaging::EReceiveStored);
+	User::WaitForRequest(stat1);
+	TESTL(stat1 == KErrNone);
+
+	User::WaitForRequest(stat3);
+	INFO_PRINTF2(_L("Sms Messaging: NotifyReceiveModeChange Not Supported = %d"), stat3.Int());
+
+	if (stat1 == KErrNone)
+		{
+		RMobileSmsMessaging::TMobileSmsGsmTpdu rxPdu;		
+		RMobileSmsMessaging::TMobileSmsReceiveAttributesV1 attrib;
+		RMobileSmsMessaging::TMobileSmsReceiveAttributesV1Pckg attribPkg(attrib);
+		sms.ReceiveMessage(stat2, rxPdu, attribPkg);
+ 		User::WaitForRequest(stat2);  
+		TESTL(stat2 == KErrNone);  
+		}
+
+	INFO_PRINTF1(_L("Closing SMS Messaging..."));
+
+	sms.Close();
+	return KErrNone;
+	}
+
+
+void CTestDriveRxMess::DispSmsAttributes(RMobileSmsMessaging::TMobileSmsReceiveAttributesV1& aMobSmsAttr)
+	{
+	switch (aMobSmsAttr.iStatus)
+		{
+		case RMobileSmsMessaging::EMtMessageUnknownStatus:
+			INFO_PRINTF1(_L(" RMobileSmsMessaging::EMtMessageUnknownStatus."));
+			break;
+		case RMobileSmsMessaging::EMtMessageUnstoredPhoneAck:
+			INFO_PRINTF1(_L(" RMobileSmsMessaging::EMtMessageUnstoredPhoneAck."));
+			break;
+		case RMobileSmsMessaging::EMtMessageUnstoredClientAck:
+			INFO_PRINTF1(_L(" RMobileSmsMessaging::EMtMessageUnstoredClientAck."));
+			break;
+		case RMobileSmsMessaging::EMtMessageStored:
+			INFO_PRINTF1(_L(" RMobileSmsMessaging::EMtMessageStored."));
+			break;
+		default:
+			break;
+		}
+
+	INFO_PRINTF2(_L(" RMobileSmsMessaging Store Index = %d"), aMobSmsAttr.iStoreIndex);
+	INFO_PRINTF2(_L(" RMobileSmsMessaging Store Name = %S"), &aMobSmsAttr.iStore);
+	INFO_PRINTF2(_L(" RMobileSmsMessaging  iOriginator = %S"), &aMobSmsAttr.iOriginator.iTelNumber);
+	}	
+
+//it's bad, but I don't  have any idea to redesing these tests
+void CTestDriveNotMess::DispSmsAttributes(RMobileSmsMessaging::TMobileSmsReceiveAttributesV1& aMobSmsAttr)
+	{
+	switch (aMobSmsAttr.iStatus)
+		{
+		case RMobileSmsMessaging::EMtMessageUnknownStatus:
+			INFO_PRINTF1(_L(" RMobileSmsMessaging::EMtMessageUnknownStatus."));
+			break;
+		case RMobileSmsMessaging::EMtMessageUnstoredPhoneAck:
+			INFO_PRINTF1(_L(" RMobileSmsMessaging::EMtMessageUnstoredPhoneAck."));
+			break;
+		case RMobileSmsMessaging::EMtMessageUnstoredClientAck:
+			INFO_PRINTF1(_L(" RMobileSmsMessaging::EMtMessageUnstoredClientAck."));
+			break;
+		case RMobileSmsMessaging::EMtMessageStored:
+			INFO_PRINTF1(_L(" RMobileSmsMessaging::EMtMessageStored."));
+			break;
+		default:
+			break;
+		}
+
+	INFO_PRINTF2(_L(" RMobileSmsMessaging Store Index = %d"), aMobSmsAttr.iStoreIndex);
+	INFO_PRINTF2(_L(" RMobileSmsMessaging Store Name = %S"), &aMobSmsAttr.iStore);
+	INFO_PRINTF2(_L(" RMobileSmsMessaging  iOriginator = %S"), &aMobSmsAttr.iOriginator.iTelNumber);
+	}
+
+
+void CTestDriveRxMess::DispCaps(RMobileSmsMessaging::TMobileSmsCapsV1& aSmsCaps)
+	{
+	if ( aSmsCaps.iSmsMode & RMobileSmsMessaging::KCapsGsmSms)
+		{
+		INFO_PRINTF1(_L("    GSM SMS Supported"));
+		}
+   	if (!( aSmsCaps.iSmsMode & RMobileSmsMessaging::KCapsGsmSms))
+		{
+		INFO_PRINTF2(_L("    SMS Mode = 0x%x"), aSmsCaps.iSmsMode);
+		}
+
+	if (aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsReceiveStored)
+		{
+		INFO_PRINTF1(_L("   ReceiveStored Caps Supported"));
+		}
+	if (aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsReceiveUnstoredPhoneAck)
+		{
+		INFO_PRINTF1(_L("   ReceiveUnstoredPhoneAck Caps Supported"));
+		}
+	if (aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsReceiveEither)
+		{
+		INFO_PRINTF1(_L("   ReceiveAny Caps Supported"));
+		}
+	if (aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsCreateAck)
+		{
+		INFO_PRINTF1(_L("   CreateAck Caps Supported"));
+		}
+	if (aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsSendNoAck)
+		{
+		INFO_PRINTF1(_L("   SendNoAck Caps Supported"));
+		}
+	if (aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsSendWithAck)
+		{
+		INFO_PRINTF1(_L("   SendWithAck Caps Supported"));
+		}
+	if (aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsGetSmspList)
+		{
+		INFO_PRINTF1(_L("   GetSmspList Caps Supported"));
+		}
+	if (aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsSetSmspList)
+		{
+		INFO_PRINTF1(_L("   SetSmspList Caps Supported"));
+		}
+	}
+
+void CTestDriveRxMessCmt::DispSmsAttributes(RMobileSmsMessaging::TMobileSmsReceiveAttributesV1& aMobSmsAttr)
+	{
+	switch (aMobSmsAttr.iStatus)
+		{
+		case RMobileSmsMessaging::EMtMessageUnknownStatus:
+			INFO_PRINTF1(_L(" RMobileSmsMessaging::EMtMessageUnknownStatus."));
+			break;
+		case RMobileSmsMessaging::EMtMessageUnstoredPhoneAck:
+			INFO_PRINTF1(_L(" RMobileSmsMessaging::EMtMessageUnstoredPhoneAck."));
+			break;
+		case RMobileSmsMessaging::EMtMessageUnstoredClientAck:
+			INFO_PRINTF1(_L(" RMobileSmsMessaging::EMtMessageUnstoredClientAck."));
+			break;
+		case RMobileSmsMessaging::EMtMessageStored:
+			INFO_PRINTF1(_L(" RMobileSmsMessaging::EMtMessageStored."));
+			break;
+		default:
+			break;
+		}
+
+	INFO_PRINTF2(_L(" RMobileSmsMessaging Store Index = %d"), aMobSmsAttr.iStoreIndex);
+	INFO_PRINTF2(_L(" RMobileSmsMessaging Store Name = %S"), &aMobSmsAttr.iStore);
+	INFO_PRINTF2(_L(" RMobileSmsMessaging  iOriginator = %S"), &aMobSmsAttr.iOriginator.iTelNumber);
+	}