phoneclientserver/phoneclient/tsrc/public/basic/ut_ussd/etel_mock.cpp
branchRCL_3
changeset 19 7d48bed6ce0c
--- /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 <etel.h>
+#include <etelmm.h>
+#include <etelmmcs.h>
+#include <QTest>
+
+
+// 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
+	}
+}
+