diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/public/d32usbtransfers.h --- a/usbdrv/peripheral/public/d32usbtransfers.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,239 +0,0 @@ -// Copyright (c) 2007-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: -// - -#ifndef __D32USBTRANSFERS_H -#define __D32USBTRANSFERS_H - -#ifdef __KERNEL_MODE__ -#include -#else -#include -#endif -#include - - -class RUsbTransferStrategy; - -/** -Base class for all transfer descriptors. - -@publishedPartner Intended to be available to 3rd parties later -@prototype -*/ -NONSHARABLE_CLASS(RUsbTransferDescriptor) - { -public: - enum TTransferType - { - EBulk, - EIsochronous, - EInterrupt - }; - - enum TZlpStatus - { - ESuppressZlp, - ESendZlpIfRequired, // Default - EAlwaysSendZlp - }; - -#ifndef __KERNEL_MODE__ -friend class RUsbPipe; -friend class RUsbTransferStrategy; - -public: - virtual void Close(); - -protected: - RUsbTransferDescriptor(TTransferType aType, TInt aMaxSize, TInt aMaxNumPackets); - -protected: - static const TInt KInvalidHandle = -1; - -protected: - /** - A pointer to the transfer strategy the descriptor is registered in. - */ - RUsbTransferStrategy* iTransferStrategy; - - /** - Handle into the transfer strategy for the descriptor. - */ - TInt iHandle; - -public: - /** - The type of transfer descriptor this instance represents. - */ - const TTransferType iType; - - /** - For isochronous transfers this refers to the maximum packet size packets - in this descriptor may be. - For other transfers this refers to the maximum size of the transfer. - */ - const TInt iMaxSize; - - /** - Used to specify the maximum number of packets the descriptor will hold. - */ - const TInt iMaxNumPackets; -#endif // __KERNEL_MODE__ - }; - - -#ifndef __KERNEL_MODE__ - -/** -A class that refers to the list of packet lengths for a isochronous transfer -descriptor. - -@publishedPartner -@prototype -*/ -NONSHARABLE_CLASS(TPacketLengths) - { -public: - NONSHARABLE_CLASS(TLength) - { - public: - IMPORT_C TUint16 operator=(TUint16 aValue); - IMPORT_C operator TUint16() const; - public: - TLength(TUint16& aRecv, TUint16& aReq); - private: - TUint16& iRecv; - TUint16& iReq; - }; -public: - IMPORT_C TLength At(TInt aIndex); - IMPORT_C const TLength At(TInt aIndex) const; - IMPORT_C TLength operator[](TInt aIndex); - IMPORT_C const TLength operator[](TInt aIndex) const; - IMPORT_C TInt MaxNumPackets(); - -public: - TPacketLengths(TUint16* aRecvPtr, TUint16* aReqPtr, TInt& aMaxNumPackets); - -private: - TUint16* iRecvPtr; - TUint16* iReqPtr; - TInt& iMaxNumPackets; - }; - -/** -A class that refers to the list of packet results for a isochronous transfer -descriptor. - -@publishedPartner -@prototype -*/ -NONSHARABLE_CLASS(TPacketResults) - { -public: - IMPORT_C TInt At(TInt aIndex) const; - IMPORT_C TInt operator[](TInt aIndex) const; - IMPORT_C TInt MaxNumPackets(); - -public: - TPacketResults(TInt* aResPtr, TInt& aMaxNumPackets); - -private: - TInt* iResPtr; - TInt& iMaxNumPackets; - }; - - -/** -Provides *SEQUENTIAL* access to the packet slots in an isochronous transfer descriptor. -As some HCs may pack the buffer space tightly, with one packet starting immediately after the preceeding one, -random access is not possible -- in this implementation, even replacing the content of a slot with another packet -of the same size is not 'intentionally' possible. -Note that reading data is possible in a random access manner -- the sequential constraint only applies to writing. -@publishedPartner Intended to be available to 3rd parties later -@prototype -*/ -NONSHARABLE_CLASS(RUsbIsocTransferDescriptor) : public RUsbTransferDescriptor - { -friend class RUsbTransferStrategy; - -public: - IMPORT_C RUsbIsocTransferDescriptor(TInt aMaxPacketSize, TInt aMaxNumPackets); - -public: - IMPORT_C void Reset(); - IMPORT_C TPacketLengths Lengths(); - IMPORT_C TPacketResults Results(); - IMPORT_C TInt MaxPacketSize(); - -public: // Sending - IMPORT_C TPtr8 WritablePackets(TInt aNumPacketsRequested, TInt& aMaxNumOfPacketsAbleToWrite); - IMPORT_C void SaveMultiple(TInt aNumOfPackets); - -public: // Receiving - IMPORT_C TPtrC8 Packets(TInt aFirstPacketIndex, TInt aNumPacketsRequested, TInt& aNumOfPacketsReturned) const; - IMPORT_C void ReceivePackets(TInt aNumOfPackets); - -private: - /** - The handle to represent the current point in writing an isoc. transfer. - */ - TInt iWriteHandle; - }; - - -/** -Provides buffer management for Bulk transfers -@publishedPartner Intended to be available to 3rd parties later -@prototype -*/ -NONSHARABLE_CLASS(RUsbBulkTransferDescriptor) : public RUsbTransferDescriptor - { -public: - IMPORT_C RUsbBulkTransferDescriptor(TInt aMaxSize); - -public: // Setters - IMPORT_C TPtr8 WritableBuffer(); - IMPORT_C void SaveData(TInt aLength); - IMPORT_C void SetZlpStatus(TZlpStatus aZlpStatus); - -public: // Getters - IMPORT_C TPtrC8 Buffer() const; - }; - - - -/** -Provides buffer management for Interrupt transfers -@publishedPartner Intended to be available to 3rd parties later -@prototype -*/ -NONSHARABLE_CLASS(RUsbIntrTransferDescriptor) : public RUsbTransferDescriptor - { -public: - IMPORT_C RUsbIntrTransferDescriptor(TInt aMaxSize); - -public: // Setters - IMPORT_C TPtr8 WritableBuffer(); - IMPORT_C void SaveData(TInt aLength); - IMPORT_C void SetZlpStatus(TZlpStatus aZlpStatus); - -public: // Getters - IMPORT_C TPtrC8 Buffer() const; - }; - -#endif // __KERNEL_MODE__ - -#endif // __D32USBTRANSFERS_H