obex/obexprotocol/obexusbtransport/inc/usbconn.h
changeset 54 4dc88a4ac6f4
parent 52 866b4af7ffbe
child 57 f6055a57ae18
--- a/obex/obexprotocol/obexusbtransport/inc/usbconn.h	Tue Sep 28 20:14:08 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,297 +0,0 @@
-// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "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:
-//
-
-/**
- @file
- @internalComponent 
-*/
-
-
-#ifndef __USBCONN_H__
-#define __USBCONN_H__
-
-#include <e32base.h>
-#include <usb.h>
-#include <d32usbc.h>
-#include <obex/transport/obexreaderbase.h>
-#include <obex/transport/obexwriterbase.h>
-#include <obex/transport/obexconnector.h>
-#include <obex/transport/mobextransportnotify.h>
-#include <obexconstants.h>
-#include <obexusbtransportinfo.h>
-#include "ObexUsbTransportController.h"
-
-//
-// LDD name
-//
-_LIT(KUsbLddName, "eusbc");
-
-// Transmit and receive endpoints
-// Note that these are the virtual endpoint numbers for the bulk interface and
-// should be put in the same order in the TUsbcEndpointInfo array in RegInterfacesL
-const TEndpointNumber KTransmitEndpoint = EEndpoint1;
-const TEndpointNumber KReceiveEndpoint  = EEndpoint2;
-
-// These are taken from section 6.5 of the WMCDC spec.
-const TUint KObexDescriptorLength = 18;
-const TUint KObexMinNumEndpoints = 3;
-const TUint KObexClassNumber = 0x02;
-const TUint KObexNumInterfaces = 2;
-const TUint KObexSubClassNumber = 0x0b;
-const TUint KObexProtocolNumber = 0x0;
-const TUint KObexTotalEndpoints = 2;
-
-const TUint KObexDataClass = 0x0A;
-const TUint KObexDataSubClass = 0;
-const TUint KObexAlt0 = 0;
-const TUint KObexAlt1 = 1;
-const TUint KObexFunctionalDescriptorLength = 5;
-const TUint KObexDefaultInterfaceDescriptorLength = 100; //Default value used prior to OS 9.2
-const TUint KObexInterfaceDescriptorBlockLength = 16;
-
-const TUint8 KCdcVersionNumber[2] = { 0x10, 0x01 }; // CDC v1.1
-const TUint8 KHeaderFunctionalDescriptor = 0x00;
-const TUint8 KObexFunctionalDescriptor = 0x15;
-const TUint8 KWmcdcVersionNumber[2] = { 0x00, 0x01 }; // WMCDC v1.0
-const TUint8 KUnionFunctionalDescriptor = 0x06;
-
-const TInt KMaxPacketTypeBulkFS = 64;
-const TInt KMaxPacketTypeBulkHS = 512;
-
-
-/**
-USB Active Writer class
-*/
-NONSHARABLE_CLASS(CObexUsbActiveWriter) : public CObexWriterBase
-//------------------------------------------------------------------------------------
-	{
-public:
-	static CObexUsbActiveWriter* NewL(MObexTransportNotify& aOwner, RDevUsbcClient& aUsb, TObexConnectionInfo& aInfo, TInt aPacketSize);
-	~CObexUsbActiveWriter();
-
-private:
-	virtual void DoCancel();
-	virtual void DoTransfer();
-
-private:
-	CObexUsbActiveWriter(MObexTransportNotify& aOwner, RDevUsbcClient& aUsb, TObexConnectionInfo& aInfo, TInt aPacketSize);
-
-private:
-	RDevUsbcClient& iUsb;       // USB logical device driver
-	TInt iPacketSize;
-	};
-
-
-/**
-USB Active Reader class
-*/
-NONSHARABLE_CLASS(CObexUsbActiveReader) : public CObexReaderBase
-//------------------------------------------------------------------------------------
-    {
-public:
-	static CObexUsbActiveReader* NewL(MObexTransportNotify& aOwner, RDevUsbcClient& aUsb, TObexConnectionInfo& aInfo);
-	~CObexUsbActiveReader();
-
-private:
-	virtual void DoCancel();
-	virtual void DoTransfer();
-	virtual TInt GetMaxPacketSize();
-	virtual TInt GetInitialPacketSize();	
-private:
-	CObexUsbActiveReader(MObexTransportNotify& aOwner, RDevUsbcClient& aUsb, TObexConnectionInfo& aInfo);
-private:
-	RDevUsbcClient& iUsb;       // USB logical device driver
-	TBool iGotHeader;
-    };
-    
-
-/**
-Used by the USB underlying object to notify changes in the transport link.
-*/
-NONSHARABLE_CLASS(MObexUsbConnector)
-//------------------------------------------------------------------------------------
-	{
-public:
-	/**
-	@internalComponent
-	Called in response to the USB transport coming up.
-	*/
-	virtual void TransportUp() =0;
-	
-	/**
-	@internalComponent
-	Called in response to the USB transport going down.
-	@param aErr An error value associated with the transport down event.
-	*/
-	virtual void TransportDown(TInt aErr = KErrDisconnected) =0;
-	
-	/**
-	@internalComponent
-	Called when an endpoint stall has been cleared.
-	*/
-	virtual void StallCleared() =0;
-	};
-
-
-/**
-Handles the underlying details of a USB connection.  Monitors the state of
-the transport and notifies owner as transport goes up and down.
-*/
-NONSHARABLE_CLASS(CObexUsbHandler) : public CActive
-//------------------------------------------------------------------------------------
-    {
-public:
-	virtual ~CObexUsbHandler();
-
-	static CObexUsbHandler* NewL(TObexUsbTransportInfo& aUsbTransportInfo,
-		MObexUsbConnector& aOwner, RDevUsbcClient& aUsb);
-
-	void Start();
-
-	// Implements CActive
-	void RunL();
-	TInt RunError(TInt /*aError*/);
-
-private:
-	CObexUsbHandler(TObexUsbTransportInfo& aUsbProtocolInfo, MObexUsbConnector& aOwner, RDevUsbcClient& aUsb);
-	void DoCancel();
-	void ConstructL();
-	void RegInterfacesL();
-	void AllocateDma();
-	static void CleanupReleaseInterface0(TAny* aInterface);
-
-private:
-	TObexUsbTransportInfo& iObexTransportInfo; // Note: Cannot assume this is valid outside of construction phases
-	MObexUsbConnector& iOwner;
-
-	RDevUsbcClient& iUsb;           // USB LDD used for Data Class interface
-	RDevUsbcClient iUsbComms;		// USB LDD used for Comms Class interface
-
-	TUint iUsbState;		    	// Used by RDevUsbcClient::AlternateDeviceStatusNotify()
-	TBool iTransportUp;             // TRUE when device is configured
-
-	// Interface performance configuration parameters
-	// (for extended USB Client Driver API)
-	TInt iBandwidthPriority;
-	TBool iRequestDmaOnOutEndpoint;
-	TBool iRequestDmaOnInEndpoint;
-    };
-
-
-/**
-Class to stall then monitor an endpoint and notify owner when the halt state has been cleared.
-*/
-NONSHARABLE_CLASS(CObexUsbStaller) : public CActive
-//------------------------------------------------------------------------------------
-	{
-public:
-	static CObexUsbStaller* NewL(RDevUsbcClient& aUsb, MObexUsbConnector& iOwner);
-	~CObexUsbStaller();
-	
-	void Start();
-	
-private:
-	CObexUsbStaller(RDevUsbcClient& aUsb, MObexUsbConnector& iOwner);
-	
-	virtual void DoCancel();
-	virtual TInt RunError(TInt /*aError*/);
-	virtual void RunL();
-		
-private:
-	RDevUsbcClient& iUsb;
-	MObexUsbConnector& iOwner;
-	TUint iEndpointStatus;
-	};
-
-
-/**
-Class to support connecting to other USB devices.
-Server mode is relatively straightforward as this corresponds
-exactly to how USB works from the device perspective.  Obex client
-support though requires some 'magic'.
-*/
-NONSHARABLE_CLASS(CObexUsbConnector) : public CObexConnector, public MObexUsbConnector
-//------------------------------------------------------------------------------------
-	{
-public:
-	/**
-	This enum holds the three different states which the connector
-	can be in.  In DefaultClient mode, the connector is behaving as
-	a client but can be switched to server behaviour.  Once the mode
-	has been moved out of DefaultClient (to either Client or Server),
-	the mode is locked for the lifetime of the object.  Other
-	connectors can provide different behaviour for other CObexServer
-	or CObexClient objects.
-	*/
-	enum TObexUsbMode
-		{
-		EDefaultClient,
-		EClient,
-		EServer
-		};
-	static CObexUsbConnector* NewL(MObexTransportNotify& aOwner, TObexUsbTransportInfo& aUsbTransportInfo);	
-	CObexUsbConnector (MObexTransportNotify& aOwner, TObexUsbTransportInfo& aUsbTransportInfo);
-
-	~CObexUsbConnector();
-
-	virtual void ConstructL();
-
-	//Implement MObexUsbConnector interface
-	virtual void TransportUp();
-	virtual void TransportDown(TInt aErr = KErrDisconnected);
-	virtual void StallCleared();	
-
-	//Overrides for pure virtuals in CObexConnector
-	virtual void ConnectL();
-	virtual void CancelConnect();
-	virtual void AcceptL();
-	virtual void CancelAccept();
-	virtual TBool BringTransportDown();
-	virtual void SignalTransportError();
-	
-	//required to pass the RDevUsbcClient to the activer reader and writer
-	RDevUsbcClient* TransportObject();
-	TInt GetTransportPacketSize();
-
-private:
-	void OpenUsbL(TInt aUnit);	
-	static TInt LinkUp(TAny* aConn);
-	static TInt NoDevice(TAny* aConn);
-	void SignalUp();
-	void SignalDown(TInt aErr);
-	
-	void ResetTransportPacketSize();
-	void SetTransportPacketSize();
-
-// Data
-private:
-	RDevUsbcClient iUsb;	// USB logical device driver
-							// Note: This is the handle used for reads and writes.
-	TObexUsbTransportInfo& iObexTransportInfo;	// Reference to protocol info to pass on to CObexUsbHandler
-												// Note: Cannot assume this is valid outside of construction phases
-	TObexUsbMode iMode;
-	
-	CAsyncCallBack* iCallback;
-	TBool iTransportLinkAvailable;
-	TBool iConnectRequested;
-	TBool iWaitingForLink;
-	CObexUsbHandler* iHandler;
-	CObexUsbStaller* iStaller;
-	
-	TInt iPacketSize;
-	};
-
-
-#endif /* __USBCONN_H__ */