--- /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();
+}