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