kerneltest/e32test/usb/t_usb_device/src/activecontrol.cpp
author hgs
Tue, 24 Aug 2010 14:49:21 +0100
changeset 253 d37db4dcc88d
parent 189 a5496987b1da
child 269 d57b86b1867a
child 270 ea2cef07f9fe
permissions -rw-r--r--
201033_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
     1
// Copyright (c) 2000-2010 Nokia Corporation and/or its subsidiary(-ies).
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     2
// All rights reserved.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     3
// This component and the accompanying materials are made available
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     4
// under the terms of the License "Eclipse Public License v1.0"
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     5
// which accompanies this distribution, and is available
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     7
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     8
// Initial Contributors:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    10
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    11
// Contributors:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    12
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    13
// Description:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    14
// e32test/usb/t_usb_device/src/activecontrol.cpp
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    15
// USB Test Program T_USB_DEVICE, functional part.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    16
// Device-side part, to work against T_USB_HOST running on the host.
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
    17
//
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    18
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    19
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    20
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
    21
#include "general.h"
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    22
#include "usblib.h"											// Helpers
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    23
#include "config.h"
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    24
#include "activecontrol.h"
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    25
#include "apitests.h"
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    26
#include "activerw.h"
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
    27
#ifdef USB_SC
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
    28
#include "tranhandleserver.h"
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
    29
#endif
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    30
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
    31
#include "OstTraceDefinitions.h"
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
    32
#ifdef OST_TRACE_COMPILER_IN_USE
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
    33
#include "activecontrolTraces.h"
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
    34
#endif
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
    35
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
    36
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    37
void StartMassStorage(RDEVCLIENT* aPort);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    38
void StopMassStorage(RDEVCLIENT* aPort);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    39
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    40
enum Ep0Requests
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    41
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    42
	EStop = 0x1,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    43
	EVersion = 0x10,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    44
	ETestParam = 0x20,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    45
	ETestResult = 0x30,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    46
	ETestFail = 0x40,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    47
	ETestConnect = 0x50,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    48
	ETestDisconnect = 0x60,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    49
	ETestMassStorage = 0x70,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    50
	ETestIdleCounter = 0x80,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    51
	};
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    52
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    53
extern RTest test;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
    54
#ifdef USB_SC
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
    55
extern TBool gShareHandle;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
    56
#endif
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    57
extern TBool gVerbose;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    58
extern TBool gSkip;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    59
extern TBool gTempTest;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    60
extern TBool gStopOnFail;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    61
extern TBool gAltSettingOnNotify;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    62
extern TInt gSoakCount;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    63
extern CActiveRW* gRW[KMaxConcurrentTests];				// the USB read/write active object
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    64
extern IFConfigPtr gInterfaceConfig [128] [KMaxInterfaceSettings];
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    65
extern TInt gActiveTestCount;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    66
#ifdef USB_SC
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    67
extern RChunk gChunk;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    68
#endif
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    69
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    70
TInt firstBulkOutEndpoint = -1;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    71
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    72
_LIT(KTestIdleCounterChunkName, "TestIdleCounter");
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    73
_LIT(KTestIdleCounterPanic, "IdleCounter");
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    74
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    75
enum TTestIdleCounterPanic
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    76
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    77
	ETestIdleCounterWrongCommand
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    78
	};
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    79
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    80
enum TTestIdleCounterCommand
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    81
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    82
	ETestIdleCounterDoNothing,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    83
	ETestIdleCounterReset,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    84
	ETestIdleCounterClose
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    85
	};
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    86
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    87
struct TTestIdleCounter
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    88
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    89
	volatile TInt64 iCounter;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    90
	volatile TTestIdleCounterCommand iCommand;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    91
	};
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    92
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    93
TInt IdleCounterThread(TAny*)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    94
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    95
	TInt r;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    96
	//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    97
	RThread().SetPriority(EPriorityAbsoluteVeryLow);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    98
	//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    99
	RChunk chunk;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   100
	r = chunk.CreateGlobal(KTestIdleCounterChunkName,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   101
			sizeof(struct TTestIdleCounter),
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   102
			sizeof(struct TTestIdleCounter) + 1);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   103
	if (r == KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   104
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   105
		struct TTestIdleCounter* counter = (struct TTestIdleCounter*) chunk.Base();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   106
		counter->iCounter = 0;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   107
		counter->iCommand = ETestIdleCounterDoNothing;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   108
		//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   109
		FOREVER
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   110
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   111
			TInt command = counter->iCommand;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   112
			if (command == ETestIdleCounterReset)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   113
				{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   114
				counter->iCounter = 0;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   115
				counter->iCommand = ETestIdleCounterDoNothing;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   116
				}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   117
			else if (command == ETestIdleCounterClose)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   118
				{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   119
				break;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   120
				}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   121
			else if (command != ETestIdleCounterDoNothing)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   122
				{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   123
				RThread().Panic(KTestIdleCounterPanic, ETestIdleCounterWrongCommand);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   124
				}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   125
			//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   126
			counter->iCounter++;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   127
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   128
		//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   129
		chunk.Close();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   130
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   131
	return r;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   132
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   133
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   134
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   135
// --- class CActiveControl ---------------------------------------------------------
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   136
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   137
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   138
CActiveControl::CActiveControl(CConsoleBase* aConsole, TDes * aConfigFile, TDes * aScriptFile)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   139
	: CActive(EPriorityNormal),
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   140
	  iConsole(aConsole),
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   141
	  iSoftwareConnect(EFalse),
90
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   142
	  iSupportResourceAllocationV2(EFalse),
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   143
	  iHighSpeed(EFalse),
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   144
	  iConfigFileName(aConfigFile),
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   145
	  iScriptFileName(aScriptFile),
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   146
	  iEp0PacketSize(0)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   147
	{}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   148
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   149
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   150
CActiveControl* CActiveControl::NewLC(CConsoleBase* aConsole, TDes * aConfigFile, TDes * aScriptFile)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   151
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   152
	CActiveControl* self = new (ELeave) CActiveControl(aConsole, aConfigFile, aScriptFile);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   153
	CleanupStack::PushL(self);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   154
	self->ConstructL();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   155
	return self;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   156
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   157
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   158
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   159
CActiveControl* CActiveControl::NewL(CConsoleBase* aConsole, TDes * aConfigFile, TDes * aScriptFile)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   160
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   161
	CActiveControl* self = NewLC(aConsole, aConfigFile, aScriptFile);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   162
	CleanupStack::Pop();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   163
	return self;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   164
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   165
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   166
void CActiveControl::ConstructL()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   167
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   168
	CActiveScheduler::Add(this);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   169
#ifdef USB_SC
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
   170
	if (gShareHandle)
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
   171
		{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   172
		// to do add call to server to transfer config file name
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
   173
		iTranHandleServer = CTranHandleServer::NewL(*this);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
   174
		RTransferSrv aSrv;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
   175
		test.Next (_L("ConstructL"));
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
   176
		User::LeaveIfError(aSrv.Connect());
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
   177
		CleanupClosePushL(aSrv);	
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
   178
		test.Next (_L("ConstructL1"));
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
   179
		User::LeaveIfError(aSrv.SetConfigFileName(*iConfigFileName));
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
   180
		test.Next (_L("ConstructL2"));
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
   181
		CleanupStack::Pop();
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
   182
		aSrv.Close();
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
   183
		return;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
   184
		}
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
   185
#endif
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   186
	TInt r;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   187
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   188
	User::LeaveIfError(iFs.Connect());
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   189
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   190
	test.Start (_L("Configuration"));
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   191
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   192
	test_Compare(iConfigFileName->Length(),!=,0);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   193
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   194
	iTimer.CreateLocal();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   195
	iPending = EPendingNone;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   196
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   197
	test.Next (_L("Open configuration file"));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   198
	// set the session path to use the ROM if no drive specified
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   199
	r=iFs.SetSessionPath(_L("Z:\\test\\"));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   200
	test_KErrNone(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   201
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   202
	r = iConfigFile.Open(iFs, * iConfigFileName, EFileShareReadersOnly | EFileStreamText | EFileRead);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   203
	test_KErrNone(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   204
	TUSB_VERBOSE_PRINT1("Configuration file %s Opened successfully", iConfigFileName->PtrZ());
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   205
	if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   206
	    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   207
	    OstTraceExt1(TRACE_VERBOSE, CACTIVECONTROL_CONSTRUCTL, "Configuration file %S Opened successfully", *iConfigFileName);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   208
	    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   209
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   210
	test.Next (_L("Process configuration file"));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   211
	test(ProcessConfigFile (iConfigFile,iConsole,&iLddPtr));
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   212
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   213
	iConfigFile.Close();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   214
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   215
	test.Next (_L("LDD in configuration file"));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   216
	test_NotNull(iLddPtr);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   217
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   218
	LDDConfigPtr lddPtr = iLddPtr;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   219
	TInt nextPort = 0;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   220
	while (lddPtr != NULL)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   221
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   222
		// Load logical driver (LDD)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   223
		// (There's no physical driver (PDD) with USB: it's a kernel extension DLL which
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   224
		//  was already loaded at boot time.)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   225
		test.Next (_L("Loading USB LDD"));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   226
		TUSB_VERBOSE_PRINT1("Loading USB LDD ",lddPtr->iName.PtrZ());
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   227
		if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   228
		    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   229
		    OstTraceExt1(TRACE_VERBOSE, CACTIVECONTROL_CONSTRUCTL_DUP01, "Loading USB LDD:%S ", lddPtr->iName);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   230
		    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   231
		r = User::LoadLogicalDevice(lddPtr->iName);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   232
		test(r == KErrNone || r == KErrAlreadyExists);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   233
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   234
		IFConfigPtr ifPtr = lddPtr->iIFPtr;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   235
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   236
		test.Next (_L("Opening Channels"));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   237
		for (TInt portNumber = nextPort; portNumber < nextPort+lddPtr->iNumChannels; portNumber++)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   238
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   239
			test_Compare(lddPtr->iNumChannels,>,0);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   240
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   241
			// Open USB channel
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   242
			r = iPort[portNumber].Open(0);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   243
			test_KErrNone(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   244
			TUSB_VERBOSE_PRINT("Successfully opened USB port");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   245
			if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   246
			    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   247
			    OstTrace0(TRACE_VERBOSE, CACTIVECONTROL_CONSTRUCTL_DUP02, "Successfully opened USB port");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   248
			    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   249
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   250
			// Query the USB device/Setup the USB interface
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   251
			if (portNumber == nextPort)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   252
				{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   253
				// Change some descriptors to contain suitable values
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   254
				SetupDescriptors(lddPtr, &iPort[portNumber]);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   255
				}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   256
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   257
			if (portNumber == 0)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   258
				{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   259
				QueryUsbClientL(lddPtr, &iPort[portNumber]);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   260
				}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   261
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   262
			test_NotNull(ifPtr);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   263
90
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   264
			if (iSupportResourceAllocationV2)
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   265
				{
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   266
				PopulateInterfaceResourceAllocation(ifPtr, portNumber);
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   267
				}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   268
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   269
			IFConfigPtr defaultIfPtr = ifPtr;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   270
			SetupInterface(&ifPtr,portNumber);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   271
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   272
			#ifdef USB_SC
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   273
			RChunk *tChunk = &gChunk;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   274
			test_KErrNone(iPort[portNumber].FinalizeInterface(tChunk));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   275
			#endif
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   276
90
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   277
			if (!iSupportResourceAllocationV2)
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   278
				{
90
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   279
				// 	allocate endpoint DMA and double buffering for all endpoints on default interface when using resource allocation v1 api
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   280
				for (TUint8 i = 1; i <= defaultIfPtr->iInfoPtr->iTotalEndpointsUsed; i++)
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   281
					{
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   282
					defaultIfPtr->iEpDMA[i-1] ? AllocateEndpointDMA(&iPort[portNumber],(TENDPOINTNUMBER)i) : DeAllocateEndpointDMA(&iPort[portNumber],(TENDPOINTNUMBER)i);
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   283
					#ifndef USB_SC
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   284
					defaultIfPtr->iEpDoubleBuff[i-1] ? AllocateDoubleBuffering(&iPort[portNumber],(TENDPOINTNUMBER)i) : DeAllocateDoubleBuffering(&iPort[portNumber],(TENDPOINTNUMBER)i);
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   285
					#endif
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   286
					}
90
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   287
				}
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   288
			}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   289
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   290
		iTotalChannels += lddPtr->iNumChannels;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   291
		nextPort += lddPtr->iNumChannels;
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   292
		lddPtr = lddPtr->iPtrNext;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   293
		}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   294
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   295
	TUSB_VERBOSE_PRINT("All Interfaces and Alternate Settings successfully set up");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   296
	if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   297
	    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   298
	    OstTrace0(TRACE_VERBOSE, CACTIVECONTROL_CONSTRUCTL_DUP03, "All Interfaces and Alternate Settings successfully set up");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   299
	    }
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   300
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   301
	test.Next (_L("Start Idle Counter Thread"));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   302
	r = iIdleCounterThread.Create(_L("IdleCounter"), IdleCounterThread, KDefaultStackSize, KMinHeapSize, KMinHeapSize, NULL);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   303
	test_KErrNone(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   304
	iIdleCounterThread.Resume();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   305
	// Allow some time for low-priority counter process
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   306
	User::After(100000); // 0.1 second
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   307
	r = iIdleCounterChunk.OpenGlobal(KTestIdleCounterChunkName, EFalse);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   308
	test_KErrNone(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   309
	iIdleCounter = (struct TTestIdleCounter*) iIdleCounterChunk.Base();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   310
	test_NotNull(iIdleCounter);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   311
	// Allow some time for low-priority counter process
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   312
	User::After(100000); // 0.1 second
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   313
	TInt64 val1 = iIdleCounter->iCounter;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   314
	User::After(1000000); // 1 second
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   315
	TInt64 val2 = iIdleCounter->iCounter;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   316
	TUSB_PRINT1("Idle Counter when test inactive: %Ldinc/ms", (val2 - val1) / 1000);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   317
	OstTraceExt1(TRACE_NORMAL, CACTIVECONTROL_CONSTRUCTL_DUP04, "Idle Counter when test inactive: %Ldinc/ms", (val2 - val1) / 1000);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   318
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   319
	test.Next (_L("Enumeration..."));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   320
	r = ReEnumerate();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   321
	test_KErrNone(r);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   322
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   323
	TUSB_VERBOSE_PRINT("Device successfully re-enumerated\n");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   324
	if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   325
	    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   326
	    OstTrace0(TRACE_VERBOSE, CACTIVECONTROL_CONSTRUCTL_DUP05, "Device successfully re-enumerated\n");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   327
	    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   328
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   329
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   330
	if (iLddPtr->iHighSpeed && !gSkip)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   331
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   332
		test.Next (_L("High Speed"));
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   333
		test(iHighSpeed);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   334
		}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   335
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   336
	test.Next (_L("Create Notifiers"));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   337
	for (TInt portNumber = 0; portNumber < iTotalChannels; portNumber++)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   338
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   339
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   340
		// Create device state active object
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   341
		iDeviceStateNotifier[portNumber] = CActiveDeviceStateNotifier::NewL(iConsole, &iPort[portNumber], portNumber);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   342
		test_NotNull(iDeviceStateNotifier[portNumber]);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   343
		iDeviceStateNotifier[portNumber]->Activate();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   344
		TUSB_VERBOSE_PRINT("Created device state notifier");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   345
		if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   346
		    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   347
		    OstTrace0(TRACE_VERBOSE, CACTIVECONTROL_CONSTRUCTL_DUP06, "Created device state notifier");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   348
		    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   349
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   350
		// Create endpoint stall status active object
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   351
		iStallNotifier[portNumber] = CActiveStallNotifier::NewL(iConsole, &iPort[portNumber]);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   352
		test_NotNull(iStallNotifier[portNumber]);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   353
		iStallNotifier[portNumber]->Activate();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   354
		TUSB_VERBOSE_PRINT("Created stall notifier");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   355
		if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   356
		    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   357
		    OstTrace0(TRACE_VERBOSE, CACTIVECONTROL_CONSTRUCTL_DUP07, "Created stall notifier");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   358
		    }
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   359
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   360
		TestInvalidSetInterface (&iPort[portNumber],iNumInterfaceSettings[portNumber]);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   361
		TestInvalidReleaseInterface (&iPort[portNumber],iNumInterfaceSettings[portNumber]);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   362
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   363
		}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   364
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   365
	test.Next (_L("Endpoint Zero Max Packet Sizes"));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   366
	TUint ep0Size = iPort[0].EndpointZeroMaxPacketSizes();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   367
	switch (ep0Size)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   368
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   369
		case KUsbEpSize8 :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   370
			iEp0PacketSize = 8;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   371
			break;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   372
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   373
		case KUsbEpSize16 :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   374
			iEp0PacketSize = 16;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   375
			break;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   376
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   377
		case KUsbEpSize32 :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   378
			iEp0PacketSize = 32;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   379
			break;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   380
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   381
		case KUsbEpSize64 :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   382
			iEp0PacketSize = 64;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   383
			break;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   384
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   385
		default:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   386
			iEp0PacketSize = 0;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   387
			break;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   388
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   389
	test_Compare(iEp0PacketSize,>,0);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   390
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   391
	test.Next (_L("Set Device Control"));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   392
	r = iPort[0].SetDeviceControl();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   393
	test_KErrNone(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   394
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   395
	#ifdef USB_SC
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   396
	r = iPort[0].OpenEndpoint(iEp0Buf,0);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   397
	test_KErrNone(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   398
	#endif
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   399
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   400
	test.End();
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   401
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   402
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   403
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   404
void CActiveControl::ReConnect()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   405
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   406
	TInt r;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   407
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   408
	test.Start (_L("Reconnecting USB"));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   409
	LDDConfigPtr lddPtr = iLddPtr;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   410
	TInt nextPort = 0;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   411
	while (lddPtr != NULL)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   412
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   413
		IFConfigPtr ifPtr = lddPtr->iIFPtr;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   414
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   415
		test.Next (_L("Opening Channels"));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   416
		for (TInt portNumber = nextPort; portNumber < nextPort+lddPtr->iNumChannels; portNumber++)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   417
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   418
			// Open USB channel
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   419
			r = iPort[portNumber].Open(0);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   420
			test_KErrNone(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   421
			TUSB_VERBOSE_PRINT("Successfully opened USB port");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   422
			if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   423
			    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   424
			    OstTrace0(TRACE_VERBOSE, CACTIVECONTROL_RECONNECT, "Successfully opened USB port");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   425
			    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   426
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   427
			// Query the USB device/Setup the USB interface
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   428
			if (portNumber == nextPort)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   429
				{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   430
				// Change some descriptors to contain suitable values
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   431
				SetupDescriptors(lddPtr, &iPort[portNumber]);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   432
				}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   433
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   434
			IFConfigPtr defaultIfPtr = ifPtr;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   435
			SetupInterface(&ifPtr,portNumber);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   436
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   437
			#ifdef USB_SC
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   438
			RChunk *tChunk = &gChunk;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   439
			test_KErrNone(iPort[portNumber].FinalizeInterface(tChunk));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   440
			#endif
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   441
90
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   442
			if (!iSupportResourceAllocationV2)
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   443
				{
90
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   444
				// 	allocate endpoint DMA and double buffering for all endpoints on default interface with resource allocation v1 api
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   445
				for (TUint8 i = 1; i <= defaultIfPtr->iInfoPtr->iTotalEndpointsUsed; i++)
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   446
					{
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   447
					defaultIfPtr->iEpDMA[i-1] ? AllocateEndpointDMA(&iPort[portNumber],(TENDPOINTNUMBER)i) : DeAllocateEndpointDMA(&iPort[portNumber],(TENDPOINTNUMBER)i);
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   448
					#ifndef USB_SC
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   449
					defaultIfPtr->iEpDoubleBuff[i-1] ? AllocateDoubleBuffering(&iPort[portNumber],(TENDPOINTNUMBER)i) : DeAllocateDoubleBuffering(&iPort[portNumber],(TENDPOINTNUMBER)i);
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   450
					#endif
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   451
					}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   452
				}
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   453
			}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   454
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   455
		nextPort += lddPtr->iNumChannels;
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   456
		lddPtr = lddPtr->iPtrNext;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   457
		}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   458
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   459
	TUSB_VERBOSE_PRINT("All Interfaces and Alternate Settings successfully set up");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   460
	if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   461
	    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   462
	    OstTrace0(TRACE_VERBOSE, CACTIVECONTROL_RECONNECT_DUP01, "All Interfaces and Alternate Settings successfully set up");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   463
	    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   464
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   465
	test.Next (_L("Enumeration..."));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   466
	r = ReEnumerate();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   467
	test_KErrNone(r);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   468
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   469
	TUSB_VERBOSE_PRINT("Device successfully re-enumerated\n");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   470
	if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   471
	    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   472
	    OstTrace0(TRACE_VERBOSE, CACTIVECONTROL_RECONNECT_DUP02, "Device successfully re-enumerated\n");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   473
	    }
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   474
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   475
	for (TInt portNumber = 0; portNumber < iTotalChannels; portNumber++)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   476
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   477
		// Create device state active object
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   478
		iDeviceStateNotifier[portNumber] = CActiveDeviceStateNotifier::NewL(iConsole, &iPort[portNumber], portNumber);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   479
		test_NotNull(iDeviceStateNotifier[portNumber]);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   480
		iDeviceStateNotifier[portNumber]->Activate();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   481
		TUSB_VERBOSE_PRINT("Created device state notifier");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   482
		if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   483
		    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   484
		    OstTrace0(TRACE_VERBOSE, CACTIVECONTROL_RECONNECT_DUP03, "Created device state notifier");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   485
		    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   486
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   487
		// Create endpoint stall status active object
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   488
		iStallNotifier[portNumber] = CActiveStallNotifier::NewL(iConsole, &iPort[portNumber]);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   489
		test_NotNull(iStallNotifier[portNumber]);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   490
		iStallNotifier[portNumber]->Activate();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   491
		TUSB_VERBOSE_PRINT("Created stall notifier");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   492
		if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   493
		    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   494
		    OstTrace0(TRACE_VERBOSE, CACTIVECONTROL_RECONNECT_DUP04, "Created stall notifier");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   495
		    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   496
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   497
		if (portNumber == 0)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   498
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   499
			test.Next (_L("Set Device Control"));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   500
			r = iPort[portNumber].SetDeviceControl();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   501
			test_KErrNone(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   502
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   503
			#ifdef USB_SC
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   504
			r = iPort[portNumber].OpenEndpoint(iEp0Buf,0);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   505
			test_KErrNone(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   506
			#endif
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   507
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   508
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   509
		}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   510
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   511
	test.End();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   512
	}
90
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   513
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   514
void CActiveControl::FillEndpointsResourceAllocation(IFConfigPtr aIfCfg)
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   515
	{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   516
90
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   517
	#ifdef USB_SC
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   518
		TUsbcScInterfaceInfo* iInfoPtr = aIfCfg->iInfoPtr;
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   519
	#else
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   520
		TUsbcInterfaceInfo* iInfoPtr = aIfCfg->iInfoPtr;
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   521
	#endif
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   522
90
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   523
	// 	fill resource allocation info in the endpoint info with resource allocation v2
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   524
	for (TUint8 i = 1; i <= iInfoPtr->iTotalEndpointsUsed; i++)
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   525
		{
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   526
		if (aIfCfg->iEpDMA[i-1])
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   527
			{
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   528
			iInfoPtr->iEndpointData[i-1].iFeatureWord1 |= KUsbcEndpointInfoFeatureWord1_DMA;
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   529
			}
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   530
		else
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   531
			{
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   532
			iInfoPtr->iEndpointData[i-1].iFeatureWord1 &= (~KUsbcEndpointInfoFeatureWord1_DMA);
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   533
			}
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   534
		#ifndef USB_SC
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   535
		if (aIfCfg->iEpDoubleBuff[i-1])
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   536
			{
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   537
			iInfoPtr->iEndpointData[i-1].iFeatureWord1 |= KUsbcEndpointInfoFeatureWord1_DoubleBuffering;
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   538
			}
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   539
		else
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   540
			{
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   541
			iInfoPtr->iEndpointData[i-1].iFeatureWord1 &= (~KUsbcEndpointInfoFeatureWord1_DoubleBuffering);
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   542
			}
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   543
		#endif
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   544
		}
90
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   545
	}
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   546
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   547
// all alternative settings of the interface 'aFirstIfCfg' will be populated
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   548
void CActiveControl::PopulateInterfaceResourceAllocation(IFConfigPtr aFirstIfCfg, TInt aPortNumber)
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   549
	{
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   550
	FillEndpointsResourceAllocation(aFirstIfCfg);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   551
90
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   552
	IFConfigPtr ifCfgPtr = aFirstIfCfg->iPtrNext;
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   553
	while (ifCfgPtr != NULL)
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   554
		{
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   555
		if (ifCfgPtr->iAlternateSetting)
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   556
			{
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   557
			FillEndpointsResourceAllocation(ifCfgPtr);
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   558
			ifCfgPtr = ifCfgPtr->iPtrNext;
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   559
			}
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   560
		else
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   561
			{
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   562
			ifCfgPtr = NULL;
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   563
			}
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   564
		}
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   565
	}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   566
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   567
void CActiveControl::SetupInterface(IFConfigPtr* aIfPtr, TInt aPortNumber)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   568
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   569
	test.Start (_L("Setup Interface"));
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   570
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   571
	// first of all set the default interface
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   572
	TUSB_PRINT2 ("Set Default Interface with %d endpoints bandwidth 0x%x",(*aIfPtr)->iInfoPtr->iTotalEndpointsUsed,(*aIfPtr)->iBandwidthIn | (*aIfPtr)->iBandwidthOut);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   573
	OstTraceExt2 (TRACE_NORMAL, CACTIVECONTROL_SETUPINTERFACE, "Set Default Interface with %d endpoints bandwidth 0x%x",(*aIfPtr)->iInfoPtr->iTotalEndpointsUsed,(*aIfPtr)->iBandwidthIn | (*aIfPtr)->iBandwidthOut);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   574
	#ifdef USB_SC
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   575
	TUsbcScInterfaceInfoBuf ifc = *((*aIfPtr)->iInfoPtr);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   576
	TInt r = iPort[aPortNumber].SetInterface(0, ifc);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   577
	#else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   578
	TUsbcInterfaceInfoBuf ifc = *((*aIfPtr)->iInfoPtr);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   579
	TInt r = iPort[aPortNumber].SetInterface(0, ifc, (*aIfPtr)->iBandwidthIn | (*aIfPtr)->iBandwidthOut);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   580
	#endif
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   581
	test_KErrNone(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   582
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   583
	TBuf8<KUsbDescSize_Interface> ifDescriptor;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   584
	r = iPort[aPortNumber].GetInterfaceDescriptor(0, ifDescriptor);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   585
	test_KErrNone(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   586
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   587
	// Check the interface descriptor
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   588
	test(ifDescriptor[KIfcDesc_SettingOffset] == 0 && ifDescriptor[KIfcDesc_NumEndpointsOffset] == (*aIfPtr)->iInfoPtr->iTotalEndpointsUsed &&
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   589
	    ifDescriptor[KIfcDesc_ClassOffset] == (*aIfPtr)->iInfoPtr->iClass.iClassNum &&
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   590
	    ifDescriptor[KIfcDesc_SubClassOffset] == (*aIfPtr)->iInfoPtr->iClass.iSubClassNum &&
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   591
	    ifDescriptor[KIfcDesc_ProtocolOffset] == (*aIfPtr)->iInfoPtr->iClass.iProtocolNum);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   592
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   593
	if ((*aIfPtr)->iNumber != 0 && ifDescriptor[KIfcDesc_NumberOffset] != (*aIfPtr)->iNumber)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   594
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   595
		ifDescriptor[KIfcDesc_NumberOffset] = (*aIfPtr)->iNumber;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   596
		r = iPort[aPortNumber].SetInterfaceDescriptor(0, ifDescriptor);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   597
		test_KErrNone(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   598
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   599
	else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   600
		{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   601
		(*aIfPtr)->iNumber = ifDescriptor[KIfcDesc_NumberOffset];
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   602
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   603
	TUint8 interfaceNumber = (*aIfPtr)->iNumber;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   604
	TUSB_PRINT1 ("Interface Number %d",interfaceNumber);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   605
	OstTrace1 (TRACE_NORMAL, CACTIVECONTROL_SETUPINTERFACE_DUP01, "Interface Number %d",interfaceNumber);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   606
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   607
	// Check all endpoint descriptors
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   608
	TBuf8<KUsbDescSize_AudioEndpoint> epDescriptor;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   609
	for (TUint i = 0; i < (*aIfPtr)->iInfoPtr->iTotalEndpointsUsed; i++)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   610
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   611
		if (!gSkip)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   612
			{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   613
			TestEndpointDescriptor (&iPort[aPortNumber],0,i+1,(*aIfPtr)->iInfoPtr->iEndpointData[i]);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   614
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   615
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   616
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   617
		if (firstBulkOutEndpoint < 0 && ((*aIfPtr)->iInfoPtr->iEndpointData[i].iDir & KUsbEpDirOut) &&
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   618
			(*aIfPtr)->iInfoPtr->iEndpointData[i].iType == KUsbEpTypeBulk)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   619
			{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   620
			firstBulkOutEndpoint = i+1;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   621
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   622
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   623
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   624
	TUSB_PRINT1 ("Interface number is %d",interfaceNumber);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   625
	OstTrace1 (TRACE_NORMAL, CACTIVECONTROL_SETUPINTERFACE_DUP02, "Interface number is %d",interfaceNumber);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   626
	(*aIfPtr)->iPortNumber = aPortNumber;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   627
	gInterfaceConfig [interfaceNumber] [0] = *aIfPtr;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   628
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   629
	TInt alternateNumber = 1;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   630
	// check for any alternatate interfaces and set any that are found
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   631
	* aIfPtr = (*aIfPtr)->iPtrNext;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   632
	if (* aIfPtr != NULL)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   633
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   634
		test(SupportsAlternateInterfaces());
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   635
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   636
		IFConfigPtr ifPtr = *aIfPtr;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   637
		while (ifPtr != NULL)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   638
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   639
			if (ifPtr->iAlternateSetting)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   640
				{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   641
				ifc = *(ifPtr->iInfoPtr);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   642
				#ifdef USB_SC
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   643
				TUSB_PRINT2 ("Set Alternate Interface Setting %d with %d endpoints",alternateNumber,ifPtr->iInfoPtr->iTotalEndpointsUsed);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   644
				OstTraceExt2 (TRACE_NORMAL, CACTIVECONTROL_SETUPINTERFACE_DUP03, "Set Alternate Interface Setting %d with %d endpoints",alternateNumber,ifPtr->iInfoPtr->iTotalEndpointsUsed);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   645
				r = iPort[aPortNumber].SetInterface(alternateNumber, ifc);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   646
				#else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   647
				TUSB_PRINT3 ("Set Alternate Interface Setting %d with %d endpoints bandwidth 0x%x",alternateNumber,ifPtr->iInfoPtr->iTotalEndpointsUsed,ifPtr->iBandwidthIn | iLddPtr->iIFPtr->iBandwidthOut);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   648
				OstTraceExt3 (TRACE_NORMAL, CACTIVECONTROL_SETUPINTERFACE_DUP04, "Set Alternate Interface Setting %d with %u endpoints bandwidth 0x%x",(TInt32)alternateNumber,(TUint32)ifPtr->iInfoPtr->iTotalEndpointsUsed,(TUint32)(ifPtr->iBandwidthIn | iLddPtr->iIFPtr->iBandwidthOut));
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   649
				r = iPort[aPortNumber].SetInterface(alternateNumber, ifc, ifPtr->iBandwidthIn | iLddPtr->iIFPtr->iBandwidthOut);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   650
				#endif
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   651
				test_KErrNone(r);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   652
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   653
				r = iPort[aPortNumber].GetInterfaceDescriptor(alternateNumber, ifDescriptor);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   654
				test_KErrNone(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   655
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   656
				// Check the interface descriptor
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   657
				test(ifDescriptor[KIfcDesc_SettingOffset] == alternateNumber && ifDescriptor[KIfcDesc_NumEndpointsOffset] == (*aIfPtr)->iInfoPtr->iTotalEndpointsUsed &&
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   658
				    ifDescriptor[KIfcDesc_ClassOffset] == (*aIfPtr)->iInfoPtr->iClass.iClassNum &&
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   659
				    ifDescriptor[KIfcDesc_SubClassOffset] == (*aIfPtr)->iInfoPtr->iClass.iSubClassNum &&
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   660
				    ifDescriptor[KIfcDesc_ProtocolOffset] == (*aIfPtr)->iInfoPtr->iClass.iProtocolNum);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   661
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   662
				// Check all endpoint descriptors
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   663
				for (TUint i = 0; i < ifPtr->iInfoPtr->iTotalEndpointsUsed; i++)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   664
					{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   665
					TInt desc_size;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   666
					r = iPort[aPortNumber].GetEndpointDescriptorSize(alternateNumber, i+1, desc_size);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   667
					test_KErrNone(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   668
					test_Equal(KUsbDescSize_Endpoint + (*aIfPtr)->iInfoPtr->iEndpointData[i].iExtra,static_cast<TUint>(desc_size));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   669
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   670
					r = iPort[aPortNumber].GetEndpointDescriptor(alternateNumber, i+1, epDescriptor);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   671
					test_KErrNone(r);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   672
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   673
					test((((*aIfPtr)->iInfoPtr->iEndpointData[i].iDir & KUsbEpDirIn) && (epDescriptor[KEpDesc_AddressOffset] & 0x80) ||
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   674
						!((*aIfPtr)->iInfoPtr->iEndpointData[i].iDir & KUsbEpDirIn) && !(epDescriptor[KEpDesc_AddressOffset] & 0x80)) &&
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   675
						EpTypeMask2Value((*aIfPtr)->iInfoPtr->iEndpointData[i].iType) == (TUint)(epDescriptor[KEpDesc_AttributesOffset] & 0x03) &&
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   676
						(*aIfPtr)->iInfoPtr->iEndpointData[i].iInterval == epDescriptor[KEpDesc_IntervalOffset]);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   677
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   678
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   679
					if (!gSkip && (*aIfPtr)->iInfoPtr->iEndpointData[i].iExtra)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   680
						{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   681
						test.Next(_L("Extended Endpoint Descriptor Manipulation"));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   682
						TUint8 addr = 0x85;										// bogus address
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   683
						if (epDescriptor[KEpDesc_SynchAddressOffset] == addr)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   684
							addr++;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   685
						epDescriptor[KEpDesc_SynchAddressOffset] = addr;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   686
						r = iPort[aPortNumber].SetEndpointDescriptor(alternateNumber, i+1, epDescriptor);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   687
						test_KErrNone(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   688
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   689
						TBuf8<KUsbDescSize_AudioEndpoint> descriptor2;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   690
						r = iPort[aPortNumber].GetEndpointDescriptor(alternateNumber, i+1, descriptor2);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   691
						test_KErrNone(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   692
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   693
						test.Next(_L("Compare endpoint descriptor with value set"));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   694
						r = descriptor2.Compare(epDescriptor);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   695
						test_KErrNone(r);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   696
						}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   697
					}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   698
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   699
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   700
				// if no error move on to the next interface
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   701
				ifPtr->iPortNumber = aPortNumber;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   702
				ifPtr->iNumber = interfaceNumber;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   703
				gInterfaceConfig [interfaceNumber] [alternateNumber] = ifPtr;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   704
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   705
				alternateNumber++;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   706
				ifPtr = ifPtr->iPtrNext;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   707
				* aIfPtr = ifPtr;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   708
				}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   709
			else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   710
				{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   711
				ifPtr = NULL;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   712
				}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   713
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   714
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   715
	iNumInterfaceSettings[aPortNumber] = alternateNumber;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   716
	if (!gSkip)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   717
		{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   718
		TestInvalidSetInterface (&iPort[aPortNumber],iNumInterfaceSettings[aPortNumber]);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   719
		TestInvalidReleaseInterface (&iPort[aPortNumber],iNumInterfaceSettings[aPortNumber]);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   720
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   721
		TestDescriptorManipulation(iLddPtr->iHighSpeed,&iPort[aPortNumber],alternateNumber);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   722
		TestOtgExtensions(&iPort[aPortNumber]);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   723
		TestEndpoint0MaxPacketSizes(&iPort[aPortNumber]);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   724
		}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   725
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   726
	test.End();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   727
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   728
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   729
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   730
CActiveControl::~CActiveControl()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   731
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   732
	TUSB_PRINT("CActiveControl::~CActiveControl()");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   733
	OstTrace0(TRACE_NORMAL, CACTIVECONTROL_DCACTIVECONTROL, "CActiveControl::~CActiveControl()");
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   734
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   735
	Cancel();
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   736
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   737
	iTimer.Close();
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   738
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   739
	// delete interfaces
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   740
	while (iLddPtr->iIFPtr)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   741
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   742
		IFConfigPtr* ifPtrPtr = & iLddPtr->iIFPtr;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   743
		while ((*ifPtrPtr)->iPtrNext)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   744
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   745
			ifPtrPtr = &(*ifPtrPtr)->iPtrNext;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   746
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   747
		delete (*ifPtrPtr)->iInfoPtr->iString;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   748
		delete (*ifPtrPtr)->iInfoPtr;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   749
		delete (*ifPtrPtr);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   750
		* ifPtrPtr = NULL;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   751
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   752
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   753
	while (iLddPtr)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   754
		{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   755
		LDDConfigPtr* lddPtrPtr = &iLddPtr;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   756
		while ((*lddPtrPtr)->iPtrNext)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   757
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   758
			lddPtrPtr = &(*lddPtrPtr)->iPtrNext;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   759
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   760
		delete (*lddPtrPtr)->iManufacturer;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   761
		delete (*lddPtrPtr)->iProduct;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   762
		delete (*lddPtrPtr)->iSerialNumber;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   763
		delete (*lddPtrPtr);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   764
		* lddPtrPtr = NULL;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   765
		}
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
   766
#ifdef USB_SC
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
   767
	delete iTranHandleServer;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
   768
	TUSB_PRINT("CActiveControl::delete iTranHandleServer");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   769
	OstTrace0(TRACE_NORMAL, CACTIVECONTROL_DCACTIVECONTROL_DUP01, "CActiveControl::delete iTranHandleServer");
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
   770
#endif
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   771
	iFs.Close();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   772
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   773
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   774
void CActiveControl::DoCancel()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   775
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   776
	TUSB_VERBOSE_PRINT("CActiveControl::DoCancel()");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   777
	if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   778
	    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   779
	    OstTrace0(TRACE_VERBOSE, CACTIVECONTROL_DOCANCEL, "CActiveControl::DoCancel()");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   780
	    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   781
	iConsole->ReadCancel();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   782
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   783
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   784
void CActiveControl::SetMSFinished(TBool aState)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   785
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   786
	if (aState)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   787
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   788
		if (iPending != EPendingEject)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   789
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   790
			iPending = EPendingEject;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   791
			iTimer.After(iStatus,KMSFinishedDelay);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   792
			if (!IsActive())
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   793
				{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   794
				SetActive();
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   795
				}
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   796
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   797
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   798
	else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   799
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   800
		if (iPending == EPendingEject)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   801
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   802
			iPending = EPendingCancel;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   803
			iTimer.Cancel();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   804
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   805
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   806
	}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   807
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   808
void CActiveControl::RequestEp0ControlPacket()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   809
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   810
	TUSB_VERBOSE_PRINT("CActiveControl::RequestEp0ControlPacket()");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   811
	if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   812
	    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   813
	    OstTrace0(TRACE_VERBOSE, CACTIVECONTROL_REQUESTEP0CONTROLPACKET, "CActiveControl::RequestEp0ControlPacket()");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   814
	    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   815
	// A request is issued to read a packet for endpoint 0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   816
	__ASSERT_ALWAYS(!IsActive(), User::Panic(KActivePanic, 660));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   817
	#ifdef	USB_SC
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   818
	TInt r = 0;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   819
	do
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   820
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   821
		r = iEp0Buf.GetBuffer (iEp0Packet,iEp0Size,iEp0Zlp,iStatus);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   822
		TUSB_VERBOSE_PRINT4("Get Buffer Return code %d Status %d PacketPtr 0x%x Size %d", r, iStatus.Int(),(TInt)iEp0Packet,iEp0Size);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   823
		if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   824
		    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   825
		    OstTraceExt4(TRACE_VERBOSE, CACTIVECONTROL_REQUESTEP0CONTROLPACKET_DUP01, "Get Buffer Return code %d Status %d PacketPtr 0x%x Size %d", r, iStatus.Int(),(TInt)iEp0Packet,(TInt)iEp0Size);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   826
		    }
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   827
		test_Value(r, (r == KErrNone) || (r == KErrCompletion) || (r == TEndpointBuffer::KStateChange) || (r == KErrAlternateSettingChanged));
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   828
		if (r == KErrCompletion)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   829
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   830
			// ignore anything except a setup packet
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   831
			if ((TInt)iEp0Size == KSetupPacketSize)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   832
				{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   833
				iEp0SetUpPacket.Copy((TUint8 *)iEp0Packet,iEp0Size);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   834
				r = ProcessEp0ControlPacket();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   835
				}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   836
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   837
		else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   838
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   839
			if (r == KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   840
				{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   841
				iPending = EPendingEp0Read;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   842
				SetActive();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   843
				}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   844
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   845
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   846
	while ((r == KErrCompletion) || (r == TEndpointBuffer::KStateChange) || (r == KErrAlternateSettingChanged));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   847
	#else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   848
	iPort[0].ReadPacket(iStatus,EEndpoint0, iEp0SetUpPacket,KSetupPacketSize);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   849
	iPending = EPendingEp0Read;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   850
	SetActive();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   851
	#endif
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   852
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   853
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   854
void CActiveControl::RunL()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   855
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   856
	TInt r = KErrNone;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   857
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   858
	TUSB_VERBOSE_PRINT("CActiveControl::RunL()");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   859
	if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   860
	    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   861
	    OstTrace0(TRACE_VERBOSE, CACTIVECONTROL_RUNL, "CActiveControl::RunL()");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   862
	    }
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   863
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   864
	switch (iPending)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   865
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   866
		case EPendingNone :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   867
			break;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   868
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   869
		case EPendingEp0Read :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   870
			iPending = EPendingNone;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   871
			if (iStatus != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   872
				{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   873
				TUSB_PRINT1("ActiveControl::Error %d in Ep0 Read Packet", iStatus.Int());
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   874
				OstTrace1(TRACE_NORMAL, CACTIVECONTROL_RUNL_DUP01, "ActiveControl::Error %d in Ep0 Read Packet", iStatus.Int());
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   875
				test(EFalse);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   876
				}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   877
			#ifdef USB_SC
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   878
			// for shared chunks this means that data is available in the buffer
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   879
			// but the data has yet to be transferred to a local buffer
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   880
			RequestEp0ControlPacket();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   881
			#else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   882
			if (ProcessEp0ControlPacket() == KErrCompletion)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   883
				RequestEp0ControlPacket();
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   884
			#endif
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   885
			break;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   886
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   887
		case EPendingTimer :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   888
			iPending = EPendingNone;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   889
			if (iStatus != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   890
				{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   891
				TUSB_PRINT1("ActiveControl::Error %d in Connection Timer Delay", iStatus.Int());
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   892
				OstTrace1(TRACE_NORMAL, CACTIVECONTROL_RUNL_DUP02, "ActiveControl::Error %d in Connection Timer Delay", iStatus.Int());
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   893
				test(EFalse);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   894
				}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   895
			r = iPort[0].DeviceConnectToHost();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   896
			test_KErrNone (r);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   897
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   898
			test.End();
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   899
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   900
			RequestEp0ControlPacket();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   901
			break;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   902
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   903
		case EPendingEject :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   904
			iPending = EPendingNone;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   905
			if (iStatus != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   906
				{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   907
				TUSB_PRINT1("ActiveControl::Error %d in Eject Timer Delay", iStatus.Int());
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   908
				OstTrace1(TRACE_NORMAL, CACTIVECONTROL_RUNL_DUP03, "ActiveControl::Error %d in Eject Timer Delay", iStatus.Int());
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   909
				test(EFalse);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   910
				}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   911
			StopMassStorage(&iPort[0]);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   912
			#ifdef USB_SC
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   913
				iEp0Buf.Close();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   914
			#endif
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   915
			ReConnect();
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   916
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   917
			RequestEp0ControlPacket();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   918
			break;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   919
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   920
		case EPendingCancel :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   921
			iPending = EPendingNone;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   922
			if (iStatus != KErrNone && iStatus != KErrCancel)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   923
				{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   924
				TUSB_PRINT1("ActiveControl::Error %d in Eject Timer Delay", iStatus.Int());
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   925
				OstTrace1(TRACE_NORMAL, CACTIVECONTROL_RUNL_DUP04, "ActiveControl::Error %d in Eject Timer Delay", iStatus.Int());
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   926
				test(EFalse);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   927
				}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   928
		}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   929
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   930
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   931
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   932
TInt CActiveControl::ProcessEp0ControlPacket()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   933
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   934
	TUint16 value = *reinterpret_cast<TUint16*>(&iEp0SetUpPacket[KUsb_Ep0wValueOffset]);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   935
	TUint16 index = *reinterpret_cast<TUint16*>(&iEp0SetUpPacket[KUsb_Ep0wIndexOffset]);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   936
	TUint16 length= *reinterpret_cast<TUint16*>(&iEp0SetUpPacket[KUsb_Ep0wLengthOffset]);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   937
	TUSB_VERBOSE_PRINT3("ProcessEp0ControlPacket length 0x%x value 0x%x index 0x%x",length,value,index);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   938
	if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   939
	    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   940
	    OstTraceExt3(TRACE_VERBOSE, CACTIVECONTROL_PROCESSEP0CONTROLPACKET, "ProcessEp0ControlPacket length 0x%x value 0x%x index 0x%x",length,value,index);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   941
	    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   942
	TRequestStatus ep0Status;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   943
	TUint8 host_ver_major;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   944
	TUint8 host_ver_minor;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   945
	TUint8 host_ver_micro;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   946
	TUint8 usbio_ver_major;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   947
	TUint8 usbio_ver_minor;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   948
	#ifndef USB_SC
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   949
	TBuf8<KMaxControlPacketSize> ep0DataPacket;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   950
	#endif
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   951
	TestParamPtr tpPtr;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   952
	TBool firstSettingThread = (index & KFirstSettingThreadMask) ? ETrue : EFalse;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   953
	TBool lastSettingThread = (index & KLastSettingThreadMask) ? ETrue : EFalse;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   954
	index &= ~(KFirstSettingThreadMask | KLastSettingThreadMask);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   955
    CActiveRW* pActiveRW;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   956
	TInt r;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   957
	TBool sendStatus;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   958
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   959
	if (((iEp0SetUpPacket[KUsb_Ep0RequestTypeOffset] & KUsbRequestType_DestMask) == KUsbRequestType_DestDevice) &&
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   960
		((iEp0SetUpPacket[KUsb_Ep0RequestTypeOffset] & KUsbRequestType_TypeMask) == KUsbRequestType_TypeClass))
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   961
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   962
		TUSB_VERBOSE_PRINT("Received Device Directed setup packet");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   963
		if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   964
		    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   965
		    OstTrace0(TRACE_VERBOSE, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP01, "Received Device Directed setup packet");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   966
		    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   967
		if ((iEp0SetUpPacket[KUsb_Ep0RequestTypeOffset] & KUsbRequestType_DirMask) == KUsbRequestType_DirToDev)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   968
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   969
			iEp0DataBuffer.SetLength(0);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   970
			while (iEp0DataBuffer.Length() < length)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   971
				{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   972
				TUSB_VERBOSE_PRINT("Reading Ep0 data packet");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   973
				if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   974
				    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   975
				    OstTrace0(TRACE_VERBOSE, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP02, "Reading Ep0 data packet");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   976
				    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   977
				#ifdef USB_SC
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   978
				r = iEp0Buf.GetBuffer (iEp0Packet,iEp0Size,iEp0Zlp,ep0Status);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   979
				test_Value(r, r == KErrNone || r == KErrCompletion || (r == KErrAlternateSettingChanged));
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   980
				while (r == KErrNone)
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   981
					{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   982
					TUSB_VERBOSE_PRINT("Waiting for Ep0 data packet");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   983
					if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   984
					    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   985
					    OstTrace0(TRACE_VERBOSE, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP03, "Waiting for Ep0 data packet");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   986
					    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   987
					User::WaitForRequest(ep0Status);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   988
					test_KErrNone(ep0Status.Int());
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   989
					r = iEp0Buf.GetBuffer (iEp0Packet,iEp0Size,iEp0Zlp,ep0Status);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   990
					test_Value(r, r == KErrNone || r == KErrCompletion || (r == KErrAlternateSettingChanged));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   991
					}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   992
				TUSB_VERBOSE_PRINT1("Ep0 data packet - size %d",iEp0Size);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   993
				if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   994
				    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   995
				    OstTrace1(TRACE_VERBOSE, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP04, "Ep0 data packet - size %d",iEp0Size);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   996
				    }
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
   997
				iEp0DataBuffer.Append((TUint8 *)iEp0Packet,iEp0Size);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   998
				#else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   999
				TUint16 packetLength = Min(length-iEp0DataBuffer.Length(),iEp0PacketSize);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1000
				iPort[0].ReadPacket(ep0Status, EEndpoint0, ep0DataPacket, packetLength);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1001
				User::WaitForRequest(ep0Status);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1002
				if (ep0Status == KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1003
					{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1004
					iEp0DataBuffer.Append(ep0DataPacket);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1005
					}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1006
				else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1007
					{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1008
					TUSB_PRINT1("ActiveControl::Error %d in Ep0 Read Data Packet", ep0Status.Int());
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1009
					OstTrace1(TRACE_NORMAL, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP05, "ActiveControl::Error %d in Ep0 Read Data Packet", ep0Status.Int());
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1010
					test(EFalse);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1011
					return KErrNone;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1012
					}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1013
				#endif
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1014
				}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1015
			TUSB_VERBOSE_PRINT4("Setup ToDevice Type %d length %d value %d index %d",iEp0SetUpPacket[KUsb_Ep0RequestOffset],length,value,index);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1016
			if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1017
			    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1018
			    OstTraceExt4(TRACE_VERBOSE, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP06, "Setup ToDevice Type %d length %d value %d index %d",iEp0SetUpPacket[KUsb_Ep0RequestOffset],length,value,index);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1019
			    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1020
			sendStatus = ETrue;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1021
			switch (iEp0SetUpPacket[KUsb_Ep0RequestOffset])
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1022
				{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1023
				case EStop :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1024
					// send this now as the port will be disconnected
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1025
					sendStatus = EFalse;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1026
					r = iPort[0].SendEp0StatusPacket();
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1027
					test_KErrNone(r);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1028
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1029
					if (value && firstBulkOutEndpoint > 0)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1030
						{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1031
						PrintHostLog();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1032
						}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1033
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1034
					for (TInt portNumber = 0; portNumber < iTotalChannels; portNumber++)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1035
						{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1036
						// base class cancel -> calls our DoCancel
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1037
						delete iDeviceStateNotifier[portNumber];
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1038
						delete iStallNotifier[portNumber];
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1039
						if (portNumber == 0)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1040
							{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1041
							r = iPort[portNumber].RemoveStringDescriptor(stridx1);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1042
							if (r != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1043
								{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1044
								TUSB_PRINT1("Error %d on string removal", r);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1045
								OstTrace1(TRACE_NORMAL, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP07, "Error %d on string removal", r);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1046
								}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1047
							r = iPort[portNumber].RemoveStringDescriptor(stridx2);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1048
							if (r != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1049
								{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1050
								TUSB_PRINT1("Error %d on string removal", r);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1051
								OstTrace1(TRACE_NORMAL, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP08, "Error %d on string removal", r);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1052
								}
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1053
							}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1054
						TUSB_VERBOSE_PRINT1 ("Closing USB channel number %d",portNumber);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1055
						if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1056
						    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1057
						    OstTrace1 (TRACE_VERBOSE, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP09, "Closing USB channel number %d",portNumber);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1058
						    }
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  1059
#ifdef USB_SC
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  1060
						RChunk* commChunk;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  1061
						User::LeaveIfError(iPort[portNumber].GetDataTransferChunk(commChunk));
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  1062
						commChunk->Close(); 
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  1063
#endif
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1064
						iPort[portNumber].Close();											// close USB channel
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1065
						}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1066
					TUSB_VERBOSE_PRINT("Closing Idle Counter Thread");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1067
					if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1068
					    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1069
					    OstTrace0(TRACE_VERBOSE, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP10, "Closing Idle Counter Thread");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1070
					    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1071
					iIdleCounter->iCommand = ETestIdleCounterClose;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1072
					iIdleCounterChunk.Close();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1073
					// Allow time for low-priority thread to close
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1074
					User::After(100000);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1075
					iIdleCounterThread.Close();
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1076
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1077
					CActiveScheduler::Stop();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1078
					break;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1079
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1080
				case EVersion :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1081
					TUSB_PRINT("Receiving t_usb_host version");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1082
					OstTrace0(TRACE_NORMAL, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP11, "Receiving t_usb_host version");
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1083
					host_ver_major = iEp0DataBuffer[0];
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1084
					host_ver_minor = iEp0DataBuffer[1];
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1085
					host_ver_micro = iEp0DataBuffer[2];
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1086
					usbio_ver_major = iEp0DataBuffer[3];
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1087
					usbio_ver_minor = iEp0DataBuffer[4];
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1088
					TUSB_PRINT5("Host-side: t_usb_host v%d.%d.%d  USBIO v%d.%d\n",
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1089
						host_ver_major, host_ver_minor, host_ver_micro,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1090
						usbio_ver_major, usbio_ver_minor);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1091
					OstTraceExt5(TRACE_NORMAL, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP12, "Host-side: t_usb_host v%d.%d.%d  USBIO v%d.%d\n",
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1092
						host_ver_major, host_ver_minor, host_ver_micro,
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1093
						usbio_ver_major, usbio_ver_minor);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1094
					if (host_ver_major < KHostVersionMajor)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1095
						{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1096
						TUSB_PRINT1("t_usb_host version not sufficient (need at least v%d.x.x)\n",KHostVersionMajor);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1097
						OstTrace1(TRACE_NORMAL, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP13, "t_usb_host version not sufficient (need at least v%d.x.x)\n",KHostVersionMajor);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1098
						User::Leave(-1);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1099
						return KErrNone;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1100
						}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1101
					// Just using '<' instead of the seemingly absurd '<= && !==' doesn't work without
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1102
					// GCC compiler warning because Kxxx can also be zero (in which case there's no '<').
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1103
					else if ((host_ver_minor <= KHostVersionMinor) &&
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1104
			 				!(host_ver_minor == KHostVersionMinor))
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1105
						{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1106
						TUSB_PRINT2("t_usb_host version not sufficient (need at least v%d.%d.x)\n",
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1107
							KHostVersionMajor, KHostVersionMinor);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1108
						OstTraceExt2(TRACE_NORMAL, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP14, "t_usb_host version not sufficient (need at least v%d.%d.x)\n",
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1109
							KHostVersionMajor, KHostVersionMinor);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1110
						test(EFalse);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1111
						return KErrNone;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1112
						}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1113
					// Just using '<' instead of the seemingly absurd '<= && !==' doesn't work without
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1114
					// GCC compiler warning because Kxxx can also be zero (in which case there's no '<').
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1115
					else if ((host_ver_micro <= KHostVersionMicro) &&
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1116
			 				!(host_ver_micro == KHostVersionMicro))
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1117
						{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1118
						TUSB_PRINT3("USBRFLCT version not sufficient (need at least v%d.%d.%d)\n",
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1119
							KHostVersionMajor, KHostVersionMinor, KHostVersionMicro);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1120
						OstTraceExt3(TRACE_NORMAL, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP15, "USBRFLCT version not sufficient (need at least v%d.%d.%d)\n",
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1121
									KHostVersionMajor, KHostVersionMinor, KHostVersionMicro);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1122
						test(EFalse);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1123
						return KErrNone;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1124
						}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1125
					break;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1126
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1127
				case ETestParam :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1128
					tpPtr = (TestParamPtr)(&iEp0DataBuffer[0]);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1129
					TUSB_VERBOSE_PRINT4("Test Params - interface %d repeat %d settingRepeat %d beforeIndex %d",tpPtr->interfaceNumber,tpPtr->repeat,tpPtr->settingRepeat,tpPtr->beforeIndex);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1130
					if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1131
					    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1132
					    OstTraceExt4(TRACE_VERBOSE, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP16, "Test Params - interface %d repeat %d settingRepeat %d beforeIndex %d",tpPtr->interfaceNumber,tpPtr->repeat,tpPtr->settingRepeat,tpPtr->beforeIndex);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1133
					    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1134
					if (index >= KMaxConcurrentTests)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1135
						{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1136
						TUSB_PRINT2("Test index %d is greater than maximum allowed (%d) concurrent tests",index,KMaxConcurrentTests);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1137
						OstTraceExt2(TRACE_NORMAL, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP17, "Test index %d is greater than maximum allowed (%d) concurrent tests",index,KMaxConcurrentTests);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1138
						test(EFalse);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1139
						return KErrNone;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1140
						}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1141
					// Create Reader/Writer active object
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1142
					pActiveRW = CActiveRW::NewL(iConsole, &iPort[gInterfaceConfig[tpPtr->interfaceNumber][tpPtr->alternateSetting]->iPortNumber], iFs, index, lastSettingThread);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1143
					if (!pActiveRW)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1144
						{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1145
						TUSB_PRINT("Failed to create reader/writer");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1146
						OstTrace0(TRACE_NORMAL, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP18, "Failed to create reader/writer");
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1147
						test(EFalse);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1148
						return KErrNone;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1149
						}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1150
					TUSB_VERBOSE_PRINT("Created reader/writer");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1151
					if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1152
					    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1153
					    OstTrace0(TRACE_VERBOSE, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP19, "Created reader/writer");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1154
					    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1155
					pActiveRW->SetTestParams(tpPtr);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1156
					switch (value)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1157
						{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1158
					case 'X' :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1159
						test.Start (_L("Xml"));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1160
						break;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1161
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1162
					case 'L' :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1163
						test.Start (_L("Loop"));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1164
						pActiveRW->SetTransferMode(ELoop);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1165
						gAltSettingOnNotify = ETrue;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1166
						if (tpPtr->settingRepeat && !firstSettingThread)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1167
							{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1168
							pActiveRW->Suspend(ESuspend);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1169
							}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1170
						else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1171
							{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1172
							pActiveRW->StartOrSuspend();
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1173
							}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1174
						break;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1175
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1176
					case 'C' :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1177
						test.Start (_L("Compare"));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1178
						pActiveRW->SetTransferMode(ELoopComp);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1179
						gAltSettingOnNotify = ETrue;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1180
						if (tpPtr->settingRepeat && !firstSettingThread)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1181
							{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1182
							pActiveRW->Suspend(ESuspend);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1183
							}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1184
						else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1185
							{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1186
							pActiveRW->StartOrSuspend();
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1187
							}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1188
						break;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1189
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1190
					case 'S' :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1191
						test.Start (_L("Stream"));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1192
						if (tpPtr->outPipe > KMaxEndpointsPerClient)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1193
							{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1194
							pActiveRW->SetTransferMode(ETransmitOnly);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1195
							gAltSettingOnNotify = ETrue;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1196
							if (tpPtr->settingRepeat && !firstSettingThread)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1197
								{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1198
								pActiveRW->Suspend(ESuspend);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1199
								}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1200
							else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1201
								{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1202
								pActiveRW->StartOrSuspend();
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1203
								}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1204
							}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1205
						else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1206
							{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1207
							pActiveRW->SetTransferMode(EReceiveOnly);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1208
							gAltSettingOnNotify = ETrue;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1209
							if (tpPtr->settingRepeat && !firstSettingThread)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1210
								{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1211
								pActiveRW->Suspend(ESuspend);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1212
								}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1213
							else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1214
								{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1215
								pActiveRW->StartOrSuspend();
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1216
								}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1217
							}
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1218
						break;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1219
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1220
					case 'F' :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1221
						test.Start (_L("File"));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1222
						// send this now as the file setup takes a long time
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1223
						sendStatus = EFalse;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1224
						r = iPort[0].SendEp0StatusPacket();
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1225
						test_KErrNone(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1226
						if (tpPtr->outPipe > KMaxEndpointsPerClient)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1227
							{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1228
							pActiveRW->SetTransferMode(ETransmitOnly);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1229
							TInt maxFileSize = tpPtr->maxSize * tpPtr->repeat;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1230
							pActiveRW->ReadFromDisk((TChar)tpPtr->minSize,maxFileSize);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1231
							gAltSettingOnNotify = ETrue;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1232
							if (tpPtr->settingRepeat && !firstSettingThread)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1233
								{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1234
								pActiveRW->Suspend(ESuspend);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1235
								}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1236
							else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1237
								{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1238
								pActiveRW->StartOrSuspend();
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1239
								}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1240
							}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1241
						else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1242
							{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1243
							pActiveRW->SetTransferMode(EReceiveOnly);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1244
							pActiveRW->WriteToDisk((TChar)tpPtr->minSize);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1245
							gAltSettingOnNotify = ETrue;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1246
							if (tpPtr->settingRepeat && !firstSettingThread)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1247
								{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1248
								pActiveRW->Suspend(ESuspend);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1249
								}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1250
							else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1251
								{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1252
								pActiveRW->StartOrSuspend();
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1253
								}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1254
							}
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1255
						break;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1256
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1257
					default :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1258
						TUSB_PRINT1("Invalid test value %X",value);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1259
						OstTrace1(TRACE_NORMAL, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP20, "Invalid test value %X",value);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1260
						test(EFalse);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1261
						}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1262
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1263
					gRW[index] = pActiveRW;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1264
					break;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1265
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1266
				case ETestResult :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1267
					TUSB_VERBOSE_PRINT2 ("Test index %d complete - value %d",index,value);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1268
					if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1269
					    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1270
					    OstTraceExt2 (TRACE_VERBOSE, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP21, "Test index %d complete - value %d",index,value);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1271
					    }
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1272
					// if failure, send this first to prevent panic corrupting EP0
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1273
					if (!value)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1274
						{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1275
						sendStatus = EFalse;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1276
						r = iPort[0].SendEp0StatusPacket();
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1277
						}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1278
					if (index < KMaxConcurrentTests)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1279
						{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1280
						if (gRW[index] != NULL)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1281
							{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1282
							gRW[index]->TestComplete (value);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1283
							break;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1284
							}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1285
						}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1286
					if (index == KHostErrorIndex)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1287
						{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1288
						if (!value)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1289
							{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1290
							TUSB_PRINT("Host Test Fail");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1291
							OstTrace0(TRACE_NORMAL, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP22, "Host Test Fail");
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1292
							}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1293
						}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1294
					else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1295
						{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1296
						TUSB_PRINT2("Invalid test index %d for result %d",index,value);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1297
						OstTraceExt2(TRACE_NORMAL, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP23, "Invalid test index %d for result %d",index,value);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1298
						}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1299
					if (!value)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1300
						{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1301
						test(EFalse);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1302
						}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1303
					break;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1304
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1305
				case ETestFail :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1306
					User::Leave(-1);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1307
					break;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1308
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1309
				case ETestConnect :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1310
					test.Start (_L("Connect"));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1311
					sendStatus = EFalse;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1312
					r = iPort[0].SendEp0StatusPacket();
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1313
					if (iSoftwareConnect)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1314
						{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1315
						r = iPort[0].DeviceDisconnectFromHost();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1316
						test_KErrNone (r);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1317
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1318
						TUint32 waitTime = (TUint32)value * 1000;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1319
						if (waitTime == 0)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1320
							{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1321
							waitTime = 5000;		// default to 5 milliseconds
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1322
							}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1323
						iTimer.After(iStatus,waitTime);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1324
						iPending = EPendingTimer;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1325
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1326
						SetActive();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1327
						}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1328
					else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1329
						{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1330
						iConsole->Printf(_L("This device does not support software\n"));
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1331
						OstTrace0(TRACE_NORMAL, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP24, "This device does not support software\n");
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1332
						iConsole->Printf(_L("disconnect/reconnect\n"));
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1333
						OstTrace0(TRACE_NORMAL, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP25, "disconnect/reconnect\n");
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1334
						iConsole->Printf(_L("Please physically unplug and replug\n"));
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1335
						OstTrace0(TRACE_NORMAL, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP26, "Please physically unplug and replug\n");
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1336
						iConsole->Printf(_L("the USB cable NOW... "));
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1337
						OstTrace0(TRACE_NORMAL, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP27, "the USB cable NOW... ");
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1338
						test.End ();
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1339
						}
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1340
					break;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1341
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1342
				case ETestDisconnect :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1343
					test.Start (_L("Disconnect"));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1344
					// send this now as the port will be disconnected
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1345
					sendStatus = EFalse;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1346
					r = iPort[0].SendEp0StatusPacket();
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1347
					if (iSoftwareConnect)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1348
						{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1349
						r = iPort[0].DeviceDisconnectFromHost();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1350
						test_KErrNone (r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1351
						}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1352
					else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1353
						{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1354
						iConsole->Printf(_L("This device does not support software\n"));
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1355
						OstTrace0(TRACE_NORMAL, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP28, "This device does not support software\n");
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1356
						iConsole->Printf(_L("disconnect/reconnect\n"));
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1357
						OstTrace0(TRACE_NORMAL, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP29, "disconnect/reconnect\n");
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1358
						iConsole->Printf(_L("Please physically unplug and replug\n"));
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1359
						OstTrace0(TRACE_NORMAL, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP30, "Please physically unplug and replug\n");
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1360
						iConsole->Printf(_L("the USB cable NOW... "));
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1361
						OstTrace0(TRACE_NORMAL, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP31, "the USB cable NOW... ");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1362
						}
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1363
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1364
					test.End ();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1365
					break;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1366
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1367
				case ETestMassStorage :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1368
					test.Start (_L("Select Mass Storage"));
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1369
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1370
					// send this now as the port will be disconnected
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1371
					sendStatus = EFalse;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1372
					r = iPort[0].SendEp0StatusPacket();
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1373
					test_KErrNone(r);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1374
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1375
					for (TInt portNumber = 0; portNumber < iTotalChannels; portNumber++)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1376
						{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1377
						delete iDeviceStateNotifier[portNumber];
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1378
						delete iStallNotifier[portNumber];
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1379
						if (portNumber == 0)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1380
							{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1381
							r = iPort[portNumber].RemoveStringDescriptor(stridx1);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1382
							if (r != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1383
								{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1384
								TUSB_PRINT1("Error %d on string removal", r);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1385
								OstTrace1(TRACE_NORMAL, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP32, "Error %d on string removal", r);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1386
								}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1387
							r = iPort[portNumber].RemoveStringDescriptor(stridx2);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1388
							if (r != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1389
								{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1390
								TUSB_PRINT1("Error %d on string removal", r);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1391
								OstTrace1(TRACE_NORMAL, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP33, "Error %d on string removal", r);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1392
								}
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1393
							}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1394
						TUSB_VERBOSE_PRINT1 ("Closing USB channel number %d",portNumber);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1395
						if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1396
						    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1397
						    OstTrace1 (TRACE_VERBOSE, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP34, "Closing USB channel number %d",portNumber);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1398
						    }
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  1399
#ifdef USB_SC
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  1400
						RChunk* commChunk;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  1401
						User::LeaveIfError(iPort[portNumber].GetDataTransferChunk(commChunk));
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  1402
						commChunk->Close();	
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1403
#endif							
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1404
						iPort[portNumber].Close();											// close USB channel
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1405
						}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1406
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1407
					r = iPort[0].Open(0);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1408
					test_KErrNone(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1409
					TUSB_VERBOSE_PRINT("Successfully opened USB port");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1410
					if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1411
					    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1412
					    OstTrace0(TRACE_VERBOSE, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP35, "Successfully opened USB port");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1413
					    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1414
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1415
					SetupDescriptors(iLddPtr, &iPort[0],value);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1416
					StartMassStorage(&iPort[0]);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1417
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1418
					test.Next (_L("Enumeration..."));
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1419
					r = ReEnumerate();
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1420
					test_KErrNone(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1421
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1422
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1423
					test.End ();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1424
					break;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1425
				}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1426
			if (sendStatus)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1427
				{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1428
				r = iPort[0].SendEp0StatusPacket();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1429
				if (r != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1430
					{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1431
					TUSB_PRINT1("ActiveControl::Error %d in Ep0 Send Status Packet", r);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1432
					OstTrace1(TRACE_NORMAL, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP36, "ActiveControl::Error %d in Ep0 Send Status Packet", r);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1433
					test(EFalse);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1434
					return KErrNone;
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1435
					}
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1436
				}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1437
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1438
		else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1439
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1440
			if ((iEp0SetUpPacket[KUsb_Ep0RequestOffset] == EVersion) && length > 0)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1441
				{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1442
				TUSB_PRINT4("Sending t_usb_device version: %d.%d.%d length %d \n", KDeviceVersionMajor, KDeviceVersionMinor, KDeviceVersionMicro, length);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1443
				OstTraceExt4(TRACE_NORMAL, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP37, "Sending t_usb_device version: %u.%u.%u length %u \n", KDeviceVersionMajor, KDeviceVersionMinor, KDeviceVersionMicro, (TUint32)length);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1444
				#ifdef	USB_SC
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1445
				TUint8 *ep0Buffer;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1446
				TUint8 *ep0BufPtr;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1447
				TUint ep0Length;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1448
				iEp0Buf.GetInBufferRange(((TAny*&)ep0Buffer),ep0Length);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1449
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1450
				ep0BufPtr = ep0Buffer;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1451
				*(ep0Buffer++) = KDeviceVersionMajor;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1452
				*(ep0Buffer++) = KDeviceVersionMinor;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1453
				*(ep0Buffer++) = KDeviceVersionMicro;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1454
				TUint8 i=3;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1455
				if (iConfigFileName->Length())
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1456
					{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1457
					for(TUint8 j=0; j < iConfigFileName->Length() && i < length; j++)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1458
						{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1459
						i++;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1460
						*(ep0Buffer++) = (*iConfigFileName)[j];
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1461
						}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1462
					}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1463
				if (iScriptFileName->Length())
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1464
					{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1465
					for(TUint8 j=0; j < iScriptFileName->Length() && i < length; j++)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1466
						{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1467
						i++;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1468
						*(ep0Buffer++) = (*iScriptFileName)[j];
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1469
						}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1470
					}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1471
				*(ep0Buffer++) = 0;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1472
				r = iEp0Buf.WriteBuffer(ep0BufPtr,length,FALSE,ep0Status);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1473
				test_KErrNone(r);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1474
				#else
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1475
				iEp0DataBuffer.FillZ(length);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1476
				iEp0DataBuffer[0] = KDeviceVersionMajor;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1477
				iEp0DataBuffer[1] = KDeviceVersionMinor;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1478
				iEp0DataBuffer[2] = KDeviceVersionMicro;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1479
				iEp0DataBuffer.SetLength(3);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1480
				iEp0DataBuffer.Append (*iConfigFileName);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1481
				iEp0DataBuffer.Append (*iScriptFileName);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1482
				iEp0DataBuffer.SetLength(length);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1483
				iPort[0].Write(ep0Status, EEndpoint0, iEp0DataBuffer, length);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1484
				#endif
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1485
				User::WaitForRequest(ep0Status);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1486
				test_KErrNone(ep0Status.Int());
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1487
				}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1488
			else if ((iEp0SetUpPacket[KUsb_Ep0RequestOffset] == ETestIdleCounter) && length >= sizeof(TInt64))
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1489
				{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1490
				// for a non zero request value if any tests still active send zero otherwise the counter value
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1491
				TInt64 val = (value == 0 || gActiveTestCount == 0) ? iIdleCounter->iCounter : 0;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1492
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1493
				TUSB_PRINT1("Sending counter value %Ld\n", val);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1494
				OstTraceExt1(TRACE_NORMAL, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP38, "Sending counter value %Ld\n", val);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1495
				#ifdef	USB_SC
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1496
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1497
				TUint8 *ep0Buffer;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1498
				TUint ep0Length;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1499
				iEp0Buf.GetInBufferRange(((TAny*&)ep0Buffer),ep0Length);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1500
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1501
				*((TInt64*) ep0Buffer) = val;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1502
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1503
				r = iEp0Buf.WriteBuffer(ep0Buffer,length,FALSE,ep0Status);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1504
				test_KErrNone(r);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1505
				#else
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1506
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1507
				iEp0DataBuffer.FillZ(length);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1508
				*((TInt64*) iEp0DataBuffer.Ptr()) = val;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1509
				iEp0DataBuffer.SetLength(sizeof(TInt64));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1510
				iPort[0].Write(ep0Status, EEndpoint0, iEp0DataBuffer, length);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1511
				#endif
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1512
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1513
				User::WaitForRequest(ep0Status);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1514
				test_KErrNone(ep0Status.Int());
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1515
				}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1516
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1517
		if (iEp0SetUpPacket[KUsb_Ep0RequestOffset] != EStop && iEp0SetUpPacket[KUsb_Ep0RequestOffset] != ETestConnect &&
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1518
			iEp0SetUpPacket[KUsb_Ep0RequestOffset] != ETestMassStorage)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1519
			{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1520
			return KErrCompletion;
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1521
			}
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1522
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1523
	else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1524
		{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1525
		TUSB_PRINT1("Error : Incorrect SetUp Packet Request Type %X", iEp0SetUpPacket[0]);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1526
		OstTrace1(TRACE_NORMAL, CACTIVECONTROL_PROCESSEP0CONTROLPACKET_DUP39, "Error : Incorrect SetUp Packet Request Type %X", iEp0SetUpPacket[0]);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1527
		test(EFalse);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1528
		return KErrNone;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1529
		}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1530
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1531
	return KErrNone;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1532
	}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1533
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1534
void CActiveControl::PrintHostLog()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1535
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1536
	TRequestStatus status = 0;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1537
	wchar_t lineBuf[128];
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1538
	TUint j = 0;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1539
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1540
	TUSB_VERBOSE_PRINT("Reading Host log file\n");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1541
	if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1542
	    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1543
	    OstTrace0(TRACE_VERBOSE, CACTIVECONTROL_PRINTHOSTLOG, "Reading Host log file\n");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1544
	    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1545
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1546
	#ifdef USB_SC
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1547
	TInt r = 0;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1548
	TEndpointBuffer scReadBuf;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1549
	TAny * scReadData;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1550
	TUint8 * scCharPtr;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1551
	TUint readSize;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1552
	TBool readZlp = EFalse;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1553
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1554
	r = iPort->OpenEndpoint(scReadBuf,firstBulkOutEndpoint);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1555
	test_KErrNone(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1556
	do
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1557
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1558
		r = scReadBuf.GetBuffer (scReadData,readSize,readZlp,status);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1559
		// The following line can be reinstated once the shared chunk failure is fixed
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1560
		// that prevents the readZlp flag from being set
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1561
		// test_Value(r, (r == KErrNone) || (r == KErrCompletion) || (r == KErrEof));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1562
		if (r == KErrCompletion)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1563
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1564
			TUSB_VERBOSE_PRINT1("Host log file %d bytes read\n",readSize);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1565
			if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1566
			    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1567
			    OstTrace1(TRACE_VERBOSE, CACTIVECONTROL_PRINTHOSTLOG_DUP01, "Host log file %d bytes read\n",readSize);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1568
			    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1569
			scCharPtr = (TUint8 *)scReadData;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1570
			// Print the host log file
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1571
			for (TUint i = 0; i < readSize; i++)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1572
				{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1573
				if (* scCharPtr == '\r')
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1574
					{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1575
					lineBuf[j++] = '\0';
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1576
					OstTraceExt1(TRACE_NORMAL, CACTIVECONTROL_PRINTHOSTLOG_DUP02, "%S",*lineBuf);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1577
					j = 0;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1578
					}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1579
				else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1580
					{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1581
					if (* scCharPtr != '\n')
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1582
						{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1583
						lineBuf[j++] = * scCharPtr;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1584
						}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1585
					}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1586
				scCharPtr++;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1587
				}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1588
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1589
		if (r == KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1590
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1591
			User::WaitForRequest(status);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1592
			test_KErrNone(status.Int());
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1593
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1594
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1595
	while (r >= KErrNone && !readZlp);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1596
	#else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1597
	TPtr8 readBuf((TUint8 *)User::Alloc(KHostLogFileSize),KHostLogFileSize,KHostLogFileSize);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1598
	iPort[0].ReadUntilShort(status, (TEndpointNumber)firstBulkOutEndpoint, readBuf);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1599
	User::WaitForRequest(status);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1600
	test_KErrNone(status.Int());
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1601
	TUSB_VERBOSE_PRINT1("Host log file %d bytes read\n",readBuf.Length());
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1602
	if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1603
	    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1604
	    OstTrace1(TRACE_VERBOSE, CACTIVECONTROL_PRINTHOSTLOG_DUP03, "Host log file %d bytes read\n",readBuf.Length());
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1605
	    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1606
	for (TUint i = 0; i < readBuf.Length(); i++)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1607
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1608
		if (readBuf[i] == '\r')
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1609
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1610
			lineBuf[j++] = '\0';
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1611
			OstTraceExt1(TRACE_NORMAL, CACTIVECONTROL_PRINTHOSTLOG_DUP04, "%s",*lineBuf);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1612
			j = 0;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1613
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1614
		else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1615
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1616
			if (readBuf[i] != '\n')
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1617
				{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1618
				lineBuf[j++] = readBuf[i];
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1619
				}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1620
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1621
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1622
	User::Free ((TAny *)readBuf.Ptr());
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1623
	#endif
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1624
	}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1625
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1626
void CActiveControl::QueryUsbClientL(LDDConfigPtr aLddPtr, RDEVCLIENT* aPort)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1627
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1628
	// Get device/endpoint capabilities
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1629
	//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1630
	// A TPckg, or TPckBuf was not used in the following, because
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1631
	//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1632
	//	 TPckgBuf<TUsbcEndpointData[KUsbcMaxEndpoints]> databuf;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1633
	//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1634
	// doesn't work. Also,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1635
	//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1636
	//	 TUsbcEndpointData data[KUsbcMaxEndpoints];
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1637
	//	 TPckgBuf<TUsbcEndpointData[KUsbcMaxEndpoints]> databuf(data);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1638
	//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1639
	// doesn't work. Also,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1640
	//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1641
	//	 TUsbcEndpointData data[KUsbcMaxEndpoints];
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1642
	//	 TPckgBuf<TUsbcEndpointData[]> databuf(data);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1643
	//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1644
	// doesn't work.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1645
	// So we seem to have to stick to the ugly cast below.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1646
	//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1647
	//	 TUsbcEndpointData data[KUsbcMaxEndpoints];
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1648
	//	 TPtr8 databuf(reinterpret_cast<TUint8*>(data), sizeof(data), sizeof(data));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1649
	//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1650
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1651
	// Device
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1652
	// === Device Descriptor
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1653
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1654
	test.Start(_L("Query device and Endpoint Capabilities"));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1655
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1656
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1657
	TUsbDeviceCaps d_caps;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1658
	TInt r = aPort->DeviceCaps(d_caps);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1659
	test_KErrNone(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1660
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1661
	const TInt n = d_caps().iTotalEndpoints;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1662
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1663
	TUSB_PRINT("###  USB device capabilities:");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1664
	OstTrace0(TRACE_NORMAL, CACTIVECONTROL_QUERYUSBCLIENTL, "###  USB device capabilities:");
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1665
	TUSB_PRINT1("Number of endpoints:                %d", n);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1666
	OstTrace1(TRACE_NORMAL, CACTIVECONTROL_QUERYUSBCLIENTL_DUP01, "Number of endpoints:                %d", n);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1667
	TUSB_PRINT1("Supports Software-Connect:          %s",
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1668
		d_caps().iConnect ? _S("yes") : _S("no"));
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1669
	OstTraceExt1(TRACE_NORMAL, CACTIVECONTROL_QUERYUSBCLIENTL_DUP02, "Supports Software-Connect:          %s",
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1670
				d_caps().iConnect ? _L("yes") : _S("no"));
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1671
	TUSB_PRINT1("Device is Self-Powered:             %s",
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1672
		d_caps().iSelfPowered ? _S("yes") : _S("no"));
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1673
	OstTraceExt1(TRACE_NORMAL, CACTIVECONTROL_QUERYUSBCLIENTL_DUP03, "Device is Self-Powered:             %s",
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1674
				d_caps().iSelfPowered ? _L("yes") : _L("no"));
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1675
	TUSB_PRINT1("Supports Remote-Wakeup:             %s",
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1676
		d_caps().iRemoteWakeup ? _S("yes") : _S("no"));
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1677
	OstTraceExt1(TRACE_NORMAL, CACTIVECONTROL_QUERYUSBCLIENTL_DUP04, "Supports Remote-Wakeup:             %s",
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1678
				d_caps().iRemoteWakeup ? _L("yes") : _L("no"));
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1679
	TUSB_PRINT1("Supports High-speed:                %s",
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1680
		d_caps().iHighSpeed ? _S("yes") : _S("no"));
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1681
	OstTraceExt1(TRACE_NORMAL, CACTIVECONTROL_QUERYUSBCLIENTL_DUP05, "Supports High-speed:                %s",
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1682
				d_caps().iHighSpeed ? _L("yes") : _L("no"));
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1683
	TUSB_PRINT1("Supports unpowered cable detection: %s\n",
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1684
		(d_caps().iFeatureWord1 & KUsbDevCapsFeatureWord1_CableDetectWithoutPower) ?
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1685
		_S("yes") : _S("no"));
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1686
	OstTraceExt1(TRACE_NORMAL, CACTIVECONTROL_QUERYUSBCLIENTL_DUP06, "Supports unpowered cable detection: %s\n",
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1687
				(d_caps().iFeatureWord1 & KUsbDevCapsFeatureWord1_CableDetectWithoutPower) ?
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1688
				_L("yes") : _L("no"));
90
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
  1689
	TUSB_PRINT1("Supports endpoint resource allocation v2 scheme: %s\n",
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1690
		(d_caps().iFeatureWord1 & KUsbDevCapsFeatureWord1_EndpointResourceAllocV2) ?
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1691
		_S("yes") : _S("no"));
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1692
	OstTraceExt1(TRACE_NORMAL, CACTIVECONTROL_QUERYUSBCLIENTL_DUP07, "Supports endpoint resource allocation v2 scheme: %s\n",
90
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
  1693
				(d_caps().iFeatureWord1 & KUsbDevCapsFeatureWord1_EndpointResourceAllocV2) ?
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1694
				_L("yes") : _L("no"));
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1695
	TUSB_PRINT("");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1696
	OstTrace0(TRACE_NORMAL, CACTIVECONTROL_QUERYUSBCLIENTL_DUP08, "");
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1697
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1698
	iSoftwareConnect = d_caps().iConnect;					// we need to remember this
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1699
	test_Equal(aLddPtr->iSoftConnect,iSoftwareConnect);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1700
90
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
  1701
	iSupportResourceAllocationV2 = ((d_caps().iFeatureWord1 & KUsbDevCapsFeatureWord1_EndpointResourceAllocV2) != 0);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1702
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1703
	// only check capabilities if set; therefore allowing them to be disabled
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1704
	if (aLddPtr->iSelfPower)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1705
		{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1706
		test(d_caps().iSelfPowered);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1707
		}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1708
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1709
	// only check capabilities if set; therefore allowing them to be disabled
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1710
	if (aLddPtr->iRemoteWakeup)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1711
		{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1712
		test(d_caps().iRemoteWakeup);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1713
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1714
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1715
	test_Equal(d_caps().iFeatureWord1 & KUsbDevCapsFeatureWord1_CableDetectWithoutPower,aLddPtr->iFeatures);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1716
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1717
	// only check capability if set; therefore allowing it to be disabled
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1718
	if (aLddPtr->iHighSpeed)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1719
		{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1720
		test(d_caps().iHighSpeed);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1721
		}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1722
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1723
	test_Equal(aLddPtr->iNumEndpoints,n);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1724
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1725
	// Endpoints
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1726
	TUsbcEndpointData data[KUsbcMaxEndpoints];
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1727
	TPtr8 dataptr(reinterpret_cast<TUint8*>(data), sizeof(data), sizeof(data));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1728
	r = aPort->EndpointCaps(dataptr);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1729
	test_KErrNone(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1730
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1731
	TUSB_PRINT("### USB device endpoint capabilities:");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1732
	OstTrace0(TRACE_NORMAL, CACTIVECONTROL_QUERYUSBCLIENTL_DUP09, "### USB device endpoint capabilities:");
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1733
	for (TInt i = 0; i < n; i++)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1734
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1735
		const TUsbcEndpointCaps* caps = &data[i].iCaps;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1736
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1737
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1738
		TBuf<40> sizeStr(_S("unknown"));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1739
		if (caps->iSizes == KUsbEpNotAvailable)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1740
			{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1741
			sizeStr = _S("Not Available");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1742
			}
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1743
		else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1744
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1745
			sizeStr.SetLength(0);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1746
			if (caps->iSizes & KUsbEpSizeCont)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1747
				sizeStr.Append(_S(" Continuous"),11);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1748
			if (caps->iSizes & KUsbEpSize8)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1749
				sizeStr.Append(_S(" 8"),2);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1750
			if (caps->iSizes & KUsbEpSize16)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1751
				sizeStr.Append(_S(" 16"),3);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1752
			if (caps->iSizes & KUsbEpSize32)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1753
				sizeStr.Append(_S(" 32"),3);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1754
			if (caps->iSizes & KUsbEpSize64)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1755
				sizeStr.Append(_S(" 64"),3);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1756
			if (caps->iSizes & KUsbEpSize128)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1757
				sizeStr.Append(_S(" 128"),4);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1758
			if (caps->iSizes & KUsbEpSize256)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1759
				sizeStr.Append(_S(" 256"),4);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1760
			if (caps->iSizes & KUsbEpSize512)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1761
				sizeStr.Append(_S(" 512"),4);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1762
			if (caps->iSizes & KUsbEpSize1023)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1763
				sizeStr.Append(_S(" 1023"),5);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1764
			if (caps->iSizes & KUsbEpSize1024)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1765
				sizeStr.Append(_S(" 1024"),5);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1766
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1767
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1768
		TBuf<40> typeStr(_S("unknown"));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1769
		if (caps->iTypesAndDir == KUsbEpNotAvailable)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1770
			typeStr = _S("Not Available");
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1771
		if (caps->iTypesAndDir & (KUsbEpTypeControl | KUsbEpTypeBulk | KUsbEpTypeInterrupt | KUsbEpTypeIsochronous))
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1772
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1773
			typeStr.SetLength(0);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1774
			if (caps->iTypesAndDir & KUsbEpTypeBulk)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1775
				typeStr.Append(_S("Control "),8);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1776
			if (caps->iTypesAndDir & KUsbEpTypeBulk)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1777
				typeStr.Append(_S("Bulk "),5);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1778
			if (caps->iTypesAndDir & KUsbEpTypeInterrupt)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1779
				typeStr.Append(_S("Interrupt "),10);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1780
			if (caps->iTypesAndDir & KUsbEpTypeIsochronous)
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1781
				typeStr.Append(_S("Isochronous"),11);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1782
			}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1783
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1784
		TBuf<20> directionStr(_S("unknown"));
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1785
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1786
		if (caps->iTypesAndDir & KUsbEpDirIn)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1787
			directionStr = _S("In");
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1788
		if (caps->iTypesAndDir & KUsbEpDirOut)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1789
			directionStr = _S("Out");
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1790
		if (caps->iTypesAndDir & KUsbEpDirBidirect)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1791
			directionStr = _S("Both");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1792
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1793
		TUSB_PRINT4("Endpoint:%d Sizes =%s Type = %s - %s",
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1794
					i+1,sizeStr.PtrZ(), typeStr.PtrZ(), directionStr.PtrZ());
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1795
		OstTraceExt4(TRACE_NORMAL, CACTIVECONTROL_QUERYUSBCLIENTL_DUP10, "Endpoint:%d Sizes =%S Type = %S - %S",
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1796
					i+1,sizeStr, typeStr, directionStr);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1797
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1798
	TUSB_PRINT("");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1799
	OstTrace0(TRACE_NORMAL, CACTIVECONTROL_QUERYUSBCLIENTL_DUP11, "");
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1800
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1801
	test.End();
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1802
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1803
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1804
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1805
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1806
void CActiveControl::AllocateEndpointDMA(RDEVCLIENT* aPort,TENDPOINTNUMBER aEndpoint)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1807
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1808
	TBool res = EFalse;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1809
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1810
	TInt r = aPort->AllocateEndpointResource(aEndpoint, EUsbcEndpointResourceDMA);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1811
	if (r == KErrNone)
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1812
		OstTrace1(TRACE_NORMAL, CACTIVECONTROL_ALLOCATEENDPOINTDMA, "DMA allocation on endpoint %d: KErrNone", aEndpoint);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1813
	else if (r == KErrInUse)
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1814
		OstTrace1(TRACE_NORMAL, CACTIVECONTROL_ALLOCATEENDPOINTDMA_DUP01, "DMA allocation on endpoint %d: KErrInUse", aEndpoint);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1815
	else if (r == KErrNotSupported)
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1816
		OstTrace1(TRACE_NORMAL, CACTIVECONTROL_ALLOCATEENDPOINTDMA_DUP02, "DMA allocation on endpoint %d: KErrNotSupported", aEndpoint);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1817
	else
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1818
		OstTraceExt2(TRACE_NORMAL, CACTIVECONTROL_ALLOCATEENDPOINTDMA_DUP03, "DMA allocation on endpoint %d: unexpected return value %d", aEndpoint, r);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1819
	#ifdef	USB_SC
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1820
	res = aPort->QueryEndpointResourceUse(aEndpoint, EUsbcEndpointResourceDMA);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1821
	#else
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1822
	res = aPort->QueryEndpointResourceUse(aEndpoint, EUsbcEndpointResourceDMA);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1823
	#endif
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1824
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1825
	TUSB_PRINT2("DMA on endpoint %d %s\n",
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1826
				aEndpoint, res ? _S("allocated") : _S("not allocated"));
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1827
	OstTraceExt2(TRACE_NORMAL, CACTIVECONTROL_ALLOCATEENDPOINTDMA_DUP04, "DMA on endpoint %d %S\n",
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1828
				aEndpoint, res ? _L("allocated") : _L("not allocated"));
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1829
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1830
	if ((r == KErrNone) && !res)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1831
		OstTrace0(TRACE_NORMAL, CACTIVECONTROL_ALLOCATEENDPOINTDMA_DUP05, "(Allocation success but negative query result: contradiction!\n");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1832
	else if ((r != KErrNone) && res)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1833
		OstTrace0(TRACE_NORMAL, CACTIVECONTROL_ALLOCATEENDPOINTDMA_DUP06, "(Allocation failure but positive query result: contradiction!\n");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1834
	}
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1835
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1836
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1837
void CActiveControl::DeAllocateEndpointDMA(RDEVCLIENT* aPort,TENDPOINTNUMBER aEndpoint)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1838
	{
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1839
	TBool res = FALSE;
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1840
	TInt r = aPort->DeAllocateEndpointResource(aEndpoint, EUsbcEndpointResourceDMA);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1841
	if (r == KErrNone)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1842
		OstTrace1(TRACE_NORMAL, CACTIVECONTROL_DEALLOCATEENDPOINTDMA, "DMA deallocation on endpoint %d: KErrNone", aEndpoint);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1843
	else if (r == KErrNotSupported)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1844
		OstTrace1(TRACE_NORMAL, CACTIVECONTROL_DEALLOCATEENDPOINTDMA_DUP01, "DMA deallocation on endpoint %d: KErrNotSupported", aEndpoint);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1845
	else
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1846
		OstTraceExt2(TRACE_NORMAL, CACTIVECONTROL_DEALLOCATEENDPOINTDMA_DUP02, "DMA deallocation on endpoint %d: unexpected return value %d",
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1847
					  aEndpoint, r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1848
	#ifdef	USB_SC
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1849
	res = aPort->QueryEndpointResourceUse(aEndpoint, EUsbcEndpointResourceDMA);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1850
	#else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1851
	res = aPort->QueryEndpointResourceUse(aEndpoint, EUsbcEndpointResourceDMA);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1852
	#endif
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1853
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1854
	TUSB_PRINT2("DMA on endpoint %d %s\n",
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1855
				aEndpoint, res ? _S("allocated") : _S("not allocated"));
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1856
	OstTraceExt2(TRACE_NORMAL, CACTIVECONTROL_DEALLOCATEENDPOINTDMA_DUP03, "DMA on endpoint %d %s\n",
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1857
				aEndpoint, res ? _L("allocated") : _L("not allocated"));
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1858
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1859
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1860
#ifndef USB_SC
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1861
void CActiveControl::AllocateDoubleBuffering(RDEVCLIENT* aPort,TENDPOINTNUMBER aEndpoint)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1862
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1863
	TBool res = FALSE;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1864
	TInt r = aPort->AllocateEndpointResource(aEndpoint, EUsbcEndpointResourceDoubleBuffering);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1865
	if (r == KErrNone)
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1866
		OstTrace1(TRACE_NORMAL, CACTIVECONTROL_ALLOCATEDOUBLEBUFFERING, "Double Buffering allocation on endpoint %d: KErrNone", aEndpoint);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1867
	else if (r == KErrInUse)
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1868
		OstTrace1(TRACE_NORMAL, CACTIVECONTROL_ALLOCATEDOUBLEBUFFERING_DUP01, "Double Buffering allocation on endpoint %d: KErrInUse", aEndpoint);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1869
	else if (r == KErrNotSupported)
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1870
		OstTrace1(TRACE_NORMAL, CACTIVECONTROL_ALLOCATEDOUBLEBUFFERING_DUP02, "Double Buffering allocation on endpoint %d: KErrNotSupported", aEndpoint);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1871
	else
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1872
		OstTraceExt2(TRACE_NORMAL, CACTIVECONTROL_ALLOCATEDOUBLEBUFFERING_DUP03, "Double Buffering allocation on endpoint %d: unexpected return value %d",
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1873
					  aEndpoint, r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1874
	res = aPort->QueryEndpointResourceUse(aEndpoint, EUsbcEndpointResourceDoubleBuffering);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1875
	TUSB_PRINT2("Double Buffering on endpoint %d %s\n",
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1876
				aEndpoint, res ? _S("allocated") : _S("not allocated"));
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1877
	OstTraceExt2(TRACE_NORMAL, CACTIVECONTROL_ALLOCATEDOUBLEBUFFERING_DUP04, "Double Buffering on endpoint %d %s\n",
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1878
				aEndpoint, res ? _L("allocated") : _L("not allocated"));
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1879
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1880
	if ((r == KErrNone) && !res)
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1881
		OstTrace0(TRACE_NORMAL, CACTIVECONTROL_ALLOCATEDOUBLEBUFFERING_DUP05, "(Allocation success but negative query result: contradiction!\n");
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1882
	else if ((r != KErrNone) && res)
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1883
		OstTrace0(TRACE_NORMAL, CACTIVECONTROL_ALLOCATEDOUBLEBUFFERING_DUP06, "(Allocation failure but positive query result: contradiction!\n");
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1884
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1885
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1886
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1887
void CActiveControl::DeAllocateDoubleBuffering(RDEVCLIENT* aPort,TENDPOINTNUMBER aEndpoint)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1888
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1889
	TInt r = aPort->DeAllocateEndpointResource(aEndpoint, EUsbcEndpointResourceDoubleBuffering);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1890
	if (r == KErrNone)
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1891
		OstTrace1(TRACE_NORMAL, CACTIVECONTROL_DEALLOCATEDOUBLEBUFFERING, "Double Buffering deallocation on endpoint %d: KErrNone", aEndpoint);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1892
	else if (r == KErrNotSupported)
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1893
		OstTrace1(TRACE_NORMAL, CACTIVECONTROL_DEALLOCATEDOUBLEBUFFERING_DUP01, "Double Buffering deallocation on endpoint %d: KErrNotSupported", aEndpoint);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1894
	else
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1895
		OstTraceExt2(TRACE_NORMAL, CACTIVECONTROL_DEALLOCATEDOUBLEBUFFERING_DUP02, "Double Buffering deallocation on endpoint %d: unexpected return value %d",
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1896
					  aEndpoint, r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1897
	TBool res = aPort->QueryEndpointResourceUse(aEndpoint, EUsbcEndpointResourceDoubleBuffering);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1898
	TUSB_PRINT2("Double Buffering on endpoint %d %s\n",
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1899
				aEndpoint, res ? _S("allocated") : _S("not allocated"));
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1900
	OstTraceExt2(TRACE_NORMAL, CACTIVECONTROL_DEALLOCATEDOUBLEBUFFERING_DUP03, "Double Buffering on endpoint %d %s\n",
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1901
				aEndpoint, res ? _L("allocated") : _L("not allocated"));
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1902
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1903
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1904
#endif
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1905
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1906
TInt CActiveControl::ReEnumerate()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1907
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1908
	TRequestStatus enum_status;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1909
	iPort[0].ReEnumerate(enum_status);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1910
	if (!iSoftwareConnect)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1911
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1912
		iConsole->Printf(_L("This device does not support software\n"));
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1913
		OstTrace0(TRACE_NORMAL, CACTIVECONTROL_REENUMERATE, "This device does not support software\n");
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1914
		iConsole->Printf(_L("disconnect/reconnect\n"));
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1915
		OstTrace0(TRACE_NORMAL, CACTIVECONTROL_REENUMERATE_DUP01, "disconnect/reconnect\n");
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1916
		iConsole->Printf(_L("Please physically unplug and replug\n"));
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1917
		OstTrace0(TRACE_NORMAL, CACTIVECONTROL_REENUMERATE_DUP02, "Please physically unplug and replug\n");
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1918
		iConsole->Printf(_L("the USB cable NOW... "));
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1919
		OstTrace0(TRACE_NORMAL, CACTIVECONTROL_REENUMERATE_DUP03, "the USB cable NOW... ");
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1920
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1921
	iConsole->Printf(_L("\n>>> Start the t_usb_win program on the host <<<\n"));
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1922
	OstTrace0(TRACE_NORMAL, CACTIVECONTROL_REENUMERATE_DUP04, "\n>>> Start the t_usb_win program on the host <<<\n");
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1923
	User::WaitForRequest(enum_status);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1924
	if (enum_status != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1925
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1926
		TUSB_PRINT1("Error: Re-enumeration status = %d", enum_status.Int());
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1927
		OstTrace1(TRACE_NORMAL, CACTIVECONTROL_REENUMERATE_DUP05, "Error: Re-enumeration status = %d", enum_status.Int());
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1928
		return KErrGeneral;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1929
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1930
	TUsbcDeviceState device_state =	EUsbcDeviceStateUndefined;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1931
	TInt r = iPort[0].DeviceStatus(device_state);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1932
	if (r != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1933
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1934
		TUSB_PRINT1("Error %d on querying device state", r);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1935
		OstTrace1(TRACE_NORMAL, CACTIVECONTROL_REENUMERATE_DUP06, "Error %d on querying device state", r);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1936
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1937
	else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1938
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1939
		TUSB_PRINT1("Current device state: %s",
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1940
					(device_state == EUsbcDeviceStateUndefined) ? _S("Undefined") :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1941
					((device_state == EUsbcDeviceStateAttached) ? _S("Attached") :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1942
					 ((device_state == EUsbcDeviceStatePowered) ? _S("Powered") :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1943
					  ((device_state == EUsbcDeviceStateDefault) ? _S("Default") :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1944
					   ((device_state == EUsbcDeviceStateAddress) ? _S("Address") :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1945
						((device_state == EUsbcDeviceStateConfigured) ? _S("Configured") :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1946
						 ((device_state == EUsbcDeviceStateSuspended) ? _S("Suspended") :
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1947
						  _S("Unknown"))))))));
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1948
		OstTraceExt1(TRACE_NORMAL, CACTIVECONTROL_REENUMERATE_DUP07, "Current device state: %s",
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1949
					(device_state == EUsbcDeviceStateUndefined) ? _L("Undefined") :
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1950
					((device_state == EUsbcDeviceStateAttached) ? _L("Attached") :
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1951
					 ((device_state == EUsbcDeviceStatePowered) ? _L("Powered") :
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1952
					  ((device_state == EUsbcDeviceStateDefault) ? _L("Default") :
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1953
					   ((device_state == EUsbcDeviceStateAddress) ? _L("Address") :
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1954
						((device_state == EUsbcDeviceStateConfigured) ? _L("Configured") :
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1955
						 ((device_state == EUsbcDeviceStateSuspended) ? _L("Suspended") :
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1956
						  _L("Unknown"))))))));
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1957
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1958
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1959
	// Check the speed of the established physical USB connection
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1960
	iHighSpeed = iPort[0].CurrentlyUsingHighSpeed();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1961
	if (iHighSpeed)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1962
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1963
		TUSB_PRINT("---> USB High-speed Testing\n");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1964
		OstTrace0(TRACE_NORMAL, CACTIVECONTROL_REENUMERATE_DUP08, "---> USB High-speed Testing\n");
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1965
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1966
	else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1967
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1968
		TUSB_PRINT("---> USB Full-speed Testing\n");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1969
		OstTrace0(TRACE_NORMAL, CACTIVECONTROL_REENUMERATE_DUP09, "---> USB Full-speed Testing\n");
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1970
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1971
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1972
	return KErrNone;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1973
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1974
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  1975
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1976
#ifdef USB_SC
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  1977
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  1978
void CActiveControl::SetupTransferedInterface(IFConfigPtr* aIfPtr, TInt aPortNumber)
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  1979
	{
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  1980
	TInt r;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  1981
	TUSB_VERBOSE_PRINT1("SetupTransferedInterface %d", aPortNumber);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1982
	if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1983
	    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1984
	    OstTrace1(TRACE_VERBOSE, CACTIVECONTROL_SETUPTRANSFEREDINTERFACE, "SetupTransferedInterface %d", aPortNumber);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1985
	    }
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  1986
	test.Start (_L("Setup Transfered Interface "));
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  1987
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  1988
	#ifdef USB_SC
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  1989
	TUsbcScInterfaceInfoBuf ifc = *((*aIfPtr)->iInfoPtr);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  1990
	#else
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  1991
	TUsbcInterfaceInfoBuf ifc = *((*aIfPtr)->iInfoPtr);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  1992
	#endif
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  1993
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  1994
	TBuf8<KUsbDescSize_Interface> ifDescriptor;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  1995
	r = iPort[aPortNumber].GetInterfaceDescriptor(0, ifDescriptor);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  1996
	test_KErrNone(r);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  1997
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  1998
	// Check the interface descriptor
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  1999
	test(ifDescriptor[KIfcDesc_SettingOffset] == 0 && ifDescriptor[KIfcDesc_NumEndpointsOffset] == (*aIfPtr)->iInfoPtr->iTotalEndpointsUsed &&
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2000
	    ifDescriptor[KIfcDesc_ClassOffset] == (*aIfPtr)->iInfoPtr->iClass.iClassNum &&
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2001
	    ifDescriptor[KIfcDesc_SubClassOffset] == (*aIfPtr)->iInfoPtr->iClass.iSubClassNum &&
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2002
	    ifDescriptor[KIfcDesc_ProtocolOffset] == (*aIfPtr)->iInfoPtr->iClass.iProtocolNum);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2003
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2004
	if ((*aIfPtr)->iNumber != 0 && ifDescriptor[KIfcDesc_NumberOffset] != (*aIfPtr)->iNumber)
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2005
		{
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2006
		ifDescriptor[KIfcDesc_NumberOffset] = (*aIfPtr)->iNumber;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2007
		r = iPort[aPortNumber].SetInterfaceDescriptor(0, ifDescriptor);
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2008
		test_KErrNone(r);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2009
		}
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2010
	else
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2011
		{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2012
		(*aIfPtr)->iNumber = ifDescriptor[KIfcDesc_NumberOffset];
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2013
		}
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2014
	TUint8 interfaceNumber = (*aIfPtr)->iNumber;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2015
	TUSB_PRINT1 ("Interface Number %d",interfaceNumber);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2016
	OstTrace1 (TRACE_NORMAL, CACTIVECONTROL_SETUPTRANSFEREDINTERFACE_DUP01, "Interface Number %d",interfaceNumber);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2017
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2018
	// Check all endpoint descriptors
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2019
	TBuf8<KUsbDescSize_AudioEndpoint> epDescriptor;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2020
	for (TUint i = 0; i < (*aIfPtr)->iInfoPtr->iTotalEndpointsUsed; i++)
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2021
		{
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2022
		if (!gSkip)
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2023
			{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2024
			TestEndpointDescriptor (&iPort[aPortNumber],0,i+1,(*aIfPtr)->iInfoPtr->iEndpointData[i]);
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2025
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2026
			}
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2027
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2028
		if (firstBulkOutEndpoint < 0 && ((*aIfPtr)->iInfoPtr->iEndpointData[i].iDir & KUsbEpDirOut) &&
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2029
			(*aIfPtr)->iInfoPtr->iEndpointData[i].iType == KUsbEpTypeBulk)
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2030
			{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2031
			firstBulkOutEndpoint = i+1;
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2032
			}
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2033
		}
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2034
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2035
	TUSB_PRINT1 ("Interface number is %d",interfaceNumber);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2036
	OstTrace1 (TRACE_NORMAL, CACTIVECONTROL_SETUPTRANSFEREDINTERFACE_DUP02, "Interface number is %d",interfaceNumber);
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2037
	(*aIfPtr)->iPortNumber = aPortNumber;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2038
	gInterfaceConfig [interfaceNumber] [0] = *aIfPtr;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2039
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2040
	TInt alternateNumber = 1;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2041
	// check for any alternatate interfaces and set any that are found
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2042
	* aIfPtr = (*aIfPtr)->iPtrNext;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2043
	if (* aIfPtr != NULL)
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2044
		{
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2045
		test(SupportsAlternateInterfaces());
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2046
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2047
		IFConfigPtr ifPtr = *aIfPtr;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2048
		while (ifPtr != NULL)
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2049
			{
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2050
			if (ifPtr->iAlternateSetting)
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2051
				{
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2052
				ifc = *(ifPtr->iInfoPtr);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2053
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2054
				r = iPort[aPortNumber].GetInterfaceDescriptor(alternateNumber, ifDescriptor);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2055
				test_KErrNone(r);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2056
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2057
				// Check the interface descriptor
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2058
				test(ifDescriptor[KIfcDesc_SettingOffset] == alternateNumber && ifDescriptor[KIfcDesc_NumEndpointsOffset] == (*aIfPtr)->iInfoPtr->iTotalEndpointsUsed &&
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2059
				    ifDescriptor[KIfcDesc_ClassOffset] == (*aIfPtr)->iInfoPtr->iClass.iClassNum &&
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2060
				    ifDescriptor[KIfcDesc_SubClassOffset] == (*aIfPtr)->iInfoPtr->iClass.iSubClassNum &&
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2061
				    ifDescriptor[KIfcDesc_ProtocolOffset] == (*aIfPtr)->iInfoPtr->iClass.iProtocolNum);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2062
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2063
				// Check all endpoint descriptors
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2064
				for (TUint i = 0; i < ifPtr->iInfoPtr->iTotalEndpointsUsed; i++)
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2065
					{
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2066
					TInt desc_size;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2067
					r = iPort[aPortNumber].GetEndpointDescriptorSize(alternateNumber, i+1, desc_size);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2068
					test_KErrNone(r);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2069
					test_Equal(KUsbDescSize_Endpoint + (*aIfPtr)->iInfoPtr->iEndpointData[i].iExtra,static_cast<TUint>(desc_size));
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2070
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2071
					r = iPort[aPortNumber].GetEndpointDescriptor(alternateNumber, i+1, epDescriptor);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2072
					test_KErrNone(r);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2073
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2074
					test((((*aIfPtr)->iInfoPtr->iEndpointData[i].iDir & KUsbEpDirIn) && (epDescriptor[KEpDesc_AddressOffset] & 0x80) ||
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2075
						!((*aIfPtr)->iInfoPtr->iEndpointData[i].iDir & KUsbEpDirIn) && !(epDescriptor[KEpDesc_AddressOffset] & 0x80)) &&
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2076
						EpTypeMask2Value((*aIfPtr)->iInfoPtr->iEndpointData[i].iType) == (TUint)(epDescriptor[KEpDesc_AttributesOffset] & 0x03) &&
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2077
						(*aIfPtr)->iInfoPtr->iEndpointData[i].iInterval == epDescriptor[KEpDesc_IntervalOffset]);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2078
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2079
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2080
					if (!gSkip && (*aIfPtr)->iInfoPtr->iEndpointData[i].iExtra)
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2081
						{
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2082
						test.Next(_L("Extended Endpoint Descriptor Manipulation"));
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2083
						TUint8 addr = 0x85;										// bogus address
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2084
						if (epDescriptor[KEpDesc_SynchAddressOffset] == addr)
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2085
							addr++;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2086
						epDescriptor[KEpDesc_SynchAddressOffset] = addr;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2087
						r = iPort[aPortNumber].SetEndpointDescriptor(alternateNumber, i+1, epDescriptor);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2088
						test_KErrNone(r);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2089
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2090
						TBuf8<KUsbDescSize_AudioEndpoint> descriptor2;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2091
						r = iPort[aPortNumber].GetEndpointDescriptor(alternateNumber, i+1, descriptor2);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2092
						test_KErrNone(r);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2093
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2094
						test.Next(_L("Compare endpoint descriptor with value set"));
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2095
						r = descriptor2.Compare(epDescriptor);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2096
						test_KErrNone(r);
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2097
						}
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2098
					}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2099
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2100
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2101
				// if no error move on to the next interface
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2102
				ifPtr->iPortNumber = aPortNumber;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2103
				ifPtr->iNumber = interfaceNumber;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2104
				gInterfaceConfig [interfaceNumber] [alternateNumber] = ifPtr;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2105
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2106
				alternateNumber++;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2107
				ifPtr = ifPtr->iPtrNext;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2108
				* aIfPtr = ifPtr;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2109
				}
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2110
			else
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2111
				{
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2112
				ifPtr = NULL;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2113
				}
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2114
			}
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2115
		}
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2116
	iNumInterfaceSettings[aPortNumber] = alternateNumber;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2117
	if (!gSkip)
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2118
		{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2119
		TestInvalidSetInterface (&iPort[aPortNumber],iNumInterfaceSettings[aPortNumber]);
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2120
		TestInvalidReleaseInterface (&iPort[aPortNumber],iNumInterfaceSettings[aPortNumber]);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2121
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2122
		//TestDescriptorManipulation(iLddPtr->iHighSpeed,&iPort[aPortNumber],alternateNumber);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2123
		TestOtgExtensions(&iPort[aPortNumber]);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2124
		TestEndpoint0MaxPacketSizes(&iPort[aPortNumber]);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2125
		}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2126
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2127
	test.End();
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2128
	}
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2129
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2130
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2131
void CActiveControl::ConstructLOnSharedLdd(const RMessagePtr2& aMsg)
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2132
	{
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2133
// currently only support one interface with one alternate settings
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2134
	test.Start (_L("ConstructLOnSharedLdd Configuration"));
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2135
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2136
	User::LeaveIfError(iPort[0].Open(aMsg, 0, EOwnerProcess));
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2137
	CleanupClosePushL(iPort[0]);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2138
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2139
	RChunk* chunk;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2140
	//Get the Ldd's RChunk, but don't own it.
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2141
	User::LeaveIfError(iPort[0].GetDataTransferChunk(chunk));
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2142
	User::LeaveIfError(chunk->Open(aMsg, 1, FALSE, EOwnerProcess));
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2143
	CleanupStack::Pop();
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2144
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2145
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2146
	TInt r;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2147
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2148
	User::LeaveIfError(iFs.Connect());
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2149
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2150
	test_Compare(iConfigFileName->Length(),!=,0);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2151
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2152
	iTimer.CreateLocal();
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2153
	iPending = EPendingNone;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2154
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2155
	test.Next (_L("Open configuration file"));
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2156
	// set the session path to use the ROM if no drive specified
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2157
	r=iFs.SetSessionPath(_L("Z:\\test\\"));
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2158
	test_KErrNone(r);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2159
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2160
	r = iConfigFile.Open(iFs, * iConfigFileName, EFileShareReadersOnly | EFileStreamText | EFileRead);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2161
	test_KErrNone(r);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2162
	TUSB_VERBOSE_PRINT1("Configuration file %s Opened successfully", iConfigFileName->PtrZ());
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2163
	if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2164
	    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2165
	    OstTraceExt1(TRACE_VERBOSE, CACTIVECONTROL_CONSTRUCTLONSHAREDLDD, "Configuration file %s Opened successfully", *iConfigFileName);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2166
	    }
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2167
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2168
	test.Next (_L("Process configuration file"));
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2169
	test(ProcessConfigFile (iConfigFile,iConsole,&iLddPtr));
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2170
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2171
	iConfigFile.Close();
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2172
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2173
	test.Next (_L("LDD in configuration file"));
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2174
	test_NotNull(iLddPtr);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2175
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2176
	LDDConfigPtr lddPtr = iLddPtr;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2177
	TInt nextPort = 0;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2178
	while (lddPtr != NULL)
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2179
		{
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2180
		// Load logical driver (LDD)
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2181
		// (There's no physical driver (PDD) with USB: it's a kernel extension DLL which
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2182
		//  was already loaded at boot time.)
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2183
		test.Next (_L("Loading USB LDD"));
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2184
		TUSB_VERBOSE_PRINT1("Loading USB LDD ",lddPtr->iName.PtrZ());
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2185
		if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2186
		    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2187
		    OstTraceExt1(TRACE_VERBOSE, CACTIVECONTROL_CONSTRUCTLONSHAREDLDD_DUP01, "Loading USB LDD:%S ",lddPtr->iName);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2188
		    }
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2189
		r = User::LoadLogicalDevice(lddPtr->iName);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2190
		test(r == KErrNone || r == KErrAlreadyExists);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2191
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2192
		IFConfigPtr ifPtr = lddPtr->iIFPtr;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2193
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2194
		test.Next (_L("Opening Channels"));
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2195
		TUSB_VERBOSE_PRINT1("Successfully opened USB port %d", lddPtr->iNumChannels);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2196
		if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2197
		    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2198
		    OstTrace1(TRACE_VERBOSE, CACTIVECONTROL_CONSTRUCTLONSHAREDLDD_DUP02, "Successfully opened USB port %d", lddPtr->iNumChannels);
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2199
		    }
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2200
		for (TInt portNumber = nextPort; portNumber < nextPort+lddPtr->iNumChannels; portNumber++)
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2201
			{
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2202
			test_Compare(lddPtr->iNumChannels,>,0);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2203
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2204
			// Open USB channel
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2205
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2206
			TUSB_VERBOSE_PRINT("Successfully opened USB port");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2207
			if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2208
			    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2209
			    OstTrace0(TRACE_VERBOSE, CACTIVECONTROL_CONSTRUCTLONSHAREDLDD_DUP03, "Successfully opened USB port");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2210
			    }
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2211
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2212
			// Query the USB device/Setup the USB interface
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2213
			if (portNumber == nextPort)
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2214
				{
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2215
				// Change some descriptors to contain suitable values
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2216
				SetupDescriptors(lddPtr, &iPort[portNumber]);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2217
				}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2218
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2219
			if (portNumber == 0)
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2220
				{
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2221
				QueryUsbClientL(lddPtr, &iPort[portNumber]);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2222
				}
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2223
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2224
			test_NotNull(ifPtr);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2225
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2226
			if (iSupportResourceAllocationV2)
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2227
				{
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2228
				PopulateInterfaceResourceAllocation(ifPtr, portNumber);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2229
				}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2230
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2231
			IFConfigPtr defaultIfPtr = ifPtr;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2232
			SetupTransferedInterface(&ifPtr,portNumber);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2233
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2234
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2235
			if (!iSupportResourceAllocationV2)
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2236
				{
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2237
				// 	allocate endpoint DMA and double buffering for all endpoints on default interface when using resource allocation v1 api
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2238
				for (TUint8 i = 1; i <= defaultIfPtr->iInfoPtr->iTotalEndpointsUsed; i++)
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2239
					{
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2240
					defaultIfPtr->iEpDMA[i-1] ? AllocateEndpointDMA(&iPort[portNumber],(TENDPOINTNUMBER)i) : DeAllocateEndpointDMA(&iPort[portNumber],(TENDPOINTNUMBER)i);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2241
					#ifndef USB_SC
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2242
					defaultIfPtr->iEpDoubleBuff[i-1] ? AllocateDoubleBuffering(&iPort[portNumber],(TENDPOINTNUMBER)i) : DeAllocateDoubleBuffering(&iPort[portNumber],(TENDPOINTNUMBER)i);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2243
					#endif
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2244
					}
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2245
				}
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2246
			}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2247
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2248
		iTotalChannels += lddPtr->iNumChannels;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2249
		nextPort += lddPtr->iNumChannels;
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2250
		lddPtr = lddPtr->iPtrNext;
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2251
		}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2252
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2253
	TUSB_VERBOSE_PRINT("All Interfaces and Alternate Settings successfully set up");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2254
	if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2255
	    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2256
	    OstTrace0(TRACE_VERBOSE, CACTIVECONTROL_CONSTRUCTLONSHAREDLDD_DUP04, "All Interfaces and Alternate Settings successfully set up");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2257
	    }
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2258
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2259
	test.Next (_L("Start Idle Counter Thread"));
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2260
	r = iIdleCounterThread.Create(_L("IdleCounter"), IdleCounterThread, KDefaultStackSize, KMinHeapSize, KMinHeapSize, NULL);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2261
	test_KErrNone(r);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2262
	iIdleCounterThread.Resume();
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2263
	// Allow some time for low-priority counter process
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2264
	User::After(100000); // 0.1 second
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2265
	r = iIdleCounterChunk.OpenGlobal(KTestIdleCounterChunkName, EFalse);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2266
	test_KErrNone(r);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2267
	iIdleCounter = (struct TTestIdleCounter*) iIdleCounterChunk.Base();
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2268
	test_NotNull(iIdleCounter);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2269
	// Allow some time for low-priority counter process
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2270
	User::After(100000); // 0.1 second
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2271
	TInt64 val1 = iIdleCounter->iCounter;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2272
	User::After(1000000); // 1 second
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2273
	TInt64 val2 = iIdleCounter->iCounter;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2274
	TUSB_PRINT1("Idle Counter when test inactive: %Ldinc/ms", (val2 - val1) / 1000);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2275
	OstTraceExt1(TRACE_NORMAL, CACTIVECONTROL_CONSTRUCTLONSHAREDLDD_DUP05, "Idle Counter when test inactive: %Ldinc/ms", (val2 - val1) / 1000);
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2276
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2277
	test.Next (_L("Enumeration..."));
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2278
	r = ReEnumerate();
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2279
	test_KErrNone(r);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2280
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2281
	TUSB_VERBOSE_PRINT("Device successfully re-enumerated\n");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2282
	if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2283
	    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2284
	    OstTrace0(TRACE_VERBOSE, CACTIVECONTROL_CONSTRUCTLONSHAREDLDD_DUP06, "Device successfully re-enumerated\n");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2285
	    }
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2286
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2287
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2288
	if (iLddPtr->iHighSpeed && !gSkip)
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2289
		{
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2290
		test.Next (_L("High Speed"));
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2291
		test(iHighSpeed);
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2292
		}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2293
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2294
	test.Next (_L("Create Notifiers"));
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2295
	for (TInt portNumber = 0; portNumber < iTotalChannels; portNumber++)
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2296
		{
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2297
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2298
		// Create device state active object
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2299
		iDeviceStateNotifier[portNumber] = CActiveDeviceStateNotifier::NewL(iConsole, &iPort[portNumber], portNumber);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2300
		test_NotNull(iDeviceStateNotifier[portNumber]);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2301
		iDeviceStateNotifier[portNumber]->Activate();
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2302
		TUSB_VERBOSE_PRINT("Created device state notifier");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2303
		if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2304
		    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2305
		    OstTrace0(TRACE_VERBOSE, CACTIVECONTROL_CONSTRUCTLONSHAREDLDD_DUP07, "Created device state notifier");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2306
		    }
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2307
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2308
		// Create endpoint stall status active object
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2309
		iStallNotifier[portNumber] = CActiveStallNotifier::NewL(iConsole, &iPort[portNumber]);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2310
		test_NotNull(iStallNotifier[portNumber]);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2311
		iStallNotifier[portNumber]->Activate();
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2312
		TUSB_VERBOSE_PRINT("Created stall notifier");
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2313
		if(gVerbose)
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2314
		    {
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2315
		    OstTrace0(TRACE_VERBOSE, CACTIVECONTROL_CONSTRUCTLONSHAREDLDD_DUP08, "Created stall notifier");
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2316
		    }
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2317
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2318
		TestInvalidSetInterface (&iPort[portNumber],iNumInterfaceSettings[portNumber]);
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2319
		TestInvalidReleaseInterface (&iPort[portNumber],iNumInterfaceSettings[portNumber]);
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2320
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2321
		}
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2322
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2323
	test.Next (_L("Endpoint Zero Max Packet Sizes"));
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2324
	TUint ep0Size = iPort[0].EndpointZeroMaxPacketSizes();
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2325
	switch (ep0Size)
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2326
		{
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2327
		case KUsbEpSize8 :
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2328
			iEp0PacketSize = 8;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2329
			break;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2330
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2331
		case KUsbEpSize16 :
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2332
			iEp0PacketSize = 16;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2333
			break;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2334
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2335
		case KUsbEpSize32 :
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2336
			iEp0PacketSize = 32;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2337
			break;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2338
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2339
		case KUsbEpSize64 :
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2340
			iEp0PacketSize = 64;
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2341
			break;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2342
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2343
		default:
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2344
			iEp0PacketSize = 0;
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2345
			break;
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2346
		}
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2347
	test_Compare(iEp0PacketSize,>,0);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2348
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2349
	test.Next (_L("Set Device Control"));
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2350
	r = iPort[0].SetDeviceControl();
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2351
	test_KErrNone(r);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2352
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2353
	#ifdef USB_SC
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2354
	r = iPort[0].OpenEndpoint(iEp0Buf,0);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2355
	test_KErrNone(r);
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2356
	#endif
253
d37db4dcc88d 201033_01
hgs
parents: 189
diff changeset
  2357
189
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2358
	test.End();
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2359
	RequestEp0ControlPacket();
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2360
	}
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2361
a5496987b1da 201025_04
hgs
parents: 90
diff changeset
  2362
#endif
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  2363
// -eof-