USB Host Driver with Socket Modem support. Works with revision 323 of mbed-src but broken with any later version.
Dependencies: FATFileSystem
Fork of F401RE-USBHost by
USBHost.h@0:5160ee0c522d, 2014-01-18 (annotated)
- Committer:
- va009039
- Date:
- Sat Jan 18 13:30:22 2014 +0000
- Revision:
- 0:5160ee0c522d
- Child:
- 1:c072d9e580b0
first commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
va009039 | 0:5160ee0c522d | 1 | // Simple USBHost for FRDM-KL46Z |
va009039 | 0:5160ee0c522d | 2 | #include "mbed.h" |
va009039 | 0:5160ee0c522d | 3 | #pragma once |
va009039 | 0:5160ee0c522d | 4 | |
va009039 | 0:5160ee0c522d | 5 | struct SETUP_PACKET { |
va009039 | 0:5160ee0c522d | 6 | uint8_t bmRequestType; |
va009039 | 0:5160ee0c522d | 7 | uint8_t bRequest; |
va009039 | 0:5160ee0c522d | 8 | uint16_t wValue; |
va009039 | 0:5160ee0c522d | 9 | uint16_t wIndex; |
va009039 | 0:5160ee0c522d | 10 | uint16_t wLength; |
va009039 | 0:5160ee0c522d | 11 | }; |
va009039 | 0:5160ee0c522d | 12 | |
va009039 | 0:5160ee0c522d | 13 | #define SET_ADDRESS 5 |
va009039 | 0:5160ee0c522d | 14 | #define GET_DESCRIPTOR 6 |
va009039 | 0:5160ee0c522d | 15 | #define GET_CONFIGURATION 8 |
va009039 | 0:5160ee0c522d | 16 | #define SET_CONFIGURATION 9 |
va009039 | 0:5160ee0c522d | 17 | |
va009039 | 0:5160ee0c522d | 18 | enum ODD_EVEN { |
va009039 | 0:5160ee0c522d | 19 | ODD = 0, |
va009039 | 0:5160ee0c522d | 20 | EVEN = 1, |
va009039 | 0:5160ee0c522d | 21 | }; |
va009039 | 0:5160ee0c522d | 22 | |
va009039 | 0:5160ee0c522d | 23 | class USBHost { |
va009039 | 0:5160ee0c522d | 24 | public: |
va009039 | 0:5160ee0c522d | 25 | static USBHost* getHostInst(); |
va009039 | 0:5160ee0c522d | 26 | int InterruptRead(uint8_t* data, int size); |
va009039 | 0:5160ee0c522d | 27 | int ControlRead(SETUP_PACKET* setup, uint8_t* data, int size); |
va009039 | 0:5160ee0c522d | 28 | int ControlWrite(SETUP_PACKET* setup, uint8_t* data = NULL, int size = 0); |
va009039 | 0:5160ee0c522d | 29 | int BulkRead(uint8_t* data, int size); |
va009039 | 0:5160ee0c522d | 30 | int BulkWrite(const uint8_t* data, int size); |
va009039 | 0:5160ee0c522d | 31 | |
va009039 | 0:5160ee0c522d | 32 | protected: |
va009039 | 0:5160ee0c522d | 33 | USBHost(); |
va009039 | 0:5160ee0c522d | 34 | void init(); |
va009039 | 0:5160ee0c522d | 35 | void wait_attach(); |
va009039 | 0:5160ee0c522d | 36 | void enumeration(); |
va009039 | 0:5160ee0c522d | 37 | uint8_t ep_int_in; |
va009039 | 0:5160ee0c522d | 38 | uint8_t ep_bulk_in; |
va009039 | 0:5160ee0c522d | 39 | uint8_t ep_bulk_out; |
va009039 | 0:5160ee0c522d | 40 | int MaxPacketSize0; |
va009039 | 0:5160ee0c522d | 41 | |
va009039 | 0:5160ee0c522d | 42 | private: |
va009039 | 0:5160ee0c522d | 43 | static void _usbisr(void); |
va009039 | 0:5160ee0c522d | 44 | int token_setup(SETUP_PACKET* setup, uint16_t wLength = 0); |
va009039 | 0:5160ee0c522d | 45 | int token_in(uint8_t ep, uint8_t* data = NULL, int size = 0); |
va009039 | 0:5160ee0c522d | 46 | int token_out(uint8_t ep, const uint8_t* data = NULL, int size = 0); |
va009039 | 0:5160ee0c522d | 47 | void UsbIrqhandler(); |
va009039 | 0:5160ee0c522d | 48 | __IO bool attach_done; |
va009039 | 0:5160ee0c522d | 49 | __IO bool token_done; |
va009039 | 0:5160ee0c522d | 50 | ODD_EVEN tx_ptr; |
va009039 | 0:5160ee0c522d | 51 | ODD_EVEN rx_ptr; |
va009039 | 0:5160ee0c522d | 52 | static USBHost* inst; |
va009039 | 0:5160ee0c522d | 53 | }; |
va009039 | 0:5160ee0c522d | 54 |