diff -r 4ca382093dae -r 493058e57c8c buildverification/autosmoketest/messaging/Src/TestMessCreateCdmaSmsUtil.cpp --- /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 + +/*@{*/ +_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; + }