usbdrv/peripheral/public/usbcontrolxferif.h
branchRCL_3
changeset 15 f92a4f87e424
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbdrv/peripheral/public/usbcontrolxferif.h	Tue Aug 31 17:01:47 2010 +0300
@@ -0,0 +1,60 @@
+/*
+  Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). 
+  All rights reserved.
+
+  This program and the accompanying materials are made available 
+  under the terms of the Eclipse Public License v1.0 which accompanies 
+  this distribution, and is available at 
+  http://www.eclipse.org/legal/epl-v10.html
+
+  Initial Contributors:
+  Nokia Corporation - initial contribution.
+
+  Contributors:
+*/
+
+#ifndef USBCONTROLXFERIF_H
+#define USBCONTROLXFERIF_H
+
+#include <e32def.h>                 // General types definition
+
+/** 
+ * Callback interfaces that used to process packet received from Host
+ * and interfaces through which that PIL or app can send request to PSL
+ */
+NONSHARABLE_CLASS(MControlTransferIf)
+    {
+    public:
+        // Interface for RX
+        // Transfer direction from Device to Host
+        // This two interface is saying PSL had finished
+        // sending those data to host.
+        virtual void ProcessDataInPacket(TInt aCount,TInt aErrCode) = 0;
+        virtual void ProcessStatusInPacket(TInt aErrCode) = 0;
+        
+        // Transfer direction from Host to Device
+        // they are saying that some data had been recieved from host
+        virtual void ProcessDataOutPacket(TInt aCount,TInt aErrCode) = 0;
+        virtual void ProcessStatusOutPacket(TInt aErrCode) = 0;
+        virtual void ProcessSetupPacket(TInt aCount,TInt aErrCode) = 0;
+        
+        // Interface for TX and Control
+        // Data/Status transfer function
+        virtual TInt ProcessSetupEndpointZeroRead() = 0;
+        virtual TInt ProcessSetupEndpointZeroWrite(const TUint8* aBuffer, TInt aLength, TBool aZlpReqd=EFalse) = 0;
+        virtual TInt ProcessSendEp0ZeroByteStatusPacket() = 0;
+        virtual TInt ProcessStallEndpoint(TInt aRealEndpoint) = 0;
+        
+        // Flow control interface
+        // In case of we can not deliver received packet(setup or data) to a registered client
+        // (because the request callback is not ready), we need PSL stop reporting more packet
+        // to PIL until the pending packet had been process.
+        // this 2 functions is used to notify PSL: you can continue, the pending packet is proceed.
+        virtual void ProcessEp0SetupPacketProceed() = 0;
+        virtual void ProcessEp0DataPacketProceed() = 0;
+    };
+
+#endif //USBCONTROLXFERIF_H
+
+// End of file
+