Zephyr API Documentation 4.0.0
A Scalable Open Source RTOS
|
New experimental USB device stack APIs and structures. More...
#include <zephyr/device.h>
#include <zephyr/usb/bos.h>
#include <zephyr/usb/usb_ch9.h>
#include <zephyr/usb/usbd_msg.h>
#include <zephyr/drivers/usb/udc_buf.h>
#include <zephyr/sys/byteorder.h>
#include <zephyr/sys/slist.h>
#include <zephyr/logging/log.h>
#include <zephyr/sys/iterable_sections.h>
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) |
#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_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_context * | usbd_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_buf * | usbd_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. | |
New experimental USB device stack APIs and structures.
This file contains the USB device stack APIs and structures.