MG32F10x Standard Peripherals Firmware Library
usb_def.h
Go to the documentation of this file.
1 
17 /* Define to prevent recursive inclusion -------------------------------------*/
18 #ifndef __USB_DEF_H
19 #define __USB_DEF_H
20 
21 #ifdef __cplusplus
22  extern "C" {
23 #endif
24 
25 /* Includes ------------------------------------------------------------------*/
26 #include "mg32f10x.h"
27 
28 /* Exported types ------------------------------------------------------------*/
29 
30 /* ======================================== Start of section using anonymous unions ======================================== */
31 #if defined (__CC_ARM)
32  #pragma push
33  #pragma anon_unions
34 #elif defined (__ICCARM__)
35  #pragma language=extended
36 #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
37  #pragma clang diagnostic push
38  #pragma clang diagnostic ignored "-Wc11-extensions"
39  #pragma clang diagnostic ignored "-Wreserved-id-macro"
40 #elif defined (__GNUC__)
41  /* anonymous unions are enabled by default */
42 #elif defined (__TMS470__)
43  /* anonymous unions are enabled by default */
44 #elif defined (__TASKING__)
45  #pragma warning 586
46 #elif defined (__CSMC__)
47  /* anonymous unions are enabled by default */
48 #else
49  #warning Not supported compiler type
50 #endif
51 
53 typedef __PACKED_STRUCT _USB_SETUP_PACKET {
54  uint8_t bmRequestType; /* bmRequestType */
55  uint8_t bRequest; /* bRequest */
56  __PACKED_UNION {
57  uint16_t wValue; /* wValue */
58  __PACKED_STRUCT {
59  uint8_t wValueL;
60  uint8_t wValueH;
61  };
62  };
63  __PACKED_UNION {
64  uint16_t wIndex; /* wIndex */
65  __PACKED_STRUCT {
66  uint8_t wIndexL;
67  uint8_t wIndexH;
68  };
69  };
70  uint16_t wLength; /* wLength */
71 } USB_SETUP_PACKET;
72 
73 
74 /* ========================================= End of section using anonymous unions ========================================= */
75 #if defined (__CC_ARM)
76  #pragma pop
77 #elif defined (__ICCARM__)
78  /* leave anonymous unions enabled */
79 #elif (__ARMCC_VERSION >= 6010050)
80  #pragma clang diagnostic pop
81 #elif defined (__GNUC__)
82  /* anonymous unions are enabled by default */
83 #elif defined (__TMS470__)
84  /* anonymous unions are enabled by default */
85 #elif defined (__TASKING__)
86  #pragma warning restore
87 #elif defined (__CSMC__)
88  /* anonymous unions are enabled by default */
89 #else
90  #warning Not supported compiler type
91 #endif
92 
93 /* Exported constants --------------------------------------------------------*/
94 /* bmRequestType.Direction */
95 #define USB_REQUEST_DIRECTION_HOST_TO_DEVICE 0x00U
96 #define USB_REQUEST_DIRECTION_DEVICE_TO_HOST 0x80U
97 #define USB_REQUEST_DIRECTION_Msk 0x80U
98 
99 /* bmRequestType.Type */
100 #define USB_REQUEST_TYPE_STANDARD 0x00U
101 #define USB_REQUEST_TYPE_CLASS 0x20U
102 #define USB_REQUEST_TYPE_VENDOR 0x40U
103 #define USB_REQUEST_TYPE_Msk 0x60U
104 
105 /* bmRequestType.Recipient */
106 #define USB_REQUEST_RECIPIENT_DEVICE 0x00U
107 #define USB_REQUEST_RECIPIENT_INTERFACE 0x01U
108 #define USB_REQUEST_RECIPIENT_ENDPOINT 0x02U
109 #define USB_REQUEST_RECIPIENT_Msk 0x1FU
110 
111 /* USB Standard Request Codes */
112 #define USB_REQUEST_GET_STATUS 0x00U
113 #define USB_REQUEST_CLEAR_FEATURE 0x01U
114 #define USB_REQUEST_SET_FEATURE 0x03U
115 #define USB_REQUEST_SET_ADDRESS 0x05U
116 #define USB_REQUEST_GET_DESCRIPTOR 0x06U
117 #define USB_REQUEST_SET_DESCRIPTOR 0x07U
118 #define USB_REQUEST_GET_CONFIGURATION 0x08U
119 #define USB_REQUEST_SET_CONFIGURATION 0x09U
120 #define USB_REQUEST_GET_INTERFACE 0x0AU
121 #define USB_REQUEST_SET_INTERFACE 0x0BU
122 #define USB_REQUEST_SYNCH_FRAME 0x0CU
123 
124 /* USB Standard Feature selectors */
125 #define USB_FEATURE_ENDPOINT_STALL 0U
126 #define USB_FEATURE_REMOTE_WAKEUP 1U
127 
128 /* USB Descriptor Types */
129 #define USB_DESC_TYPE_DEVICE 1U
130 #define USB_DESC_TYPE_CONFIGURATION 2U
131 #define USB_DESC_TYPE_STRING 3U
132 #define USB_DESC_TYPE_INTERFACE 4U
133 #define USB_DESC_TYPE_ENDPOINT 5U
134 #define USB_DESC_TYPE_DEVICE_QUALIFIER 6U
135 #define USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION 7U
136 #define USB_DESC_TYPE_INTERFACE_POWER 8U
137 
138 
139 /* bmAttributes in Configuration Descriptor */
140 #define USB_CONFIG_POWERED_MASK 0x40U
141 #define USB_CONFIG_BUS_POWERED 0x80U
142 #define USB_CONFIG_SELF_POWERED 0xC0U
143 #define USB_CONFIG_REMOTE_WAKEUP 0x20U
144 
145 /* bMaxPower in Configuration Descriptor */
146 #define USB_CONFIG_POWER_MA(mA) ((mA)/2)
147 
148 /* bEndpointAddress in Endpoint Descriptor */
149 #define USB_ENDPOINT_DIRECTION_MASK 0x80U
150 #define USB_ENDPOINT_OUT(addr) (addr)
151 #define USB_ENDPOINT_IN(addr) ((addr) | 0x80U)
152 
153 /* bmAttributes in Endpoint Descriptor */
154 #define USB_ENDPOINT_TYPE_MASK 0x03U
155 #define USB_ENDPOINT_TYPE_CONTROL 0x00U
156 #define USB_ENDPOINT_TYPE_ISOCHRONOUS 0x01U
157 #define USB_ENDPOINT_TYPE_BULK 0x02U
158 #define USB_ENDPOINT_TYPE_INTERRUPT 0x03U
159 #define USB_ENDPOINT_SYNC_MASK 0x0CU
160 #define USB_ENDPOINT_SYNC_NO_SYNCHRONIZATION 0x00U
161 #define USB_ENDPOINT_SYNC_ASYNCHRONOUS 0x04U
162 #define USB_ENDPOINT_SYNC_ADAPTIVE 0x08U
163 #define USB_ENDPOINT_SYNC_SYNCHRONOUS 0x0CU
164 #define USB_ENDPOINT_USAGE_MASK 0x30U
165 #define USB_ENDPOINT_USAGE_DATA 0x00U
166 #define USB_ENDPOINT_USAGE_FEEDBACK 0x10U
167 #define USB_ENDPOINT_USAGE_IMPLICIT_FEEDBACK 0x20U
168 #define USB_ENDPOINT_USAGE_RESERVED 0x30U
169 
170 /* Device States */
171 #define USBD_STATE_DEFAULT 0
172 #define USBD_STATE_ADDRESSED 1
173 #define USBD_STATE_CONFIGURED 2
174 #define USBD_STATE_SUSPENDED 3
175 
176 /* Exported macro ------------------------------------------------------------*/
177 /* Exported functions --------------------------------------------------------*/
178 
179 
180 #ifdef __cplusplus
181 }
182 #endif
183 
184 #endif /* __USB_DEF_H */
__PACKED_STRUCT _USB_SETUP_PACKET
USB Default Control Pipe Setup Packet.
Definition: usb_def.h:53