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 Norimasa Okamoto

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?

UserRevisionLine numberNew 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