tinyusb
tusb_types.h
Go to the documentation of this file.
1 /**************************************************************************/
37 /**************************************************************************/
38 
43 #ifndef _TUSB_TUSB_TYPES_H_
44 #define _TUSB_TUSB_TYPES_H_
45 
46 #ifdef __cplusplus
47  extern "C" {
48 #endif
49 
51 typedef enum {
52  TUSB_SPEED_FULL = 0,
53  TUSB_SPEED_LOW ,
54  TUSB_SPEED_HIGH
56 
58 typedef enum {
59  TUSB_XFER_CONTROL = 0 ,
60  TUSB_XFER_ISOCHRONOUS ,
61  TUSB_XFER_BULK ,
62  TUSB_XFER_INTERRUPT
64 
65 typedef enum {
66  TUSB_DIR_HOST_TO_DEV = 0,
67  TUSB_DIR_DEV_TO_HOST = 1,
68 
69  TUSB_DIR_DEV_TO_HOST_MASK = 0x80
70 }tusb_direction_t;
71 
72 
74 typedef enum {
75  TUSB_DESC_TYPE_DEVICE = 0x01 ,
76  TUSB_DESC_TYPE_CONFIGURATION = 0x02 ,
77  TUSB_DESC_TYPE_STRING = 0x03 ,
78  TUSB_DESC_TYPE_INTERFACE = 0x04 ,
79  TUSB_DESC_TYPE_ENDPOINT = 0x05 ,
80  TUSB_DESC_TYPE_DEVICE_QUALIFIER = 0x06 ,
81  TUSB_DESC_TYPE_OTHER_SPEED_CONFIGURATION = 0x07 ,
82  TUSB_DESC_TYPE_INTERFACE_POWER = 0x08 ,
83  TUSB_DESC_TYPE_OTG = 0x09 ,
84  TUSB_DESC_TYPE_DEBUG = 0x0A ,
85  TUSB_DESC_TYPE_INTERFACE_ASSOCIATION = 0x0B ,
86  TUSB_DESC_TYPE_INTERFACE_CLASS_SPECIFIC = 0x24
88 
89 typedef enum {
104 
105 typedef enum {
106  TUSB_REQUEST_TYPE_STANDARD = 0,
107  TUSB_REQUEST_TYPE_CLASS,
108  TUSB_REQUEST_TYPE_VENDOR
109 } tusb_control_request_type_t;
110 
111 typedef enum {
112  TUSB_REQUEST_RECIPIENT_DEVICE =0,
113  TUSB_REQUEST_RECIPIENT_INTERFACE,
114  TUSB_REQUEST_RECIPIENT_ENDPOINT,
115  TUSB_REQUEST_RECIPIENT_OTHER
116 } tusb_std_request_recipient_t;
117 
118 typedef enum {
136 
137  TUSB_CLASS_MAPPED_INDEX_START = 17 , // TODO Map DIAGNOSTIC, WIRELESS_CONTROLLER, MISC, VENDOR_SPECIFIC to this to minimize the array
138 
139  TUSB_CLASS_DIAGNOSTIC = 0xDC ,
140  TUSB_CLASS_WIRELESS_CONTROLLER = 0xE0 ,
141  TUSB_CLASS_MISC = 0xEF ,
142  TUSB_CLASS_APPLICATION_SPECIFIC = 0xFE ,
143  TUSB_CLASS_VENDOR_SPECIFIC = 0xFF
145 
146 typedef enum {
147  MISC_SUBCLASS_COMMON = 2
148 }misc_subclass_type_t;
149 
150 typedef enum {
151  MISC_PROTOCOL_IAD = 1
152 }misc_protocol_type_t;
153 
154 enum {
155  TUSB_DESC_CONFIG_ATT_REMOTE_WAKEUP = BIT_(5),
156  TUSB_DESC_CONFIG_ATT_SELF_POWER = BIT_(6),
157  TUSB_DESC_CONFIG_ATT_BUS_POWER = BIT_(7)
158 };
159 
160 #define TUSB_DESC_CONFIG_POWER_MA(x) ((x)/2)
161 
163 typedef enum {
164  TUSB_DEVICE_STATE_UNPLUG = 0 ,
165  TUSB_DEVICE_STATE_ADDRESSED ,
166  TUSB_DEVICE_STATE_CONFIGURED ,
167  TUSB_DEVICE_STATE_SUSPENDED ,
168 
169  TUSB_DEVICE_STATE_REMOVING ,
170  TUSB_DEVICE_STATE_SAFE_REMOVE ,
171 
172  TUSB_DEVICE_STATE_INVALID_PARAMETER
174 
175 typedef enum {
176  TUSB_EVENT_NONE = 0,
177  TUSB_EVENT_XFER_COMPLETE,
178  TUSB_EVENT_XFER_ERROR,
179  TUSB_EVENT_XFER_STALLED,
180 
181  TUSB_EVENT_BUS_RESET, // TODO refractor
182  TUSB_EVENT_SETUP_RECEIVED,
183 }tusb_event_t;
184 
185 enum {
186  DESCRIPTOR_OFFSET_LENGTH = 0,
187  DESCRIPTOR_OFFSET_TYPE = 1
188 };
189 
190 enum {
191  INTERFACE_INVALID_NUMBER = 0xff
192 };
193 
194 static inline uint8_t std_class_code_to_index(uint8_t std_class_code) ATTR_CONST ATTR_ALWAYS_INLINE;
195 static inline uint8_t std_class_code_to_index(uint8_t std_class_code)
196 {
197  return (std_class_code <= TUSB_CLASS_AUDIO_VIDEO ) ? std_class_code :
198  (std_class_code == TUSB_CLASS_DIAGNOSTIC ) ? TUSB_CLASS_MAPPED_INDEX_START :
199  (std_class_code == TUSB_CLASS_WIRELESS_CONTROLLER ) ? TUSB_CLASS_MAPPED_INDEX_START + 1 :
200  (std_class_code == TUSB_CLASS_MISC ) ? TUSB_CLASS_MAPPED_INDEX_START + 2 :
201  (std_class_code == TUSB_CLASS_APPLICATION_SPECIFIC ) ? TUSB_CLASS_MAPPED_INDEX_START + 3 :
202  (std_class_code == TUSB_CLASS_VENDOR_SPECIFIC ) ? TUSB_CLASS_MAPPED_INDEX_START + 4 : 0;
203 }
204 
205 
206 #ifdef __cplusplus
207  }
208 #endif
209 
210 #endif /* _TUSB_TUSB_TYPES_H_ */
211 
7
Definition: tusb_types.h:97
15
Definition: tusb_types.h:134
12
Definition: tusb_types.h:131
#define BIT_(n)
n-th Bit
Definition: binary.h:54
6
Definition: tusb_types.h:125
tusb_speed_t
defined base on EHCI specs value for Endpoint Speed
Definition: tusb_types.h:51
9
Definition: tusb_types.h:99
1
Definition: tusb_types.h:91
4
Definition: tusb_types.h:123
16
Definition: tusb_types.h:135
13
Definition: tusb_types.h:132
10
Definition: tusb_types.h:100
tusb_device_state_t
Device State.
Definition: tusb_types.h:163
12
Definition: tusb_types.h:102
5
Definition: tusb_types.h:95
4
Definition: tusb_types.h:94
3
Definition: tusb_types.h:122
8
Definition: tusb_types.h:127
0
Definition: tusb_types.h:90
6
Definition: tusb_types.h:96
14
Definition: tusb_types.h:133
7
Definition: tusb_types.h:126
9
Definition: tusb_types.h:128
3
Definition: tusb_types.h:93
2
Definition: tusb_types.h:92
0
Definition: tusb_types.h:119
tusb_std_descriptor_type_t
USB Descriptor Types (section 9.4 table 9-5)
Definition: tusb_types.h:74
11
Definition: tusb_types.h:130
tusb_std_class_code_t
Definition: tusb_types.h:118
1
Definition: tusb_types.h:120
2
Definition: tusb_types.h:121
8
Definition: tusb_types.h:98
5
Definition: tusb_types.h:124
#define ATTR_ALWAYS_INLINE
Generally, functions are not inlined unless optimization is specified. For functions declared inline...
Definition: compiler_gcc.h:89
#define ATTR_CONST
Many functions do not examine any values except their arguments, and have no effects except the retur...
Definition: compiler_gcc.h:100
11
Definition: tusb_types.h:101
tusb_xfer_type_t
defined base on USB Specs Endpoint's bmAttributes
Definition: tusb_types.h:58
10
Definition: tusb_types.h:129
tusb_std_request_code_t
Definition: tusb_types.h:89