buildverification/autosmoketest/messaging/Src/TestMessCreateCdmaSmsUtil.cpp
branchRCL_3
changeset 11 493058e57c8c
parent 0 9736f095102e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildverification/autosmoketest/messaging/Src/TestMessCreateCdmaSmsUtil.cpp	Wed Sep 01 12:30:50 2010 +0100
@@ -0,0 +1,433 @@
+// Copyright (c) 2004-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:
+// TestMessCreateCdmsSmsUtil.cpp
+// This class creates the Cdma sms header and the service settings
+// 
+//
+
+#include "TestMessCreateCdmaSmsUtil.h"
+#include "TestMessCreateSmsAccount.h"
+
+// EPOC includes
+#include <csmsaccount.h>
+
+/*@{*/
+_LIT(KPtDeliveryAck,			"DeliveryAck");
+_LIT(KPtUserAck,				"UserAck");
+_LIT(KPtReadAck,				"ReadAck");
+_LIT(KPtMessageConversion,		"MessageConversion");
+_LIT(KPtPriorityIndicator,		"PriorityIndicator");
+_LIT(KPtPrivacyIndicator,		"PrivacyIndicator");
+_LIT(KPtReplyOption,			"ReplyOption");
+_LIT(KPtAlertonDelivery,		"AlertonDelivery");
+_LIT(KPtLanguageIndicator,		"LanguageIndicator");
+
+//Constants used
+_LIT(KPtTeleService,			"TeleService");
+_LIT(KPtSubmit,					"Submit");
+_LIT(KPtCancel,					"Cancel");
+
+// Supported Teleservices
+_LIT(KPtTeleWmt,				"WMT");
+_LIT(KPtTeleWemt,				"WEMT");
+_LIT(KPtTeleWpt,				"WPT");
+_LIT(KPtTeleVmn,				"VMN");
+_LIT(KPtTeleScpt,				"SCPT");
+_LIT(KPtTeleCatpt,				"CATPT");
+_LIT(KPtTeleCmt91,				"CMT91");
+_LIT(KPtTeleWap,				"WAP");
+
+// Supported message conversion formats
+_LIT(KPtPidFax,					"Fax");
+_LIT(KPtPidX400,				"X400");
+_LIT(KPtPidPaging,				"Paging");
+_LIT(KPtPidMail,				"Mail");
+_LIT(KPtPidErmes,				"Ermes");
+_LIT(KPtPidSpeech,				"Speech");
+/*@}*/
+
+/**
+ Constructor
+*/
+CTestMessCreateCdmaSmsUtil ::CTestMessCreateCdmaSmsUtil(CTestMessBase& aTestStep)
+: 	CTestMessCreateSmsUtilBase(aTestStep)
+	{
+	aTestStep.INFO_PRINTF1(_L("The CDMA SMS util is created"));
+	}
+
+/**
+ Prepares the SMS account details for CSendAs/RSendAs
+ @leave - KErrNoMemory
+ @leave - System wide error codes
+*/
+void CTestMessCreateCdmaSmsUtil::PrepareAccountL(CMsvSession& /*aSession*/)
+	{
+	// Reads the teleservice
+	tia637::TTeleserviceId	teleServiceId=tia637::KTeleserviceWMT;
+	TPtrC 					ptrTeleService;
+	if( !(iTestStep.GetStringFromConfig(iTestStep.ConfigSection(), KPtTeleService, ptrTeleService)))
+		{
+		iTestStep.INFO_PRINTF1(_L("Teleservice is not provided. Default teleservice (WMT) is used"));
+		}
+	else
+		{
+		iTestStep.INFO_PRINTF2(_L("Teleservice to be set is : %S"), &ptrTeleService);
+
+		//Get the teleservice Id
+		teleServiceId = GetTeleServiceId(ptrTeleService);
+		}
+
+	if ( teleServiceId!=tia637::KTeleserviceWEMT )
+		{
+		teleServiceId=tia637::KTeleserviceWMT;
+		}
+
+	CSmsSettings*	smsSettings = CSmsSettings::NewL();
+	CleanupStack::PushL(smsSettings);
+
+	CSmsAccount*	smsAccount=CSmsAccount::NewLC();
+	smsAccount->LoadSettingsL(*smsSettings);
+	smsSettings->SetDefaultTeleservice(teleServiceId);
+	smsAccount->SaveSettingsL(*smsSettings);
+	CleanupStack::PopAndDestroy(smsAccount);
+	CleanupStack::PopAndDestroy(smsSettings);
+	}
+
+/**
+ Creates a new CDMA sms header object
+ @param aBodyText - body text of the message
+ @return CSmsHeader - pointer of the CSmsHeader object
+ @leave - KErrNoMemory
+ @leave - System wide error codes
+*/
+CSmsHeader* CTestMessCreateCdmaSmsUtil::NewHeaderL(CRichText& aBodyText)
+	{
+	return CSmsHeader::NewL(KSmsTypeSubmit, aBodyText);
+	}
+
+/**
+ Fill up the header object with data read from the ini file
+ @param aSmsHeader - reference for the sms header object
+ @leave - System wide error codes
+*/
+void CTestMessCreateCdmaSmsUtil::PrepareHeaderL(CSmsHeader& aSmsHeader)
+	{
+	//	Get bearer data
+	TPtrC	ptrBearer;
+	TBool	returnValue=iTestStep.GetStringFromConfig(iTestStep.ConfigSection(), KBearer, ptrBearer);
+	if ( !returnValue )
+		{
+		//If no bearer provided, the bearer is read from the default section ofthe
+		// ini file
+		returnValue=iTestStep.GetStringFromConfig(KDef, KDefBearer, ptrBearer);
+		}
+
+	if ( returnValue )
+		{
+		//default value for the bearer
+		TBioMsgIdType	bearer = EBioMsgIdNbs;
+
+		iTestStep.INFO_PRINTF2(_L("Bearer = %S"), &ptrBearer);
+		if (ptrBearer.CompareF(KBearerWap) == 0)
+			{
+			//Wap message ID
+			bearer = EBioMsgIdWap;
+			}
+		else if (ptrBearer.CompareF(KBearerWapSecure) == 0)
+			{
+			//WapSecure message ID
+			bearer = EBioMsgIdWapSecure;
+			}
+		else
+			{
+			iTestStep.ERR_PRINTF1(_L("No bearer provided. Default is used"));
+			}
+
+		//Set the BIO Message ID type
+		aSmsHeader.BioMessage().SetBioMsgIdType(bearer);
+		}
+
+	//	Get encoding data
+	TInt	encoding;
+	returnValue=iTestStep.GetIntFromConfig(iTestStep.ConfigSection(), KEncoding, encoding);
+	if ( !returnValue )
+		{
+		//If no encoding is provided, the encoding is read from the default section 
+		//of the ini file
+		returnValue=iTestStep.GetIntFromConfig(KDef, KDefEncoding, encoding);
+		}
+	if ( returnValue )
+		{
+		//Default encoding value.
+		TSmsCharacterEncoding charEncoding = KSmsEncodingUnicode;
+
+		iTestStep.INFO_PRINTF2(_L("Encoding = %d"), encoding);
+		switch (encoding)
+			{
+		case 7:
+			//7 bit encoding format
+			charEncoding = KSmsEncoding7BitASCII;
+			break;
+		case 8:
+			//8 bit encoding format
+			charEncoding = KSmsEncodingBinary;
+			break;
+		case 16:
+			//unicode encoding format
+			charEncoding = KSmsEncodingUnicode;
+			break;
+		default:
+			//default encoding format
+			charEncoding = KSmsEncodingUnicode;
+			break;
+			}
+		//Set the character encoding format
+		aSmsHeader.BioMessage().SetEncoding(charEncoding);
+		}
+
+	
+	TBool	deliveryAck = EFalse;
+	TBool	userAck = EFalse;
+	TBool	readAck = EFalse;
+
+	//	Get acknowledgements report request
+	TPtrC	ptrDeliveryReport;
+	returnValue=iTestStep.GetStringFromConfig(iTestStep.ConfigSection(), KDeliveryReport, ptrDeliveryReport);
+	if ( !returnValue )
+		{
+		returnValue=iTestStep.GetStringFromConfig(KDef, KDefDeliveryReport, ptrDeliveryReport);
+		}
+	if ( returnValue )
+		{
+		iTestStep.INFO_PRINTF2(_L("The acknowledgement request flag : %S"), &ptrDeliveryReport);
+		if(ptrDeliveryReport.Compare(_L("NO")) == 0)
+			{
+			deliveryAck = EFalse;
+			userAck = EFalse;
+			readAck = EFalse;
+			}
+		if(ptrDeliveryReport.Compare(_L("YES")) == 0)
+			{
+			// Read different type of acknowledgements
+			iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KPtDeliveryAck, deliveryAck);
+			iTestStep.INFO_PRINTF2(_L("The Delivery acknowledgement request flag : %d"), deliveryAck);
+			iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KPtUserAck, userAck);
+			iTestStep.INFO_PRINTF2(_L("The User acknowledgement request flag : %d"), userAck);
+			iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KPtReadAck, readAck);
+			iTestStep.INFO_PRINTF2(_L("The Read acknowledgement request flag : %d"), readAck);
+			}
+		}
+	
+	aSmsHeader.SetAcknowledgementRequest(ESmsAckTypeDelivery, deliveryAck);
+	aSmsHeader.SetAcknowledgementRequest(ESmsAckTypeUser, userAck);
+	aSmsHeader.SetAcknowledgementRequest(ESmsAckTypeRead, readAck);
+	
+	//Get the message conversion type
+	TPtrC	ptrMessageConversion;
+	TSmsPIDConversion smsPidConversion = ESmsConvPIDNone;
+	returnValue=iTestStep.GetStringFromConfig(iTestStep.ConfigSection(), KPtMessageConversion, ptrMessageConversion);
+	if ( !returnValue )
+		{
+		iTestStep.INFO_PRINTF1(_L("The message conversion is not provided. Default (PIDNone) is taken"));
+		}
+	if ( returnValue )
+		{
+		iTestStep.INFO_PRINTF2(_L("The message conversion to be set is  : %S"), &ptrMessageConversion);
+		//Get the Message conversion id
+		smsPidConversion = GetMessageConversionId(ptrMessageConversion);
+		}
+	//Set the message conversion.
+	CSmsSettings *smsSettings = CSmsSettings::NewL();
+	CleanupStack::PushL(smsSettings);
+	aSmsHeader.GetDefaultMessageSettingsL(*smsSettings);
+	smsSettings->SetMessageConversion(smsPidConversion);
+	CleanupStack::Pop(smsSettings);
+
+	// Set the other message settings
+	aSmsHeader.CdmaMessage().SetPrivacyIndicatorL(tia637::KBdRestricted);
+	aSmsHeader.CdmaMessage().SetPriorityIndicatorL(tia637::KBdUrgent);
+	aSmsHeader.CdmaMessage().SetAlertOnDeliveryL(tia637::KBdUseMediumPriorityAlert);
+	aSmsHeader.CdmaMessage().SetLanguageIndicatorL(tia637::KLanguageEnglish);
+	}
+
+/**
+ Sets the cdma sms service settings fields using data read from the
+ ini file. If no data is provided/read from ini file, the default 
+ account settings is used.
+ @param aSmsSettings - reference of the CSmsSettings
+*/
+void CTestMessCreateCdmaSmsUtil::SetSmsAccountSettings(CSmsSettings& aSmsSettings)
+	{
+	iTestStep.INFO_PRINTF1(_L("Set SMS account Settings...."));
+	TBool	boolTemp;
+	
+	//	Set the Reply quoted setting.
+	if ( iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KReplyQuoted, boolTemp) )
+		{
+		aSmsSettings.SetReplyQuoted(boolTemp);
+		}
+
+	// Set the priority indicator
+	if ( iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KPtPriorityIndicator, boolTemp) )
+		{
+		aSmsSettings.MessageSettings().Cdma().ActivateMessageSetting(tia637::KTPriorityIndicator, boolTemp);
+		}
+
+	//Set the Privacy Indicator	
+	if ( iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KPtPrivacyIndicator, boolTemp) )
+		{
+		aSmsSettings.MessageSettings().Cdma().ActivateMessageSetting(tia637::KTPrivacyIndicator, boolTemp);
+		}
+
+	//Set the Reply option
+	if ( iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KPtReplyOption, boolTemp) )
+		{
+		aSmsSettings.MessageSettings().Cdma().ActivateMessageSetting(tia637::KTReplyOption, boolTemp);
+		}
+
+	//Set the alert on Message deliver
+	if ( iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KPtAlertonDelivery, boolTemp) )
+		{
+		aSmsSettings.MessageSettings().Cdma().ActivateMessageSetting(tia637::KTAlertOnMessageDelivery, boolTemp);
+		}
+
+	//Set the Language Indicator
+	if ( iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KPtLanguageIndicator, boolTemp) )
+		{
+		aSmsSettings.MessageSettings().Cdma().ActivateMessageSetting(tia637::KTLanguageIndicator, boolTemp);
+		}
+
+	aSmsSettings.SetValidityPeriod(ESmsVPWeek);	// week 
+	aSmsSettings.SetValidityPeriodFormat(TSmsFirstOctet::ESmsVPFInteger); //relative
+	aSmsSettings.SetDelivery(ESmsDeliveryImmediately);
+	}
+
+/**
+ Get the message type id
+ @param aMessageType - TPtrC object holding the message type
+ @return TSmsMessageType - message type id
+*/
+TSmsMessageType CTestMessCreateCdmaSmsUtil::GetMessageTypeId(const TDesC& aMessageType)
+	{
+	//Default message type is assigned
+	TSmsMessageType smsMessageType = KSmsTypeSubmit;
+
+	if( aMessageType.Compare(KPtSubmit) ==0)
+		{
+		smsMessageType = KSmsTypeSubmit;
+		}
+	else if( aMessageType.Compare(KPtCancel) ==0)
+		{
+		smsMessageType = KSmsTypeCdmaCancellation;
+		}
+	else
+		{
+		iTestStep.WARN_PRINTF1(_L("Invalid message type provided. Default is used"));
+		}
+	return smsMessageType;
+	}
+	
+/**
+ Gets the Teleservice Id
+ @param aTeleService - TPtrC holding the tele service name
+ @return tia637::TTeleserviceId - teleservice id
+*/
+tia637::TTeleserviceId CTestMessCreateCdmaSmsUtil::GetTeleServiceId(const TDesC& aTeleService)
+	{
+	//default teleservice ID assigned
+	tia637::TTeleserviceId	teleServiceId = tia637::KTeleserviceWMT;
+
+	iTestStep.INFO_PRINTF2(_L("Teleservice set is : %S"), &aTeleService);
+	if( aTeleService.Compare(KPtTeleScpt) ==0)
+		{
+		teleServiceId = tia637::KTeleserviceSCPT;
+		}
+	else if( aTeleService.Compare(KPtTeleCatpt) ==0)
+		{
+		teleServiceId = tia637::KTeleserviceCATPT;
+		}
+	else if( aTeleService.Compare(KPtTeleCmt91) ==0)
+		{
+		teleServiceId = tia637::KTeleserviceCMT91;
+		}
+	else if( aTeleService.Compare(KPtTeleVmn) ==0)
+		{
+		teleServiceId = tia637::KTeleserviceVMN;
+		}
+	else if( aTeleService.Compare(KPtTeleWap) ==0)
+		{
+		teleServiceId = tia637::KTeleserviceWAP;
+		}
+	else if( aTeleService.Compare(KPtTeleWemt) ==0)
+		{
+		teleServiceId = tia637::KTeleserviceWEMT;
+		}
+	else if( aTeleService.Compare(KPtTeleWmt) ==0)
+		{
+		teleServiceId = tia637::KTeleserviceWMT;
+		}
+	else if( aTeleService.Compare(KPtTeleWpt) ==0)
+		{
+		teleServiceId = tia637::KTeleserviceWPT;
+		}
+	else
+		{
+		iTestStep.WARN_PRINTF1(_L("Invalid Teleservice provided. Default WMT used"));
+		}
+
+	return teleServiceId;
+	}
+
+/**
+ Gets the Message Conversion Id
+ @param aTeleService - TPtrC holding the tele service name
+ @return tia637::TTeleserviceId - teleservice id
+*/
+TSmsPIDConversion CTestMessCreateCdmaSmsUtil::GetMessageConversionId(const TDesC& aMessageConversion)
+	{
+	TSmsPIDConversion	smsPidConv = ESmsConvPIDNone;
+
+	iTestStep.INFO_PRINTF2(_L("The message conversion set is  : %S"), &aMessageConversion);
+	if( aMessageConversion.Compare(KPtPidFax) ==0)
+		{
+		smsPidConv = ESmsConvFax;
+		}
+	else if( aMessageConversion.Compare(KPtPidX400) ==0)
+		{
+		smsPidConv = ESmsConvX400;
+		}
+	else if( aMessageConversion.Compare(KPtPidPaging) ==0)
+		{
+		smsPidConv = ESmsConvPaging;
+		}
+	else if( aMessageConversion.Compare(KPtPidMail) ==0)
+		{
+		smsPidConv = ESmsConvMail;
+		}
+	else if( aMessageConversion.Compare(KPtPidErmes) ==0)
+		{
+		smsPidConv = ESmsConvErmes;
+		}
+	else if( aMessageConversion.Compare(KPtPidSpeech) ==0)
+		{
+		smsPidConv = ESmsConvSpeech;
+		}
+	else
+		{
+		iTestStep.INFO_PRINTF1(_L("The message conversion provided is invalid"));
+		iTestStep.INFO_PRINTF1(_L("The default NONE message conversion is set"));
+		}
+	
+	return smsPidConv;
+	}