VSF Documented
usb_device.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2026 by VSF Team *
3 * *
4 * Licensed under the Apache License, Version 2.0 (the "License"); *
5 * you may not use this file except in compliance with the License. *
6 * You may obtain a copy of the License at *
7 * *
8 * http://www.apache.org/licenses/LICENSE-2.0 *
9 * *
10 * Unless required by applicable law or agreed to in writing, software *
11 * distributed under the License is distributed on an "AS IS" BASIS, *
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13 * See the License for the specific language governing permissions and *
14 * limitations under the License. *
15 * *
16 ****************************************************************************/
17
18/*
19 * Clean-room re-implementation of the ESP-IDF ROM USB Device API
20 * ("esp32s2/rom/usb/usb_device.h").
21 *
22 * Authored from the public API reference only. No code copied from the
23 * ESP-IDF source tree.
24 *
25 * Standard USB descriptor types (struct usb_device_descriptor etc.) are
26 * obtained from VSF's usb_common.h via a conditional include so that types
27 * never duplicate.
28 */
29
30#ifndef __VSF_ESPIDF_USB_DEVICE_H__
31#define __VSF_ESPIDF_USB_DEVICE_H__
32
33/*============================ INCLUDES ======================================*/
34
35#include <stdint.h>
36#include <stddef.h>
37#include <stdbool.h>
38
39#include "esp_err.h"
40
42
44
45#ifdef __cplusplus
46extern "C" {
47#endif
48
49/*============================ MACROS ========================================*/
50
51#define MAX_PACKET_SIZE0 64
52
53#define USB_EP_DIR_MASK 0x80
54#define USB_EP_DIR_IN 0x80
55#define USB_EP_DIR_OUT 0x00
56
57#define USB_TRANS_READ BIT(0)
58#define USB_TRANS_WRITE BIT(1)
59#define USB_TRANS_NO_ZLP BIT(2)
60
61/*============================ TYPES =========================================*/
62
75};
76
81};
82
90
92 uint8_t *param);
93
94typedef void (*usb_ep_callback)(uint8_t ep,
95 enum usb_dc_ep_cb_status_code cb_status);
96
97typedef int (*usb_request_handler)(struct usb_setup_packet *setup,
98 int32_t *transfer_len,
99 uint8_t **payload_data);
100
101typedef void (*usb_interface_config)(uint8_t bInterfaceNumber);
102
103typedef void (*usb_transfer_callback)(uint8_t ep, int tsize, void *priv);
104
108};
109
116};
117
126};
127
128/*============================ PROTOTYPES ====================================*/
129
130int usb_set_config(struct usb_cfg_data *config);
131int usb_deconfig(void);
132int usb_enable(struct usb_cfg_data *config);
133int usb_disable(void);
134
136int usb_write(uint8_t ep, const uint8_t *data, uint32_t data_len,
137 uint32_t *bytes_ret);
138int usb_read(uint8_t ep, uint8_t *data, uint32_t max_data_len,
139 uint32_t *ret_bytes);
140
143
144int usb_ep_read_wait(uint8_t ep, uint8_t *data, uint32_t max_data_len,
145 uint32_t *read_bytes);
147
149 enum usb_dc_ep_cb_status_code cb_status);
150int usb_transfer(uint8_t ep, uint8_t *data, size_t dlen, unsigned int flags,
151 usb_transfer_callback cb, void *priv);
152int usb_transfer_sync(uint8_t ep, uint8_t *data, size_t dlen,
153 unsigned int flags);
155
156void usb_dev_deinit(void);
157void usb_dev_resume(int configuration);
159
160#ifdef __cplusplus
161}
162#endif
163
164#endif /* __VSF_ESPIDF_USB_DEVICE_H__ */
struct ieee80211_ext_chansw_ie data
Definition ieee80211.h:80
__le16 status_code
Definition ieee80211.h:10
unsigned short uint16_t
Definition stdint.h:7
unsigned uint32_t
Definition stdint.h:9
int int32_t
Definition stdint.h:8
unsigned char uint8_t
Definition stdint.h:5
Definition usb_device.h:118
usb_interface_config interface_config
Definition usb_device.h:121
uint8_t num_endpoints
Definition usb_device.h:124
const uint8_t * usb_device_description
Definition usb_device.h:119
struct usb_interface_cfg_data interface
Definition usb_device.h:123
usb_status_callback cb_usb_status
Definition usb_device.h:122
const void * interface_descriptor
Definition usb_device.h:120
struct usb_ep_cfg_data * endpoint
Definition usb_device.h:125
Definition usb_device.h:105
usb_ep_callback ep_cb
Definition usb_device.h:106
uint8_t ep_addr
Definition usb_device.h:107
Definition usb_device.h:110
usb_request_handler custom_handler
Definition usb_device.h:113
usb_request_handler class_handler
Definition usb_device.h:111
usb_request_handler vendor_handler
Definition usb_device.h:112
uint8_t * payload_data
Definition usb_device.h:114
uint8_t * vendor_data
Definition usb_device.h:115
Definition usb_device.h:83
uint8_t bmRequestType
Definition usb_device.h:84
uint16_t wLength
Definition usb_device.h:88
uint16_t wValue
Definition usb_device.h:86
uint16_t wIndex
Definition usb_device.h:87
uint8_t bRequest
Definition usb_device.h:85
int usb_transfer_sync(uint8_t ep, uint8_t *data, size_t dlen, unsigned int flags)
Definition usb_device_port.c:589
void usb_dev_resume(int configuration)
Definition usb_device_port.c:656
int usb_transfer(uint8_t ep, uint8_t *data, size_t dlen, unsigned int flags, usb_transfer_callback cb, void *priv)
Definition usb_device_port.c:548
int usb_deconfig(void)
Definition usb_device_port.c:350
void(* usb_transfer_callback)(uint8_t ep, int tsize, void *priv)
Definition usb_device.h:103
int usb_enable(struct usb_cfg_data *config)
Definition usb_device_port.c:371
void usb_dev_deinit(void)
Definition usb_device_port.c:648
int usb_ep_read_wait(uint8_t ep, uint8_t *data, uint32_t max_data_len, uint32_t *read_bytes)
Definition usb_device_port.c:500
void usb_transfer_ep_callback(uint8_t ep, enum usb_dc_ep_cb_status_code cb_status)
Definition usb_device_port.c:516
int usb_disable(void)
Definition usb_device_port.c:415
struct usb_setup_packet VSF_CAL_PACKED
int usb_write(uint8_t ep, const uint8_t *data, uint32_t data_len, uint32_t *bytes_ret)
Definition usb_device_port.c:452
void(* usb_status_callback)(enum usb_dc_status_code status_code, uint8_t *param)
Definition usb_device.h:91
void(* usb_interface_config)(uint8_t bInterfaceNumber)
Definition usb_device.h:101
int usb_write_would_block(uint8_t ep)
Definition usb_device_port.c:444
void(* usb_ep_callback)(uint8_t ep, enum usb_dc_ep_cb_status_code cb_status)
Definition usb_device.h:94
int usb_ep_read_continue(uint8_t ep)
Definition usb_device_port.c:507
int usb_ep_set_stall(uint8_t ep)
Definition usb_device_port.c:466
int usb_dev_get_configuration(void)
Definition usb_device_port.c:662
int usb_read(uint8_t ep, uint8_t *data, uint32_t max_data_len, uint32_t *ret_bytes)
Definition usb_device_port.c:459
void usb_cancel_transfer(uint8_t ep)
Definition usb_device_port.c:640
usb_dc_status_code
Definition usb_device.h:63
@ USB_DC_CLEAR_HALT
Definition usb_device.h:73
@ USB_DC_RESUME
Definition usb_device.h:70
@ USB_DC_DISCONNECTED
Definition usb_device.h:68
@ USB_DC_SET_HALT
Definition usb_device.h:72
@ USB_DC_CONFIGURED
Definition usb_device.h:67
@ USB_DC_CONNECTED
Definition usb_device.h:66
@ USB_DC_RESET
Definition usb_device.h:65
@ USB_DC_INTERFACE
Definition usb_device.h:71
@ USB_DC_UNKNOWN
Definition usb_device.h:74
@ USB_DC_ERROR
Definition usb_device.h:64
@ USB_DC_SUSPEND
Definition usb_device.h:69
int usb_set_config(struct usb_cfg_data *config)
Definition usb_device_port.c:323
int(* usb_request_handler)(struct usb_setup_packet *setup, int32_t *transfer_len, uint8_t **payload_data)
Definition usb_device.h:97
int usb_ep_clear_stall(uint8_t ep)
Definition usb_device_port.c:476
usb_dc_ep_cb_status_code
Definition usb_device.h:77
@ USB_DC_EP_DATA_OUT
Definition usb_device.h:79
@ USB_DC_EP_SETUP
Definition usb_device.h:78
@ USB_DC_EP_DATA_IN
Definition usb_device.h:80
Generated from commit: vsfteam/vsf@699cdec