Zephyr API Documentation  2.7.0-rc2
A Scalable Open Source RTOS
usb_dc.h File Reference

USB device controller APIs. More...

#include <device.h>

Go to the source code of this file.

Data Structures

struct  usb_dc_ep_cfg_data
 USB Endpoint Configuration. More...
 

Macros

#define USB_EP_DIR_MASK   0x80U
 
#define USB_EP_DIR_IN   0x80U
 
#define USB_EP_DIR_OUT   0x00U
 
#define USB_EP_GET_IDX(ep)   ((ep) & ~USB_EP_DIR_MASK)
 
#define USB_EP_GET_DIR(ep)   ((ep) & USB_EP_DIR_MASK)
 
#define USB_EP_GET_ADDR(idx, dir)   ((idx) | ((dir) & USB_EP_DIR_MASK))
 
#define USB_EP_DIR_IS_IN(ep)   (USB_EP_GET_DIR(ep) == USB_EP_DIR_IN)
 
#define USB_EP_DIR_IS_OUT(ep)   (USB_EP_GET_DIR(ep) == USB_EP_DIR_OUT)
 
#define USB_EP_TRANSFER_TYPE_MASK   0x3U
 
#define USB_EP_SYNCHRONIZATION_TYPE_MASK   (0x3 << 2U)
 

Typedefs

typedef void(* usb_dc_ep_callback) (uint8_t ep, enum usb_dc_ep_cb_status_code cb_status)
 
typedef void(* usb_dc_status_callback) (enum usb_dc_status_code cb_status, const uint8_t *param)
 

Enumerations

enum  usb_dc_status_code {
  USB_DC_ERROR , USB_DC_RESET , USB_DC_CONNECTED , USB_DC_CONFIGURED ,
  USB_DC_DISCONNECTED , USB_DC_SUSPEND , USB_DC_RESUME , USB_DC_INTERFACE ,
  USB_DC_SET_HALT , USB_DC_CLEAR_HALT , USB_DC_SOF , USB_DC_UNKNOWN
}
 USB Driver Status Codes. More...
 
enum  usb_dc_ep_cb_status_code { USB_DC_EP_SETUP , USB_DC_EP_DATA_OUT , USB_DC_EP_DATA_IN }
 USB Endpoint Callback Status Codes. More...
 
enum  usb_dc_ep_transfer_type { USB_DC_EP_CONTROL = 0 , USB_DC_EP_ISOCHRONOUS , USB_DC_EP_BULK , USB_DC_EP_INTERRUPT }
 USB Endpoint Transfer Type. More...
 
enum  usb_dc_ep_synchronozation_type { USB_DC_EP_NO_SYNCHRONIZATION = (0U << 2U) , USB_DC_EP_ASYNCHRONOUS = (1U << 2U) , USB_DC_EP_ADAPTIVE = (2U << 2U) , USB_DC_EP_SYNCHRONOUS = (3U << 2U) }
 USB Endpoint Synchronization Type. More...
 

Functions

int usb_dc_attach (void)
 Attach USB for device connection. More...
 
int usb_dc_detach (void)
 Detach the USB device. More...
 
int usb_dc_reset (void)
 Reset the USB device. More...
 
int usb_dc_set_address (const uint8_t addr)
 Set USB device address. More...
 
void usb_dc_set_status_callback (const usb_dc_status_callback cb)
 Set USB device controller status callback. More...
 
int usb_dc_ep_check_cap (const struct usb_dc_ep_cfg_data *const cfg)
 check endpoint capabilities More...
 
int usb_dc_ep_configure (const struct usb_dc_ep_cfg_data *const cfg)
 Configure endpoint. More...
 
int usb_dc_ep_set_stall (const uint8_t ep)
 Set stall condition for the selected endpoint. More...
 
int usb_dc_ep_clear_stall (const uint8_t ep)
 Clear stall condition for the selected endpoint. More...
 
int usb_dc_ep_is_stalled (const uint8_t ep, uint8_t *const stalled)
 Check if the selected endpoint is stalled. More...
 
int usb_dc_ep_halt (const uint8_t ep)
 Halt the selected endpoint. More...
 
int usb_dc_ep_enable (const uint8_t ep)
 Enable the selected endpoint. More...
 
int usb_dc_ep_disable (const uint8_t ep)
 Disable the selected endpoint. More...
 
int usb_dc_ep_flush (const uint8_t ep)
 Flush the selected endpoint. More...
 
int usb_dc_ep_write (const uint8_t ep, const uint8_t *const data, const uint32_t data_len, uint32_t *const ret_bytes)
 Write data to the specified endpoint. More...
 
int usb_dc_ep_read (const uint8_t ep, uint8_t *const data, const uint32_t max_data_len, uint32_t *const read_bytes)
 Read data from the specified endpoint. More...
 
int usb_dc_ep_set_callback (const uint8_t ep, const usb_dc_ep_callback cb)
 Set callback function for the specified endpoint. More...
 
int usb_dc_ep_read_wait (uint8_t ep, uint8_t *data, uint32_t max_data_len, uint32_t *read_bytes)
 Read data from the specified endpoint. More...
 
int usb_dc_ep_read_continue (uint8_t ep)
 Continue reading data from the endpoint. More...
 
int usb_dc_ep_mps (uint8_t ep)
 Get endpoint max packet size. More...
 
int usb_dc_wakeup_request (void)
 Start the host wake up procedure. More...
 

Detailed Description

USB device controller APIs.

This file contains the USB device controller APIs. All device controller drivers should implement the APIs described in this file.

Macro Definition Documentation

◆ USB_EP_DIR_IN

#define USB_EP_DIR_IN   0x80U

◆ USB_EP_DIR_IS_IN

#define USB_EP_DIR_IS_IN (   ep)    (USB_EP_GET_DIR(ep) == USB_EP_DIR_IN)

True if the endpoint is an IN endpoint

◆ USB_EP_DIR_IS_OUT

#define USB_EP_DIR_IS_OUT (   ep)    (USB_EP_GET_DIR(ep) == USB_EP_DIR_OUT)

True if the endpoint is an OUT endpoint

◆ USB_EP_DIR_MASK

#define USB_EP_DIR_MASK   0x80U

USB endpoint direction and number.

◆ USB_EP_DIR_OUT

#define USB_EP_DIR_OUT   0x00U

◆ USB_EP_GET_ADDR

#define USB_EP_GET_ADDR (   idx,
  dir 
)    ((idx) | ((dir) & USB_EP_DIR_MASK))

Get endpoint address from endpoint index and direction

◆ USB_EP_GET_DIR

#define USB_EP_GET_DIR (   ep)    ((ep) & USB_EP_DIR_MASK)

Get direction from endpoint address

◆ USB_EP_GET_IDX

#define USB_EP_GET_IDX (   ep)    ((ep) & ~USB_EP_DIR_MASK)

Get endpoint index (number) from endpoint address

◆ USB_EP_SYNCHRONIZATION_TYPE_MASK

#define USB_EP_SYNCHRONIZATION_TYPE_MASK   (0x3 << 2U)

USB endpoint Synchronization Type mask.

Note
Valid only for Isochronous Endpoints

◆ USB_EP_TRANSFER_TYPE_MASK

#define USB_EP_TRANSFER_TYPE_MASK   0x3U

USB endpoint Transfer Type mask.