Lightweight USB stack
1.0
|
Contains core API. More...
Data Structures | |
struct | usbd_ctlreq |
Represents generic USB control request. More... | |
struct | usbd_status |
struct | usbd_device |
Represents a USB device data. More... | |
Macros | |
#define | USB_EPTYPE_DBLBUF 0x04 |
Doublebuffered endpoint (bulk endpoint only). | |
Typedefs | |
typedef void(* | usbd_evt_callback) (usbd_device *dev, uint8_t event, uint8_t ep) |
Generic USB device event callback for events and endpoints processing. More... | |
typedef void(* | usbd_rqc_callback) (usbd_device *dev, usbd_ctlreq *req) |
USB control transfer completed callback function. More... | |
typedef usbd_respond(* | usbd_ctl_callback) (usbd_device *dev, usbd_ctlreq *req, usbd_rqc_callback *callback) |
USB control callback function. More... | |
typedef usbd_respond(* | usbd_dsc_callback) (usbd_ctlreq *req, void **address, uint16_t *dsize) |
USB get descriptor callback function. More... | |
typedef usbd_respond(* | usbd_cfg_callback) (usbd_device *dev, uint8_t cfg) |
USB set configuration callback function. More... | |
Enumerations | |
enum | usbd_machine_state |
USB device machine states. More... | |
enum | usbd_ctl_state |
USB device control endpoint machine state. More... | |
enum | usbd_respond |
Reporting status results. More... | |
Functions | |
static void | usbd_init (usbd_device *dev, const struct usbd_driver *drv, const uint8_t ep0size, uint32_t *buffer, const uint16_t bsize) |
Initializes device structure. More... | |
void | usbd_poll (usbd_device *dev) |
Polls USB for events. More... | |
static void | usbd_reg_control (usbd_device *dev, usbd_ctl_callback callback) |
Register callback for all control requests. More... | |
static void | usbd_reg_config (usbd_device *dev, usbd_cfg_callback callback) |
Register callback for SET_CONFIG control request. More... | |
static void | usbd_reg_descr (usbd_device *dev, usbd_dsc_callback callback) |
Register callback for GET_DESCRIPTOR control request. More... | |
static bool | usbd_ep_config (usbd_device *dev, uint8_t ep, uint8_t eptype, uint16_t epsize) |
Configure endpoint. More... | |
static void | usbd_ep_deconfig (usbd_device *dev, uint8_t ep) |
Deconfigure endpoint. More... | |
static void | usbd_reg_endpoint (usbd_device *dev, uint8_t ep, usbd_evt_callback callback) |
Register endpoint callback. More... | |
static void | usbd_reg_event (usbd_device *dev, uint8_t evt, usbd_evt_callback callback) |
Registers event callback. More... | |
static int32_t | usbd_ep_write (usbd_device *dev, uint8_t ep, void *buf, uint16_t blen) |
Write data to endpoint. More... | |
static int32_t | usbd_ep_read (usbd_device *dev, uint8_t ep, void *buf, uint16_t blen) |
Read data from endpoint. More... | |
static void | usbd_ep_stall (usbd_device *dev, uint8_t ep) |
Stall endpoint. More... | |
static void | usbd_ep_unstall (usbd_device *dev, uint8_t ep) |
Unstall endpoint. More... | |
static void | usbd_enable (usbd_device *dev, bool enable) |
Enables or disables USB hardware. More... | |
static uint8_t | usbd_connect (usbd_device *dev, bool connect) |
Connects or disconnects USB hardware to/from usb host. More... | |
static uint32_t | usbd_getinfo (usbd_device *dev) |
Retrieves status and capabilities. More... | |
bmRequestType bitmapped field | |
#define | USB_REQ_DIRECTION (1 << 7) |
Request direction mask. | |
#define | USB_REQ_HOSTTODEV (0 << 7) |
Request direction is HOST to DEVICE. | |
#define | USB_REQ_DEVTOHOST (1 << 7) |
Request direction is DEVICE to HOST. | |
#define | USB_REQ_TYPE (3 << 5) |
Request type mask. | |
#define | USB_REQ_STANDARD (0 << 5) |
Standard request. | |
#define | USB_REQ_CLASS (1 << 5) |
Class specified request. | |
#define | USB_REQ_VENDOR (2 << 5) |
Vendor specified request. | |
#define | USB_REQ_RECIPIENT (3 << 0) |
Request recipient mask. | |
#define | USB_REQ_DEVICE (0 << 0) |
Request to device. | |
#define | USB_REQ_INTERFACE (1 << 0) |
Request to interface. | |
#define | USB_REQ_ENDPOINT (2 << 0) |
Request to endpoint. | |
#define | USB_REQ_OTHER (3 << 0) |
Other request. | |
Contains core API.
typedef void(* usbd_evt_callback) (usbd_device *dev, uint8_t event, uint8_t ep) |
Generic USB device event callback for events and endpoints processing.
[in] | dev | pointer to USB device |
event | USB event | |
ep | active endpoint number |
Definition at line 175 of file usbd_core.h.
typedef void(* usbd_rqc_callback) (usbd_device *dev, usbd_ctlreq *req) |
USB control transfer completed callback function.
[in] | dev | pointer to USB device |
[in] | req | pointer to usb request structure |
Definition at line 182 of file usbd_core.h.
typedef usbd_respond(* usbd_ctl_callback) (usbd_device *dev, usbd_ctlreq *req, usbd_rqc_callback *callback) |
USB control callback function.
Uses for the control request processing. Some requests will be handled by core if callback don't process it (returns FALSE). If request was not processed STALL PID will be issued.
[in] | dev | points to USB device |
[in] | req | points to usb control request |
[out] | *callback | USB control transfer completion callback, default is NULL (no callback) |
Definition at line 199 of file usbd_core.h.
typedef usbd_respond(* usbd_dsc_callback) (usbd_ctlreq *req, void **address, uint16_t *dsize) |
USB get descriptor callback function.
Called when GET_DESCRIPTOR request issued
[in] | req | pointer to usb control request structure |
[in,out] | address | pointer to the descriptor in memory. Points to req->data by default. You can use this buffer. |
[in,out] | dsize | descriptor size. maximum buffer size by default. |
Definition at line 209 of file usbd_core.h.
typedef usbd_respond(* usbd_cfg_callback) (usbd_device *dev, uint8_t cfg) |
USB set configuration callback function.
called when SET_CONFIGURATION request issued
[in] | dev | pointer to USB device |
[in] | cfg | configuration number. |
Definition at line 218 of file usbd_core.h.
enum usbd_machine_state |
USB device machine states.
Enumerator | |
---|---|
usbd_state_default | Default. |
usbd_state_addressed | Addressed. |
usbd_state_configured | Configured. |
Definition at line 113 of file usbd_core.h.
enum usbd_ctl_state |
USB device control endpoint machine state.
Definition at line 122 of file usbd_core.h.
enum usbd_respond |
Reporting status results.
Enumerator | |
---|---|
usbd_fail | Function has an error, STALLPID will be issued. |
usbd_ack | Function completes request accepted ZLP or data will be send. |
usbd_nak | Function is busy. NAK handshake. |
Definition at line 135 of file usbd_core.h.
|
inlinestatic |
Initializes device structure.
dev | USB device that will be initialized |
drv | Pointer to hardware driver |
ep0size | Control endpoint 0 size |
buffer | Pointer to control request data buffer (32-bit aligned) |
bsize | Size of the data buffer |
Definition at line 347 of file usbd_core.h.
void usbd_poll | ( | usbd_device * | dev | ) |
Polls USB for events.
dev | Pointer to device structure |
|
inlinestatic |
Register callback for all control requests.
dev | usb device _usbd_device |
callback | user control callback usbd_ctl_callback |
Definition at line 366 of file usbd_core.h.
|
inlinestatic |
Register callback for SET_CONFIG control request.
dev | dev usb device _usbd_device |
callback | pointer to user usbd_cfg_callback |
Definition at line 374 of file usbd_core.h.
|
inlinestatic |
Register callback for GET_DESCRIPTOR control request.
dev | dev usb device _usbd_device |
callback | pointer to user usbd_ctl_callback |
Definition at line 382 of file usbd_core.h.
|
inlinestatic |
Configure endpoint.
dev | dev usb device _usbd_device |
ep | endpoint address. Use USB_EPDIR_ macros to set endpoint direction |
eptype | endpoint type. Use USB_EPTYPE_* macros. |
epsize | endpoint size in bytes |
Definition at line 390 of file usbd_core.h.
|
inlinestatic |
Deconfigure endpoint.
dev | dev usb device _usbd_device |
ep | endpoint index |
Definition at line 398 of file usbd_core.h.
|
inlinestatic |
Register endpoint callback.
dev | dev usb device _usbd_device |
ep | endpoint index |
callback | pointer to user usbd_evt_callback callback for endpoint events |
Definition at line 407 of file usbd_core.h.
|
inlinestatic |
Registers event callback.
dev | dev usb device _usbd_device |
evt | device event wants to be registered |
callback | pointer to user usbd_evt_callback for this event |
Definition at line 416 of file usbd_core.h.
|
inlinestatic |
Write data to endpoint.
dev | dev usb device _usbd_device |
ep | endpoint index, hould belong to IN or CONTROL endpoint |
buf | pointer to data buffer |
blen | size of data will be written |
Definition at line 424 of file usbd_core.h.
|
inlinestatic |
Read data from endpoint.
dev | dev usb device _usbd_device |
ep | endpoint index, should belong to OUT or CONTROL endpoint. |
buf | pointer to read buffer |
blen | size of the read buffer in bytes |
Definition at line 432 of file usbd_core.h.
|
inlinestatic |
Stall endpoint.
dev | dev usb device _usbd_device |
ep | endpoint address |
Definition at line 440 of file usbd_core.h.
|
inlinestatic |
Unstall endpoint.
dev | dev usb device _usbd_device |
ep | endpoint address |
Definition at line 448 of file usbd_core.h.
|
inlinestatic |
Enables or disables USB hardware.
dev | dev usb device _usbd_device |
enable | Enables USB when TRUE disables otherwise |
Definition at line 456 of file usbd_core.h.
|
inlinestatic |
Connects or disconnects USB hardware to/from usb host.
dev | dev usb device _usbd_device |
connect | Connects USB to host if TRUE, disconnects otherwise |
Definition at line 465 of file usbd_core.h.
|
inlinestatic |
Retrieves status and capabilities.
Definition at line 471 of file usbd_core.h.