telephonyserverplugins/simtsy/test/Te_SimSms/Te_SimSmsTestStepBase.cpp
changeset 0 3553901f7fa8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/simtsy/test/Te_SimSms/Te_SimSmsTestStepBase.cpp	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,244 @@
+// Copyright (c) 2005-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 "Te_SimSmsTestStepBase.h"
+#include "Te_SimSmsUtil.h"
+
+TVerdict CSimSmsTestStepBase::doTestStepPreambleL()
+	{
+	__UHEAP_MARK;
+
+	TInt ret = RProperty::Set(KUidPSSimTsyCategory, KPSSimTsyTestNumber, 0);
+	if (ret != KErrNone)
+		{
+		INFO_PRINTF1(_L("Failed resetting"));
+		User::Leave(ret);
+		}
+
+	iTestScheduler=new (ELeave) CActiveScheduler;
+	CActiveScheduler::Install(iTestScheduler);	
+
+	ret = iTelServer.Connect();
+	if (ret!=KErrNone)
+		{
+		INFO_PRINTF1(_L("Failed to connect to telephony server"));
+		delete iTestScheduler;
+		User::Leave(ret);
+		}
+   	ret=iTelServer.LoadPhoneModule(KSimtsyName);
+	if (ret!=KErrNone)
+		{
+		INFO_PRINTF1(_L("Failed to load phone module"));
+		iTelServer.Close();
+		delete iTestScheduler;
+		User::Leave(ret);
+		}
+
+	ret=iPhone.Open(iTelServer,KPhoneName) ;
+	if (ret!=KErrNone)
+		{
+		INFO_PRINTF1(_L("Failed to open phone module"));
+		iTelServer.UnloadPhoneModule(KSimtsyName);
+		iTelServer.Close();
+		delete iTestScheduler;
+		User::Leave(ret);
+		}
+	ret=iPhone.Initialise();
+	if (ret!=KErrNone)
+		{
+		INFO_PRINTF1(_L("Failed to initialise the phone"));
+		iPhone.Close();
+		iTelServer.UnloadPhoneModule(KSimtsyName);
+		iTelServer.Close();
+		delete iTestScheduler;
+		User::Leave(ret);
+		}
+
+	ret=iSms.Open(iPhone);
+	if (ret!=KErrNone)
+		{
+		INFO_PRINTF1(_L("Cannot open Sms"));
+		iPhone.Close();
+		iTelServer.UnloadPhoneModule(KSimtsyName);
+		iTelServer.Close();
+		delete iTestScheduler;
+		User::Leave(ret);
+		}
+
+	return TestStepResult();
+	}
+
+TVerdict CSimSmsTestStepBase::doTestStepPostambleL()
+	{
+	iSms.Close();
+	iPhone.Close();
+	iTelServer.UnloadPhoneModule(KSimtsyName);
+	iTelServer.Close();
+	delete iTestScheduler;
+
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+void CSimSmsTestStepBase::PrintMessageStoreCaps(TUint32 aCaps)
+	{
+	if(aCaps & RMobilePhoneStore::KCapsReadAccess)
+	{
+		INFO_PRINTF1(_L("Store supports read access"));
+	}
+	if(aCaps & RMobilePhoneStore::KCapsWriteAccess)
+	{
+		INFO_PRINTF1(_L("Store supports write/delete access"));
+	}
+	if(aCaps & RMobilePhoneStore::KCapsDeleteAll)
+	{
+		INFO_PRINTF1(_L("Store supports deleting all entries at once"));
+	}
+	if(aCaps & RMobilePhoneStore::KCapsNotifyEvent)
+	{
+		INFO_PRINTF1(_L("Store supports event notification"));
+	}
+	if(aCaps & static_cast<TUint32>(RMobilePhoneStore::KCapsWholeStore))
+	{
+		INFO_PRINTF1(_L("Store supports reading whole store in a list"));
+	}
+	if(aCaps & RMobilePhoneStore::KCapsIndividualEntry)
+	{
+		INFO_PRINTF1(_L("Store supports reading entries one at a time"));
+	}
+	if(aCaps & RMobileSmsStore::KCapsUnreadMessages)
+	{
+		INFO_PRINTF1(_L("Store contains unread messages"));
+	}
+	if(aCaps & RMobileSmsStore::KCapsReadMessages)
+	{
+		INFO_PRINTF1(_L("Store contains read messages"));
+	}
+	if(aCaps & RMobileSmsStore::KCapsSentMessages)
+	{
+		INFO_PRINTF1(_L("Store contains sent messages"));
+	}
+	if(aCaps & RMobileSmsStore::KCapsUnsentMessages)
+	{
+		INFO_PRINTF1(_L("Store contains unsent messages"));
+	}
+	if(aCaps & RMobileSmsStore::KCapsGsmMessages)
+	{
+		INFO_PRINTF1(_L("Store contains GSM format messages"));
+	}
+	if(aCaps & RMobileSmsStore::KCapsCdmaMessages)
+	{
+		INFO_PRINTF1(_L("Store contains CDMA format messages"));
+	}
+}
+
+TVerdict CSimSmsTestStepBase::SendSms()
+{
+	INFO_PRINTF1(_L("Sending SMS."));
+
+	// Create message PDU and convert to binary 
+	TBuf8<400> msgData;
+	TLex8 lex;
+	TUint8 val;
+	TInt i;
+
+	TInt ret;
+	msgData.Zero();
+
+	const TInt count_before((&KMsgDataBeforeTargetAddress)->Length()/2);	// Assume length of pdu is always even
+	for(i=0;i<count_before;++i)
+		{
+		lex=(&KMsgDataBeforeTargetAddress)->Mid(i*2,2);
+		ret = lex.Val(val,EHex);					
+
+		if(ret) return EFail;
+		msgData.Append(TChar(val));
+		}
+
+	TBuf8<20> targetAddressAscii;
+	targetAddressAscii.Zero();
+	RMobilePhone::TMobileAddress targetAddress;
+	targetAddress.iTypeOfNumber=RMobilePhone::EInternationalNumber;
+	targetAddress.iNumberPlan=RMobilePhone::EIsdnNumberPlan;
+	targetAddress.iTelNumber.Copy(iTelNumber);
+	ret = CATSmsUtils::AppendAddressToAscii(targetAddressAscii,targetAddress);
+
+	if(ret) return EFail;
+
+	const TInt count_address(targetAddressAscii.Length()/2);	// Assume length is always even
+	for(i=0;i<count_address;++i)
+		{
+		lex=targetAddressAscii.Mid(i*2,2);
+		ret = lex.Val(val,EHex);					
+
+		if(ret) return EFail;
+		msgData.Append(TChar(val));
+		}
+
+	const TInt count_after((&KMsgDataAfterTargetAddress)->Length()/2);	// Assume length of pdu is always even
+	for(i=0;i<count_after;++i)
+		{
+		lex=(&KMsgDataAfterTargetAddress)->Mid(i*2,2);
+		ret = lex.Val(val,EHex);
+
+		if(ret) return EFail;
+		msgData.Append(TChar(val));
+		}
+
+	// Create message attibutes 
+	RMobileSmsMessaging::TMobileSmsSendAttributesV1	msgAttr;
+		
+	msgAttr.iFlags=0x184;
+	msgAttr.iDataFormat=RMobileSmsMessaging::EFormatGsmTpdu;
+	msgAttr.iGsmServiceCentre.iTypeOfNumber=RMobilePhone::EInternationalNumber;
+	msgAttr.iGsmServiceCentre.iNumberPlan=RMobilePhone::EIsdnNumberPlan;
+	msgAttr.iGsmServiceCentre.iTelNumber.Copy(iSCANumber);
+
+	// Package up data ready for sending to etel
+	RMobileSmsMessaging::TMobileSmsSendAttributesV1Pckg msgAttrPkg(msgAttr);
+
+	// Send the message, try upto 3 times if phone is not ready
+	TRequestStatus status;
+	INFO_PRINTF1(_L(".."));
+	TSmsPdu smsPduSent;
+
+	smsPduSent.Copy(KTestSendPduA,sizeof(KTestSendPduA));
+
+	iSms.SendMessage(status,smsPduSent,msgAttrPkg);
+	User::WaitForRequest(status);
+	if(status==KErrGsmSMSFailureInME || status==KErrGeneral || status==KErrGsmSMSUnknownError)
+		{
+		INFO_PRINTF1(_L(".."));
+		iSms.SendMessage(status,smsPduSent,msgAttrPkg);
+		User::WaitForRequest(status);
+		if(status==KErrGsmSMSFailureInME || status==KErrGeneral || status==KErrGsmSMSUnknownError)
+			{
+			INFO_PRINTF1(_L(".."));
+			iSms.SendMessage(status,smsPduSent,msgAttrPkg);
+			User::WaitForRequest(status);
+			}
+		}	
+	
+	ret = status.Int();
+
+	if(ret) return EFail;
+
+	// Validate message reference number has changed 
+	if(!(msgAttr.iFlags&RMobileSmsMessaging::KMessageReference))
+		return(EFail);
+
+	INFO_PRINTF1(_L("TESTS passed"));
+	return TestStepResult(); 
+}