kerneltest/e32test/usb/t_usb_device/include/activecontrol.h
changeset 0 a41df078684a
child 19 4a8fed1c0ef6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32test/usb/t_usb_device/include/activecontrol.h	Mon Oct 19 15:55:17 2009 +0100
@@ -0,0 +1,114 @@
+// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// e32test/usb/t_usb_device/include/activecontrol.h
+// 
+//
+
+#ifndef __ACTIVECONSOLE_H__
+#define __ACTIVECONSOLE_H__
+
+#include "activestallnotifier.h"
+#include "activedevicestatenotifier.h"
+
+static const TInt KSetupPacketSize = 8;
+static const TInt KMaxControlBufferSize = 256;
+static const TInt KMaxControlPacketSize = 64;
+
+static const TInt KUsb_Ep0RequestTypeOffset = 0;
+static const TInt KUsb_Ep0RequestOffset = 1;
+static const TInt KUsb_Ep0wValueOffset = 2;
+static const TInt KUsb_Ep0wIndexOffset = 4;
+static const TInt KUsb_Ep0wLengthOffset = 6;
+
+static const TUint32 KDeviceVersionMajor = 2;				// The version for t_usb_device
+static const TUint32 KDeviceVersionMinor = 0;
+static const TUint32 KDeviceVersionMicro = 0;
+static const TUint8 KHostVersionMajor = 1;					// the host version we're compatible with
+static const TUint8 KHostVersionMinor = 1;
+static const TUint8 KHostVersionMicro = 0;
+
+static const TUint32 KMSFinishedDelay = 5000000;			// 5 second delay after mass storage finishing
+
+enum PendingRequest
+	{
+	EPendingNone,
+	EPendingEp0Read,
+	EPendingTimer,
+	EPendingEject,
+	EPendingCancel,
+	};
+
+class CActiveRW;
+
+class CActiveControl : public CActive
+	{
+public:
+	static CActiveControl* NewLC(CConsoleBase* aConsole, TDes * aConfigFile, TDes * aScriptFile);
+	static CActiveControl* NewL(CConsoleBase* aConsole, TDes * aConfigFile, TDes * aScriptFile);
+	void ConstructL();
+	~CActiveControl();
+	void RequestEp0ControlPacket();
+	void SetMSFinished(TBool aState);
+	void AllocateEndpointDMA(RDEVCLIENT* aPort,TENDPOINTNUMBER aEndpoint);
+	void AllocateDoubleBuffering(RDEVCLIENT* aPort,TENDPOINTNUMBER aEndpoint);
+	void DeAllocateEndpointDMA(RDEVCLIENT* aPort,TENDPOINTNUMBER aEndpoint);
+	void DeAllocateDoubleBuffering(RDEVCLIENT* aPort,TENDPOINTNUMBER aEndpoint);
+
+private:
+	CActiveControl(CConsoleBase* aConsole, TDes * aConfigFile, TDes * aScriptFile);
+	// Defined as pure virtual by CActive;
+	// implementation provided by this class.
+	virtual void DoCancel();
+	// Defined as pure virtual by CActive;
+	// implementation provided by this class,
+	virtual void RunL();
+	void CActiveControl::ReConnect();
+	void SetupInterface(IFConfigPtr* aIfPtr, TInt aPortNumber);
+	void QueryUsbClientL(LDDConfigPtr aLddPtr,RDEVCLIENT* aPort);
+	void QueryEndpointState(RDEVCLIENT* aPort,TENDPOINTNUMBER aEndpoint);
+	TInt ReEnumerate();
+	TInt ProcessEp0ControlPacket();
+	void PrintHostLog();
+
+private:
+	CConsoleBase* iConsole;											// a console to read from
+	CActiveStallNotifier* iStallNotifier[KMaxInterfaces];
+	CActiveDeviceStateNotifier* iDeviceStateNotifier[KMaxInterfaces];
+	RDEVCLIENT iPort[KMaxInterfaces];
+	RTimer iTimer;
+	TUint iPending;
+	TInt iNumInterfaceSettings[KMaxInterfaces];
+	TInt iTotalChannels;
+	TBool iSoftwareConnect;
+	TBool iHighSpeed;
+	RFs iFs;
+	RFile iConfigFile;
+	TDes * iConfigFileName;
+	TDes * iScriptFileName;
+	LDDConfigPtr iLddPtr;
+	#ifdef USB_SC
+	TEndpointBuffer iEp0Buf;
+	TAny * iEp0Packet;
+	TUint iEp0Size;
+	TBool iEp0Zlp;	
+	#endif
+	TBuf8<KSetupPacketSize> iEp0SetUpPacket;
+	TBuf8<KMaxControlBufferSize> iEp0DataBuffer;
+	TUint iEp0PacketSize;
+	RThread iIdleCounterThread;
+	RChunk iIdleCounterChunk;
+	struct TTestIdleCounter* iIdleCounter;
+	};
+
+#endif	// __ACTIVECONTROL_H__