Simple USBHost library for STM32F746NG Discovery board. Only either the Fastspeed or the Highspeed port can be used( not both together)
Dependents: DISCO-F746NG_USB_Host
Fork of KL46Z-USBHost by
USBHost/USBHost.h
- Committer:
- va009039
- Date:
- 2014-01-27
- Revision:
- 5:10bfc10afcc8
File content as of revision 5:10bfc10afcc8:
// Simple USBHost for FRDM-KL46Z #pragma once #include "mbed.h" #include "USBHALHost.h" #include "USBEndpoint.h" class USBDeviceConnected {}; //dummy class IUSBEnumerator {}; // dummy class USBHost : public USBHALHost { public: /** * Static method to create or retrieve the single USBHost instance */ static USBHost* getHostInst(); /** * Control read: setup stage, data stage and status stage * * @param dev the control read will be done for this device * @param requestType request type * @param request request * @param value value * @param index index * @param buf pointer on a buffer where will be store the data received * @param len length of the transfer * * @returns status of the control read */ USB_TYPE controlRead(USBDeviceConnected * dev, uint8_t requestType, uint8_t request, uint32_t value, uint32_t index, uint8_t * buf, uint32_t len); /** * Control write: setup stage, data stage and status stage * * @param dev the control write will be done for this device * @param requestType request type * @param request request * @param value value * @param index index * @param buf pointer on a buffer which will be written * @param len length of the transfer * * @returns status of the control write */ USB_TYPE controlWrite(USBDeviceConnected * dev, uint8_t requestType, uint8_t request, uint32_t value, uint32_t index, uint8_t * buf, uint32_t len); /** * Bulk read * * @param dev the bulk transfer will be done for this device * @param ep USBEndpoint which will be used to read a packet * @param buf pointer on a buffer where will be store the data received * @param len length of the transfer * @param blocking if true, the read is blocking (wait for completion) * * @returns status of the bulk read */ USB_TYPE bulkRead(USBDeviceConnected * dev, USBEndpoint * ep, uint8_t * buf, uint32_t len, bool blocking = true); /** * Bulk write * * @param dev the bulk transfer will be done for this device * @param ep USBEndpoint which will be used to write a packet * @param buf pointer on a buffer which will be written * @param len length of the transfer * @param blocking if true, the write is blocking (wait for completion) * * @returns status of the bulk write */ USB_TYPE bulkWrite(USBDeviceConnected * dev, USBEndpoint * ep, uint8_t * buf, uint32_t len, bool blocking = true); /** * Interrupt read * * @param dev the interrupt transfer will be done for this device * @param ep USBEndpoint which will be used to write a packet * @param buf pointer on a buffer which will be written * @param len length of the transfer * @param blocking if true, the read is blocking (wait for completion) * * @returns status of the interrupt read */ USB_TYPE interruptRead(USBDeviceConnected * dev, USBEndpoint * ep, uint8_t * buf, uint32_t len, bool blocking = true); /** * Interrupt write * * @param dev the interrupt transfer will be done for this device * @param ep USBEndpoint which will be used to write a packet * @param buf pointer on a buffer which will be written * @param len length of the transfer * @param blocking if true, the write is blocking (wait for completion) * * @returns status of the interrupt write */ USB_TYPE interruptWrite(USBDeviceConnected * dev, USBEndpoint * ep, uint8_t * buf, uint32_t len, bool blocking = true); int ControlRead(SETUP_PACKET* setup, uint8_t* data, int size); int ControlWrite(SETUP_PACKET* setup, uint8_t* data = NULL, int size = 0); int BulkRead(uint8_t* data, int size, int timeout_ms = -1); int BulkWrite(const uint8_t* data, int size); int InterruptRead(uint8_t* data, int size); int IsochronousRead(USBEndpoint*ep, uint8_t* data, int size); private: USBHost(); static USBHost* inst; virtual bool enumeration(); int dev_addr; USBEndpoint ep_ctl_in_out; USBEndpoint ep_int_in; USBEndpoint ep_bulk_in; USBEndpoint ep_bulk_out; };