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

USB device core layer APIs and structures. More...

#include <drivers/usb/usb_dc.h>
#include <usb/usb_ch9.h>
#include <logging/log.h>

Go to the source code of this file.

Data Structures

struct  usb_ep_cfg_data
 USB Endpoint Configuration. More...
 
struct  usb_interface_cfg_data
 USB Interface Configuration. More...
 
struct  usb_cfg_data
 USB device configuration. More...
 

Macros

#define USBD_DEVICE_DESCR_DEFINE(p)    static __in_section(usb, descriptor_##p, 0) __used __aligned(1)
 
#define USBD_CLASS_DESCR_DEFINE(p, instance)    static __in_section(usb, descriptor_##p.1, instance) __used __aligned(1)
 
#define USBD_MISC_DESCR_DEFINE(p)    static __in_section(usb, descriptor_##p, 2) __used __aligned(1)
 
#define USBD_USER_DESCR_DEFINE(p)    static __in_section(usb, descriptor_##p, 3) __used __aligned(1)
 
#define USBD_STRING_DESCR_DEFINE(p)    static __in_section(usb, descriptor_##p, 4) __used __aligned(1)
 
#define USBD_TERM_DESCR_DEFINE(p)    static __in_section(usb, descriptor_##p, 5) __used __aligned(1)
 
#define USBD_CFG_DATA_DEFINE(p, name)    static __in_section(usb, data_##p, name) __used
 
#define USB_MAX_CTRL_MPS   64
 
#define USB_MAX_FS_BULK_MPS   64
 
#define USB_MAX_FS_INT_MPS   64
 
#define USB_MAX_FS_ISO_MPS   1023
 
#define USB_TRANS_READ   BIT(0) /** Read transfer flag */
 
#define USB_TRANS_WRITE   BIT(1) /** Write transfer flag */
 
#define USB_TRANS_NO_ZLP   BIT(2) /** No zero-length packet flag */
 

Typedefs

typedef void(* usb_ep_callback) (uint8_t ep, enum usb_dc_ep_cb_status_code cb_status)
 Callback function signature for the USB Endpoint status. More...
 
typedef int(* usb_request_handler) (struct usb_setup_packet *setup, int32_t *transfer_len, uint8_t **payload_data)
 Callback function signature for class specific requests. More...
 
typedef void(* usb_interface_config) (struct usb_desc_header *head, uint8_t bInterfaceNumber)
 Function for interface runtime configuration. More...
 
typedef void(* usb_transfer_callback) (uint8_t ep, int tsize, void *priv)
 

Functions

int usb_set_config (const uint8_t *usb_descriptor)
 Configure USB controller. More...
 
int usb_deconfig (void)
 Deconfigure USB controller. More...
 
int usb_enable (usb_dc_status_callback status_cb)
 Enable the USB subsystem and associated hardware. More...
 
int usb_disable (void)
 Disable the USB device. More...
 
int usb_write (uint8_t ep, const uint8_t *data, uint32_t data_len, uint32_t *bytes_ret)
 Write data to the specified endpoint. More...
 
int usb_read (uint8_t ep, uint8_t *data, uint32_t max_data_len, uint32_t *ret_bytes)
 Read data from the specified endpoint. More...
 
int usb_ep_set_stall (uint8_t ep)
 Set STALL condition on the specified endpoint. More...
 
int usb_ep_clear_stall (uint8_t ep)
 Clears STALL condition on the specified endpoint. More...
 
int usb_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_ep_read_continue (uint8_t ep)
 Continue reading data from the endpoint. More...
 
void usb_transfer_ep_callback (uint8_t ep, enum usb_dc_ep_cb_status_code)
 Transfer management endpoint callback. More...
 
int usb_transfer (uint8_t ep, uint8_t *data, size_t dlen, unsigned int flags, usb_transfer_callback cb, void *priv)
 Start a transfer. More...
 
int usb_transfer_sync (uint8_t ep, uint8_t *data, size_t dlen, unsigned int flags)
 Start a transfer and block-wait for completion. More...
 
void usb_cancel_transfer (uint8_t ep)
 Cancel any ongoing transfer on the specified endpoint. More...
 
void usb_cancel_transfers (void)
 Cancel all ongoing transfers. More...
 
bool usb_transfer_is_busy (uint8_t ep)
 Check that transfer is ongoing for the endpoint. More...
 
int usb_wakeup_request (void)
 Start the USB remote wakeup procedure. More...
 

Detailed Description

USB device core layer APIs and structures.

This file contains the USB device core layer APIs and structures.

Macro Definition Documentation

◆ USB_MAX_CTRL_MPS

#define USB_MAX_CTRL_MPS   64

maximum packet size (MPS) for EP 0

◆ USB_MAX_FS_BULK_MPS

#define USB_MAX_FS_BULK_MPS   64

full speed MPS for bulk EP

◆ USB_MAX_FS_INT_MPS

#define USB_MAX_FS_INT_MPS   64

full speed MPS for interrupt EP

◆ USB_MAX_FS_ISO_MPS

#define USB_MAX_FS_ISO_MPS   1023

full speed MPS for isochronous EP

◆ USBD_CFG_DATA_DEFINE

#define USBD_CFG_DATA_DEFINE (   p,
  name 
)     static __in_section(usb, data_##p, name) __used

◆ USBD_CLASS_DESCR_DEFINE

#define USBD_CLASS_DESCR_DEFINE (   p,
  instance 
)     static __in_section(usb, descriptor_##p.1, instance) __used __aligned(1)

◆ USBD_DEVICE_DESCR_DEFINE

#define USBD_DEVICE_DESCR_DEFINE (   p)     static __in_section(usb, descriptor_##p, 0) __used __aligned(1)

◆ USBD_MISC_DESCR_DEFINE

#define USBD_MISC_DESCR_DEFINE (   p)     static __in_section(usb, descriptor_##p, 2) __used __aligned(1)

◆ USBD_STRING_DESCR_DEFINE

#define USBD_STRING_DESCR_DEFINE (   p)     static __in_section(usb, descriptor_##p, 4) __used __aligned(1)

◆ USBD_TERM_DESCR_DEFINE

#define USBD_TERM_DESCR_DEFINE (   p)     static __in_section(usb, descriptor_##p, 5) __used __aligned(1)

◆ USBD_USER_DESCR_DEFINE

#define USBD_USER_DESCR_DEFINE (   p)     static __in_section(usb, descriptor_##p, 3) __used __aligned(1)