Zephyr API Documentation 4.2.99
A Scalable Open Source RTOS
 4.2.99
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_vreq_node
 USBD vendor request node. 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 USBD_SUPPORTS_HIGH_SPEED   IS_EQ(CONFIG_USBD_MAX_SPEED, 1)
#define USBD_MAX_BULK_MPS   COND_CODE_1(USBD_SUPPORTS_HIGH_SPEED, (512), (64))
#define USB_STRING_DESCRIPTOR_LENGTH(s)
#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)
 Create a string descriptor node and manufacturer string descriptor.
#define USBD_DESC_PRODUCT_DEFINE(d_name, d_string)
 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)
 Create a string descriptor node for configuration descriptor.
#define USBD_DESC_BOS_DEFINE(name, len, subset)
 Define BOS Device Capability descriptor node.
#define USBD_VREQUEST_DEFINE(name, vcode, vto_host, vto_dev)
 Define a vendor request with recipient device.
#define USBD_DESC_BOS_VREQ_DEFINE(name, len, subset, vcode, vto_host, vto_dev)
 Define BOS Device Capability descriptor node with vendor request.
#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, const char *const blocklist[])
 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)
void usbd_self_powered (struct usbd_context *uds_ctx, const bool status)
 Set the self-powered status of the USB device.
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.
int usbd_device_register_vreq (struct usbd_context *const uds_ctx, struct usbd_vreq_node *const vreq_nd)
 Register an USB vendor request with recipient device.

Detailed Description

New experimental USB device stack APIs and structures.

This file contains the USB device stack APIs and structures.