Open FFBoard
Open source force feedback firmware
tusb_types.h
Go to the documentation of this file.
1/*
2 * The MIT License (MIT)
3 *
4 * Copyright (c) 2019 Ha Thach (tinyusb.org)
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a copy
7 * of this software and associated documentation files (the "Software"), to deal
8 * in the Software without restriction, including without limitation the rights
9 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 * copies of the Software, and to permit persons to whom the Software is
11 * furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included in
14 * all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 * THE SOFTWARE.
23 *
24 * This file is part of the TinyUSB stack.
25 */
26
27#ifndef TUSB_TYPES_H_
28#define TUSB_TYPES_H_
29
30#include <stdbool.h>
31#include <stdint.h>
32#include "tusb_compiler.h"
33
34#ifdef __cplusplus
35 extern "C" {
36#endif
37
38/*------------------------------------------------------------------*/
39/* CONSTANTS
40 *------------------------------------------------------------------*/
41
42typedef enum {
43 TUSB_ROLE_INVALID = 0,
44 TUSB_ROLE_DEVICE = 0x1,
45 TUSB_ROLE_HOST = 0x2,
46} tusb_role_t;
47
49typedef enum {
56
58typedef enum {
64
65typedef enum {
68
69 TUSB_DIR_IN_MASK = 0x80
71
72enum {
75
78};
79
81typedef enum {
90
92typedef enum {
104
107
109
110 // Class Specific Descriptor
116
120
121typedef enum {
136
137typedef enum {
142
143typedef enum {
149
150typedef enum {
156
157// https://www.usb.org/defined-class-codes
158typedef enum {
176
183
184typedef enum
185{
188
189typedef enum {
192
193typedef enum {
197
198typedef enum {
216
217enum {
220};
221
222#define TUSB_DESC_CONFIG_POWER_MA(x) ((x)/2)
223
224// USB 2.0 Spec Table 9-7: Test Mode Selectors
225typedef enum {
232
233//--------------------------------------------------------------------+
234//
235//--------------------------------------------------------------------+
236typedef enum {
243
244// TODO remove
245enum {
249
250enum {
253
254typedef enum {
265
266enum {
272
273enum {
276
277//--------------------------------------------------------------------+
278//
279//--------------------------------------------------------------------+
280typedef struct {
281 tusb_role_t role;
284
285//--------------------------------------------------------------------+
286// USB Descriptors
287//--------------------------------------------------------------------+
288
289// Start of all packed definitions for compiler without per-type packed
290TU_ATTR_PACKED_BEGIN
291TU_ATTR_BIT_FIELD_ORDER_BEGIN
292
294typedef struct TU_ATTR_PACKED {
295 uint8_t bLength ;
296 uint8_t bDescriptorType ;
298
299 uint8_t bDeviceClass ;
303
307 uint8_t iManufacturer ;
308 uint8_t iProduct ;
309 uint8_t iSerialNumber ;
310
313
314TU_VERIFY_STATIC( sizeof(tusb_desc_device_t) == 18, "size is not correct");
315
316// USB Binary Device Object Store (BOS) Descriptor
317typedef struct TU_ATTR_PACKED {
318 uint8_t bLength ;
319 uint8_t bDescriptorType ;
321 uint8_t bNumDeviceCaps ;
323
324TU_VERIFY_STATIC( sizeof(tusb_desc_bos_t) == 5, "size is not correct");
325
327typedef struct TU_ATTR_PACKED {
328 uint8_t bLength ;
329 uint8_t bDescriptorType ;
331
332 uint8_t bNumInterfaces ;
334 uint8_t iConfiguration ;
335 uint8_t bmAttributes ;
336 uint8_t bMaxPower ;
338
339TU_VERIFY_STATIC( sizeof(tusb_desc_configuration_t) == 9, "size is not correct");
340
342typedef struct TU_ATTR_PACKED {
343 uint8_t bLength ;
344 uint8_t bDescriptorType ;
345
348 uint8_t bNumEndpoints ;
352 uint8_t iInterface ;
354
355TU_VERIFY_STATIC( sizeof(tusb_desc_interface_t) == 9, "size is not correct");
356
358typedef struct TU_ATTR_PACKED {
359 uint8_t bLength ; // Size of this descriptor in bytes
360 uint8_t bDescriptorType ; // ENDPOINT Descriptor Type
361
362 uint8_t bEndpointAddress ; // The address of the endpoint
363
364 struct TU_ATTR_PACKED {
365 uint8_t xfer : 2; // Control, ISO, Bulk, Interrupt
366 uint8_t sync : 2; // None, Asynchronous, Adaptive, Synchronous
367 uint8_t usage : 2; // Data, Feedback, Implicit feedback
368 uint8_t : 2;
370
371 uint16_t wMaxPacketSize ; // Bit 10..0 : max packet size, bit 12..11 additional transaction per highspeed micro-frame
372 uint8_t bInterval ; // Polling interval, in frames or microframes depending on the operating speed
374
375TU_VERIFY_STATIC( sizeof(tusb_desc_endpoint_t) == 7, "size is not correct");
376
378typedef struct TU_ATTR_PACKED {
379 uint8_t bLength ;
380 uint8_t bDescriptorType ;
382
383 uint8_t bNumInterfaces ;
384 uint8_t bConfigurationValue ;
385 uint8_t iConfiguration ;
386 uint8_t bmAttributes ;
387 uint8_t bMaxPower ;
389
391typedef struct TU_ATTR_PACKED {
392 uint8_t bLength ;
393 uint8_t bDescriptorType ;
395
396 uint8_t bDeviceClass ;
397 uint8_t bDeviceSubClass ;
398 uint8_t bDeviceProtocol ;
399
400 uint8_t bMaxPacketSize0 ;
401 uint8_t bNumConfigurations ;
402 uint8_t bReserved ;
404
405TU_VERIFY_STATIC( sizeof(tusb_desc_device_qualifier_t) == 10, "size is not correct");
406
408typedef struct TU_ATTR_PACKED {
409 uint8_t bLength ;
410 uint8_t bDescriptorType ;
411
414
415 uint8_t bFunctionClass ;
418
419 uint8_t iFunction ;
421
422TU_VERIFY_STATIC( sizeof(tusb_desc_interface_assoc_t) == 8, "size is not correct");
423
424// USB String Descriptor
425typedef struct TU_ATTR_PACKED {
426 uint8_t bLength ;
427 uint8_t bDescriptorType ;
430
431// USB Binary Device Object Store (BOS)
432typedef struct TU_ATTR_PACKED {
433 uint8_t bLength;
434 uint8_t bDescriptorType ;
436 uint8_t bReserved;
438 uint8_t CapabilityData[];
440
441// USB WebUSB URL Descriptor
442typedef struct TU_ATTR_PACKED {
443 uint8_t bLength;
444 uint8_t bDescriptorType;
445 uint8_t bScheme;
446 char url[];
448
449// DFU Functional Descriptor
450typedef struct TU_ATTR_PACKED {
451 uint8_t bLength;
452 uint8_t bDescriptorType;
453
454 union {
455 struct TU_ATTR_PACKED {
456 uint8_t bitCanDnload : 1;
457 uint8_t bitCanUpload : 1;
459 uint8_t bitWillDetach : 1;
460 uint8_t reserved : 4;
462
463 uint8_t bAttributes;
464 };
465
470
471//--------------------------------------------------------------------+
472//
473//--------------------------------------------------------------------+
474
475typedef struct TU_ATTR_PACKED {
476 union {
477 struct TU_ATTR_PACKED {
478 uint8_t recipient : 5;
479 uint8_t type : 2;
480 uint8_t direction : 1;
482
483 uint8_t bmRequestType;
484 };
485
486 uint8_t bRequest;
491
492TU_VERIFY_STATIC( sizeof(tusb_control_request_t) == 8, "size is not correct");
493
494TU_ATTR_PACKED_END // End of all packed definitions
495TU_ATTR_BIT_FIELD_ORDER_END
496
497//--------------------------------------------------------------------+
498// Endpoint helper
499//--------------------------------------------------------------------+
500
501// Get direction from Endpoint address
502TU_ATTR_ALWAYS_INLINE static inline tusb_dir_t tu_edpt_dir(uint8_t addr) {
503 return (addr & TUSB_DIR_IN_MASK) ? TUSB_DIR_IN : TUSB_DIR_OUT;
504}
505
506// Get Endpoint number from address
507TU_ATTR_ALWAYS_INLINE static inline uint8_t tu_edpt_number(uint8_t addr) {
508 return (uint8_t)(addr & (~TUSB_DIR_IN_MASK));
509}
510
511TU_ATTR_ALWAYS_INLINE static inline uint8_t tu_edpt_addr(uint8_t num, uint8_t dir) {
512 return (uint8_t)(num | (dir ? TUSB_DIR_IN_MASK : 0));
513}
514
515TU_ATTR_ALWAYS_INLINE static inline uint16_t tu_edpt_packet_size(tusb_desc_endpoint_t const* desc_ep) {
516 return tu_le16toh(desc_ep->wMaxPacketSize) & 0x7FF;
517}
518
519#if CFG_TUSB_DEBUG
520TU_ATTR_ALWAYS_INLINE static inline const char *tu_edpt_type_str(tusb_xfer_type_t t) {
521 tu_static const char *str[] = {"control", "isochronous", "bulk", "interrupt"};
522 return str[t];
523}
524#endif
525
526//--------------------------------------------------------------------+
527// Descriptor helper
528//--------------------------------------------------------------------+
529
530// return next descriptor
531TU_ATTR_ALWAYS_INLINE static inline uint8_t const * tu_desc_next(void const* desc) {
532 uint8_t const* desc8 = (uint8_t const*) desc;
533 return desc8 + desc8[DESC_OFFSET_LEN];
534}
535
536// get descriptor type
537TU_ATTR_ALWAYS_INLINE static inline uint8_t tu_desc_type(void const* desc) {
538 return ((uint8_t const*) desc)[DESC_OFFSET_TYPE];
539}
540
541// get descriptor length
542TU_ATTR_ALWAYS_INLINE static inline uint8_t tu_desc_len(void const* desc) {
543 return ((uint8_t const*) desc)[DESC_OFFSET_LEN];
544}
545
546// find descriptor that match byte1 (type)
547uint8_t const * tu_desc_find(uint8_t const* desc, uint8_t const* end, uint8_t byte1);
548
549// find descriptor that match byte1 (type) and byte2
550uint8_t const * tu_desc_find2(uint8_t const* desc, uint8_t const* end, uint8_t byte1, uint8_t byte2);
551
552// find descriptor that match byte1 (type) and byte2
553uint8_t const * tu_desc_find3(uint8_t const* desc, uint8_t const* end, uint8_t byte1, uint8_t byte2, uint8_t byte3);
554
555#ifdef __cplusplus
556 }
557#endif
558
559#endif // TUSB_TYPES_H_
static usb_descriptor_buffers_t desc
Definition: dcd_pio_usb.c:46
AUDIO Channel Cluster Descriptor (4.1)
Definition: audio.h:647
uint8_t iFunction
Index of the string descriptor describing the interface association.
Definition: tusb_types.h:419
uint8_t bFunctionSubClass
Interface subclass ID.
Definition: tusb_types.h:416
uint8_t bFunctionClass
Interface class ID.
Definition: tusb_types.h:415
uint8_t bNumInterfaces
Number of interfaces supported by this configuration.
Definition: tusb_types.h:332
uint8_t bConfigurationValue
Value to use as an argument to the SetConfiguration() request to select this configuration.
Definition: tusb_types.h:333
uint16_t wTransferSize
Definition: tusb_types.h:467
uint8_t iConfiguration
Index of string descriptor describing this configuration.
Definition: tusb_types.h:334
uint8_t bitManifestationTolerant
Definition: tusb_types.h:458
uint8_t bNumConfigurations
Number of possible configurations.
Definition: tusb_types.h:311
uint8_t type
Request type tusb_request_type_t.
Definition: audio.h:824
uint16_t wTotalLength
Total number of bytes returned for the class-specific AudioControl interface descriptor....
Definition: audio.h:661
uint16_t idProduct
Product ID (assigned by the manufacturer).
Definition: tusb_types.h:305
uint16_t wMaxPacketSize
Definition: tusb_types.h:371
uint8_t bitCanDnload
Definition: tusb_types.h:456
uint8_t bitWillDetach
Definition: tusb_types.h:459
uint8_t iSerialNumber
Index of string descriptor describing the device's serial number.
Definition: tusb_types.h:309
uint16_t wValue
Definition: audio.h:934
uint8_t bDeviceProtocol
Protocol code (assigned by the USB-IF).
Definition: tusb_types.h:301
struct TU_ATTR_PACKED::@16::TU_ATTR_PACKED bmRequestType_bit
uint8_t CapabilityData[]
Definition: tusb_types.h:438
uint8_t bInterval
Definition: tusb_types.h:372
uint8_t bmAttributes
See: audio_clock_source_attribute_t.
Definition: audio.h:672
uint8_t bDeviceClass
Class code (assigned by the USB-IF).
Definition: tusb_types.h:299
uint8_t bitCanUpload
Definition: tusb_types.h:457
uint16_t bcdDFUVersion
Definition: tusb_types.h:468
uint8_t PlatformCapabilityUUID[16]
Definition: tusb_types.h:437
uint16_t idVendor
Vendor ID (assigned by the USB-IF).
Definition: tusb_types.h:304
uint16_t wLength
Definition: audio.h:840
volatile uint16_t
Definition: hcd_rusb2.c:58
uint8_t direction
Direction type. tusb_dir_t.
Definition: audio.h:825
uint8_t bScheme
Definition: tusb_types.h:445
uint8_t bDeviceSubClass
Subclass code (assigned by the USB-IF).
Definition: tusb_types.h:300
uint8_t iManufacturer
Index of string descriptor describing manufacturer.
Definition: tusb_types.h:307
uint8_t bInterfaceCount
Total number of associated interfaces.
Definition: tusb_types.h:413
uint16_t wIndex
Definition: audio.h:943
uint8_t bDescriptorType
Descriptor Type. Value: TUSB_DESC_CS_INTERFACE.
Definition: audio.h:657
uint8_t bDevCapabilityType
Definition: tusb_types.h:435
uint8_t bFunctionProtocol
Interface protocol ID.
Definition: tusb_types.h:417
uint8_t iInterface
Index of string descriptor describing this interface.
Definition: tusb_types.h:352
uint8_t bInterfaceClass
Class code (assigned by the USB-IF).
Definition: tusb_types.h:349
uint8_t bLength
Size of this descriptor in bytes: 9.
Definition: audio.h:656
uint8_t bMaxPower
Maximum power consumption of the USB device from the bus in this specific configuration when the devi...
Definition: tusb_types.h:336
uint8_t iProduct
Index of string descriptor describing product.
Definition: tusb_types.h:308
uint8_t bMaxPacketSize0
Maximum packet size for endpoint zero (only 8, 16, 32, or 64 are valid). For HS devices is fixed to 6...
Definition: tusb_types.h:302
uint16_t unicode_string[]
Definition: tusb_types.h:428
uint8_t bEndpointAddress
Definition: video.h:306
uint8_t bInterfaceSubClass
Subclass code (assigned by the USB-IF). These codes are qualified by the value of the bInterfaceCla...
Definition: tusb_types.h:350
uint8_t recipient
Recipient type tusb_request_recipient_t.
Definition: audio.h:823
uint16_t bcdUSB
BUSB Specification Release Number in Binary-Coded Decimal (i.e., 2.10 is 210H).
Definition: tusb_types.h:297
uint8_t bmRequestType
Definition: audio.h:828
uint8_t bRequest
Request type audio_cs_req_t.
Definition: audio.h:831
uint8_t bReserved
Reserved for future use, must be zero.
Definition: tusb_types.h:402
uint8_t reserved
Definition: hid.h:338
uint16_t bcdDevice
Device release number in binary-coded decimal.
Definition: tusb_types.h:306
uint16_t wDetachTimeOut
Definition: tusb_types.h:466
uint8_t bAttributes
Definition: tusb_types.h:463
uint8_t bNumEndpoints
Number of endpoints used by this interface (excluding endpoint zero). If this value is zero,...
Definition: tusb_types.h:348
uint8_t bInterfaceProtocol
Protocol code (assigned by the USB). These codes are qualified by the value of the bInterfaceClass ...
Definition: tusb_types.h:351
uint8_t bFirstInterface
Index of the first associated interface.
Definition: tusb_types.h:412
uint8_t bInterfaceNumber
Number of this interface. Zero-based value identifying the index in the array of concurrent interface...
Definition: tusb_types.h:346
uint8_t bAlternateSetting
Value used to select this alternate setting for the interface identified in the prior field.
Definition: tusb_types.h:347
uint8_t bNumDeviceCaps
Number of device capability descriptors in the BOS.
Definition: tusb_types.h:321
tusb_speed_t speed
Definition: tusb_types.h:282
tusb_role_t role
Definition: tusb_types.h:281
misc_subclass_type_t
Definition: tusb_types.h:185
@ MISC_SUBCLASS_COMMON
Definition: tusb_types.h:186
struct TU_ATTR_PACKED tusb_desc_string_t
uint8_t const * tu_desc_find(uint8_t const *desc, uint8_t const *end, uint8_t byte1)
Definition: tusb.c:143
tusb_dir_t
Definition: tusb_types.h:65
@ TUSB_DIR_IN
Definition: tusb_types.h:67
@ TUSB_DIR_OUT
Definition: tusb_types.h:66
@ TUSB_DIR_IN_MASK
Definition: tusb_types.h:69
tusb_request_code_t
Definition: tusb_types.h:121
@ TUSB_REQ_GET_STATUS
Definition: tusb_types.h:122
@ TUSB_REQ_SET_ADDRESS
Definition: tusb_types.h:127
@ TUSB_REQ_SET_FEATURE
Definition: tusb_types.h:125
@ TUSB_REQ_GET_DESCRIPTOR
Definition: tusb_types.h:128
@ TUSB_REQ_CLEAR_FEATURE
Definition: tusb_types.h:123
@ TUSB_REQ_RESERVED
Definition: tusb_types.h:124
@ TUSB_REQ_RESERVED2
Definition: tusb_types.h:126
@ TUSB_REQ_SET_CONFIGURATION
Definition: tusb_types.h:131
@ TUSB_REQ_GET_CONFIGURATION
Definition: tusb_types.h:130
@ TUSB_REQ_SET_INTERFACE
Definition: tusb_types.h:133
@ TUSB_REQ_GET_INTERFACE
Definition: tusb_types.h:132
@ TUSB_REQ_SYNCH_FRAME
Definition: tusb_types.h:134
@ TUSB_REQ_SET_DESCRIPTOR
Definition: tusb_types.h:129
uint8_t const * tu_desc_find2(uint8_t const *desc, uint8_t const *end, uint8_t byte1, uint8_t byte2)
Definition: tusb.c:151
uint8_t const * tu_desc_find3(uint8_t const *desc, uint8_t const *end, uint8_t byte1, uint8_t byte2, uint8_t byte3)
Definition: tusb.c:159
@ TUSB_EPSIZE_BULK_HS
Definition: tusb_types.h:74
@ TUSB_EPSIZE_ISO_FS_MAX
Definition: tusb_types.h:76
@ TUSB_EPSIZE_BULK_FS
Definition: tusb_types.h:73
@ TUSB_EPSIZE_ISO_HS_MAX
Definition: tusb_types.h:77
tusb_speed_t
defined base on EHCI specs value for Endpoint Speed
Definition: tusb_types.h:49
@ TUSB_SPEED_AUTO
Definition: tusb_types.h:53
@ TUSB_SPEED_INVALID
Definition: tusb_types.h:54
@ TUSB_SPEED_FULL
Definition: tusb_types.h:50
@ TUSB_SPEED_LOW
Definition: tusb_types.h:51
@ TUSB_SPEED_HIGH
Definition: tusb_types.h:52
tusb_class_code_t
Definition: tusb_types.h:158
@ TUSB_CLASS_PRINTER
Definition: tusb_types.h:166
@ TUSB_CLASS_CDC
Definition: tusb_types.h:161
@ TUSB_CLASS_AUDIO
Definition: tusb_types.h:160
@ TUSB_CLASS_DIAGNOSTIC
Definition: tusb_types.h:177
@ TUSB_CLASS_CONTENT_SECURITY
Definition: tusb_types.h:172
@ TUSB_CLASS_CDC_DATA
Definition: tusb_types.h:169
@ TUSB_CLASS_WIRELESS_CONTROLLER
Definition: tusb_types.h:178
@ TUSB_CLASS_MSC
Definition: tusb_types.h:167
@ TUSB_CLASS_HUB
Definition: tusb_types.h:168
@ TUSB_CLASS_APPLICATION_SPECIFIC
Definition: tusb_types.h:180
@ TUSB_CLASS_MISC
Definition: tusb_types.h:179
@ TUSB_CLASS_RESERVED_12
Definition: tusb_types.h:171
@ TUSB_CLASS_PHYSICAL
Definition: tusb_types.h:164
@ TUSB_CLASS_VIDEO
Definition: tusb_types.h:173
@ TUSB_CLASS_SMART_CARD
Definition: tusb_types.h:170
@ TUSB_CLASS_RESERVED_4
Definition: tusb_types.h:163
@ TUSB_CLASS_AUDIO_VIDEO
Definition: tusb_types.h:175
@ TUSB_CLASS_IMAGE
Definition: tusb_types.h:165
@ TUSB_CLASS_VENDOR_SPECIFIC
Definition: tusb_types.h:181
@ TUSB_CLASS_HID
Definition: tusb_types.h:162
@ TUSB_CLASS_UNSPECIFIED
Definition: tusb_types.h:159
@ TUSB_CLASS_PERSONAL_HEALTHCARE
Definition: tusb_types.h:174
struct TU_ATTR_PACKED tusb_control_request_t
static TU_ATTR_ALWAYS_INLINE uint8_t tu_edpt_number(uint8_t addr)
Definition: tusb_types.h:507
tusb_iso_ep_attribute_t
Isochronous Endpoint Attributes.
Definition: tusb_types.h:81
@ TUSB_ISO_EP_ATT_IMPLICIT_FB
Data endpoint that also serves as an implicit feedback.
Definition: tusb_types.h:88
@ TUSB_ISO_EP_ATT_ASYNCHRONOUS
Definition: tusb_types.h:83
@ TUSB_ISO_EP_ATT_NO_SYNC
Definition: tusb_types.h:82
@ TUSB_ISO_EP_ATT_SYNCHRONOUS
Definition: tusb_types.h:85
@ TUSB_ISO_EP_ATT_EXPLICIT_FB
Feedback End Point.
Definition: tusb_types.h:87
@ TUSB_ISO_EP_ATT_ADAPTIVE
Definition: tusb_types.h:84
@ TUSB_ISO_EP_ATT_DATA
Data End Point.
Definition: tusb_types.h:86
struct TU_ATTR_PACKED tusb_desc_bos_t
tusb_feature_test_mode_t
Definition: tusb_types.h:225
@ TUSB_FEATURE_TEST_K
Definition: tusb_types.h:227
@ TUSB_FEATURE_TEST_FORCE_ENABLE
Definition: tusb_types.h:230
@ TUSB_FEATURE_TEST_SE0_NAK
Definition: tusb_types.h:228
@ TUSB_FEATURE_TEST_J
Definition: tusb_types.h:226
@ TUSB_FEATURE_TEST_PACKET
Definition: tusb_types.h:229
static TU_ATTR_ALWAYS_INLINE uint8_t tu_desc_len(void const *desc)
Definition: tusb_types.h:542
struct TU_ATTR_PACKED tusb_desc_device_qualifier_t
USB Device Qualifier Descriptor.
@ TUSB_DESC_CONFIG_ATT_REMOTE_WAKEUP
Definition: tusb_types.h:218
@ TUSB_DESC_CONFIG_ATT_SELF_POWERED
Definition: tusb_types.h:219
struct TU_ATTR_PACKED tusb_desc_webusb_url_t
TU_ATTR_PACKED_BEGIN TU_ATTR_BIT_FIELD_ORDER_BEGIN struct TU_ATTR_PACKED tusb_desc_device_t
USB Device Descriptor.
misc_protocol_type_t
Definition: tusb_types.h:189
@ MISC_PROTOCOL_IAD
Definition: tusb_types.h:190
struct TU_ATTR_PACKED tusb_desc_other_speed_t
USB Other Speed Configuration Descriptor.
@ INTERFACE_INVALID_NUMBER
Definition: tusb_types.h:251
xfer_result_t
Definition: tusb_types.h:236
@ XFER_RESULT_TIMEOUT
Definition: tusb_types.h:240
@ XFER_RESULT_FAILED
Definition: tusb_types.h:238
@ XFER_RESULT_SUCCESS
Definition: tusb_types.h:237
@ XFER_RESULT_INVALID
Definition: tusb_types.h:241
@ XFER_RESULT_STALLED
Definition: tusb_types.h:239
static TU_ATTR_ALWAYS_INLINE const char * tu_edpt_type_str(tusb_xfer_type_t t)
Definition: tusb_types.h:520
tusb_request_recipient_t
Definition: tusb_types.h:150
@ TUSB_REQ_RCPT_ENDPOINT
Definition: tusb_types.h:153
@ TUSB_REQ_RCPT_DEVICE
Definition: tusb_types.h:151
@ TUSB_REQ_RCPT_INTERFACE
Definition: tusb_types.h:152
@ TUSB_REQ_RCPT_OTHER
Definition: tusb_types.h:154
@ DESC_OFFSET_LEN
Definition: tusb_types.h:246
@ DESC_OFFSET_TYPE
Definition: tusb_types.h:247
static TU_ATTR_ALWAYS_INLINE uint16_t tu_edpt_packet_size(tusb_desc_endpoint_t const *desc_ep)
Definition: tusb_types.h:515
tusb_xfer_type_t
defined base on USB Specs Endpoint's bmAttributes
Definition: tusb_types.h:58
@ TUSB_XFER_CONTROL
Definition: tusb_types.h:59
@ TUSB_XFER_ISOCHRONOUS
Definition: tusb_types.h:60
@ TUSB_XFER_INTERRUPT
Definition: tusb_types.h:62
@ TUSB_XFER_BULK
Definition: tusb_types.h:61
TU_ATTR_PACKED_END TU_ATTR_BIT_FIELD_ORDER_END static TU_ATTR_ALWAYS_INLINE tusb_dir_t tu_edpt_dir(uint8_t addr)
Definition: tusb_types.h:502
struct TU_ATTR_PACKED tusb_desc_endpoint_t
USB Endpoint Descriptor.
struct TU_ATTR_PACKED tusb_desc_bos_platform_t
struct TU_ATTR_PACKED tusb_desc_interface_assoc_t
USB Interface Association Descriptor (IAD ECN)
@ CONTROL_STAGE_ACK
Definition: tusb_types.h:270
@ CONTROL_STAGE_IDLE
Definition: tusb_types.h:267
@ CONTROL_STAGE_DATA
Definition: tusb_types.h:269
@ CONTROL_STAGE_SETUP
Definition: tusb_types.h:268
static TU_ATTR_ALWAYS_INLINE uint8_t tu_edpt_addr(uint8_t num, uint8_t dir)
Definition: tusb_types.h:511
static TU_ATTR_ALWAYS_INLINE uint8_t tu_desc_type(void const *desc)
Definition: tusb_types.h:537
struct TU_ATTR_PACKED tusb_desc_dfu_functional_t
tusb_request_type_t
Definition: tusb_types.h:143
@ TUSB_REQ_TYPE_STANDARD
Definition: tusb_types.h:144
@ TUSB_REQ_TYPE_VENDOR
Definition: tusb_types.h:146
@ TUSB_REQ_TYPE_INVALID
Definition: tusb_types.h:147
@ TUSB_REQ_TYPE_CLASS
Definition: tusb_types.h:145
struct TU_ATTR_PACKED tusb_desc_interface_t
USB Interface Descriptor.
static TU_ATTR_ALWAYS_INLINE uint8_t const * tu_desc_next(void const *desc)
Definition: tusb_types.h:531
tusb_desc_type_t
USB Descriptor Types.
Definition: tusb_types.h:92
@ TUSB_DESC_SUPERSPEED_ENDPOINT_COMPANION
Definition: tusb_types.h:117
@ TUSB_DESC_OTG
Definition: tusb_types.h:101
@ TUSB_DESC_CS_DEVICE
Definition: tusb_types.h:111
@ TUSB_DESC_CS_ENDPOINT
Definition: tusb_types.h:115
@ TUSB_DESC_FUNCTIONAL
Definition: tusb_types.h:108
@ TUSB_DESC_STRING
Definition: tusb_types.h:95
@ TUSB_DESC_BOS
Definition: tusb_types.h:105
@ TUSB_DESC_INTERFACE_ASSOCIATION
Definition: tusb_types.h:103
@ TUSB_DESC_CONFIGURATION
Definition: tusb_types.h:94
@ TUSB_DESC_INTERFACE_POWER
Definition: tusb_types.h:100
@ TUSB_DESC_DEVICE_QUALIFIER
Definition: tusb_types.h:98
@ TUSB_DESC_CS_INTERFACE
Definition: tusb_types.h:114
@ TUSB_DESC_ENDPOINT
Definition: tusb_types.h:97
@ TUSB_DESC_DEBUG
Definition: tusb_types.h:102
@ TUSB_DESC_SUPERSPEED_ISO_ENDPOINT_COMPANION
Definition: tusb_types.h:118
@ TUSB_DESC_CS_CONFIGURATION
Definition: tusb_types.h:112
@ TUSB_DESC_INTERFACE
Definition: tusb_types.h:96
@ TUSB_DESC_OTHER_SPEED_CONFIG
Definition: tusb_types.h:99
@ TUSB_DESC_DEVICE_CAPABILITY
Definition: tusb_types.h:106
@ TUSB_DESC_DEVICE
Definition: tusb_types.h:93
@ TUSB_DESC_CS_STRING
Definition: tusb_types.h:113
tusb_request_feature_selector_t
Definition: tusb_types.h:137
@ TUSB_REQ_FEATURE_EDPT_HALT
Definition: tusb_types.h:138
@ TUSB_REQ_FEATURE_REMOTE_WAKEUP
Definition: tusb_types.h:139
@ TUSB_REQ_FEATURE_TEST_MODE
Definition: tusb_types.h:140
@ TUSB_INDEX_INVALID_8
Definition: tusb_types.h:274
TU_VERIFY_STATIC(sizeof(tusb_desc_device_t)==18, "size is not correct")
struct TU_ATTR_PACKED tusb_desc_configuration_t
USB Configuration Descriptor.
device_capability_type_t
Definition: tusb_types.h:198
@ DEVICE_CAPABILITY_PRECESION_TIME_MEASUREMENT
Definition: tusb_types.h:209
@ DEVICE_CAPABILITY_USB20_EXTENSION
Definition: tusb_types.h:200
@ DEVICE_CAPABILITY_CONTAINER_id
Definition: tusb_types.h:202
@ DEVICE_CAPABILITY_PD_PROVIDER_PORT
Definition: tusb_types.h:207
@ DEVICE_CAPABILITY_PLATFORM
Definition: tusb_types.h:203
@ DEVICE_CAPABILITY_CONFIGURATION_SUMMARY
Definition: tusb_types.h:214
@ DEVICE_CAPABILITY_SUPERSPEED_USB
Definition: tusb_types.h:201
@ DEVICE_CAPABILITY_WIRELESS_USB
Definition: tusb_types.h:199
@ DEVICE_CAPABILITY_BATTERY_INFO
Definition: tusb_types.h:205
@ DEVICE_CAPABILITY_PD_CONSUMER_PORT
Definition: tusb_types.h:206
@ DEVICE_CAPABILITY_AUTHENTICATION
Definition: tusb_types.h:212
@ DEVICE_CAPABILITY_BILLBOARD_EX
Definition: tusb_types.h:213
@ DEVICE_CAPABILITY_POWER_DELIVERY
Definition: tusb_types.h:204
@ DEVICE_CAPABILITY_BILLBOARD
Definition: tusb_types.h:211
@ DEVICE_CAPABILITY_WIRELESS_USB_EXT
Definition: tusb_types.h:210
@ DEVICE_CAPABILITY_SUPERSPEED_PLUS
Definition: tusb_types.h:208
microsoft_os_20_type_t
Definition: tusb_types.h:254
@ MS_OS_20_SUBSET_HEADER_FUNCTION
Definition: tusb_types.h:257
@ MS_OS_20_FEATURE_VENDOR_REVISION
Definition: tusb_types.h:263
@ MS_OS_20_FEATURE_MIN_RESUME_TIME
Definition: tusb_types.h:260
@ MS_OS_20_FEATURE_CCGP_DEVICE
Definition: tusb_types.h:262
@ MS_OS_20_FEATURE_COMPATBLE_ID
Definition: tusb_types.h:258
@ MS_OS_20_SET_HEADER_DESCRIPTOR
Definition: tusb_types.h:255
@ MS_OS_20_FEATURE_MODEL_ID
Definition: tusb_types.h:261
@ MS_OS_20_FEATURE_REG_PROPERTY
Definition: tusb_types.h:259
@ MS_OS_20_SUBSET_HEADER_CONFIGURATION
Definition: tusb_types.h:256
app_subclass_type_t
Definition: tusb_types.h:193
@ APP_SUBCLASS_DFU_RUNTIME
Definition: tusb_types.h:195
@ APP_SUBCLASS_USBTMC
Definition: tusb_types.h:194