Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: HelloWorld ServoInterfaceBoardExample1 4180_Lab4
Diff: drv/usb/UsbEndpoint.h
- Revision:
- 4:fd826cad83c0
- Parent:
- 0:632c9925f013
--- a/drv/usb/UsbEndpoint.h Fri Jun 18 10:38:57 2010 +0000
+++ b/drv/usb/UsbEndpoint.h Fri Jul 09 14:46:47 2010 +0000
@@ -25,55 +25,63 @@
#define USB_ENDPOINT_H
#include "mbed.h"
-#include "USBHostLite/usbhost_inc.h"
+#include "UsbInc.h"
-typedef int32_t RC;
+class UsbDevice;
-class EdPool
+enum UsbEndpointType
{
-public:
- EdPool(int size);
- ~EdPool();
- HCED* get();
-private:
- uint8_t* m_pool;
- int m_pos;
-
-};
-
-class TdPool
-{
-public:
- TdPool(int size);
- ~TdPool();
- HCTD* get();
-private:
- uint8_t* m_pool;
- int m_pos;
-
+ USB_CONTROL,
+ USB_BULK
+// USB_INT,
+// USB_ISO
};
class UsbEndpoint
{
public:
- UsbEndpoint( /* UsbDevice*, */ uint8_t ep, bool dir, uint16_t size );
+ UsbEndpoint( UsbDevice* pDevice, uint8_t ep, bool dir, UsbEndpointType type, uint16_t size, int addr = -1 );
~UsbEndpoint();
- RC transfer(volatile uint8_t* buf, uint32_t len);
+ void setNextToken(uint32_t token); //Only for control Eps
+
+ UsbErr transfer(volatile uint8_t* buf, uint32_t len);
+
+ int status(); //return UsbErr or transfered len
+
+ void updateAddr(int addr);
+ void updateSize(uint16_t size);
- RC status();
-
+ //void setOnCompletion( void(*pCb)completed() );
+ class CDummy;
+ template <class T>
+ void setOnCompletion( T* pCbItem, void (T::*pCbMeth)() )
+ {
+ m_pCbItem = (CDummy*) pCbItem;
+ m_pCbMeth = (void (CDummy::*)()) pCbMeth;
+ }
+
//static void completed(){}
+protected:
+ void onCompletion();
+public:
+ static void sOnCompletion(uint32_t pTd);
+
private:
- EdPool m_edPool;
- TdPool m_tdPool;
+ friend class UsbDevice;
+
+ UsbDevice* m_pDevice;
bool m_dir;
+ bool m_setup;
+ UsbEndpointType m_type;
- bool m_done;
+ //bool m_done;
+ volatile bool m_result;
+ volatile int m_status;
- uint32_t m_len;
+ volatile uint32_t m_len;
volatile uint8_t* m_pBufStartPtr;
@@ -83,6 +91,13 @@
//static volatile HCED* m_pNextEd;
+ CDummy* m_pCbItem;
+ void (CDummy::*m_pCbMeth)();
+
+
+ static UsbEndpoint* m_pHeadEp;
+ UsbEndpoint* m_pNextEp;
+
};
#endif