diff -r 000000000000 -r 3553901f7fa8 telephonyserverplugins/simtsy/test/Te_SimSms/Te_SimSmsTestStepBase.cpp --- /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(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;iMid(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;iLength()/2); // Assume length of pdu is always even + for(i=0;iMid(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(); +}