diff -r 000000000000 -r 9736f095102e buildverification/smoketest/messaging/Src/TestMessCreateGsmSmsUtil.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/buildverification/smoketest/messaging/Src/TestMessCreateGsmSmsUtil.cpp Tue Jan 26 15:16:33 2010 +0200 @@ -0,0 +1,262 @@ +// 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: +// This class creates the Gsm sms header and service settings. It fills up the +// fields using data read from the ini file +// +// + +#include "Configuration.cfg" + +#include "TestMessCreateGsmSmsUtil.h" + +/** + Constructor +*/ +CTestMessCreateGsmSmsUtil::CTestMessCreateGsmSmsUtil(CTestMessBase &aTestStep) +: CTestMessCreateSmsUtilBase(aTestStep) + { + aTestStep.INFO_PRINTF1(_L("The GSM SMS util is created")); + } + +/** + Prepares the SMS account details for CSendAs/RSendAs + @leave - KErrNoMemory + @leave - System wide error codes +*/ +void CTestMessCreateGsmSmsUtil::PrepareAccountL(CMsvSession& /*aSession*/) + { + } + +/** + Creates the header object for the GSM sms message + @param aBodyText - body text of the message + @return CSmsHeader* - pointer to CSmsHeader + @leave - KErrNoMemory + @leave - system wide error codes +*/ +CSmsHeader* CTestMessCreateGsmSmsUtil::NewHeaderL(CRichText &aBodyText) + { + return CSmsHeader::NewL(CSmsPDU::ESmsSubmit, aBodyText); + } + +/** + Fills up the header object with the data read from the ini file. + @param aSmsHeader - sms header object ofthe sms message + @leave - system wide error codes +*/ +void CTestMessCreateGsmSmsUtil::PrepareHeaderL(CSmsHeader &aSmsHeader) + { + // Get bearer data + TPtrC ptrBearer; + TBool returnValue=iTestStep.GetStringFromConfig(iTestStep.ConfigSection(), KBearer, ptrBearer); + if ( !returnValue ) + { + //If bearer is not provided, read from the default section of the ini file + returnValue=iTestStep.GetStringFromConfig(KDef, KDefBearer, ptrBearer); + } + + if ( returnValue ) + { + //default value for Bio message ID type + TBioMsgIdType bearer = EBioMsgIdNbs; + + iTestStep.INFO_PRINTF2(_L("Bearer = %S"), &ptrBearer); + if (ptrBearer.CompareF(KBearerWap) == 0) + { + //Set Wap message ID + bearer = EBioMsgIdWap; + } + else if (ptrBearer.CompareF(KBearerWapSecure) == 0) + { + //Set WapSecure message ID + bearer = EBioMsgIdWapSecure; + } + else + { + iTestStep.INFO_PRINTF1(_L("No supported bearer is provided. Default is used")); + } + + //Set the Bio message ID type. +#if (defined CDMA_API_ENABLED) + aSmsHeader.BioMessage().SetBioMsgIdType(bearer); +#else + aSmsHeader.SetBioMsgIdType(bearer); +#endif + } + + // Get encoding data + TInt encoding; + returnValue=iTestStep.GetIntFromConfig(iTestStep.ConfigSection(), KEncoding, encoding); + if ( !returnValue ) + { + //If encoding is not provied, read it from the default section of the ini file + returnValue=iTestStep.GetIntFromConfig(KDef, KDefEncoding, encoding); + } + if ( returnValue ) + { + iTestStep.INFO_PRINTF2(_L("Encoding = %d"), encoding); +#if (defined CDMA_API_ENABLED) + TSmsCharacterEncoding charEncoding; + + switch (encoding) + { + case 7: + //7 bit encoding format + charEncoding = KSmsEncoding7BitGsm; + break; + case 8: + //8 bit encoding format + charEncoding = KSmsEncodingBinary; + break; + case 16: + //Unicode encoding format + charEncoding = KSmsEncodingUnicode; + break; + default: + //default encoding format + charEncoding = KSmsEncoding7BitGsm; + break; + } + + //Set the character encoding + aSmsHeader.BioMessage().SetEncoding(charEncoding); +#else + TSmsDataCodingScheme::TSmsAlphabet alpha = TSmsDataCodingScheme::ESmsAlphabet7Bit; + + switch (encoding) + { + case 7: + alpha = TSmsDataCodingScheme::ESmsAlphabet7Bit; + break; + case 8: + alpha = TSmsDataCodingScheme::ESmsAlphabet8Bit; + break; + case 16: + alpha = TSmsDataCodingScheme::ESmsAlphabetUCS2; + break; + default: + alpha = TSmsDataCodingScheme::ESmsAlphabet7Bit; + break; + } + + CSmsPDU& pdu=aSmsHeader.Message().SmsPDU(); + if ( pdu.DataCodingSchemePresent() ) + { + pdu.SetAlphabet(alpha); + } +#endif + } + + // Get delivery report data + TPtrC ptrDeliveryReport; + returnValue=iTestStep.GetStringFromConfig(iTestStep.ConfigSection(), KDeliveryReport, ptrDeliveryReport); + if ( !returnValue ) + { + returnValue=iTestStep.GetStringFromConfig(KDef, KDefDeliveryReport, ptrDeliveryReport); + } + if ( returnValue ) + { + TBool changeDR = EFalse; + TBool deliveryReport = EFalse; + + iTestStep.INFO_PRINTF2(_L("Delivery Report = %S"), &ptrDeliveryReport); + if (ptrDeliveryReport.CompareF(_L("NO")) == 0) + { + changeDR = ETrue; + deliveryReport = EFalse; + } + else if (ptrDeliveryReport.CompareF(_L("YES")) == 0) + { + changeDR = ETrue; + deliveryReport = ETrue; + } + + if ( changeDR ) + { +#if (defined CDMA_API_ENABLED) + aSmsHeader.SetAcknowledgementRequest(ESmsAckTypeDelivery, deliveryReport); +#else + switch ( aSmsHeader.Type() ) + { + case CSmsPDU::ESmsSubmit: + aSmsHeader.Submit().SetStatusReportRequest(deliveryReport); + break; + case CSmsPDU::ESmsCommand: + aSmsHeader.Command().SetStatusReportRequest(deliveryReport); + break; + default: + User::Leave(KErrNotSupported); + } +#endif + } + } + } +/** + Sets the fields for the sms account settings using data read from the ini file + If no data is given in ini file, the default settings in the account is used. + @param aSmsSettings - CSmsSettings reference +*/ +void CTestMessCreateGsmSmsUtil::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 Reject duplicate settings. + if ( iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KRejectDuplicate, boolTemp) ) + { +#if (defined CDMA_API_ENABLED) + aSmsSettings.MessageSettings().Gsm().SetRejectDuplicate(boolTemp); +#else + aSmsSettings.SetRejectDuplicate(boolTemp); +#endif + } + + // Set the option for delivery report. + if ( iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KDeliveryReport, boolTemp) ) + { + aSmsSettings.SetDeliveryReport(boolTemp); + } + + // Set the concatenate feature + if ( iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KConCatenate, boolTemp) ) + { +#if (defined CDMA_API_ENABLED) + aSmsSettings.MessageSettings().Gsm().SetCanConcatenate(boolTemp); +#else + aSmsSettings.SetCanConcatenate(boolTemp); +#endif + } + + // Set whether to use the same path while replying. + if(iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KReplyPath, boolTemp)) + { +#if (defined CDMA_API_ENABLED) + aSmsSettings.MessageSettings().Gsm().SetReplyPath(boolTemp); +#else + aSmsSettings.SetReplyPath(boolTemp); +#endif + } + + //can implement these features later... + aSmsSettings.SetValidityPeriod(ESmsVPWeek); // week + aSmsSettings.SetValidityPeriodFormat(TSmsFirstOctet::ESmsVPFInteger); //relative + aSmsSettings.SetDelivery(ESmsDeliveryImmediately); + aSmsSettings.SetMessageConversion(ESmsConvPIDNone); + }