diff -r 000000000000 -r 3553901f7fa8 telephonyserverplugins/multimodetsy/test/Te_LoopBack/Te_LoopBackCRxMess.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/telephonyserverplugins/multimodetsy/test/Te_LoopBack/Te_LoopBackCRxMess.cpp Tue Feb 02 01:41:59 2010 +0200 @@ -0,0 +1,488 @@ +// Copyright (c) 1997-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 file implements various receive message tests. +// See CDataCall.cpp for fully documented test scenario. +// +// + +/** + @file +*/ + +#include +#include +#include "Te_LoopBackcrxmess.h" +#include "../../hayes/TSYCONFG.H" // for KInternetAccessPoint + +// +// Test-side class +// With the assistance of the base class, this class must start the emulator +// and drive the ETel API. +// +CTestDriveRxMess* CTestDriveRxMess::NewL(const TScriptList aScriptListEntry) + { + CTestDriveRxMess* aA=new(ELeave) CTestDriveRxMess(aScriptListEntry); + CleanupStack::PushL(aA); + aA->ConstructL(); + CleanupStack::Pop(); + return aA; + } + +CTestDriveRxMess::CTestDriveRxMess(const TScriptList aScriptListEntry) : iScriptListEntry(aScriptListEntry) + { + // NOP + } + +TInt CTestDriveRxMess::RunTestL() + { + iCurrentScript=iScriptListEntry; + return StartEmulatorL(); + } + +TInt CTestDriveRxMess::DriveETelApiL() //1 +// +// This function contains the real meat of the Client-side test code +// + { + TRequestStatus reqStatus; + INFO_PRINTF1(_L("Initialising the Phone...")); + + RMobilePhone::TMMTableSettings tableSettings; + tableSettings.iLocId=KInternetAccessPoint; + RMobilePhone::TMMTableSettingsPckg tableSettingsPckg(tableSettings); + iPhone.InitialiseMM(reqStatus , tableSettingsPckg); + + User::WaitForRequest(reqStatus); + + TESTL(reqStatus == KErrNone); + + RMobileSmsMessaging sms; + + INFO_PRINTF1(_L("Opening Sms Messaging")); + + TESTL(sms.Open(iPhone)==KErrNone); + + RMobileSmsMessaging::TMobileSmsCapsV1 smsCaps; + RMobileSmsMessaging::TMobileSmsCapsV1Pckg smsCapsPckg(smsCaps); + + sms.GetCaps(smsCapsPckg); + smsCaps = smsCapsPckg(); + DispCaps(smsCaps); + + TRequestStatus stat1, stat2; + sms.SetReceiveMode (stat1, RMobileSmsMessaging::EReceiveStored); + User::WaitForRequest(stat1); + TESTL(stat1 == KErrNone); + + if(stat1 == KErrNone) + { + RMobileSmsMessaging::TMobileSmsGsmTpdu pdu; + RMobileSmsMessaging::TMobileSmsReceiveAttributesV1 attrib; + RMobileSmsMessaging::TMobileSmsReceiveAttributesV1Pckg attribPkg(attrib); + sms.ReceiveMessage(stat2, pdu, attribPkg); + User::WaitForRequest(stat2); + TESTL(stat2 == KErrNone); + attrib=attribPkg(); + DispSmsAttributes(attrib); + } + + INFO_PRINTF1(_L("Closing SMS Messaging...")); + sms.Close(); + return KErrNone; + } + +// +// Emulator-side class +// With the assistance of the base class, this class must run the designated script +// +CTestRxMess* CTestRxMess::NewL(const TScript* aScript) + { + CTestRxMess* aA=new(ELeave) CTestRxMess(aScript); + CleanupStack::PushL(aA); + aA->ConstructL(); + CleanupStack::Pop(); + return aA; + } + +CTestRxMess::CTestRxMess(const TScript* aScript) : iScript(aScript) + { + // NOP + } + +void CTestRxMess::ConstructL() + { + CATScriptEng::ConstructL(); + } + +TInt CTestRxMess::Start() + { + StartScript(iScript); + return KErrNone; + } + +void CTestRxMess::SpecificAlgorithmL(TInt /* aParam */) + { + } + +void CTestRxMess::Complete(TInt aError) + { + iReturnValue=aError; + CActiveScheduler::Stop(); + } + +// +// Test the SMS Notification Request +// +CTestDriveNotMess* CTestDriveNotMess::NewL(const TScriptList aScriptListEntry) + { + CTestDriveNotMess* aA=new(ELeave) CTestDriveNotMess(aScriptListEntry); + CleanupStack::PushL(aA); + aA->ConstructL(); + CleanupStack::Pop(); + return aA; + } + +CTestDriveNotMess::CTestDriveNotMess(const TScriptList aScriptListEntry) : iScriptListEntry(aScriptListEntry) + { + // NOP + } + +TInt CTestDriveNotMess::RunTestL() + { + iCurrentScript=iScriptListEntry; + return StartEmulatorL(); + } + +TInt CTestDriveNotMess::DriveETelApiL() //2 +// +// This function contains the real meat of the Client-side test code +// + { + // Since NotifySmsMessageArrived is no more supported, we just have to + // test with 1 script. We don't have to do post notify, read sim. and + // then post notify, wait for complete, and post read. + // Also SetReceiveMode requires a completed iPhone initialization. + RMobileSmsMessaging sms; + + TRequestStatus reqStatus, stat1, stat2, stat3; + INFO_PRINTF1(_L("Initialising the Phone...")); + + RMobilePhone::TMMTableSettings tableSettings; + tableSettings.iLocId=KInternetAccessPoint; + RMobilePhone::TMMTableSettingsPckg tableSettingsPckg(tableSettings); + iPhone.InitialiseMM(reqStatus, tableSettingsPckg); + + User::WaitForRequest(reqStatus); + TESTL(reqStatus == KErrNone); + + INFO_PRINTF1(_L("Opening Sms Messaging")); + TESTL(sms.Open(iPhone) == KErrNone); + + RMobileSmsMessaging::TMobileSmsReceiveMode aReceiveMode; + // KErrNotSupported is normal response as there can be only + // one sms client who knows if the mode is changed. + sms.NotifyReceiveModeChange(stat3, aReceiveMode); + + // set to CMTI mode (CNMI=0,1) + sms.SetReceiveMode (stat1, RMobileSmsMessaging::EReceiveStored); + User::WaitForRequest(stat1); + TESTL(stat1==KErrNone); + + User::WaitForRequest(stat3); + INFO_PRINTF2(_L("Sms Messaging: NotifyReceiveModeChange Not Supported = %d"), stat3.Int()); + + if(stat1==KErrNone) + { + RMobileSmsMessaging::TMobileSmsGsmTpdu rxPdu; + RMobileSmsMessaging::TMobileSmsReceiveAttributesV1 attrib; + RMobileSmsMessaging::TMobileSmsReceiveAttributesV1Pckg attribPkg(attrib); + sms.ReceiveMessage(stat2, rxPdu, attribPkg); + User::WaitForRequest(stat2); + TESTL(stat2==KErrNone); + attrib=attribPkg(); + //TestDriveRxMess-> + DispSmsAttributes(attrib); + } + + INFO_PRINTF1(_L("Closing SMS Messaging...")); + sms.Close(); + return KErrNone; + } + +// +// Test-side class +// Test CMT based incoming SMS messages +// +CTestDriveRxMessCmt* CTestDriveRxMessCmt::NewL(const TScriptList aScriptListEntry) + { + CTestDriveRxMessCmt* aA=new(ELeave) CTestDriveRxMessCmt(aScriptListEntry); + CleanupStack::PushL(aA); + aA->ConstructL(); + CleanupStack::Pop(); + return aA; + } + +CTestDriveRxMessCmt::CTestDriveRxMessCmt(const TScriptList aScriptListEntry) : iScriptListEntry(aScriptListEntry) + { + // NOP + } + +TInt CTestDriveRxMessCmt::RunTestL() + { + iCurrentScript=iScriptListEntry; + return StartEmulatorL(); + } + +TInt CTestDriveRxMessCmt::DriveETelApiL() //3 +// +// This function contains the real meat of the Client-side test code +// + { + TRequestStatus reqStatus; + + INFO_PRINTF1(_L("Initialising the Phone...")); + + RMobilePhone::TMMTableSettings tableSettings; + tableSettings.iLocId=KInternetAccessPoint; + RMobilePhone::TMMTableSettingsPckg tableSettingsPckg(tableSettings); + iPhone.InitialiseMM(reqStatus, tableSettingsPckg); + + User::WaitForRequest(reqStatus); + TESTL(reqStatus == KErrNone); + + RMobileSmsMessaging sms; + INFO_PRINTF1(_L("Opening Sms Messaging")); + TESTL(sms.Open(iPhone)==KErrNone); + + TRequestStatus stat1,stat2; + sms.SetReceiveMode(stat1, RMobileSmsMessaging::EReceiveUnstoredPhoneAck); + User::WaitForRequest(stat1); + TESTL(stat1 == KErrNone); + + RMobileSmsMessaging::TMobileSmsGsmTpdu pdu; + RMobileSmsMessaging::TMobileSmsReceiveAttributesV1 attrib; + RMobileSmsMessaging::TMobileSmsReceiveAttributesV1Pckg attribPkg(attrib); + INFO_PRINTF1(_L("Closing SMS Messaging...")); + sms.ReceiveMessage(stat2, pdu, attribPkg); + User::WaitForRequest(stat2); + TESTL(stat2 == KErrNone); + attrib=attribPkg(); + //aTestDriveRxMess-> + DispSmsAttributes(attrib); + + INFO_PRINTF1(_L("Rx CMT type message")); + sms.ReceiveMessage(stat2, pdu, attribPkg); + User::WaitForRequest(stat2); + TESTL(stat2 == KErrNone); + attrib=attribPkg(); + DispSmsAttributes(attrib); + + INFO_PRINTF1(_L("Closing SMS Messaging...")); + sms.Close(); + return KErrNone; + } + +// +// Test-side class +// Test CMT based incoming SMS Notifications +// +CTestDriveNotMessCmt* CTestDriveNotMessCmt::NewL(const TScriptList aScriptListEntry) + { + CTestDriveNotMessCmt* aA=new(ELeave) CTestDriveNotMessCmt(aScriptListEntry); + CleanupStack::PushL(aA); + aA->ConstructL(); + CleanupStack::Pop(); + return aA; + } + +CTestDriveNotMessCmt::CTestDriveNotMessCmt(const TScriptList aScriptListEntry) : iScriptListEntry(aScriptListEntry) + { + // NOP + } + +TInt CTestDriveNotMessCmt::RunTestL() + { + iCurrentScript=iScriptListEntry; + return StartEmulatorL(); + } + +TInt CTestDriveNotMessCmt::DriveETelApiL() //4 +// +// This function contains the real meat of the Client-side test code +// + { + RMobileSmsMessaging sms; + + TRequestStatus reqStatus, stat1, stat2, stat3; + INFO_PRINTF1(_L("Initialising the Phone...")); + + RMobilePhone::TMMTableSettings tableSettings; + tableSettings.iLocId=KInternetAccessPoint; + RMobilePhone::TMMTableSettingsPckg tableSettingsPckg(tableSettings); + iPhone.InitialiseMM(reqStatus, tableSettingsPckg); + + User::WaitForRequest(reqStatus); + TESTL(reqStatus == KErrNone); + + INFO_PRINTF1(_L("Opening Sms Messaging")); + TESTL(sms.Open(iPhone) == KErrNone); + + RMobileSmsMessaging::TMobileSmsReceiveMode aReceiveMode; + sms.NotifyReceiveModeChange(stat3, aReceiveMode); + + sms.SetReceiveMode (stat1, RMobileSmsMessaging::EReceiveStored); + User::WaitForRequest(stat1); + TESTL(stat1 == KErrNone); + + User::WaitForRequest(stat3); + INFO_PRINTF2(_L("Sms Messaging: NotifyReceiveModeChange Not Supported = %d"), stat3.Int()); + + if (stat1 == KErrNone) + { + RMobileSmsMessaging::TMobileSmsGsmTpdu rxPdu; + RMobileSmsMessaging::TMobileSmsReceiveAttributesV1 attrib; + RMobileSmsMessaging::TMobileSmsReceiveAttributesV1Pckg attribPkg(attrib); + sms.ReceiveMessage(stat2, rxPdu, attribPkg); + User::WaitForRequest(stat2); + TESTL(stat2 == KErrNone); + } + + INFO_PRINTF1(_L("Closing SMS Messaging...")); + + sms.Close(); + return KErrNone; + } + + +void CTestDriveRxMess::DispSmsAttributes(RMobileSmsMessaging::TMobileSmsReceiveAttributesV1& aMobSmsAttr) + { + switch (aMobSmsAttr.iStatus) + { + case RMobileSmsMessaging::EMtMessageUnknownStatus: + INFO_PRINTF1(_L(" RMobileSmsMessaging::EMtMessageUnknownStatus.")); + break; + case RMobileSmsMessaging::EMtMessageUnstoredPhoneAck: + INFO_PRINTF1(_L(" RMobileSmsMessaging::EMtMessageUnstoredPhoneAck.")); + break; + case RMobileSmsMessaging::EMtMessageUnstoredClientAck: + INFO_PRINTF1(_L(" RMobileSmsMessaging::EMtMessageUnstoredClientAck.")); + break; + case RMobileSmsMessaging::EMtMessageStored: + INFO_PRINTF1(_L(" RMobileSmsMessaging::EMtMessageStored.")); + break; + default: + break; + } + + INFO_PRINTF2(_L(" RMobileSmsMessaging Store Index = %d"), aMobSmsAttr.iStoreIndex); + INFO_PRINTF2(_L(" RMobileSmsMessaging Store Name = %S"), &aMobSmsAttr.iStore); + INFO_PRINTF2(_L(" RMobileSmsMessaging iOriginator = %S"), &aMobSmsAttr.iOriginator.iTelNumber); + } + +//it's bad, but I don't have any idea to redesing these tests +void CTestDriveNotMess::DispSmsAttributes(RMobileSmsMessaging::TMobileSmsReceiveAttributesV1& aMobSmsAttr) + { + switch (aMobSmsAttr.iStatus) + { + case RMobileSmsMessaging::EMtMessageUnknownStatus: + INFO_PRINTF1(_L(" RMobileSmsMessaging::EMtMessageUnknownStatus.")); + break; + case RMobileSmsMessaging::EMtMessageUnstoredPhoneAck: + INFO_PRINTF1(_L(" RMobileSmsMessaging::EMtMessageUnstoredPhoneAck.")); + break; + case RMobileSmsMessaging::EMtMessageUnstoredClientAck: + INFO_PRINTF1(_L(" RMobileSmsMessaging::EMtMessageUnstoredClientAck.")); + break; + case RMobileSmsMessaging::EMtMessageStored: + INFO_PRINTF1(_L(" RMobileSmsMessaging::EMtMessageStored.")); + break; + default: + break; + } + + INFO_PRINTF2(_L(" RMobileSmsMessaging Store Index = %d"), aMobSmsAttr.iStoreIndex); + INFO_PRINTF2(_L(" RMobileSmsMessaging Store Name = %S"), &aMobSmsAttr.iStore); + INFO_PRINTF2(_L(" RMobileSmsMessaging iOriginator = %S"), &aMobSmsAttr.iOriginator.iTelNumber); + } + + +void CTestDriveRxMess::DispCaps(RMobileSmsMessaging::TMobileSmsCapsV1& aSmsCaps) + { + if ( aSmsCaps.iSmsMode & RMobileSmsMessaging::KCapsGsmSms) + { + INFO_PRINTF1(_L(" GSM SMS Supported")); + } + if (!( aSmsCaps.iSmsMode & RMobileSmsMessaging::KCapsGsmSms)) + { + INFO_PRINTF2(_L(" SMS Mode = 0x%x"), aSmsCaps.iSmsMode); + } + + if (aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsReceiveStored) + { + INFO_PRINTF1(_L(" ReceiveStored Caps Supported")); + } + if (aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsReceiveUnstoredPhoneAck) + { + INFO_PRINTF1(_L(" ReceiveUnstoredPhoneAck Caps Supported")); + } + if (aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsReceiveEither) + { + INFO_PRINTF1(_L(" ReceiveAny Caps Supported")); + } + if (aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsCreateAck) + { + INFO_PRINTF1(_L(" CreateAck Caps Supported")); + } + if (aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsSendNoAck) + { + INFO_PRINTF1(_L(" SendNoAck Caps Supported")); + } + if (aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsSendWithAck) + { + INFO_PRINTF1(_L(" SendWithAck Caps Supported")); + } + if (aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsGetSmspList) + { + INFO_PRINTF1(_L(" GetSmspList Caps Supported")); + } + if (aSmsCaps.iSmsControl & RMobileSmsMessaging::KCapsSetSmspList) + { + INFO_PRINTF1(_L(" SetSmspList Caps Supported")); + } + } + +void CTestDriveRxMessCmt::DispSmsAttributes(RMobileSmsMessaging::TMobileSmsReceiveAttributesV1& aMobSmsAttr) + { + switch (aMobSmsAttr.iStatus) + { + case RMobileSmsMessaging::EMtMessageUnknownStatus: + INFO_PRINTF1(_L(" RMobileSmsMessaging::EMtMessageUnknownStatus.")); + break; + case RMobileSmsMessaging::EMtMessageUnstoredPhoneAck: + INFO_PRINTF1(_L(" RMobileSmsMessaging::EMtMessageUnstoredPhoneAck.")); + break; + case RMobileSmsMessaging::EMtMessageUnstoredClientAck: + INFO_PRINTF1(_L(" RMobileSmsMessaging::EMtMessageUnstoredClientAck.")); + break; + case RMobileSmsMessaging::EMtMessageStored: + INFO_PRINTF1(_L(" RMobileSmsMessaging::EMtMessageStored.")); + break; + default: + break; + } + + INFO_PRINTF2(_L(" RMobileSmsMessaging Store Index = %d"), aMobSmsAttr.iStoreIndex); + INFO_PRINTF2(_L(" RMobileSmsMessaging Store Name = %S"), &aMobSmsAttr.iStore); + INFO_PRINTF2(_L(" RMobileSmsMessaging iOriginator = %S"), &aMobSmsAttr.iOriginator.iTelNumber); + }