kerneltest/e32test/dmav2/t_dma2.cpp
author hgs
Fri, 09 Jul 2010 13:13:20 +0100
changeset 199 189ece41fa29
parent 130 c30940f6d922
child 243 c7a0ce20c48c
permissions -rw-r--r--
201027_05
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
     1
// Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     2
// All rights reserved.
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     3
// This component and the accompanying materials are made available
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     5
// which accompanies this distribution, and is available
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     7
//
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     8
// Initial Contributors:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    10
//
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    11
// Contributors:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    12
//
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    13
// Description:
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    14
// e32test\dmav2\t_dma2.cpp
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    15
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    16
#include "d_dma2.h"
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
#include "u32std.h"
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    18
#include "t_dma2.h"
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    19
#include "cap_reqs.h"
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    20
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    21
#define __E32TEST_EXTENSION__
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
#include <e32test.h>
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
#include <e32debug.h>
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    24
#include <e32svr.h>
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
#include <e32def_private.h>
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    26
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    27
// DMA test framework command  parameter options
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    28
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    29
// SelfTest option
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
_LIT(KArgSelfTest, "/SELFTEST");  
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
_LIT(KArgSelfTest2, "/S");		  
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    32
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    33
//Verbose option
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    34
_LIT(KArgVerboseOutput, "/VERBOSE"); 
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    35
_LIT(KArgVerboseOutput2, "/V");	     
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    36
  
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    37
//Simple transfer test option
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    38
_LIT(KArgSimpleTest, "/simple"); 
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    39
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    40
//Callback test option
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    41
_LIT(KArgCallBackTest, "/callback");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    42
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    43
//Suspend test option
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    44
_LIT(KArgSuspendTest, "/suspend");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    45
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    46
//Multipart transfer tests
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    47
_LIT(KArgMultiPartTest, "/multi");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    48
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    49
//Isr and dfc test option
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    50
_LIT(KArgIsrDfcTest, "/isrdfc");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    51
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    52
//Isr reque  test option
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    53
_LIT(KArgIsrequeTest, "/isreque");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    54
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    55
//Benchmark test option
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    56
_LIT(KArgBenchmarkTest, "/bench");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    57
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    58
//Graphics test option
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    59
_LIT(KArgGraphicTest, "/graphic");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    60
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    61
//DMA channel (opening and closing)  test option
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    62
_LIT(KArgChannelTest, "/channel");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    63
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    64
//Queue test option
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    65
_LIT(KArgQueueTest, "/queue");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    66
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    67
//Fragment test option
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    68
_LIT(KArgFragmentTest, "/fragment");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    69
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    70
//Request test option
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    71
_LIT(KArgRequestTest, "/request");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    72
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    73
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    74
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    75
TBool gHelpRequested;   // print usage 
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    76
TBool gVerboseOutput;   // enable verbose output 
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    77
TBool gSelfTest;        // run SelfTest 
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    78
TBool gSimpleTest;		// run only Simple transfer test
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    79
TBool gCallBack;		// run only Callback test
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    80
TBool gSuspend;			// run only Pause and resume tests
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    81
TBool gIsrReque;		// run only IsrReque tests
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    82
TBool gMultiPart;		// run only Multipart tests
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    83
TBool gIsrAndDfc;		// run only IsrAndDfc tests
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    84
TBool gBenchmark;		// run only Benchmark tests
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    85
TBool gGraphic;			// run only Graphic tests
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    86
TBool gFragment;		// run only Fragment related tests
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    87
TBool gChannel;			// run only Channel(open/close)tests
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    88
TBool gQueue;			// run only Queue related tests
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
    89
TBool gRequest;			// run only Request related tests
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    90
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    91
/**
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    92
This function prints out the PSL test Information
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    93
*/
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    94
void Print(const TDmaV2TestInfo& aInfo)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    95
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    96
	PRINT(aInfo.iMaxTransferSize);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    97
	PRINT(aInfo.iMemAlignMask);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    98
	PRINT(aInfo.iMemMemPslInfo);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    99
	PRINT(aInfo.iMaxSbChannels);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   100
	for(TInt i=0; i<aInfo.iMaxSbChannels; i++)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   101
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   102
		PRINT(aInfo.iSbChannels[i]);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   103
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   104
	PRINT(aInfo.iMaxDbChannels);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   105
	for(TInt j=0; j<aInfo.iMaxDbChannels; j++)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   106
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   107
		PRINT(aInfo.iDbChannels[j]);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   108
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   109
	PRINT(aInfo.iMaxSgChannels);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   110
	for(TInt k=0; k<aInfo.iMaxSgChannels; k++)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   111
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   112
		PRINT(aInfo.iSgChannels[k]);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   113
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   114
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   115
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   116
void CDmaTest::PrintTestInfo() const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   117
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   118
	TBuf<32> buf;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   119
	buf.AppendFormat(_L("DMA channel %d"), iChannelCookie);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   120
	RDebug::RawPrint(buf);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   121
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   122
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   123
//////////////////////////////////////////////////////////////////////
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   124
// CDmaTest
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   125
//////////////////////////////////////////////////////////////////////
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   126
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   127
void CDmaTest::OpenDmaSession()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   128
	{
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   129
	// Only open a new session if one
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   130
	// was not already supplied
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   131
	if(iDmaSession.Handle() == KNullHandle)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   132
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   133
		TInt r = iDmaSession.Open();
199
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   134
		RDebug::Printf("CDmaTest::OpenDmaSession = %d\n", r);
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   135
		TEST_ASSERT(r == KErrNone);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   136
		r = iDmaSession.OpenSharedChunk(iChunk);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   137
		TEST_ASSERT(r == KErrNone);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   138
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   139
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   140
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   141
// Open another handle to the test driver
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   142
void CDmaTest::OpenDmaSession(const RDmaSession& aSession)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   143
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   144
	iDmaSession = aSession;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   145
	TInt r = iDmaSession.Duplicate(RThread(), EOwnerThread);
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   146
	TEST_ASSERT(r == KErrNone);
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   147
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   148
	// open another handle to the test driver chunk
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   149
	r = iDmaSession.OpenSharedChunk(iChunk);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   150
	TEST_ASSERT(r == KErrNone);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   151
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   152
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   153
void CDmaTest::CloseDmaSession()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   154
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   155
	iChunk.Close();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   156
	iDmaSession.Close();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   157
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   158
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   159
void CDmaTest::PreTransferSetup()
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   160
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   161
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   162
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   163
TInt CDmaTest::DoPostTransferCheck()
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   164
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   165
	return KErrNotSupported;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   166
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   167
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   168
void CDmaTest::ChannelPause(TUint aChannelSessionCookie)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   169
{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   170
	TInt r = iDmaSession.ChannelPause(aChannelSessionCookie);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   171
	TEST_ASSERT(r == KErrNone);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   172
}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   173
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   174
void CDmaTest::ChannelResume(TUint aChannelSessionCookie)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   175
{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   176
	TInt r = iDmaSession.ChannelResume(aChannelSessionCookie);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   177
	TEST_ASSERT(r == KErrNone);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   178
}
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   179
//////////////////////////////////////////////////////////////////////
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   180
// CSingleTransferTest
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   181
//////////////////////////////////////////////////////////////////////
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   182
void CSingleTransferTest::RunTest()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   183
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   184
	OpenDmaSession();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   185
	PreTransferSetup();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   186
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   187
	OpenChannel();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   188
	CreateDmaRequest();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   189
	Fragment();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   190
	Queue();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   191
	FreeRequest();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   192
	CloseChannel();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   193
	PostTransferCheck();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   194
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   195
	CloseDmaSession();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   196
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   197
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   198
void CSingleTransferTest::OpenChannel()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   199
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   200
	iActual.iChannelOpenResult =
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   201
		iDmaSession.ChannelOpen(iChannelCookie, iChannelSessionCookie);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   202
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   203
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   204
void CSingleTransferTest::CreateDmaRequest()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   205
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   206
	if(iUseNewRequest)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   207
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   208
		if(gVerboseOutput)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   209
			{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   210
			RDebug::Printf("Calling New Request API\n");
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   211
			}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   212
		iActual.iRequestResult.iCreate =
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   213
			iDmaSession.RequestCreate(iChannelSessionCookie, iRequestSessionCookie, iMaxFragmentSize);
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   214
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   215
	else
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   216
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   217
		if(gVerboseOutput)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   218
			{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   219
			RDebug::Printf("Calling Old Request API\n");
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   220
			}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   221
		iActual.iRequestResult.iCreate =
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   222
			iDmaSession.RequestCreateOld(iChannelSessionCookie, iRequestSessionCookie, iMaxFragmentSize);
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   223
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   224
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   225
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   226
void CSingleTransferTest::Fragment()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   227
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   228
	if(iActual.iRequestResult.iCreate != KErrNone)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   229
		return;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   230
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   231
	if(iUseNewFragment)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   232
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   233
		if(gVerboseOutput)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   234
			{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   235
			RDebug::Printf("Calling New Fragment API\n");
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   236
			}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   237
		iActual.iRequestResult.iFragmentationResult =
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   238
			iDmaSession.FragmentRequest(iRequestSessionCookie, iTransferArgs);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   239
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   240
	else
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   241
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   242
		if(gVerboseOutput)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   243
			{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   244
			RDebug::Printf("Calling Old Fragment API\n");
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   245
			}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   246
		iActual.iRequestResult.iFragmentationResult =
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   247
			iDmaSession.FragmentRequestOld(iRequestSessionCookie, iTransferArgs);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   248
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   249
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   250
	const TInt fragmentCount = iDmaSession.RequestFragmentCount(iRequestSessionCookie);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   251
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   252
	// Record the fragment count if a non-zero value was expected,
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   253
	// or if it was an error value
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   254
	if(iExpected.iRequestResult.iFragmentCount != 0 || fragmentCount < 0)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   255
		iActual.iRequestResult.iFragmentCount = fragmentCount;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   256
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   257
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   258
void CSingleTransferTest::Queue()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   259
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   260
	if(iActual.iRequestResult.iFragmentationResult == KErrNone)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   261
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   262
		iActual.iRequestResult.iQueueResult = iDmaSession.QueueRequest(iRequestSessionCookie, &iActual.iCallbackRecord);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   263
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   264
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   265
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   266
void CSingleTransferTest::PostTransferCheck()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   267
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   268
	if(iPostTransferCheck)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   269
		iActual.iPostTransferCheck = DoPostTransferCheck();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   270
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   271
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   272
TInt CSingleTransferTest::DoPostTransferCheck()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   273
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   274
	return iPostTransferCheck->Check(*this);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   275
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   276
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   277
void CSingleTransferTest::FreeRequest()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   278
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   279
	if(iActual.iRequestResult.iCreate == KErrNone)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   280
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   281
		TInt r = iDmaSession.RequestDestroy(iRequestSessionCookie);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   282
		TEST_ASSERT(r == KErrNone);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   283
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   284
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   285
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   286
void CSingleTransferTest::CloseChannel()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   287
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   288
	if(iActual.iChannelOpenResult == KErrNone)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   289
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   290
		TInt r = iDmaSession.ChannelClose(iChannelSessionCookie);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   291
		TEST_ASSERT(r == KErrNone);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   292
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   293
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   294
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   295
void CSingleTransferTest::PrintTestType() const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   296
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   297
	RDebug::RawPrint(_L("Single transfer"));
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   298
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   299
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   300
void CSingleTransferTest::PrintTestInfo() const
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   301
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   302
	CDmaTest::PrintTestInfo();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   303
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   304
	// State which API versions are being used
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   305
	if(iUseNewFragment)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   306
		RDebug::RawPrint(_L(", Fragment v2,"));
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   307
	else
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   308
		RDebug::RawPrint(_L(", Fragment v1,"));
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   309
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   310
	if(iUseNewRequest)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   311
		RDebug::RawPrint(_L(" DDmaRequest v2"));
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   312
	else
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   313
		RDebug::RawPrint(_L(" DDmaRequest v1"));
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   314
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   315
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   316
void CSingleTransferTest::PreTransferSetup()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   317
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   318
	if(iPreTransfer)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   319
		iPreTransfer->Setup(*this); //initialize test
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   320
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   321
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   322
TBool CSingleTransferTest::Result()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   323
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   324
	const TBool result = iExpected == iActual;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   325
	if(!result)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   326
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   327
		RDebug::Printf("TResultSets do not match");
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   328
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   329
	if(!result || gVerboseOutput)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   330
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   331
		RDebug::Printf("\nExpected error codes:");
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   332
		iExpected.Print();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   333
		RDebug::Printf("Expected callback record:");
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   334
		iExpected.iCallbackRecord.Print();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   335
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   336
		RDebug::Printf("\nActual error codes:");
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   337
		iActual.Print();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   338
		RDebug::Printf("Actual callback record:");
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   339
		iActual.iCallbackRecord.Print();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   340
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   341
	return result;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   342
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   343
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   344
//////////////////////////////////////////////////////////////////////
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   345
// CDmaTestDecorator
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   346
//////////////////////////////////////////////////////////////////////
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   347
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   348
CDmaTestDecorator::CDmaTestDecorator(CDmaTest* aDecoratedTest)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   349
	: CDmaTest(_L("Decorated Test"), 1, NULL, NULL), iDecoratedTest(aDecoratedTest)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   350
	{}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   351
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   352
CDmaTestDecorator::CDmaTestDecorator(const CDmaTestDecorator& aOther)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   353
	: CDmaTest(aOther), iDecoratedTest( static_cast<CDmaTest*>( aOther.iDecoratedTest->Clone() ) )
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   354
	// Need cast because Clone does not have a covariant return type,
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   355
	// as not all compillers allow it
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   356
	{}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   357
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   358
//////////////////////////////////////////////////////////////////////
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   359
// CMultiVersionTest
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   360
//////////////////////////////////////////////////////////////////////
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   361
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   362
CMultiVersionTest::CMultiVersionTest(CSingleTransferTest* aDmaTest)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   363
	: CDmaTestDecorator(aDmaTest), iNewVersionTest(NULL)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   364
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   365
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   366
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   367
CMultiVersionTest::CMultiVersionTest(const CMultiVersionTest& aOther)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   368
	: CDmaTestDecorator(aOther), iNewVersionTest( aOther.iNewVersionTest ? static_cast<CSingleTransferTest*>(aOther.iNewVersionTest->Clone()) : NULL)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   369
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   370
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   371
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   372
CMultiVersionTest::~CMultiVersionTest()
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   373
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   374
	delete iDecoratedTest;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   375
	delete iNewVersionTest;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   376
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   377
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   378
void CMultiVersionTest::SetupL()
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   379
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   380
	// Open a tempory dma session to find out the
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   381
	// capabilities of the dma channel.
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   382
	OpenDmaSession();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   383
	Configure();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   384
	CloseDmaSession();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   385
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   386
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   387
void CMultiVersionTest::Announce() const
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   388
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   389
	CTest::Announce();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   390
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   391
	iDecoratedTest->Announce();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   392
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   393
	if(iNewVersionTest)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   394
		iNewVersionTest->Announce();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   395
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   396
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   397
void CMultiVersionTest::PrintTestType() const
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   398
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   399
	RDebug::RawPrint(_L("Multi version test wrapper"));
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   400
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   401
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   402
void CMultiVersionTest::PrintTestInfo() const
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   403
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   404
		if(iNewVersionTest)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   405
			{ 		
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   406
			RDebug::RawPrint(_L("Running tests using Version 2 PIL"));
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   407
			}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   408
		else
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   409
			{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   410
			RDebug::RawPrint(_L("Running tests using Version 1 PIL"));		
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   411
			}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   412
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   413
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   414
void CMultiVersionTest::RunTest()
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   415
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   416
	OpenDmaSession();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   417
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   418
	// iDecoratedTest is the test, in the old configuration
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   419
	// iNewVersionTest is the same test, configured
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   420
	// to use the new APIs
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   421
	//
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   422
	// 2 objects are needed since they can each store
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   423
	// their own results
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   424
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   425
	iDecoratedTest->OpenDmaSession(iDmaSession);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   426
	(*iDecoratedTest)();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   427
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   428
	if(iNewVersionTest)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   429
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   430
		iNewVersionTest->OpenDmaSession(iDmaSession);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   431
		(*iNewVersionTest)();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   432
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   433
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   434
	CloseDmaSession();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   435
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   436
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   437
/**
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   438
Maybe create another test object to run with new API
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   439
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   440
Pass on the cookie for the channel they must test
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   441
*/
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   442
void CMultiVersionTest::Configure()
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   443
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   444
	static_cast<CSingleTransferTest*>(iDecoratedTest)->UseNewDmaApi(EFalse);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   445
	iDecoratedTest->SetChannelCookie(iChannelCookie);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   446
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   447
	if(Version2PILAvailable())
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   448
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   449
		iNewVersionTest = static_cast<CSingleTransferTest*>(iDecoratedTest->Clone());
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   450
		TEST_ASSERT(iNewVersionTest != NULL);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   451
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   452
		iNewVersionTest->UseNewDmaApi(ETrue);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   453
		iNewVersionTest->SetChannelCookie(iChannelCookie);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   454
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   455
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   456
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   457
/**
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   458
Discover from DMA channel what PIL versions are available.
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   459
In practice V1 APIs will always be available, V2 may be.
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   460
*/
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   461
TBool CMultiVersionTest::Version2PILAvailable()
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   462
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   463
	TUint channelSessionCookie;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   464
	TInt r = iDmaSession.ChannelOpen(iChannelCookie, channelSessionCookie);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   465
	TEST_ASSERT(r == KErrNone);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   466
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   467
	TDmacTestCaps channelCaps;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   468
	r = iDmaSession.ChannelCaps(channelSessionCookie, channelCaps);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   469
	TEST_ASSERT(r == KErrNone);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   470
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   471
	r = iDmaSession.ChannelClose(channelSessionCookie);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   472
	TEST_ASSERT(r == KErrNone);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   473
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   474
	return channelCaps.iPILVersion >= 2;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   475
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   476
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   477
TBool CMultiVersionTest::Result()
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   478
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   479
	TBool v1Result = iDecoratedTest->Result();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   480
	if(gVerboseOutput || !v1Result)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   481
		RDebug::Printf("V1 API result: %s", v1Result ? "success" : "failure");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   482
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   483
	TBool v2Result = iNewVersionTest ? iNewVersionTest->Result() : ETrue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   484
	if(gVerboseOutput || !v1Result)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   485
		RDebug::Printf("V2 API result: %s", v2Result ? "success" : "failure");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   486
	return v1Result && v2Result;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   487
	}
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   488
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   489
//////////////////////////////////////////////////////////////////////
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   490
// CDmaBenchmark
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   491
//////////////////////////////////////////////////////////////////////
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   492
CDmaBenchmark::CDmaBenchmark(const TDesC& aName, TInt aIterations, const TResultSet& aExpectedResults, const TDmaTransferArgs& aTransferArgs, TUint aMaxFragmentSize)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   493
	:CSingleTransferTest(aName, aIterations, aTransferArgs, aExpectedResults, aMaxFragmentSize, NULL, NULL)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   494
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   495
	UseNewDmaApi(EFalse);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   496
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   497
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   498
CDmaBenchmark::CDmaBenchmark(const CDmaBenchmark& aOriginal)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   499
	:CSingleTransferTest(aOriginal)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   500
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   501
	CopyL(aOriginal.iResultArray, iResultArray);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   502
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   503
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   504
CDmaBenchmark::~CDmaBenchmark()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   505
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   506
	iResultArray.Close();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   507
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   508
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   509
TUint64 CDmaBenchmark::MeanResult()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   510
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   511
	if(gVerboseOutput)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   512
		RDebug::Printf("CDmaBenchmark::MeanResult\n");
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   513
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   514
	const TInt count = iResultArray.Count();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   515
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   516
	TEST_ASSERT(count > 0);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   517
	TEST_ASSERT(count == iIterations);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   518
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   519
	TUint64 sum = 0;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   520
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   521
	for(TInt i = 0; i < count; i++)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   522
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   523
		const TUint64 value = iResultArray[i];
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   524
		if(gVerboseOutput)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   525
			RDebug::Printf("iResultArray[%d]: %lu", i, value);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   526
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   527
		sum += value;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   528
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   529
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   530
	return sum / count;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   531
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   532
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   533
TBool CDmaBenchmark::Result()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   534
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   535
	const TBool result = CSingleTransferTest::Result();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   536
	if(result)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   537
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   538
		RDebug::Printf("  Mean time: %lu us", MeanResult());
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   539
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   540
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   541
	return result;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   542
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   543
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   544
//////////////////////////////////////////////////////////////////////
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   545
// CDmaBmFragmentation
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   546
//////////////////////////////////////////////////////////////////////
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   547
CDmaBmFragmentation::CDmaBmFragmentation(const TDesC& aName, TInt aIterations, const TDmaTransferArgs& aTransferArgs, TUint aMaxFragmentSize)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   548
	:CDmaBenchmark(aName, aIterations, ExpectedResults, aTransferArgs, aMaxFragmentSize)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   549
	{}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   550
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   551
const TResultSet CDmaBmFragmentation::ExpectedResults(KErrNone,
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   552
		TRequestResults(KErrNone, 0, KErrNone, KErrUnknown),
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   553
		KErrUnknown,
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   554
		TCallbackRecord::Empty()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   555
		);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   556
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   557
void CDmaBmFragmentation::Fragment()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   558
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   559
	TUint64 time;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   560
	iActual.iRequestResult.iFragmentationResult =
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   561
		iDmaSession.FragmentRequestOld(iRequestSessionCookie, iTransferArgs, &time);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   562
	iResultArray.Append(time);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   563
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   564
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   565
void CDmaBmFragmentation::PrintTestType() const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   566
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   567
	RDebug::RawPrint(_L("Fragmentation Benchmark"));
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   568
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   569
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   570
void CDmaBmFragmentation::RunTest()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   571
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   572
	OpenDmaSession();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   573
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   574
	OpenChannel();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   575
	CreateDmaRequest();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   576
	Fragment();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   577
	FreeRequest();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   578
	CloseChannel();
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   579
	CloseDmaSession();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   580
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   581
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   582
//////////////////////////////////////////////////////////////////////
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   583
//	CPauseResumeTest
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   584
//
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   585
//	-Time how long a given transfer takes
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   586
//	-Pause the channel
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   587
//	-repeat the transfer (queued asynchronously)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   588
//	-wait for some time (say, 3 times the time measured)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   589
//	-read the value of the TRequestStatus object, to check it is still pending
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   590
//	-resume the channel
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   591
//	-Wait on the request
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   592
//	-Confirm that the request completed
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   593
//////////////////////////////////////////////////////////////////////
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   594
CPauseResumeTest::~CPauseResumeTest()
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   595
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   596
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   597
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   598
void CPauseResumeTest::RunTest()
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   599
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   600
	OpenDmaSession();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   601
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   602
	//Open a single DMA channel for a transfer
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   603
	OpenChannel();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   604
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   605
	RDebug::Printf("Resume unpaused idle channel");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   606
	TInt r = iDmaSession.ChannelResume(iChannelSessionCookie);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   607
	TEST_ASSERT(KErrCompletion == r);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   608
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   609
	RDebug::Printf("Pause idle channel");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   610
	r = iDmaSession.ChannelPause(iChannelSessionCookie);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   611
	TEST_ASSERT(KErrNone == r);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   612
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   613
	RDebug::Printf("Pause paused idle Channel");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   614
	r = iDmaSession.ChannelPause(iChannelSessionCookie);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   615
	TEST_ASSERT(KErrCompletion == r);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   616
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   617
	RDebug::Printf("Resume paused idle channel");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   618
	r = iDmaSession.ChannelResume(iChannelSessionCookie);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   619
	TEST_ASSERT(KErrNone == r);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   620
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   621
	//Setup a DMA request and Fragment the request.
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   622
	CreateDmaRequest();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   623
	Fragment();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   624
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   625
	//Queue the DMA request and time how long a transfer takes
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   626
	TUint64 queueTime;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   627
	DoCalibrationTransfer(queueTime);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   628
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   629
	RDebug::Printf("Calibration transfer completed in %Lu us",queueTime);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   630
	TUint32 waitQueueReqTime = I64LOW(queueTime*3); //3 times the time measured in DoCalibrationTransfer
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   631
	TEST_ASSERT(I64HIGH(queueTime*3) == 0); // If transfer takes over an hour, something has gone wrong anyway
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   632
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   633
	// Initialise buffers, after calibration transfer
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   634
	PreTransferSetup();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   635
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   636
	RDebug::Printf("Resume unpaused channel");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   637
	r = iDmaSession.ChannelResume(iChannelSessionCookie);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   638
	TEST_ASSERT(KErrCompletion == r);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   639
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   640
	//Pause DMA Transfer
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   641
	RDebug::Printf("Pausing DMA Channel");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   642
	r = iDmaSession.ChannelPause(iChannelSessionCookie);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   643
	TEST_ASSERT(KErrNone == r);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   644
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   645
	RDebug::Printf("Pause paused Channel");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   646
	r = iDmaSession.ChannelPause(iChannelSessionCookie);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   647
	TEST_ASSERT(KErrCompletion == r);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   648
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   649
	//Repeat the transfer (queued asynchronously)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   650
	TRequestStatus queueRequestStatus;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   651
	iActual.iRequestResult.iQueueResult = QueueAsyncRequest(queueRequestStatus,queueTime);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   652
	RDebug::Printf("Queue a DMA Request and wait for %u us ", waitQueueReqTime);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   653
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   654
	User::After(waitQueueReqTime);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   655
	RDebug::Printf("Finished waiting");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   656
	TEST_ASSERT(queueRequestStatus.Int() == KRequestPending);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   657
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   658
	TBool queueEmpty = ETrue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   659
	r = iDmaSession.ChannelIsQueueEmpty(iChannelSessionCookie,queueEmpty);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   660
	TEST_ASSERT(r == KErrNone);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   661
	TEST_ASSERT(!queueEmpty);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   662
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   663
	//Resume DMA channel
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   664
	RDebug::Printf("Resuming paused DMA Channel");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   665
	r = iDmaSession.ChannelResume(iChannelSessionCookie);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   666
	TEST_ASSERT(KErrNone == r);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   667
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   668
	//Wait for transfer to complete
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   669
	User::WaitForRequest(queueRequestStatus);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   670
	if (queueRequestStatus.Int() == KErrNone)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   671
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   672
		RDebug::Printf("DMA QueueAsyncRequest completed");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   673
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   674
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   675
	FreeRequest();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   676
	CloseChannel();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   677
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   678
	PostTransferCheck();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   679
	CloseDmaSession();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   680
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   681
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   682
/**
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   683
Time how long transfer takes, with no pausing
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   684
*/
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   685
void CPauseResumeTest::DoCalibrationTransfer(TUint64 &atime)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   686
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   687
	//Queue the DMA request.
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   688
	TCallbackRecord pCallbackRecord;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   689
	TInt r = iDmaSession.QueueRequest(iRequestSessionCookie,&pCallbackRecord,&atime);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   690
	TEST_ASSERT(r == KErrNone);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   691
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   692
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   693
TInt CPauseResumeTest::QueueAsyncRequest(TRequestStatus &aRequestState, TUint64 &atime)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   694
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   695
	return iDmaSession.QueueRequest(iRequestSessionCookie,aRequestState, &iActual.iCallbackRecord, &atime);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   696
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   697
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   698
void CPauseResumeTest::PrintTestType() const
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   699
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   700
	RDebug::RawPrint(_L("Pause and Resume API Test"));
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   701
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   702
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   703
//////////////////////////////////////////////////////////////////////
199
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   704
//	CPauseResumeNegTest
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   705
//
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   706
//	-Open DMA Channel
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   707
//	-Pause and Resume DMA channel
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   708
//	-Check that KErrNotSupported is returned
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   709
//	-Close DMA Channel
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   710
//////////////////////////////////////////////////////////////////////
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   711
CPauseResumeNegTest::~CPauseResumeNegTest()
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   712
	{
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   713
	}
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   714
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   715
void CPauseResumeNegTest::RunTest()
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   716
	{
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   717
	OpenDmaSession();
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   718
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   719
	//Open a single DMA channel for a transfer
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   720
	OpenChannel();
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   721
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   722
	RDebug::Printf("Resume unpaused idle channel");
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   723
	TInt r = iDmaSession.ChannelResume(iChannelSessionCookie);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   724
	TEST_ASSERT(KErrNotSupported == r);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   725
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   726
	RDebug::Printf("Pause idle channel");
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   727
	r = iDmaSession.ChannelPause(iChannelSessionCookie);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   728
	TEST_ASSERT(KErrNotSupported == r);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   729
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   730
	RDebug::Printf("Pause paused idle Channel");
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   731
	r = iDmaSession.ChannelPause(iChannelSessionCookie);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   732
	TEST_ASSERT(KErrNotSupported == r);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   733
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   734
	RDebug::Printf("Resume paused idle channel");
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   735
	r = iDmaSession.ChannelResume(iChannelSessionCookie);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   736
	TEST_ASSERT(KErrNotSupported == r);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   737
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   738
	CloseChannel();
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   739
	CloseDmaSession();
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   740
	}
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   741
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   742
void CPauseResumeNegTest::PrintTestType() const
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   743
	{
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   744
	RDebug::RawPrint(_L("Pause and Resume API Test - Negative Test"));
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   745
	}
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   746
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   747
//////////////////////////////////////////////////////////////////////
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   748
//	CLinkChannelTest
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   749
//
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   750
//	-Open DMA Channel
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   751
//	-Link and Unlink DMA channel
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   752
//	-Check that KErrNotSupported is returned
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   753
//	-Close DMA Channel
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   754
//
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   755
//////////////////////////////////////////////////////////////////////
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   756
CLinkChannelTest::~CLinkChannelTest()
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   757
	{
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   758
	}
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   759
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   760
void CLinkChannelTest::RunTest()
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   761
	{
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   762
	OpenDmaSession();
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   763
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   764
	//Open a single DMA channel for a transfer
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   765
	OpenChannel();
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   766
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   767
	RDebug::Printf("Linking DMA channels");
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   768
	TInt r = iDmaSession.ChannelLinking(iChannelSessionCookie);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   769
	TEST_ASSERT(KErrNotSupported == r);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   770
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   771
	RDebug::Printf("Unlinking DMA channels");
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   772
	r = iDmaSession.ChannelUnLinking(iChannelSessionCookie);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   773
	TEST_ASSERT(KErrNotSupported == r);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   774
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   775
	CloseChannel();
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   776
	CloseDmaSession();
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   777
	}
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   778
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   779
void CLinkChannelTest::PrintTestType() const
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   780
	{
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   781
	RDebug::RawPrint(_L("Channel Linking API Test - Negative Test"));
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   782
	}
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   783
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
   784
//////////////////////////////////////////////////////////////////////
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   785
// COpenCloseTest
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   786
//////////////////////////////////////////////////////////////////////
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   787
COpenCloseTest::~COpenCloseTest()
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   788
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   789
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   790
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   791
TBool COpenCloseTest::DoRunClose()
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   792
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   793
	// For storing cookie during neagtive test i,e open channel twice
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   794
	TUint testChannelSessionCookie = 0; 
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   795
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   796
	// Open a single DMA channel
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   797
	TInt r = iDmaSession.ChannelOpen(iChannelCookie, iChannelSessionCookie);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   798
	if (r == KErrNone)//Check that DMA channel opened with no errors
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   799
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   800
		RDebug::Printf("DMA channel opened");					
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   801
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   802
	else
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   803
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   804
		RDebug::Printf("Open DMA channel failed");			
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   805
		return EFalse;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   806
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   807
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   808
	// Open DMA channel again and check that opening DMA channel again fails		
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   809
	r = iDmaSession.ChannelOpen(iChannelCookie, testChannelSessionCookie);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   810
	if (r == KErrInUse)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   811
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   812
		RDebug::Printf("Opening DMA channel again fails as expected");	
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   813
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   814
	else
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   815
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   816
		RDebug::Printf("Open DMA channel again failed");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   817
		return EFalse;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   818
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   819
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   820
	// Close the DMA channel and check that DMA channel closes with no errors
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   821
	r =iDmaSession.ChannelClose(iChannelSessionCookie);	 
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   822
	if (r == KErrNone) 
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   823
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   824
		RDebug::Printf("DMA channel closes with no errors");				
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   825
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   826
	else
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   827
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   828
		RDebug::Printf("Close the DMA channel failed");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   829
		return EFalse;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   830
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   831
	
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   832
	// Verify that the DMA channel was actually closed by opening DMA channel
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   833
	r = iDmaSession.ChannelOpen(iChannelCookie, iChannelSessionCookie);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   834
	if (r == KErrNone)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   835
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   836
		RDebug::Printf("DMA channel opened after a previous close operation");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   837
		return ETrue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   838
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   839
	else
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   840
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   841
		RDebug::Printf("Open DMA channel to verify that the DMA channel closed failed");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   842
		return EFalse;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   843
		}	
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   844
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   845
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   846
TBool COpenCloseTest::DoRunOpen()
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   847
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   848
	// Open a single DMA channel
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   849
	TInt r = iDmaSession.ChannelOpen(iChannelCookie, iChannelSessionCookie);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   850
	if (r == KErrNone)//Check that DMA channel opened with no errors
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   851
		{			
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   852
		RDebug::Printf("DoRunOpen:DMA channel opened");			
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   853
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   854
	else
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   855
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   856
		RDebug::Printf("DoRunOpenDMA channel failed to open");				
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   857
		return EFalse;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   858
		}	
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   859
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   860
	// Verify that channel is really open by closing DMA channel
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   861
	// and checking that DMA channel closes with no errors
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   862
	r = iDmaSession.ChannelClose(iChannelSessionCookie);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   863
	if (r == KErrNone)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   864
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   865
		RDebug::Printf("DoRunOpen:DMA channel closes with no errors");			
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   866
		return ETrue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   867
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   868
	else
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   869
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   870
		RDebug::Printf("DoRunOpen:DMA channel failed to close");		
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   871
		return EFalse;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   872
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   873
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   874
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   875
TBool COpenCloseTest::DoRunOpenExposed()
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   876
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   877
	SCreateInfoTest TOpenInfo;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   878
	TOpenInfo.iCookie =iChannelCookie;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   879
	TOpenInfo.iDfcPriority = 3;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   880
	
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   881
	const TInt desCount[3] = {0,1,128}; 
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   882
	const TBool dynChannel[3] =	{EFalse,EFalse,ETrue};  
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   883
	const TInt expectedResults[3] = {KErrArgument,KErrNone,KErrInUse};  
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   884
	TInt actualResults[3] = {1, 1, 1};
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   885
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   886
	for (TInt i =0; i<3; i++)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   887
		{	
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   888
		TOpenInfo.iDesCount = desCount[i];
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   889
		TOpenInfo.iDynChannel = dynChannel[i];		
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   890
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   891
		// Open a single DMA channel
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   892
		RDebug::Printf("DoRunOpenExposed:Trying to open DMA channel using iDesCount(%d) and iDynChannel(%d)  ", TOpenInfo.iDesCount,TOpenInfo.iDynChannel);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   893
		actualResults[i] = iDmaSession.ChannelOpen(iChannelSessionCookie, TOpenInfo);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   894
		if (actualResults[i] == KErrNone)// Verify that channel is really open by closing DMA channel	
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   895
			{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   896
			TInt err = iDmaSession.ChannelClose(iChannelSessionCookie);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   897
			TEST_ASSERT(err == KErrNone)//Check that DMA channel closed with no errors
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   898
			}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   899
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   900
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   901
	// This case should fail if idesCount  =  0.
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   902
	// PIL has been changed to return KErrArgument instead of using an assertion check
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   903
	if (expectedResults[0] == actualResults[0])
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   904
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   905
		RDebug::Printf("DoRunOpenExposed:DMA channel failed to open as expected as for iDesCount = 0 ");			
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   906
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   907
	else
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   908
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   909
		RDebug::Printf("DoRunOpenExposed:Error code returned (%d), expected KErrArgument as iDesCount= 0) ", actualResults[0]);	
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   910
		return EFalse;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   911
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   912
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   913
	// For this case( idesCount  =  1), DMA channel should open with no issues	
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   914
	if (expectedResults[1] == actualResults[1])
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   915
		{		
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   916
		RDebug::Printf("DoRunOpenExposed:DMA channel closes with no errors as expected for iDesCount = 1 ");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   917
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   918
	else
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   919
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   920
		RDebug::Printf("DoRunOpenExposed:Failed to open DMA channel with error code (%d)", actualResults[1]);	
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   921
		return EFalse;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   922
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   923
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   924
	// For this case(dynaChannel=ETrue), DMA channel now returns KErrInUse. dynaChannel is not supported in the PSL.
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   925
	// PSL now returns a NULL pointer when dynaChannel is requested. The PIL interprets a NULL 
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   926
	// pointer being returned from opening a DMA channel as a channel in use. Hence, KErrInUse is returned.
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   927
	if (expectedResults[2] == actualResults[2])
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   928
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   929
		RDebug::Printf("DoRunOpenExposed:DMA channel failed to open as expected as dynamic channel is not supported");		
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   930
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   931
	else
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   932
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   933
		RDebug::Printf("DoRunOpenExposed:Error code returned (%d), expected KErrInUse as as dynamic channel is not supported", actualResults[2]);			
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   934
		return EFalse;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   935
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   936
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   937
	return ETrue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   938
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   939
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   940
void COpenCloseTest::RunTest()
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   941
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   942
	OpenDmaSession(); 
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   943
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   944
	if (iRunOpen) 
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   945
	{	// Run Open() API test
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   946
		iOpenCloseResult = DoRunOpenExposed();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   947
		if(iOpenCloseResult)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   948
			iOpenCloseResult = DoRunOpen();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   949
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   950
	else
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   951
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   952
		// Run Close() API test	
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   953
		iOpenCloseResult = DoRunClose();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   954
	}
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   955
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   956
	CloseDmaSession();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   957
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   958
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   959
void COpenCloseTest::PrintTestType() const
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   960
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   961
	RDebug::RawPrint(_L("Close/Open API Test"));
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   962
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   963
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   964
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   965
TBool COpenCloseTest::Result()
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   966
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   967
	if(gVerboseOutput)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   968
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   969
		RDebug::Printf("Results for Close/Open API Test");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   970
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   971
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   972
	if(!iOpenCloseResult)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   973
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   974
		RDebug::Printf("Open/Close test sequence failed"); 
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   975
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   976
			
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   977
	return iOpenCloseResult;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
   978
	}
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   979
//////////////////////////////////////////////////////////////////////
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   980
// CDmaBmTransfer
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   981
//////////////////////////////////////////////////////////////////////
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   982
CDmaBmTransfer::CDmaBmTransfer(const TDesC& aName, TInt aIterations, const TDmaTransferArgs& aTransferArgs, TUint aMaxFragmentSize)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   983
	:CDmaBenchmark(aName, aIterations,
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   984
		TResultSet(KErrNone, TRequestResults(),	KErrUnknown, TCallbackRecord(TCallbackRecord::EThread,1)),
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   985
		aTransferArgs, aMaxFragmentSize)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   986
	{}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   987
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   988
void CDmaBmTransfer::PrintTestType() const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   989
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   990
	RDebug::RawPrint(_L("Transfer Benchmark"));
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   991
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   992
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   993
void CDmaBmTransfer::RunTest()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   994
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   995
	OpenDmaSession();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   996
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   997
	OpenChannel();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   998
	CreateDmaRequest();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   999
	Fragment();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1000
	Queue();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1001
	FreeRequest();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1002
	CloseChannel();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1003
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1004
	CloseDmaSession();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1005
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1006
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1007
void CDmaBmTransfer::Queue()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1008
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1009
	if(iActual.iRequestResult.iFragmentationResult == KErrNone)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1010
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1011
		TUint64 time;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1012
		iActual.iRequestResult.iQueueResult = iDmaSession.QueueRequest(iRequestSessionCookie, &iActual.iCallbackRecord, &time);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1013
		iResultArray.Append(time);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1014
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1015
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1016
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1017
/*
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1018
1.	Open a DMA channel for a transfer.
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1019
2.	Queue multiple request on the DMA channel.
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1020
3.	Call CancelAll () on the DMA channel.
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1021
4.	Verify that all transfers have been cancelled.
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1022
5.	Open a DMA channel for a transfer. This channel should support pause and resume.
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1023
6.	Call Pause () on the channel.
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1024
7.	Queue multiple request on the DMA channel.
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1025
8.	Call CancelAll () on the channel.
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1026
9.	Verify that all transfers have been cancelled.
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1027
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1028
   Note: This check does not add results to TResultSet like some
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1029
   other tests as its operation is different. The test checks for 
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1030
   the the cancelllation of all transfers queued on a channel by
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1031
   calling iDmaSession.ChannelIsQueueEmpty(); 
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1032
*/
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1033
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1034
//////////////////////////////////////////////////////////////////////
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1035
// CCancelAllTest
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1036
//////////////////////////////////////////////////////////////////////
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1037
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1038
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1039
CCancelAllTest::CCancelAllTest(const TDesC& aName, TInt aIterations,
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1040
		const TDmaTransferArgs* aTransferArgs, const TResultSet* aResultSets,
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1041
		TInt aCount)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1042
	:CMultiTransferTest(aName, aIterations, aTransferArgs, aResultSets, aCount)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1043
	{}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1044
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1045
void CCancelAllTest::RunTest()
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1046
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1047
	OpenDmaSession();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1048
	PreTransferSetup();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1049
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1050
	// Open a DMA channel for a transfer.This channel should support pause and resume.
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1051
	OpenChannel();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1052
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1053
	//Call Pause () on the channel
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1054
	RDebug::Printf("Pausing DMA Channel");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1055
	ChannelPause(iChannelSessionCookie);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1056
	
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1057
	// Queue multiple request on the DMA channel.
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1058
	CreateDmaRequests();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1059
	Fragment();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1060
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1061
	QueueRequestsAsync();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1062
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1063
	// Call CancelAll () on the DMA channel and Verify that all transfers have been cancelled.
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1064
	TInt r = CancelAllRequests();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1065
	TEST_ASSERT(r == KErrNone);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1066
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1067
	//Call Resume () on the channel.
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1068
	RDebug::Printf("Cancel should clear Pause state: resuming channel should fail");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1069
	ChannelResume(iChannelSessionCookie);		
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1070
	//TEST_ASSERT(r == KErrCompletion);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1071
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1072
	r = DoPostTransferCheck();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1073
	TEST_ASSERT(r == KErrNone);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1074
	//Destroy request
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1075
    for(TInt i=0; i<2; i++)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1076
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1077
		r = iDmaSession.RequestDestroy(iRequestCookies[i]);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1078
		TEST_ASSERT(r == KErrNone);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1079
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1080
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1081
	//Close DMA channel
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1082
	CloseChannel();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1083
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1084
	CloseDmaSession();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1085
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1086
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1087
TInt CCancelAllTest::CancelAllRequests()
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1088
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1089
	if(gVerboseOutput)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1090
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1091
		RDebug::Printf("CCancelAllTest::CancelAllRequests()");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1092
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1093
	TInt r = KErrGeneral;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1094
	r  = iDmaSession.ChannelCancelAll(iChannelSessionCookie);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1095
	if (r != KErrNone)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1096
		return r;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1097
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1098
	TBool queueEmpty;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1099
	r = iDmaSession.ChannelIsQueueEmpty(iChannelSessionCookie,queueEmpty);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1100
	if (r != KErrNone)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1101
		return r;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1102
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1103
	if(!queueEmpty)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1104
		return KErrGeneral;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1105
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1106
	if(gVerboseOutput)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1107
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1108
		RDebug::Printf("Both current and pending requests cancelled");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1109
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1110
	return KErrNone;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1111
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1112
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1113
void CCancelAllTest::PrintTestType() const
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1114
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1115
	RDebug::RawPrint(_L("CCancelAllTest"));
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1116
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1117
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1118
void CCancelAllTest::QueueRequestsAsync()
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1119
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1120
	if(iPauseWhileQueuing)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1121
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1122
		TInt r = iDmaSession.ChannelPause(iChannelSessionCookie);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1123
		TEST_ASSERT(r == KErrNone);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1124
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1125
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1126
	// Queue all the DMA requests asynchronously
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1127
	TEST_ASSERT(iActualResults.Count() == iTransferArgsCount);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1128
	for(TInt i=0; i<iTransferArgsCount; i++)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1129
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1130
		TResultSet& resultSet = iActualResults[i];
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1131
		if(resultSet.iRequestResult.iFragmentationResult != KErrNone)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1132
			continue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1133
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1134
		TInt r = iDmaSession.QueueRequest(iRequestCookies[i], iDummyRequestStatus, &resultSet.iCallbackRecord, NULL);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1135
		resultSet.iRequestResult.iQueueResult = r;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1136
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1137
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1138
	if(iPauseWhileQueuing)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1139
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1140
		TInt r = iDmaSession.ChannelResume(iChannelSessionCookie);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1141
		TEST_ASSERT(r == KErrNone);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1142
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1143
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1144
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1145
//////////////////////////////////////////////////////////////////////
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1146
// CIsQueueEmptyTest
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1147
//////////////////////////////////////////////////////////////////////
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1148
CIsQueueEmptyTest::CIsQueueEmptyTest(const TDesC& aName, TInt aIterations, const TDmaTransferArgs* aTransferArgs,
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1149
		const TResultSet* aResultSets, TInt aCount)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1150
	:CMultiTransferTest(aName, aIterations, aTransferArgs, aResultSets, aCount)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1151
	{}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1152
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1153
CIsQueueEmptyTest::CIsQueueEmptyTest(const CIsQueueEmptyTest& aOther)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1154
	:CMultiTransferTest(aOther)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1155
	{}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1156
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1157
CIsQueueEmptyTest::~CIsQueueEmptyTest()
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1158
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1159
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1160
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1161
void CIsQueueEmptyTest::RunTest()
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1162
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1163
	OpenDmaSession();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1164
	PreTransferSetup();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1165
	
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1166
	OpenChannel();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1167
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1168
	CreateDmaRequests();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1169
	Fragment();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1170
	QueueRequests();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1171
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1172
	TInt r = DoPostTransferCheck();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1173
	TEST_ASSERT(r == KErrNone);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1174
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1175
	CloseDmaSession();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1176
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1177
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1178
void CIsQueueEmptyTest::DoIsQueueEmpty()
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1179
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1180
	TBool queueEmpty;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1181
	TInt r = iDmaSession.ChannelIsQueueEmpty(iChannelSessionCookie,queueEmpty);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1182
	TEST_ASSERT(r == KErrNone);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1183
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1184
	if(queueEmpty)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1185
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1186
		RDebug::Printf("Verified that calling IsQueueEmpty() returns ETrue before calling Queue()");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1187
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1188
	else
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1189
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1190
		RDebug::Printf("IsQueueEmpty() fails to return ETrue before calling Queue()");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1191
		TEST_ASSERT(queueEmpty);	
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1192
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1193
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1194
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1195
void CIsQueueEmptyTest::DoQueueNotEmpty()
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1196
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1197
	TBool queueEmpty;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1198
	TInt r = iDmaSession.ChannelIsQueueEmpty(iChannelSessionCookie,queueEmpty);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1199
	TEST_ASSERT(r == KErrNone);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1200
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1201
	if (!queueEmpty)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1202
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1203
		RDebug::Printf("Verified that calling IsQueueEmpty() returns EFalse after calling Queue()");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1204
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1205
	else
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1206
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1207
		RDebug::Printf("IsQueueEmpty() fails to return EFalse after calling Queue()");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1208
		TEST_ASSERT(!queueEmpty);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1209
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1210
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1211
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1212
void CIsQueueEmptyTest::PrintTestType() const
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1213
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1214
	RDebug::RawPrint(_L("IsQueue Empty Test using Multi Transfer"));
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1215
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1216
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1217
void CIsQueueEmptyTest::QueueRequests()
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1218
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1219
	// Queue all the DMA requests asynchronously
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1220
	TInt i;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1221
	RArray<TRequestStatus> requestStates;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1222
	
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1223
	ChannelPause(iChannelSessionCookie);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1224
	DoIsQueueEmpty();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1225
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1226
	TEST_ASSERT(iActualResults.Count() == iTransferArgsCount);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1227
	for(i=0; i<iTransferArgsCount; i++)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1228
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1229
		TResultSet& resultSet = iActualResults[i];
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1230
		if(resultSet.iRequestResult.iFragmentationResult != KErrNone)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1231
			continue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1232
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1233
		TInt r = requestStates.Append(TRequestStatus());
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1234
		TEST_ASSERT(r == KErrNone);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1235
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1236
		r = iDmaSession.QueueRequest(iRequestCookies[i], requestStates[i], &resultSet.iCallbackRecord, NULL);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1237
		resultSet.iRequestResult.iQueueResult = r;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1238
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1239
		DoQueueNotEmpty();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1240
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1241
	
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1242
	ChannelResume(iChannelSessionCookie);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1243
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1244
	// wait for all transfers to complete
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1245
	const TInt count = requestStates.Count();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1246
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1247
	for(i=0; i<count; i++)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1248
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1249
		User::WaitForRequest(requestStates[i]);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1250
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1251
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1252
	requestStates.Close();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1253
	}
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1254
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1255
//////////////////////////////////////////////////////////////////////
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1256
// CMultiTransferTest
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1257
//////////////////////////////////////////////////////////////////////
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1258
CMultiTransferTest::CMultiTransferTest(const TDesC& aName, TInt aIterations, const TDmaTransferArgs* aTransferArgs,
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1259
		const TResultSet* aResultSets, TInt aCount)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1260
	: CDmaTest(aName, aIterations, NULL, NULL), iTransferArgs(aTransferArgs), iTransferArgsCount(aCount), iNewDmaApi(ETrue),
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1261
	iChannelSessionCookie(0), iExpectedArray(aResultSets), iPauseWhileQueuing(EFalse)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1262
	{}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1263
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1264
CMultiTransferTest::CMultiTransferTest(const CMultiTransferTest& aOther)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1265
	: CDmaTest(aOther), iTransferArgs(aOther.iTransferArgs), iTransferArgsCount(aOther.iTransferArgsCount),
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1266
	iNewDmaApi(aOther.iNewDmaApi),
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1267
	iExpectedArray(aOther.iExpectedArray), iPauseWhileQueuing(aOther.iPauseWhileQueuing)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1268
	{
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1269
	CopyL(aOther.iRequestCookies, iRequestCookies);
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1270
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1271
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1272
CMultiTransferTest::~CMultiTransferTest()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1273
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1274
	iRequestCookies.Close();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1275
	iActualResults.Close();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1276
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1277
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1278
TBool CMultiTransferTest::Result()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1279
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1280
	if(gVerboseOutput)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1281
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1282
		RDebug::Printf("Results for %d transfers:", iTransferArgsCount);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1283
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1284
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1285
	TBool result = EFalse;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1286
	for(TInt i=0; i<iTransferArgsCount; i++)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1287
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1288
		result = Result(i);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1289
		if(!result)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1290
			break;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1291
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1292
	return result;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1293
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1294
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1295
TBool CMultiTransferTest::Result(TInt aTransfer)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1296
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1297
	const TResultSet& expected = iExpectedArray[aTransfer];
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1298
	const TResultSet& actual = iActualResults[aTransfer];
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1299
	const TBool result = expected == actual;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1300
	if(!result || gVerboseOutput)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1301
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1302
		RDebug::Printf("Compairing results for transfer %d", aTransfer);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1303
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1304
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1305
	if(!result)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1306
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1307
		RDebug::Printf("TResultSets do not match");
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1308
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1309
	if(!result || gVerboseOutput)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1310
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1311
		RDebug::Printf("\nExpected error codes:");
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1312
		expected.Print();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1313
		RDebug::Printf("Expected callback record:");
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1314
		expected.iCallbackRecord.Print();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1315
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1316
		RDebug::Printf("\nActual error codes:");
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1317
		actual.Print();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1318
		RDebug::Printf("Actual callback record:");
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1319
		actual.iCallbackRecord.Print();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1320
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1321
	return result;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1322
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1323
void CMultiTransferTest::RunTest()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1324
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1325
	OpenDmaSession();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1326
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1327
	PreTransferSetup();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1328
	OpenChannel();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1329
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1330
	CreateDmaRequests();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1331
	Fragment();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1332
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1333
	QueueRequests();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1334
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1335
	TInt r = DoPostTransferCheck();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1336
	TEST_ASSERT(r == KErrNone);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1337
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1338
	CloseDmaSession();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1339
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1340
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1341
void CMultiTransferTest::PrintTestType() const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1342
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1343
	RDebug::RawPrint(_L("Multi Transfer"));
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1344
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1345
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1346
const TDmaTransferArgs& CMultiTransferTest::TransferArgs(TInt aIndex) const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1347
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1348
	TEST_ASSERT(Rng(0, aIndex, iTransferArgsCount-1));
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1349
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1350
	return iTransferArgs[aIndex];
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1351
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1352
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1353
void CMultiTransferTest::SetPostTransferResult(TInt aIndex, TInt aErrorCode)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1354
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1355
	TEST_ASSERT(Rng(0, aIndex, iTransferArgsCount-1));
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1356
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1357
	iActualResults[aIndex].iPostTransferCheck = aErrorCode;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1358
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1359
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1360
void CMultiTransferTest::OpenChannel()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1361
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1362
	if(gVerboseOutput)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1363
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1364
		RDebug::Printf("CMultiTransferTest::OpenChannel()");
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1365
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1366
	TInt r = iDmaSession.ChannelOpen(iChannelCookie, iChannelSessionCookie);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1367
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1368
	TEST_ASSERT(iActualResults.Count() == iTransferArgsCount);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1369
	for(TInt i=0; i<iTransferArgsCount; i++)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1370
		{
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1371
		// In a multi transfer test a series of requests are created and queued.
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1372
		// They all use the same channel, is opened here at the beginning of the test
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1373
		//
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1374
		// Each transfer has a TResultSet which holds a result for the channel opening,
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1375
		// which we store here. Although in this case it is redundant,
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1376
		// in future it might be that different transfers open
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1377
		// different channels.
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1378
		iActualResults[i].iChannelOpenResult = r;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1379
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1380
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1381
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1382
TInt CMultiTransferTest::CloseChannel()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1383
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1384
	return iDmaSession.ChannelClose(iChannelSessionCookie);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1385
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1386
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1387
void CMultiTransferTest::CreateDmaRequests()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1388
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1389
	if(gVerboseOutput)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1390
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1391
		RDebug::Printf("CMultiTransferTest::CreateDmaRequests() %d", iTransferArgsCount);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1392
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1393
	TEST_ASSERT(iActualResults.Count() == iTransferArgsCount);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1394
	//create a DMA request for each transfer arg struct
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1395
	for(TInt i=0; i<iTransferArgsCount; i++)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1396
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1397
		if(iActualResults[i].iChannelOpenResult != KErrNone)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1398
			continue;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1399
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1400
		TUint cookie = 0;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1401
		TInt r = KErrGeneral;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1402
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1403
		if(iNewDmaApi)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1404
			{
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1405
			r = iDmaSession.RequestCreate(iChannelSessionCookie, cookie);
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1406
			}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1407
		else
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1408
			{
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1409
			r = iDmaSession.RequestCreateOld(iChannelSessionCookie, cookie);
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1410
			}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1411
		iActualResults[i].iRequestResult.iCreate = r;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1412
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1413
		if(r == KErrNone)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1414
			{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1415
			r = iRequestCookies.Append(cookie);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1416
			TEST_ASSERT(r == KErrNone);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1417
			}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1418
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1419
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1420
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1421
void CMultiTransferTest::Fragment()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1422
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1423
	if(gVerboseOutput)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1424
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1425
		RDebug::Printf("CMultiTransferTest::Fragment() %d", iTransferArgsCount);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1426
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1427
	TEST_ASSERT(iActualResults.Count() == iTransferArgsCount);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1428
	// Fragment each dma request
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1429
	for(TInt i=0; i<iTransferArgsCount; i++)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1430
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1431
		TRequestResults& result = iActualResults[i].iRequestResult;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1432
		if(result.iCreate != KErrNone)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1433
			continue;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1434
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1435
		TInt r = KErrGeneral;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1436
		if(iNewDmaApi)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1437
			r = iDmaSession.FragmentRequest(iRequestCookies[i], iTransferArgs[i]);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1438
		else
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1439
			r = iDmaSession.FragmentRequestOld(iRequestCookies[i], iTransferArgs[i]);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1440
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1441
		result.iFragmentationResult = r;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1442
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1443
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1444
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1445
void CMultiTransferTest::QueueRequests()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1446
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1447
	if(iPauseWhileQueuing)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1448
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1449
		TInt r = iDmaSession.ChannelPause(iChannelSessionCookie);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1450
		TEST_ASSERT(r == KErrNone);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1451
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1452
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1453
	// Queue all the DMA requests asynchronously
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1454
	TInt i;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1455
	RArray<TRequestStatus> requestStates;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1456
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1457
	TEST_ASSERT(iActualResults.Count() == iTransferArgsCount);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1458
	for(i=0; i<iTransferArgsCount; i++)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1459
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1460
		TResultSet& resultSet = iActualResults[i];
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1461
		if(resultSet.iRequestResult.iFragmentationResult != KErrNone)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1462
			continue;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1463
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1464
		TInt r = requestStates.Append(TRequestStatus());
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1465
		TEST_ASSERT(r == KErrNone);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1466
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1467
		r = iDmaSession.QueueRequest(iRequestCookies[i], requestStates[i], &resultSet.iCallbackRecord, NULL);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1468
		resultSet.iRequestResult.iQueueResult = r;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1469
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1470
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1471
	if(iPauseWhileQueuing)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1472
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1473
		TInt r = iDmaSession.ChannelResume(iChannelSessionCookie);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1474
		TEST_ASSERT(r == KErrNone);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1475
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1476
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1477
	// wait for all transfers to complete
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1478
	const TInt count = requestStates.Count();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1479
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1480
	for(i=0; i<count; i++)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1481
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1482
		User::WaitForRequest(requestStates[i]);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1483
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1484
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1485
	requestStates.Close();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1486
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1487
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1488
void CMultiTransferTest::PreTransferSetup()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1489
	{
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1490
	// TODO this is the wrong place to do this!
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1491
	for(TInt i=0; i<iTransferArgsCount; i++)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1492
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1493
		//pre-fill actual results with error values
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1494
		TInt r = iActualResults.Append(TResultSet(EFalse));
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1495
		TEST_ASSERT(r == KErrNone);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1496
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1497
	if(iPreTransfer)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1498
		iPreTransfer->Setup(*this); //initialize test
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1499
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1500
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1501
TInt CMultiTransferTest::DoPostTransferCheck()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1502
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1503
	if(iPostTransferCheck)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1504
		return iPostTransferCheck->Check(*this);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1505
	else
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1506
		return KErrNone;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1507
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1508
//////////////////////////////////////////////////////////////////////
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1509
// CIsrRequeTest
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1510
//////////////////////////////////////////////////////////////////////
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1511
CIsrRequeTest::CIsrRequeTest(const TDesC& aName, TInt aIterations, const TDmaTransferArgs& aArgs,
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1512
			TIsrRequeArgs* aRequeueArgs, TInt aCount,
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1513
			const TResultSet& aExpected,const MPreTransfer* aPreTfer,const MPostTransferCheck* aPostTferChk, TUint aMaxFragmentSize)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1514
	:CSingleTransferTest(aName, aIterations, aArgs, aExpected, aMaxFragmentSize, aPostTferChk, aPreTfer), iRequeArgSet(aRequeueArgs, aCount)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1515
	{}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1516
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1517
void CIsrRequeTest::Queue()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1518
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1519
	if(iActual.iRequestResult.iFragmentationResult == KErrNone)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1520
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1521
		iActual.iRequestResult.iQueueResult = iDmaSession.QueueRequestWithRequeue(iRequestSessionCookie, iRequeArgSet.iRequeArgs, iRequeArgSet.iCount, &iActual.iCallbackRecord);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1522
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1523
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1524
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1525
void CIsrRequeTest::PrintTestType() const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1526
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1527
	RDebug::RawPrint(_L("ISR Requeue"));
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1528
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1529
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1530
void CIsrRequeTest::PreTransferSetup()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1531
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1532
	if(iPreTransfer)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1533
		iPreTransfer->Setup(*this); //initialize test
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1534
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1535
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1536
TInt CIsrRequeTest::DoPostTransferCheck()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1537
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1538
	return iPostTransferCheck->Check(*this);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1539
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1540
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1541
//////////////////////////////////////////////////////////////////////
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1542
// TResultSet
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1543
//////////////////////////////////////////////////////////////////////
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1544
void TResultSet::Print() const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1545
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1546
	PRINT(iChannelOpenResult);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1547
	PRINT(iRequestResult.iCreate);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1548
	PRINT(iRequestResult.iFragmentCount);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1549
	PRINT(iRequestResult.iFragmentationResult);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1550
	PRINT(iRequestResult.iQueueResult);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1551
	PRINT(iPostTransferCheck);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1552
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1553
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1554
TBool TResultSet::operator == (const TResultSet& aOther) const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1555
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1556
	return (memcompare((TUint8*)this, sizeof(*this), (TUint8*)&aOther, sizeof(aOther)) == 0);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1557
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1558
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1559
//////////////////////////////////////////////////////////////////////
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1560
// MPostTransferCheck classes
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1561
//////////////////////////////////////////////////////////////////////
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1562
TInt TCompareSrcDst::Check(const CSingleTransferTest& aTest) const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1563
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1564
	if(gVerboseOutput)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1565
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1566
		RDebug::Printf("Comparing CSingleTransferTest buffers");
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1567
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1568
	return Check(aTest.TransferArgs(), aTest.Chunk().Base());
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1569
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1570
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1571
// Note: this check will not deal correctly with transfers were subsequent
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1572
// requeues overlap previous sources or destinations
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1573
// or where the source of transfer depends on a previous transfer.
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1574
// This is because it simply compares the source and destination
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1575
// pairwise for each transfer
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1576
//
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1577
// If TPreTransferIncrBytes is used for the pre-test then the transfers
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1578
// will be checked however.
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1579
TInt TCompareSrcDst::Check(const CIsrRequeTest& aTest) const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1580
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1581
	if(gVerboseOutput)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1582
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1583
		RDebug::Printf("Comparing CIsrRequeTest buffers");
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1584
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1585
	TUint8* chunkBase = aTest.Chunk().Base();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1586
	const TDmaTransferArgs& transferArgs = aTest.TransferArgs();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1587
	// check first transfer
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1588
	TInt r = Check(transferArgs, chunkBase);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1589
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1590
	if(r != KErrNone)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1591
		return r;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1592
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1593
	// check re-queued transfers
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1594
	const TIsrRequeArgsSet& requeueArgs = aTest.GetRequeueArgs();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1595
	return Check(requeueArgs, chunkBase, transferArgs);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1596
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1597
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1598
TInt TCompareSrcDst::Check(const TDmaTransferArgs& aTransferArgs, TUint8* aChunkBase) const
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1599
	{	
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1600
	const TUint32 srcOffset = aTransferArgs.iSrcConfig.iAddr;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1601
	const TUint32 dstOffset = aTransferArgs.iDstConfig.iAddr;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1602
	const TInt size = aTransferArgs.iTransferCount;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1603
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1604
	const TUint8* src = srcOffset + aChunkBase;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1605
	const TUint8* dst = dstOffset + aChunkBase;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1606
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1607
	if(gVerboseOutput)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1608
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1609
		RDebug::Printf("Comparing TDmaTransferArgs buffers src=0x%08x dst=0x%08x size=0x%08x",
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1610
				src, dst, size);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1611
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1612
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1613
	return memcompare(src, size, dst, size);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1614
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1615
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1616
TInt TCompareSrcDst::Check(const TIsrRequeArgsSet& aRequeueArgSet, TUint8* aChunkBase, const TDmaTransferArgs& aTferArgs) const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1617
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1618
	TIsrRequeArgsSet argSet(aRequeueArgSet); //copy since Fixup will mutate object
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1619
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1620
	argSet.Substitute(aTferArgs); // replace any default (0) values with the values in aTferArgs
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1621
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1622
	argSet.Fixup((TLinAddr)aChunkBase); //convert address offsets to virtual user mode addresses
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1623
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1624
	TInt r = KErrCorrupt;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1625
	while(!argSet.IsEmpty())
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1626
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1627
		r = Check(argSet.GetArgs());
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1628
		if(r != KErrNone)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1629
			break;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1630
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1631
	return r;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1632
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1633
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1634
TInt TCompareSrcDst::Check(const TIsrRequeArgs& aRequeueArgs) const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1635
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1636
	const TUint8* src = (TUint8*)aRequeueArgs.iSrcAddr;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1637
	const TUint8* dst = (TUint8*)aRequeueArgs.iDstAddr;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1638
	const TInt size = aRequeueArgs.iTransferCount;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1639
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1640
	if(gVerboseOutput)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1641
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1642
		RDebug::Printf("Comparing TIsrRequeArgs: src=0x%08x dst=0x%08x size=0x%08x",
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1643
				src, dst, size);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1644
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1645
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1646
	return memcompare(src, size, dst, size);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1647
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1648
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1649
// Note: this check will not deal correctly with transfers were subsequent
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1650
// requeues overlap previous sources or destinations
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1651
// or where the source of trasnfer depends on a previous trasnfer.
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1652
// This is because it simply compares the source and destination
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1653
// pairwise for each transfer
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1654
//
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1655
// If TCompareSrcDst is used for the pre-test then the transfers
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1656
// will be checked however.
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1657
TInt TCompareSrcDst::Check(CMultiTransferTest& aTest) const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1658
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1659
	if(gVerboseOutput)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1660
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1661
		RDebug::Printf("Comparing CMultiTransferTest buffers");
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1662
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1663
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1664
	const TInt transferCount = aTest.TransferCount();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1665
	TUint8* const chunkBase = aTest.Chunk().Base();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1666
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1667
	// check buffers for each transfer
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1668
	for(TInt i=0; i<transferCount; i++)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1669
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1670
		TInt r = Check(aTest.TransferArgs(i), chunkBase);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1671
		aTest.SetPostTransferResult(i, r);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1672
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1673
	// CMultiTransferTest is handled differently to the others.
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1674
	// Whereas CSingleTransferTest logs just the return value
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1675
	// of the check, here, we write back a result for each transfer
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1676
	// so the return value from this function is not important
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1677
	return KErrNone;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1678
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1679
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1680
TInt TCompare2D::Check(const CSingleTransferTest& aTest) const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1681
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1682
	const TDmaTransferArgs& args = aTest.TransferArgs();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1683
	TUint8* const chunkBase = aTest.Chunk().Base();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1684
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1685
	TInt ret = KErrNone;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1686
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1687
	TTransferIter src_iter(args.iSrcConfig, chunkBase);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1688
	TTransferIter dst_iter(args.iDstConfig, chunkBase);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1689
	TTransferIter end;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1690
	for (; (src_iter != end) && (dst_iter !=end); ++src_iter, ++dst_iter)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1691
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1692
		if(*src_iter != *dst_iter)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1693
			{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1694
			ret = KErrCorrupt;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1695
			break;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1696
			}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1697
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1698
	return ret;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1699
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1700
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1701
TInt TCompare2D::Check(const CIsrRequeTest&) const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1702
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1703
	return KErrNotSupported;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1704
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1705
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1706
TInt TCompare2D::Check(CMultiTransferTest&) const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1707
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1708
	return KErrNotSupported;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1709
	}
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1710
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1711
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1712
TInt TCheckNoTransfer::Check(const CSingleTransferTest&) const
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1713
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1714
	return KErrNotSupported;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1715
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1716
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1717
TInt TCheckNoTransfer::Check(const CIsrRequeTest&) const
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1718
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1719
	return KErrNotSupported;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1720
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1721
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1722
TInt TCheckNoTransfer::Check(CMultiTransferTest& aTest) const
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1723
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1724
	if(gVerboseOutput)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1725
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1726
		RDebug::Printf("TCheckNoTransfer Comparing CMultiTransferTest buffers");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1727
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1728
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1729
	const TInt transferCount = aTest.TransferCount();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1730
	TUint8* const chunkBase = aTest.Chunk().Base();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1731
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1732
	// check buffers for each transfer
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1733
	for(TInt i=0; i<transferCount; i++)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1734
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1735
		TInt r = KErrCorrupt;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1736
		if(IsZeroed(aTest.TransferArgs(i), chunkBase))
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1737
			{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1738
			r = KErrNone;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1739
			}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1740
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1741
		aTest.SetPostTransferResult(i, r);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1742
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1743
	// CMultiTransferTest is handled differently to the others.
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1744
	// Whereas CSingleTransferTest logs just the return value
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1745
	// of the check, here, we write back a result for each transfer
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1746
	// so the return value from this function is not important
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1747
	return KErrNone;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1748
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1749
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1750
TBool TCheckNoTransfer::IsZeroed(const TDmaTransferArgs& aTransferArgs, TUint8* aChunkBase) const
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1751
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1752
	TAddressParms parms = GetAddrParms(aTransferArgs);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1753
	parms.Fixup(reinterpret_cast<TLinAddr>(aChunkBase));
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1754
	const TAddrRange destination = parms.DestRange();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1755
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1756
	return destination.IsFilled(0);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1757
	}
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1758
//////////////////////////////////////////////////////////////////////
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1759
// MPreTransfer classes
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1760
//////////////////////////////////////////////////////////////////////
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1761
void TPreTransferIncrBytes::Setup(const CSingleTransferTest& aTest) const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1762
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1763
	if(gVerboseOutput)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1764
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1765
		RDebug::Printf("TPreTransferIncrBytes(CSingleTransferTest)");
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1766
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1767
	TAddressParms params = GetAddrParms(aTest.TransferArgs());
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1768
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1769
	TUint8* const chunkBase = aTest.Chunk().Base();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1770
	params.Fixup((TLinAddr)chunkBase);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1771
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1772
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1773
	Setup(params);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1774
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1775
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1776
void TPreTransferIncrBytes::Setup(const TAddressParms& aParams) const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1777
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1778
	if(gVerboseOutput)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1779
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1780
		RDebug::Printf("TPreTransferIncrBytes: setup memory buffers: src=0x%08x dst=0x%08x size=0x%08x",
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1781
				aParams.iSrcAddr, aParams.iDstAddr, aParams.iTransferCount);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1782
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1783
	TUint8* const src = (TUint8*) aParams.iSrcAddr;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1784
	const TInt size = aParams.iTransferCount;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1785
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1786
	for(TInt i=0; i<size; i++)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1787
		{src[i] = (TUint8)i;} //each src byte holds its own offset (mod 256)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1788
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1789
	TUint8* const dst = (TUint8*) aParams.iDstAddr;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1790
	memclr(dst, size); //clear destination
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1791
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1792
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1793
void TPreTransferIncrBytes::Setup(const CIsrRequeTest& aTest) const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1794
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1795
	if(gVerboseOutput)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1796
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1797
		RDebug::Printf("TPreTransferIncrBytes(CIsrRequeTest)");
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1798
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1799
	if(!CheckBuffers(aTest))
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1800
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1801
		RDebug::Printf("Successive transfer destinations may not overlap previous src or dst buffers");
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1802
		RDebug::Printf("unless the whole transfer is an exact repeat of a previous one");
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1803
		TEST_FAULT;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1804
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1805
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1806
	Setup(static_cast<CSingleTransferTest>(aTest)); // prepare the CSingleTransferTest parts
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1807
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1808
	TIsrRequeArgsSet requeSet(aTest.GetRequeueArgs());
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1809
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1810
	requeSet.Substitute(aTest.TransferArgs());
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1811
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1812
	const TLinAddr chunkBase = (TLinAddr) aTest.Chunk().Base();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1813
	requeSet.Fixup(chunkBase);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1814
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1815
	while(!requeSet.IsEmpty())
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1816
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1817
		TIsrRequeArgs args = requeSet.GetArgs();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1818
		Setup(args); // perform the setup operation for each TIsrRequeArgs
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1819
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1820
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1821
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1822
void TPreTransferIncrBytes::Setup(const CMultiTransferTest& aTest) const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1823
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1824
	if(gVerboseOutput)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1825
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1826
		RDebug::Printf("TPreTransferIncrBytes(CMultiTransferTest)");
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1827
		}
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1828
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1829
	if(!CheckBuffers(aTest))
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1830
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1831
		RDebug::Printf("Successive transfer destinations may not overlap previous src or dst buffers");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1832
		TEST_FAULT;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1833
		}
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1834
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1835
	TUint8* const chunkBase = aTest.Chunk().Base();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1836
	const TInt transferCount = aTest.TransferCount();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1837
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1838
	// initialise buffers for each transfer
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1839
	for(TInt i=0; i<transferCount; i++)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1840
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1841
		TAddressParms params = GetAddrParms(aTest.TransferArgs(i));
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1842
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1843
		params.Fixup((TLinAddr)chunkBase);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1844
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1845
		Setup(params);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1846
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1847
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1848
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1849
TBool TPreTransferIncrBytes::CheckBuffers(const CIsrRequeTest& aTest) const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1850
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1851
	RArray<const TAddressParms> array;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1852
	array.AppendL(TAddressParms(aTest.TransferArgs()));
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1853
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1854
	TIsrRequeArgsSet requeSet(aTest.GetRequeueArgs());
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1855
	requeSet.Substitute(aTest.TransferArgs());
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1856
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1857
	const TLinAddr chunkBase = (TLinAddr) aTest.Chunk().Base();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1858
	requeSet.Fixup(chunkBase);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1859
	while(!requeSet.IsEmpty())
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1860
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1861
		const TIsrRequeArgs requeArgs = requeSet.GetArgs();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1862
		array.AppendL(requeArgs);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1863
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1864
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1865
	const TBool result = CheckBuffers(array);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1866
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1867
	array.Close();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1868
	return result;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1869
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1870
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1871
/**
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1872
A CMultiTransferTest will wait for all transfers to complete
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1873
before comapairing source and destination buffers. For this to be successful
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1874
each transfer must be independent ie. no destination or source may be
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1875
overwritten by another transfer and source buffers may not depend on an
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1876
earlier transfer
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1877
*/
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1878
TBool TPreTransferIncrBytes::CheckBuffers(const CMultiTransferTest& aTest) const
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1879
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1880
	TUint8* const chunkBase = aTest.Chunk().Base();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1881
	const TInt transferCount = aTest.TransferCount();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1882
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1883
	// assemble an array of TAddressParams from aTest, that
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1884
	// can then be passed to CheckBuffers(RArray<TAddressParms>)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1885
	RArray<const TAddressParms> array;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1886
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1887
	for(TInt i=0; i<transferCount; i++)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1888
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1889
		TAddressParms params = GetAddrParms(aTest.TransferArgs(i));
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1890
		params.Fixup((TLinAddr)chunkBase);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1891
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1892
		array.AppendL(params);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1893
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1894
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1895
	 // 2nd arg EFalse as there is no need to permit exact repeats
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1896
	const TBool r = CheckBuffers(array, EFalse);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1897
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1898
	array.Close();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1899
	return r;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1900
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1901
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1902
/**
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1903
Check that the destination of each TAddressParms does not overlap with
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1904
any previous source or destination or that if it does the whole transfer
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1905
matches.
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1906
This is so that successive transfers do not overwrite the destinations or
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1907
sources of preceeding ones.
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1908
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1909
If aAllowExactRepeat is true then exactly matching transfers are allowed
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1910
to test the case where a repeat transfer is required - though it can't
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1911
then be determined just from looking at the buffers that the repeat was
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1912
successful
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1913
*/
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1914
TBool TPreTransferIncrBytes::CheckBuffers(const RArray<const TAddressParms>& aTransferParams, TBool aAllowExactRepeat) const
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1915
	{
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1916
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1917
	const TInt count = aTransferParams.Count();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1918
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1919
	if(gVerboseOutput)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1920
		{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1921
		RDebug::Printf("CheckBuffers, %d transfers", count);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1922
		}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1923
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1924
	TBuf<128> buf;
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1925
	for(TInt i=1; i<count; i++)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1926
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1927
		const TAddressParms& current = aTransferParams[i];
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1928
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1929
		if(gVerboseOutput)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1930
			{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1931
			buf.Zero();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1932
			current.AppendString(buf);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1933
			RDebug::Print(_L("Check current: %S, against:"), &buf);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1934
			}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1935
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1936
		for(TInt j=0; j<i; j++)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1937
			{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1938
			const TAddressParms& previous = aTransferParams[j];
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1939
			if(gVerboseOutput)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1940
				{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1941
				buf.Zero();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1942
				previous.AppendString(buf);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1943
				RDebug::Print(_L("Previous: %S"), &buf);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1944
				}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1945
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1946
			const TBool curDstOverlapsPrevTfer = previous.Overlaps(current.DestRange());
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1947
			const TBool curSrcDependsOnPrevDest = current.SourceRange().Overlaps(previous.DestRange());
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1948
			const TBool permitExactRepeat = aAllowExactRepeat && (current == previous);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1949
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1950
			const TBool ok = !(curDstOverlapsPrevTfer || curSrcDependsOnPrevDest) || permitExactRepeat;
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1951
			if(!ok)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1952
				return EFalse;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1953
			}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1954
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1955
	return ETrue;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1956
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1957
//////////////////////////////////////////////////////////////////////
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1958
// TTransferIter class
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1959
//////////////////////////////////////////////////////////////////////
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1960
void TTransferIter::operator++ ()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1961
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1962
	iPtr++; //the standard post increment
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1963
	if(iElem < (iCfg->iElementsPerFrame-1))
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1964
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1965
		iPtr += iCfg->iElementSkip;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1966
		iElem++;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1967
		iBytes++;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1968
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1969
	else
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1970
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1971
		TEST_ASSERT(iElem == iCfg->iElementsPerFrame-1);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1972
		if(iFrame < iCfg->iFramesPerTransfer-1)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1973
			{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1974
			iPtr += iCfg->iFrameSkip;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1975
			iFrame++;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1976
			iBytes++;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1977
			iElem = 0;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1978
			}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1979
		else
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1980
			{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1981
			//we have reached the end
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1982
			TEST_ASSERT(iFrame == iCfg->iFramesPerTransfer-1);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1983
			iPtr = NULL;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1984
			}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1985
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1986
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1987
	Invariant();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1988
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1989
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1990
void TTransferIter::Invariant() const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1991
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1992
	const TInt elemSize = iCfg->iElementSize;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1993
	RTest test(_L("TTransferIter invariant"));
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  1994
	const TUint bytesTransfered = (
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1995
			elemSize * (iFrame * iCfg->iElementsPerFrame + iElem)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1996
			+ ((TUint)iPtr % (elemSize))
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1997
			);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1998
	test_Equal(iBytes, bytesTransfered);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1999
	test.Close();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2000
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2001
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2002
///////////////////////////////////////////////////////////
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2003
// TTestCase
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2004
///////////////////////////////////////////////////////////
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2005
TTestCase::TTestCase(CDmaTest* aTest,
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2006
   TBool aConcurrent,
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2007
   const TDmaCapability aCap1,
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2008
   const TDmaCapability aCap2,
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2009
   const TDmaCapability aCap3,
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2010
   const TDmaCapability aCap4,
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2011
   const TDmaCapability aCap5
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2012
   )
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2013
:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2014
	iTest(aTest), iConcurrentTest(aConcurrent)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2015
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2016
	iChannelCaps[0] = aCap1;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2017
	iChannelCaps[1] = aCap2;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2018
	iChannelCaps[2] = aCap3;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2019
	iChannelCaps[3] = aCap4;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2020
	iChannelCaps[4] = aCap5;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2021
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2022
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2023
TResult TTestCase::TestCaseValid(const SDmacCaps& aChannelCaps) const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2024
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2025
	const TDmaCapability* cap = &iChannelCaps[0];
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2026
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2027
	TResult ret = ERun;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2028
	//We assume that the array is empty at the first ENone found
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2029
	//any caps after this wil be ignored
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2030
	while(cap->iCapsReq != ENone)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2031
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2032
		TResult t = cap->CompareToDmaCaps(aChannelCaps);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2033
		if(t > ret) //this relies on the enum ordering
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2034
			ret = t;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2035
		cap++;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2036
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2037
	return ret;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2038
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2039
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2040
TResult TTestCase::TestCaseValid(const TDmacTestCaps& aChannelCaps) const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2041
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2042
	const TDmaCapability* cap = &iChannelCaps[0];
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2043
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2044
	TResult ret = ERun;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2045
	//We assume that the array is empty at the first ENone found
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2046
	//any caps after this wil be ignored
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2047
	while(cap->iCapsReq != ENone)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2048
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2049
		TResult t = cap->CompareToDmaCaps(aChannelCaps);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2050
		if(t > ret) //this relies on the enum ordering
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2051
			ret = t;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2052
		cap++;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2053
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2054
	return ret;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2055
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2056
/**
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2057
Will report whether a value held in aChannelCaps satisfies a
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2058
requirement specfied by this object
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2059
*/
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2060
TBool TDmaCapability::RequirementSatisfied(const SDmacCaps& aChannelCaps) const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2061
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2062
	switch(iCapsReq)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2063
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2064
	case ENone:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2065
		return ETrue;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2066
	case EChannelPriorities:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2067
		TEST_FAULT;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2068
	case EChannelPauseAndResume:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2069
		return aChannelCaps.iChannelPauseAndResume == (TBool)iValue;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2070
	case EAddrAlignedToElementSize:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2071
		TEST_FAULT;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2072
	case E1DAddressing:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2073
		return aChannelCaps.i1DIndexAddressing == (TBool)iValue;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2074
	case E2DAddressing:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2075
		return aChannelCaps.i2DIndexAddressing == (TBool)iValue;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2076
	case ESynchronizationTypes:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2077
	case EBurstTransactions:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2078
	case EDescriptorInterrupt:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2079
	case EFrameInterrupt:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2080
	case ELinkedListPausedInterrupt:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2081
	case EEndiannessConversion:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2082
	case EGraphicsOps:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2083
	case ERepeatingTransfers:
199
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2084
	case EChannelLinking:	
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2085
		return aChannelCaps.iChannelLinking == (TBool)iValue;
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2086
	case EHwDescriptors:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2087
		return aChannelCaps.iHwDescriptors == (TBool)iValue;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2088
	case ESrcDstAsymmetry:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2089
	case EAsymHwDescriptors:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2090
		TEST_FAULT;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2091
	case EBalancedAsymSegments:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2092
		return aChannelCaps.iBalancedAsymSegments == (TBool)iValue;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2093
	case EAsymCompletionInterrupt:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2094
		return aChannelCaps.iAsymCompletionInterrupt == (TBool)iValue;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2095
	case EAsymDescriptorInterrupt:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2096
		return aChannelCaps.iAsymDescriptorInterrupt == (TBool)iValue;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2097
	case EAsymFrameInterrupt:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2098
		return aChannelCaps.iAsymFrameInterrupt == (TBool)iValue;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2099
	default:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2100
		TEST_FAULT;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2101
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2102
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2103
	return EFalse;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2104
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2105
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2106
/**
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2107
Will report whether a value held in aChannelCaps satisfies a
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2108
requirement specfied by this object
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2109
*/
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2110
TBool TDmaCapability::RequirementSatisfied(const TDmacTestCaps& aChannelCaps) const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2111
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2112
	switch(iCapsReq)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2113
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2114
	case EPilVersion:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2115
		return TestValue(aChannelCaps.iPILVersion);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2116
	default:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2117
		return RequirementSatisfied(static_cast<SDmacCaps>(aChannelCaps));
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2118
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2119
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2120
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2121
TResult TDmaCapability::CompareToDmaCaps(const SDmacCaps& aChannelCaps) const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2122
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2123
	const TBool reqSatisfied = RequirementSatisfied(aChannelCaps);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2124
	if(reqSatisfied)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2125
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2126
		return ERun;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2127
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2128
	else
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2129
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2130
		return iFail ? EFail : ESkip;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2131
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2132
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2133
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2134
TResult TDmaCapability::CompareToDmaCaps(const TDmacTestCaps& aChannelCaps) const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2135
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2136
	const TBool reqSatisfied = RequirementSatisfied(aChannelCaps);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2137
	if(reqSatisfied)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2138
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2139
		return ERun;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2140
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2141
	else
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2142
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2143
		return iFail ? EFail : ESkip;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2144
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2145
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2146
/**
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2147
Test that aValue satisfies the comparrison (iCapsReqType) with the
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2148
reference value held in iValue
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2149
*/
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2150
TBool TDmaCapability::TestValue(TUint aValue) const
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2151
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2152
	switch(iCapsReqType)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2153
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2154
	case EEqual:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2155
		return aValue == iValue;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2156
	case EGTE:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2157
		return aValue >= iValue;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2158
	case ELTE:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2159
		return aValue <= iValue;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2160
	case EBitsSet:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2161
	case EBitsClear:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2162
	default:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2163
		TEST_FAULT;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2164
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2165
	return EFalse;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2166
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2167
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2168
static RTest test(_L("DMAv2 test"));
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2169
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2170
//////////////////////////////////////////////////////////////////////
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2171
// TTestRunner
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2172
//////////////////////////////////////////////////////////////////////
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2173
TTestRunner::TTestRunner()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2174
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2175
	// Open RDmaSession handle
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2176
	TInt r = iDmaSession.Open();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2177
	TEST_ASSERT(r == KErrNone);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2178
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2179
	// Get PSI Test info
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2180
	r = iDmaSession.GetTestInfo(iPslTestInfo);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2181
	TEST_ASSERT(r == KErrNone);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2182
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2183
	//Retrieve PSL cookies
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2184
	GetPslCookie();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2185
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2186
	//Generate the DMA channel records
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2187
	GenerateChannelRecord();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2188
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2189
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2190
TTestRunner::~TTestRunner()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2191
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2192
	RTest::CloseHandleAndWaitForDestruction(iDmaSession);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2193
	iTestCases.Close(); //TestRunner does not own test cases
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2194
	iChannelRecords.Close();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2195
	iPslCookies.Close();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2196
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2197
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2198
void TTestRunner::AddTestCases(RPointerArray<TTestCase>& aTTestCases)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2199
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2200
	const TInt count = aTTestCases.Count();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2201
	for(TInt i=0; i < count; i++)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2202
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2203
		iTestCases.AppendL(aTTestCases[i]);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2204
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2205
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2206
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2207
void TTestRunner::RunTests()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2208
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2209
	//Print PslTestInfo
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2210
	if(gVerboseOutput)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2211
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2212
		Print(iPslTestInfo);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2213
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2214
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2215
	//iterate through the test case array
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2216
	const TInt testCaseCount = iTestCases.Count();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2217
	for(TInt i=0; i < testCaseCount; i++)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2218
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2219
		const TTestCase& testCase = *iTestCases[i];
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2220
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2221
		//Here, we must create a test thread for each channel
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2222
		RPointerArray<CTest> concurrentTests;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2223
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2224
		const TInt chanRecCount = iChannelRecords.Count();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2225
		for(TInt j=0; j < chanRecCount; j++)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2226
			{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2227
			const TChannelRecord& record = iChannelRecords[j];
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2228
			const TDmacTestCaps& caps = record.iChannelCaps;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2229
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2230
			const TResult t = testCase.TestCaseValid(caps);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2231
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2232
			switch(t)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2233
				{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2234
			case ERun:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2235
				{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2236
				CDmaTest* dmaTest = static_cast<CDmaTest*>(testCase.iTest->Clone());
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2237
				TEST_ASSERT(dmaTest != NULL);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2238
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2239
				dmaTest->SetChannelCookie(record.iCookie);
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2240
				dmaTest->SetupL();
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2241
				if(testCase.iConcurrentTest)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2242
					{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2243
					//Add test to array to be run concurrently
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2244
					TInt r = concurrentTests.Append(dmaTest);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2245
					TEST_ASSERT(r == KErrNone);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2246
					}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2247
				else
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2248
					{
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2249
					dmaTest->Announce();
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2250
					//Run test in this thread
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2251
					(*dmaTest)();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2252
					TBool result = dmaTest->Result();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2253
					TEST_ASSERT(result);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2254
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2255
					delete dmaTest;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2256
					}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2257
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2258
				break;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2259
				}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2260
			case ESkip:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2261
				if(gVerboseOutput)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2262
				{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2263
				RDebug::Printf("Skipping test-case %S, PSL channel %d", &testCase.iTest->Name(), record.iCookie);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2264
				}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2265
				break;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2266
			case EFail:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2267
				if(gVerboseOutput)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2268
				{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2269
				RDebug::Printf("Failling test-case %S, PSL channel %d", &testCase.iTest->Name(), record.iCookie);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2270
				}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2271
				TEST_FAULT;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2272
			default:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2273
				TEST_FAULT;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2274
				}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2275
			//Depending on the value of iConcurrentTest the test runner will either block until the thread has completed or
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2276
			//alternatively run the current test case on the next channel:
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2277
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2278
			//if the test case has been run on all channels it will then  wait for all threads to complete.
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2279
			}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2280
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2281
		// Run the tests which should happen concurrently
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2282
		const TInt count = concurrentTests.Count();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2283
		if(count>0)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2284
			{
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2285
			RDebug::Printf("== Begin concurrent test run ==");
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2286
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2287
			TInt i;											// VC++
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2288
			for(i=0; i<count; i++)
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2289
				{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2290
				concurrentTests[i]->Announce();
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2291
				}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2292
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2293
			MultipleTestRun(concurrentTests);
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2294
			for(i=0; i<count; i++)
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2295
				{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2296
				TBool result = static_cast<CDmaTest*>(concurrentTests[i])->Result();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2297
				TEST_ASSERT(result);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2298
				}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2299
			RDebug::Printf("== End concurrent test run ==");
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2300
			}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2301
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2302
		concurrentTests.ResetAndDestroy();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2303
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2304
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2305
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2306
void TTestRunner::GetPslCookie()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2307
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2308
	//Get Sb Channel cookies
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2309
	for(TInt sb_channelcount=0; sb_channelcount<iPslTestInfo.iMaxSbChannels; sb_channelcount++)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2310
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2311
		iPslCookies.AppendL(iPslTestInfo.iSbChannels[sb_channelcount]);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2312
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2313
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2314
	//Get Db Channel cookies
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2315
	for(TInt db_channelcount=0; db_channelcount<iPslTestInfo.iMaxDbChannels; db_channelcount++)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2316
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2317
		iPslCookies.AppendL(iPslTestInfo.iDbChannels[db_channelcount]);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2318
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2319
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2320
	//Get Sg Channel cookies
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2321
	for(TInt sg_channelcount=0; sg_channelcount<iPslTestInfo.iMaxSgChannels; sg_channelcount++)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2322
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2323
		iPslCookies.AppendL(iPslTestInfo.iSgChannels[sg_channelcount]);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2324
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2325
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2326
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2327
void TTestRunner::GenerateChannelRecord()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2328
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2329
	//for each PSL cookie
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2330
	for(TInt count=0; count<iPslCookies.Count(); count++)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2331
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2332
		//Get channel cookie
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2333
		const TUint pslCookie = iPslCookies[count];
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2334
		TUint sessionCookie;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2335
		TInt r = iDmaSession.ChannelOpen(pslCookie, sessionCookie);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2336
		TEST_ASSERT(r == KErrNone);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2337
		if(gVerboseOutput)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2338
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2339
		RDebug::Printf("Channel PSL Cookie[%d]  :0x%08x",count,pslCookie);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2340
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2341
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2342
		TChannelRecord dmaChannelRecord;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2343
		dmaChannelRecord.iCookie = pslCookie;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2344
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2345
		//Get Channel Caps
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2346
		r = iDmaSession.ChannelCaps(sessionCookie, dmaChannelRecord.iChannelCaps);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2347
		TEST_ASSERT(r == KErrNone);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2348
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2349
		r = iDmaSession.ChannelClose(sessionCookie);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2350
		TEST_ASSERT(r == KErrNone);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2351
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2352
		//Append array
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2353
		iChannelRecords.AppendL(dmaChannelRecord);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2354
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2355
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2356
//////////////////////////////////////////////////////////////////////
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2357
// Global test functions and E32Main
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2358
//////////////////////////////////////////////////////////////////////
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2359
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2360
/**
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2361
Displayed if used supplied no parameters, garbage, or a ? in the parameters
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2362
*/
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2363
void PrintUsage()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2364
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2365
	test.Printf(_L("*** DMA TEST FRAMEWORK ***\n"));
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2366
	test.Printf(_L("Usage : t_dma2.exe [/option]\n"));
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2367
	test.Printf(_L("  /V or /VERBOSE  = Control test output\n"));
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2368
	test.Printf(_L("  /S or /SELFTEST = Run DMA self tests\n"));
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2369
	test.Printf(_L("  /simple = Run only simple transfer tests\n"));
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2370
	test.Printf(_L("  /callback = Run only callback tests\n"));
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2371
	test.Printf(_L("  /multi = Run only multipart transfer tests\n"));
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2372
	test.Printf(_L("  /isrdfc = Run only isr and dfc tests\n"));
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2373
	test.Printf(_L("  /isreque = Run only isr reque tests\n"));
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2374
	test.Printf(_L("  /bench = Run only benchmark tests\n"));
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2375
	test.Printf(_L("  /suspend = Run only pause and resume tests\n"));
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2376
	test.Printf(_L("  /graphic = Run only graphic tests\n"));
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2377
	test.Printf(_L("  /channel = Run only DMA channel (opening and closing) tests\n"));
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2378
	test.Printf(_L("  /queue = Run only queue tests\n"));
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2379
	test.Printf(_L("  /fragment = Run only fragmentation related tests\n"));
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2380
	test.Printf(_L("  /request = Run only requests tests related tests\n"));
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2381
	test.Printf(_L("\n"));
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2382
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2383
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2384
void ProcessCommandLineL()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2385
{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2386
	test.Printf(_L("Process command line arguments\n"));
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2387
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2388
	TInt cmdLineLength(User::CommandLineLength());
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2389
	HBufC* cmdLine = HBufC::NewMaxLC(cmdLineLength);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2390
	TPtr cmdLinePtr = cmdLine->Des();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2391
	User::CommandLine(cmdLinePtr);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2392
	TBool  tokenParsed(EFalse);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2393
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2394
	TLex args(*cmdLine);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2395
	args.SkipSpace(); // args are separated by spaces
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2396
	
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2397
	// first arg is the exe name, skip it
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2398
	TPtrC cmdToken = args.NextToken();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2399
	HBufC* tc = HBufC::NewLC(KParameterTextLenMax);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2400
	*tc = cmdToken;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2401
	while (tc->Length())
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2402
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2403
		tokenParsed = EFalse;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2404
		
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2405
		// '/?' help wanted flag '?' or /? parameter
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2406
		if ((0== tc->FindF(_L("?"))) || (0==tc->FindF(_L("/?")))) 
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2407
			{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2408
			gHelpRequested = ETrue;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2409
			tokenParsed = ETrue;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2410
			}	
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2411
		
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2412
		// '/SELFTEST'			
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2413
		if ((0== tc->FindF(KArgSelfTest)) || (0==tc->FindF(KArgSelfTest2))) 
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2414
			{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2415
			// Run self test
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2416
			test.Printf(_L("Command Line Options:Selftest option specified.\n"));
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2417
			gSelfTest = ETrue;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2418
			tokenParsed = ETrue;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2419
			}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2420
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2421
		// '/VERBOSE' option	
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2422
		if ((0== tc->FindF(KArgVerboseOutput)) || (0==tc->FindF(KArgVerboseOutput2)))
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2423
			{ 
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2424
			test.Printf(_L("Command Line Options:Verbose option specified.\n"));
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2425
			gVerboseOutput = ETrue;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2426
			tokenParsed = ETrue;			
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2427
			}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2428
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2429
		// '/suspend' option
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2430
		if ((0== tc->FindF(KArgSuspendTest)))
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2431
			{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2432
			gSuspend = ETrue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2433
			tokenParsed = ETrue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2434
			}	
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2435
		
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2436
		// '/simple' option
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2437
		if ((0== tc->FindF(KArgSimpleTest)))
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2438
			{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2439
			gSimpleTest = ETrue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2440
			tokenParsed = ETrue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2441
			}	
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2442
		
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2443
		// '/multi' option
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2444
		if ((0== tc->FindF(KArgMultiPartTest)))
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2445
			{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2446
			gMultiPart = ETrue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2447
			tokenParsed = ETrue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2448
			}	
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2449
	
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2450
		// '/callback' option
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2451
		if ((0== tc->FindF(KArgCallBackTest)))
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2452
			{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2453
			gCallBack = ETrue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2454
			tokenParsed = ETrue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2455
			}	
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2456
		
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2457
		// '/IsrAndDfc' option
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2458
		if ((0== tc->FindF(KArgIsrDfcTest)))
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2459
			{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2460
			gIsrAndDfc  = ETrue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2461
			tokenParsed = ETrue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2462
			}	
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2463
		
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2464
		// '/IsrReque' option
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2465
		if ((0== tc->FindF(KArgIsrequeTest)))
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2466
			{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2467
			gIsrReque = ETrue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2468
			tokenParsed = ETrue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2469
			}	
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2470
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2471
		// '/Benchmark' option
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2472
		if ((0== tc->FindF(KArgBenchmarkTest)))
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2473
			{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2474
			gBenchmark = ETrue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2475
			tokenParsed = ETrue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2476
			}	
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2477
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2478
		// '/Queue' option
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2479
		if ((0== tc->FindF(KArgQueueTest)))
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2480
			{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2481
			gQueue = ETrue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2482
			tokenParsed = ETrue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2483
			}	
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2484
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2485
		// '/Fragment' option
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2486
		if ((0== tc->FindF(KArgFragmentTest)))
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2487
			{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2488
			gFragment = ETrue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2489
			tokenParsed = ETrue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2490
			}	
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2491
		
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2492
		// '/Channel' option
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2493
		if ((0== tc->FindF(KArgChannelTest)))
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2494
			{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2495
			gChannel = ETrue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2496
			tokenParsed = ETrue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2497
			}	
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2498
		
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2499
		// '/Graphic' option
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2500
		if ((0== tc->FindF(KArgGraphicTest)))
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2501
			{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2502
			gGraphic = ETrue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2503
			tokenParsed = ETrue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2504
			}	
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2505
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2506
		// '/Request' option
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2507
		if ((0== tc->FindF(KArgRequestTest)))
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2508
			{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2509
			gRequest = ETrue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2510
			tokenParsed = ETrue;
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2511
			}	
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2512
	
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2513
		if (!tokenParsed)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2514
			{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2515
			// warn about unparsed parameter
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2516
			test.Printf(_L("Warning: '%lS'??? not parsed\n"), tc);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2517
			gHelpRequested = ETrue;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2518
			}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2519
			
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2520
		// next parameter
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2521
		*tc = args.NextToken();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2522
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2523
	CleanupStack::PopAndDestroy(tc);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2524
	CleanupStack::PopAndDestroy(cmdLine);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2525
}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2526
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2527
void RunDMATests()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2528
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2529
	test.Start(_L("Creating test runner\n"));
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2530
	TTestRunner testRunner;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2531
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2532
	test.Next(_L("Add global test cases to test runner\n"));
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2533
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2534
	if (gSimpleTest) //Add only simple tranfer test cases
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2535
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2536
		testRunner.AddTestCases(TestArraySimple);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2537
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2538
	else if (gCallBack)  //Add only callback test cases
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2539
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2540
		testRunner.AddTestCases(TestArrayCallback);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2541
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2542
	else if (gIsrReque)  //Add only ISR Reque test cases
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2543
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2544
		testRunner.AddTestCases(TestArrayIsrReque);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2545
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2546
	else if (gMultiPart)  //Add only Multipart test cases
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2547
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2548
		testRunner.AddTestCases(TestArrayMultiPart);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2549
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2550
	else if (gIsrAndDfc)  //Add only IsrAndDfc test cases
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2551
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2552
		testRunner.AddTestCases(TestArrayIsrAndDfc);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2553
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2554
	else if (gBenchmark)  //Add only Benchmark test cases
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2555
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2556
		testRunner.AddTestCases(TestArrayBenchmark);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2557
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2558
	else if (gGraphic)  //Add only 2D test cases
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2559
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2560
		testRunner.AddTestCases(TestArray2DTest);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2561
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2562
	else if (gFragment)  //Add only Fragment test cases
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2563
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2564
		testRunner.AddTestCases(TestArrayFragment);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2565
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2566
	else if (gChannel)  //Add only Channel test cases
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2567
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2568
		testRunner.AddTestCases(TestArrayChannel);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2569
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2570
	else if (gSuspend)  //Add only Suspend test cases
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2571
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2572
		testRunner.AddTestCases(TestArraySuspend);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2573
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2574
	else if (gQueue)  //Add only queue test cases
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2575
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2576
		testRunner.AddTestCases(TestArrayQueue);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2577
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2578
	else if (gRequest)  //Add only request test cases
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2579
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2580
		testRunner.AddTestCases(TestArrayRequest);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2581
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2582
	else
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2583
	{
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2584
		testRunner.AddTestCases(TestArray);//Add all test cases
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2585
	}
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2586
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2587
	test.Next(_L("call TTestRunner::RunTests()\n"));
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2588
	testRunner.RunTests();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2589
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2590
	test.End();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2591
	}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2592
199
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2593
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2594
struct TSimTest
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2595
	{
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2596
	TUint iPslId;
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2597
	TBool iFragment;
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2598
	};
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2599
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2600
const TSimTest KSimTests[] =
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2601
	{
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2602
		{0, EFalse},
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2603
		{1, EFalse},
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2604
		{2, ETrue},
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2605
		{3, ETrue},
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2606
	};
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2607
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2608
const TInt KSimTestsCount = ARRAY_LENGTH(KSimTests);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2609
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2610
void RunSimDMATests()
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2611
	{
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2612
	test.Start(_L("Run simulated DMAC tests\n"));
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2613
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2614
	test.Next(_L("Open session"));
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2615
	RDmaSession session;
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2616
	TInt r = session.OpenSim();
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2617
	test_KErrNone(r);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2618
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2619
	for(TInt i=0; i<KSimTestsCount; i++)
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2620
		{
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2621
		TUint pslId = KSimTests[i].iPslId;
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2622
		TBool doFrag = KSimTests[i].iFragment;
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2623
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2624
		test.Start(_L("Open channel"));
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2625
		TUint channelCookie=0;
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2626
		r = session.ChannelOpen(pslId, channelCookie);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2627
		test.Printf(_L("Open channel %d, cookie recived = 0x%08x\n"), pslId, channelCookie);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2628
		test_KErrNone(r);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2629
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2630
		test.Next(_L("Create Dma request"));
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2631
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2632
		TUint reqCookie=0;
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2633
		r = session.RequestCreate(channelCookie, reqCookie);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2634
		test.Printf(_L("cookie recived = 0x%08x\n"), reqCookie );
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2635
		test_KErrNone(r);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2636
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2637
		if(doFrag)
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2638
			{
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2639
			test.Next(_L("Fragment request"));
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2640
			const TInt size = 128 * KKilo;
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2641
			TDmaTransferArgs transferArgs(0, size, size, KDmaMemAddr);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2642
			r = session.FragmentRequest(reqCookie, transferArgs);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2643
			test_KErrNone(r);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2644
			}
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2645
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2646
		test.Next(_L("Destroy Dma request"));
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2647
		r = session.RequestDestroy(reqCookie);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2648
		test_KErrNone(r);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2649
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2650
		test.Next(_L("Channel close"));
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2651
		r = session.ChannelClose(channelCookie);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2652
		test_KErrNone(r);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2653
		test.End();
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2654
		}
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2655
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2656
	test.Next(_L("Close session"));
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2657
	RTest::CloseHandleAndWaitForDestruction(session);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2658
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2659
	test.End();
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2660
	}
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2661
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2662
TInt E32Main()
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2663
	{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2664
	__UHEAP_MARK;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2665
	test.Title();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2666
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2667
	gHelpRequested = EFalse;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2668
	TInt r;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2669
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2670
	// Create the new trap-cleanup mechanism
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2671
	CTrapCleanup* cleanup = CTrapCleanup::New();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2672
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2673
	if (cleanup == NULL)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2674
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2675
		return KErrNoMemory;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2676
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2677
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2678
	// Process the command line parameters for batch/etc
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2679
	TRAPD(err, ProcessCommandLineL());
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2680
	if (err != KErrNone)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2681
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2682
		User::Panic(_L("DMA test run memory failure"), KErrNoMemory);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2683
		}
199
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2684
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2685
	if (gHelpRequested)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2686
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2687
		PrintUsage();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2688
		User::Leave(-2);	// nothing to do!
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2689
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2690
	test.Start(_L("Loading test LDD"));
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2691
	//load either the new test ldd, d_dma2.ldd,
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2692
	//or d_dma2_compat.ldd - an ldd linked against
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2693
	//the old DMA framework
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2694
	_LIT(KDma, "D_DMA2.LDD");
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2695
	r = User::LoadLogicalDevice(KDma);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2696
	const TBool dma2Loaded = ((r == KErrNone) || (r == KErrAlreadyExists));
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2697
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2698
	_LIT(KDma2Compat, "D_DMA2_COMPAT.LDD");
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2699
	r = User::LoadLogicalDevice(KDma2Compat);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2700
	const TBool dma2CompatLoaded = ((r == KErrNone) || (r == KErrAlreadyExists));
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2701
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2702
	if (!(dma2Loaded || dma2CompatLoaded))
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2703
		{
199
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2704
		test.Printf(_L("Hardware DMA test driver not found - will run tests on simulated DMAC only\n"));
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2705
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2706
	else if (dma2Loaded && !dma2CompatLoaded)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2707
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2708
		test.Printf(_L("Loaded %S\n"), &KDma);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2709
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2710
	else if (!dma2Loaded && dma2CompatLoaded)
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2711
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2712
		test.Printf(_L("Loaded %S\n"), &KDma2Compat);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2713
		}
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2714
	else
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2715
		{
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2716
		test.Printf(_L("The ROM contains %S and %S - only one should be present\n"), &KDma, &KDma2Compat);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2717
		TEST_FAULT;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2718
		}
199
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2719
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2720
	const TBool dmaHwPresent = (dma2Loaded || dma2CompatLoaded);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2721
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2722
	_LIT(KDma2Sim, "D_DMA2_SIM.LDD");
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2723
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2724
	r = User::LoadLogicalDevice(KDma2Sim);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2725
	const TBool dma2SimLoaded = ((r == KErrNone) || (r == KErrAlreadyExists));
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2726
	if (dma2SimLoaded)
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2727
		{
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2728
		test.Printf(_L("Loaded %S\n"), &KDma2Sim);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2729
		}
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2730
	else
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2731
		{
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2732
		test.Printf(_L("Failed to load %S, r=%d\n"), &KDma2Sim, r);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2733
		test(EFalse);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2734
		}
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2735
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2736
	// Turn off evil lazy dll unloading
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2737
	RLoader l;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2738
	test(l.Connect()==KErrNone);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2739
	test(l.CancelLazyDllUnload()==KErrNone);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2740
	RTest::CloseHandleAndWaitForDestruction(l);
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2741
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2742
	__KHEAP_MARK;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2743
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2744
	if (gSelfTest) //Run self tests if specified on command line
199
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2745
		{
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2746
		SelfTests();
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2747
		}
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2748
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2749
	RunSimDMATests();
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2750
	if (dmaHwPresent)
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2751
		{
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2752
		RunDMATests();
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2753
		}
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2754
130
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2755
	// Wait for the supervisor thread to run and perform asynchronous
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2756
	// cleanup, so that kernel heap space will be freed
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2757
	r = UserSvr::HalFunction(EHalGroupKernel, EKernelHalSupervisorBarrier, (TAny*)5000, 0);
c30940f6d922 201017_05
hgs
parents: 36
diff changeset
  2758
	test_KErrNone(r);
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2759
	__KHEAP_MARKEND;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2760
199
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2761
	if(dmaHwPresent)
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2762
		{
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2763
		r = User::FreeLogicalDevice(KTestDmaLddNameHw);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2764
		test_KErrNone(r);
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2765
		}
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2766
	r = User::FreeLogicalDevice(KTestDmaLddNameSim);
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2767
	test_KErrNone(r);
199
189ece41fa29 201027_05
hgs
parents: 130
diff changeset
  2768
36
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2769
	test.End();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2770
	test.Close();
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2771
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2772
	delete cleanup;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2773
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2774
	__UHEAP_MARKEND;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2775
	return 0;
538db54a451d Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  2776
	}