diff -r 594d59766373 -r 7d48bed6ce0c phoneclientserver/phoneclient/tsrc/public/basic/ut_ussd/etel_mock.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneclientserver/phoneclient/tsrc/public/basic/ut_ussd/etel_mock.cpp Tue Aug 31 15:45:17 2010 +0300 @@ -0,0 +1,211 @@ + + +#include "ut_testenv.h" +#include +#include +#include +#include + + +// global variables +CPeriodic* messageResponseTimer = 0; + +// ============================================================================== +// RMobileUssdMessaging +// ============================================================================== + +RMobileUssdMessaging::RMobileUssdMessaging() +{ +} + +RMobileUssdMessaging::RMobileUssdMessaging(const RMobileUssdMessaging&) +{ +} + +void RMobileUssdMessaging::ConstructL() +{ + QVERIFY(!messageResponseTimer); + messageResponseTimer = + CPeriodic::NewL(CActive::EPriorityStandard+1); +} + +TInt RMobileUssdMessaging::Open(RMobilePhone& /*aPhone*/) +{ + TRAPD(err,ConstructL()); + return err; +} + +void RMobileUssdMessaging::Close() +{ + delete messageResponseTimer; + messageResponseTimer = 0; +} + +void RMobileUssdMessaging::Destruct() +{ +} + +TInt RMobileUssdMessaging::GetCaps(TDes8& aCaps) const +{ + TMobileUssdCapsV1 caps; + caps.iUssdFormat = KCapsPackedString; + caps.iUssdTypes = KCapsMTUssd | KCapsMOUssd; + TMobileUssdCapsV1Pckg pckgCaps( caps ); + aCaps.Copy( pckgCaps ); + return KErrNone; +} + +void RMobileUssdMessaging::ReceiveMessage( + TRequestStatus& aReqStatus, TDes8& aMsgData, + TDes8& aMsgAttributes) const +{ + EtelMsgLoop& loop = TestEnv::env().etelMsgLoop(); + QVERIFY2(!loop.mReceiveMessageReqStatus, + "etel_mock: ReceiveMessage called twice!"); + aReqStatus = KRequestPending; + loop.mReceiveMessageReqStatus = &aReqStatus; + loop.mReceiveMessageData = &aMsgData; + loop.mReceiveMessageAttributes = &aMsgAttributes; +} + +TInt SendMessageCallback(TAny* /*aPtr*/) + { + messageResponseTimer->Cancel(); + + EtelMsgLoop& loop = TestEnv::env().etelMsgLoop(); + const TestMode& mode = TestEnv::env().testMode(); + if (mode.m_event == TestMode::Normal) + { + User::RequestComplete(loop.mSendMessageReqStatus, mode.m_error); + } + return 0; + } + +void RMobileUssdMessaging::SendMessage( + TRequestStatus& aReqStatus, const TDesC8& /*aMsgData*/, + const TDesC8& /*aMsgAttributes*/) const +{ + EtelMsgLoop& loop = TestEnv::env().etelMsgLoop(); + QVERIFY2(!loop.mSendMessageReqStatus, + "etel_mock: SendMessage called twice!"); + aReqStatus = KRequestPending; + loop.mSendMessageReqStatus = &aReqStatus; + + const TestMode& mode = TestEnv::env().testMode(); + if (mode.m_event != TestMode::NoResp) + { + // start timer to respond + TTimeIntervalMicroSeconds32 delay( + 1000*mode.m_timeout); + messageResponseTimer->Start(delay,delay, + TCallBack(SendMessageCallback,(TAny*)this)); + } +} + +void RMobileUssdMessaging::SendMessageNoFdnCheck( + TRequestStatus& /*aReqStatus*/, const TDesC8& /*aMsgData*/, + const TDesC8& /*aMsgAttributes*/) const +{ + // not used +} + +void RMobileUssdMessaging::SendRelease( + TRequestStatus& /*aReqStatus*/, TDes8& /*aReturnResult*/) const +{ + // not used +} + +void RMobileUssdMessaging::NotifyNetworkRelease( + TRequestStatus& aReqStatus, TDes8& aReturnResult) const +{ + EtelMsgLoop& loop = TestEnv::env().etelMsgLoop(); + QVERIFY2(!loop.mNetworkReleaseReqStatus, + "etel_mock: NotifyNetworkRelease called twice!"); + aReqStatus = KRequestPending; + loop.mNetworkReleaseReqStatus = &aReqStatus; + loop.mNetworkReleaseMessageData = &aReturnResult; + loop.mNetworkReleaseMessageAttributes = 0; +} + +void RMobileUssdMessaging::NotifyNetworkRelease( + TRequestStatus& aReqStatus, TDes8& aMsgData, + TDes8& aMsgAttributes) const +{ + EtelMsgLoop& loop = TestEnv::env().etelMsgLoop(); + QVERIFY2(!loop.mNetworkReleaseReqStatus, + "etel_mock: NotifyNetworkRelease called twice!"); + aReqStatus = KRequestPending; + loop.mNetworkReleaseReqStatus = &aReqStatus; + loop.mNetworkReleaseMessageData = &aMsgData; + loop.mNetworkReleaseMessageAttributes = &aMsgAttributes; +} + + +RMobileUssdMessaging::TMobileUssdAttributesV1::TMobileUssdAttributesV1() +{ + iFlags = 0; + iFormat = EFormatUnspecified; + iType = EUssdUnknown; + iDcs = 0; +} + +RMobileUssdMessaging::TMobileUssdCapsV1::TMobileUssdCapsV1() +{ + iUssdFormat = 0; + iUssdTypes = 0; +} + +// ============================================================================== +// RMobilePhone +// ============================================================================== + +RMobilePhone::TMobilePhoneSendSSRequestV3::TMobilePhoneSendSSRequestV3() +{ + iOpCode = 0; +} + +RMobilePhone::TMultimodeType::TMultimodeType() +{ + iExtensionId = 0; +} + +// ============================================================================== +// RTelSubSessionBase +// ============================================================================== + +RTelSubSessionBase::RTelSubSessionBase() +{ +} + +void RTelSubSessionBase::CancelAsyncRequest(TInt aReqToCancel) const +{ + if ( aReqToCancel == EMobileUssdMessagingSendMessage ) + { + EtelMsgLoop& loop = TestEnv::env().etelMsgLoop(); + if ( loop.mSendMessageReqStatus ) + { + User::RequestComplete( loop.mSendMessageReqStatus, KErrCancel ); + } + } + else if ( aReqToCancel == EMobileUssdMessagingReceiveMessage ) + { + EtelMsgLoop& loop = TestEnv::env().etelMsgLoop(); + if ( loop.mReceiveMessageReqStatus ) + { + User::RequestComplete( loop.mReceiveMessageReqStatus, KErrCancel ); + } + } + else if ( aReqToCancel == EMobileUssdMessagingNotifyNetworkRelease ) + { + EtelMsgLoop& loop = TestEnv::env().etelMsgLoop(); + if ( loop.mNetworkReleaseReqStatus ) + { + User::RequestComplete( loop.mNetworkReleaseReqStatus, KErrCancel ); + } + } + else if ( aReqToCancel == EMobileUssdMessagingSendRelease ) + { + // not used + } +} +