Zephyr Project API 4.0.0
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
usbd.h File Reference

New experimental USB device stack APIs and structures. More...

Go to the source code of this file.

Data Structures

struct  usbd_str_desc_data
 Used internally to keep descriptors in order. More...
 
struct  usbd_bos_desc_data
 USBD BOS Device Capability descriptor data. More...
 
struct  usbd_desc_node
 Descriptor node. More...
 
struct  usbd_config_node
 Device configuration node. More...
 
struct  usbd_ch9_data
 USB device support middle layer runtime data. More...
 
struct  usbd_status
 USB device support status. More...
 
struct  usbd_context
 USB device support runtime context. More...
 
struct  usbd_cctx_vendor_req
 Vendor Requests Table. More...
 
struct  usbd_class_api
 USB device support class instance API. More...
 
struct  usbd_class_data
 USB device support class data. More...
 

Macros

#define USB_BSTRING_LENGTH(s)   (sizeof(s) * 2 - 2)
 
#define USB_STRING_DESCRIPTOR_LENGTH(s)   (sizeof(s) * 2)
 
#define USBD_NUMOF_INTERFACES_MAX   16U
 
#define USBD_CCTX_REGISTERED   0
 USB Class instance registered flag.
 
#define USBD_DEVICE_DEFINE(device_name, udc_dev, vid, pid)
 Define USB device context structure.
 
#define USBD_CONFIGURATION_DEFINE(name, attrib, power, desc_nd)
 Define USB device configuration.
 
#define USBD_DESC_LANG_DEFINE(name)
 Create a string descriptor node and language string descriptor.
 
#define USBD_DESC_STRING_DEFINE(d_name, d_string, d_utype)
 Create a string descriptor.
 
#define USBD_DESC_MANUFACTURER_DEFINE(d_name, d_string)    USBD_DESC_STRING_DEFINE(d_name, d_string, USBD_DUT_STRING_MANUFACTURER)
 Create a string descriptor node and manufacturer string descriptor.
 
#define USBD_DESC_PRODUCT_DEFINE(d_name, d_string)    USBD_DESC_STRING_DEFINE(d_name, d_string, USBD_DUT_STRING_PRODUCT)
 Create a string descriptor node and product string descriptor.
 
#define USBD_DESC_SERIAL_NUMBER_DEFINE(d_name)
 Create a string descriptor node and serial number string descriptor.
 
#define USBD_DESC_CONFIG_DEFINE(d_name, d_string)    USBD_DESC_STRING_DEFINE(d_name, d_string, USBD_DUT_STRING_CONFIG)
 Create a string descriptor node for configuration descriptor.
 
#define USBD_DESC_BOS_DEFINE(name, len, subset)
 Define BOS Device Capability descriptor node.
 
#define USBD_DEFINE_CLASS(class_name, class_api, class_priv, class_v_reqs)
 Define USB device support class data.
 
#define VENDOR_REQ_DEFINE(_reqs, _len)
 Helper to declare request table of usbd_cctx_vendor_req.
 
#define USBD_VENDOR_REQ(_reqs...)
 Helper to declare supported vendor requests.
 

Typedefs

typedef void(* usbd_msg_cb_t) (struct usbd_context *const ctx, const struct usbd_msg *const msg)
 Callback type definition for USB device message delivery.
 

Enumerations

enum  usbd_ch9_state { USBD_STATE_DEFAULT = 0 , USBD_STATE_ADDRESS , USBD_STATE_CONFIGURED }
 USB device support middle layer runtime state. More...
 
enum  usbd_speed { USBD_SPEED_FS , USBD_SPEED_HS , USBD_SPEED_SS }
 USB device speed. More...
 

Functions

static struct usbd_contextusbd_class_get_ctx (const struct usbd_class_data *const c_data)
 Get the USB device runtime context under which the class is registered.
 
static void * usbd_class_get_private (const struct usbd_class_data *const c_data)
 Get class implementation private data.
 
int usbd_add_descriptor (struct usbd_context *uds_ctx, struct usbd_desc_node *dn)
 Add common USB descriptor.
 
uint8_t usbd_str_desc_get_idx (const struct usbd_desc_node *const desc_nd)
 Get USB string descriptor index from descriptor node.
 
void usbd_remove_descriptor (struct usbd_desc_node *const desc_nd)
 Remove USB string descriptor.
 
int usbd_add_configuration (struct usbd_context *uds_ctx, const enum usbd_speed speed, struct usbd_config_node *cd)
 Add a USB device configuration.
 
int usbd_register_class (struct usbd_context *uds_ctx, const char *name, const enum usbd_speed speed, uint8_t cfg)
 Register an USB class instance.
 
int usbd_register_all_classes (struct usbd_context *uds_ctx, const enum usbd_speed speed, uint8_t cfg)
 Register all available USB class instances.
 
int usbd_unregister_class (struct usbd_context *uds_ctx, const char *name, const enum usbd_speed speed, uint8_t cfg)
 Unregister an USB class instance.
 
int usbd_unregister_all_classes (struct usbd_context *uds_ctx, const enum usbd_speed speed, uint8_t cfg)
 Unregister all available USB class instances.
 
int usbd_msg_register_cb (struct usbd_context *const uds_ctx, const usbd_msg_cb_t cb)
 Register USB notification message callback.
 
int usbd_init (struct usbd_context *uds_ctx)
 Initialize USB device.
 
int usbd_enable (struct usbd_context *uds_ctx)
 Enable the USB device support and registered class instances.
 
int usbd_disable (struct usbd_context *uds_ctx)
 Disable the USB device support.
 
int usbd_shutdown (struct usbd_context *const uds_ctx)
 Shutdown the USB device support.
 
int usbd_ep_set_halt (struct usbd_context *uds_ctx, uint8_t ep)
 Halt endpoint.
 
int usbd_ep_clear_halt (struct usbd_context *uds_ctx, uint8_t ep)
 Clear endpoint halt.
 
bool usbd_ep_is_halted (struct usbd_context *uds_ctx, uint8_t ep)
 Checks whether the endpoint is halted.
 
struct net_bufusbd_ep_buf_alloc (const struct usbd_class_data *const c_data, const uint8_t ep, const size_t size)
 Allocate buffer for USB device request.
 
int usbd_ep_ctrl_enqueue (struct usbd_context *const uds_ctx, struct net_buf *const buf)
 Queue USB device control request.
 
int usbd_ep_enqueue (const struct usbd_class_data *const c_data, struct net_buf *const buf)
 Queue USB device request.
 
int usbd_ep_dequeue (struct usbd_context *uds_ctx, const uint8_t ep)
 Remove all USB device controller requests from endpoint queue.
 
int usbd_ep_buf_free (struct usbd_context *uds_ctx, struct net_buf *buf)
 Free USB device request buffer.
 
bool usbd_is_suspended (struct usbd_context *uds_ctx)
 Checks whether the USB device controller is suspended.
 
int usbd_wakeup_request (struct usbd_context *uds_ctx)
 Initiate the USB remote wakeup (TBD)
 
enum usbd_speed usbd_bus_speed (const struct usbd_context *const uds_ctx)
 Get actual device speed.
 
enum usbd_speed usbd_caps_speed (const struct usbd_context *const uds_ctx)
 Get highest speed supported by the controller.
 
int usbd_device_set_bcd_usb (struct usbd_context *const uds_ctx, const enum usbd_speed speed, const uint16_t bcd)
 Set USB device descriptor value bcdUSB.
 
int usbd_device_set_vid (struct usbd_context *const uds_ctx, const uint16_t vid)
 Set USB device descriptor value idVendor.
 
int usbd_device_set_pid (struct usbd_context *const uds_ctx, const uint16_t pid)
 Set USB device descriptor value idProduct.
 
int usbd_device_set_bcd_device (struct usbd_context *const uds_ctx, const uint16_t bcd)
 Set USB device descriptor value bcdDevice.
 
int usbd_device_set_code_triple (struct usbd_context *const uds_ctx, const enum usbd_speed speed, const uint8_t base_class, const uint8_t subclass, const uint8_t protocol)
 Set USB device descriptor code triple Base Class, SubClass, and Protocol.
 
int usbd_config_attrib_rwup (struct usbd_context *const uds_ctx, const enum usbd_speed speed, const uint8_t cfg, const bool enable)
 Setup USB device configuration attribute Remote Wakeup.
 
int usbd_config_attrib_self (struct usbd_context *const uds_ctx, const enum usbd_speed speed, const uint8_t cfg, const bool enable)
 Setup USB device configuration attribute Self-powered.
 
int usbd_config_maxpower (struct usbd_context *const uds_ctx, const enum usbd_speed speed, const uint8_t cfg, const uint8_t power)
 Setup USB device configuration power consumption.
 
bool usbd_can_detect_vbus (struct usbd_context *const uds_ctx)
 Check that the controller can detect the VBUS state change.
 

Detailed Description

New experimental USB device stack APIs and structures.

This file contains the USB device stack APIs and structures.