kerneltest/e32test/dmav2/self_test.cpp
changeset 247 d8d70de2bd36
parent 139 95f71bcdcdb7
child 293 0659d0e1a03c
--- a/kerneltest/e32test/dmav2/self_test.cpp	Tue Jul 06 15:50:07 2010 +0300
+++ b/kerneltest/e32test/dmav2/self_test.cpp	Wed Aug 18 11:08:29 2010 +0300
@@ -31,12 +31,23 @@
 
 static RTest test(_L("t_dma2 test framework tests"));
 
-void RDmaSession::SelfTest()
+void RDmaSession::SelfTest(TBool aSimulatedDmac)
 	{
 	test.Start(_L("Simple transfer test"));
-	test.Next(_L("Open session"));
+
 	RDmaSession session;
-	TInt r = session.Open();
+	TInt r = KErrUnknown;
+	if (aSimulatedDmac)
+		{
+		test.Next(_L("Open session (simulated DMA)"));
+		r = session.OpenSim();
+		}
+	else
+		{
+		test.Next(_L("Open session"));
+		r = session.Open();
+		}
+
 	test_KErrNone(r);
 
 	test.Next(_L("Get test info"));
@@ -134,16 +145,19 @@
 		test.Printf(_L("cookie recived = 0x%08x\n"), reqCookieNewStyle );
 		test_KErrNone(r);
 
-		test.Next(_L("Fragment for ISR callback"));
-		const TInt size = 128 * KKilo;
-		TDmaTransferArgs transferArgs(0, size, size, KDmaMemAddr, KDmaSyncAuto, KDmaRequestCallbackFromIsr);
-		r = session.FragmentRequest(reqCookieNewStyle, transferArgs);
-		test_KErrNone(r);
+		if(!aSimulatedDmac)
+			{
+			test.Next(_L("Fragment for ISR callback"));
+			const TInt size = 128 * KKilo;
+			TDmaTransferArgs transferArgs(0, size, size, KDmaMemAddr, KDmaSyncAuto, KDmaRequestCallbackFromIsr);
+			r = session.FragmentRequest(reqCookieNewStyle, transferArgs);
+			test_KErrNone(r);
 
-		TIsrRequeArgs reque;
-		test.Next(_L("Queue ISR callback - with default re-queue"));
-		r = session.QueueRequestWithRequeue(reqCookieNewStyle, &reque, 1);
-		test_KErrNone(r);
+			TIsrRequeArgs reque;
+			test.Next(_L("Queue ISR callback - with default re-queue"));
+			r = session.QueueRequestWithRequeue(reqCookieNewStyle, &reque, 1);
+			test_KErrNone(r);
+			}
 
 		test.Next(_L("Destroy new-style Dma request"));
 		r = session.RequestDestroy(reqCookieNewStyle);
@@ -166,78 +180,81 @@
 	test(chunk.IsWritable());
 	test(chunk.IsReadable());
 
-	test.Next(_L("Fragment(old style)"));
-	const TInt size = 128 * KKilo;
-	TInt i;
-	for(i = 0; i<10; i++)
-		{
-		TUint64 time = 0;
-		TDmaTransferArgs transferArgs(0, size, size, KDmaMemAddr);
-		r = session.FragmentRequestOld(reqCookie, transferArgs, &time);
-		test_KErrNone(r);
-		if(gVerboseOutput)
-			{
-			test.Printf(_L("%lu us\n"), time);
-			}
-	}
-
-	test.Next(_L("Queue"));
-	TRequestStatus status;
-
-	for(i = 0; i<10; i++)
+	if(!aSimulatedDmac)
 		{
-		TUint64 time = 0;
-		r = session.QueueRequest(reqCookie, status, 0, &time);
-		User::WaitForRequest(status);
-		test_KErrNone(r);
-		if(gVerboseOutput)
+		test.Next(_L("Fragment(old style)"));
+		const TInt size = 128 * KKilo;
+		TInt i;
+		for(i = 0; i<10; i++)
 			{
-			test.Printf(_L("%lu us\n"), time);
+			TUint64 time = 0;
+			TDmaTransferArgs transferArgs(0, size, size, KDmaMemAddr);
+			r = session.FragmentRequestOld(reqCookie, transferArgs, &time);
+			test_KErrNone(r);
+			if(gVerboseOutput)
+				{
+				test.Printf(_L("%lu us\n"), time);
+				}
 			}
-		}
 
-	if(newPil)
-		{
-		test.Next(_L("Fragment(new style)"));
-		TDmaTransferArgs transferArgs;
-		transferArgs.iSrcConfig.iAddr = 0;
-		transferArgs.iDstConfig.iAddr = size;
-		transferArgs.iSrcConfig.iFlags = KDmaMemAddr;
-		transferArgs.iDstConfig.iFlags = KDmaMemAddr;
-		transferArgs.iTransferCount = size;
+		test.Next(_L("Queue"));
+		TRequestStatus status;
 
 		for(i = 0; i<10; i++)
 			{
 			TUint64 time = 0;
-			r = session.FragmentRequest(reqCookie, transferArgs, &time);
+			r = session.QueueRequest(reqCookie, status, 0, &time);
+			User::WaitForRequest(status);
 			test_KErrNone(r);
 			if(gVerboseOutput)
 				{
 				test.Printf(_L("%lu us\n"), time);
 				}
 			}
-		}
 
-	test.Next(_L("Queue"));
-	TCallbackRecord record;
-	r = session.QueueRequest(reqCookie, &record);
-	test_KErrNone(r);
+		if(newPil)
+			{
+			test.Next(_L("Fragment(new style)"));
+			TDmaTransferArgs transferArgs;
+			transferArgs.iSrcConfig.iAddr = 0;
+			transferArgs.iDstConfig.iAddr = size;
+			transferArgs.iSrcConfig.iFlags = KDmaMemAddr;
+			transferArgs.iDstConfig.iFlags = KDmaMemAddr;
+			transferArgs.iTransferCount = size;
 
-	test.Next(_L("check TCallbackRecord record"));
-	if(gVerboseOutput)
-	{
-	record.Print();
-	}
-	const TCallbackRecord expected(TCallbackRecord::EThread, 1);
-	if(!(record == expected))
+			for(i = 0; i<10; i++)
+				{
+				TUint64 time = 0;
+				r = session.FragmentRequest(reqCookie, transferArgs, &time);
+				test_KErrNone(r);
+				if(gVerboseOutput)
+					{
+					test.Printf(_L("%lu us\n"), time);
+					}
+				}
+			}
+
+		test.Next(_L("Queue"));
+		TCallbackRecord record;
+		r = session.QueueRequest(reqCookie, &record);
+		test_KErrNone(r);
+
+		test.Next(_L("check TCallbackRecord record"));
+		if(gVerboseOutput)
 		{
-		test.Printf(_L("TCallbackRecords did not match"));
-		if(gVerboseOutput)
+		record.Print();
+		}
+		const TCallbackRecord expected(TCallbackRecord::EThread, 1);
+		if(!(record == expected))
 			{
-			test.Printf(_L("expected:"));
-			expected.Print();
+			test.Printf(_L("TCallbackRecords did not match"));
+			if(gVerboseOutput)
+				{
+				test.Printf(_L("expected:"));
+				expected.Print();
+				}
+			TEST_FAULT;
 			}
-		TEST_FAULT;
 		}
 
 	test.Next(_L("Destroy Dma request"));
@@ -259,7 +276,6 @@
 	RTest::CloseHandleAndWaitForDestruction(session);
 
 	test.End();
-
 	}
 
 const SDmacCaps KTestCapSet =
@@ -815,7 +831,12 @@
 void SelfTests()
 	{
 	test.Next(_L("Running framework unit tests"));
-	RDmaSession::SelfTest();
+#ifndef __WINS__
+	// Cannot connect real driver on Emulator - only
+	// simulator
+	RDmaSession::SelfTest(EFalse);
+#endif
+	RDmaSession::SelfTest(ETrue);
 	TDmaCapability::SelfTest();
 	TTestCase::SelfTest();
 	TTransferIter::SelfTest();