These are the examples provided for [[/users/frank26080115/libraries/LPC1700CMSIS_Lib/]] Note, the entire "program" is not compilable!
usb.h
00001 /*---------------------------------------------------------------------------- 00002 * U S B - K e r n e l 00003 *---------------------------------------------------------------------------- 00004 * Name: usb.h 00005 * Purpose: USB Definitions 00006 * Version: V1.20 00007 *---------------------------------------------------------------------------- 00008 * This software is supplied "AS IS" without any warranties, express, 00009 * implied or statutory, including but not limited to the implied 00010 * warranties of fitness for purpose, satisfactory quality and 00011 * noninfringement. Keil extends you a royalty-free right to reproduce 00012 * and distribute executable files created using this software for use 00013 * on NXP Semiconductors LPC family microcontroller devices only. Nothing 00014 * else gives you the right to use this software. 00015 * 00016 * Copyright (c) 2009 Keil - An ARM Company. All rights reserved. 00017 *---------------------------------------------------------------------------*/ 00018 00019 #ifndef __USB_H__ 00020 #define __USB_H__ 00021 #include "lpc_types.h" 00022 #if defined ( __GNUC__ ) 00023 #define __packed __attribute__((__packed__)) 00024 #endif 00025 00026 #if defined ( __CC_ARM ) 00027 typedef __packed union { 00028 #elif defined ( __GNUC__ ) 00029 typedef union __packed { 00030 #elif defined ( __IAR_SYSTEMS_ICC__ ) 00031 #pragma pack(1) 00032 typedef union { 00033 #endif 00034 uint16_t W; 00035 #if defined ( __CC_ARM ) 00036 __packed struct { 00037 #elif defined ( __GNUC__ ) 00038 struct __packed { 00039 #elif defined ( __IAR_SYSTEMS_ICC__ ) 00040 #pragma pack(1) 00041 struct { 00042 #endif 00043 uint8_t L; 00044 uint8_t H; 00045 } WB; 00046 #ifdef __IAR_SYSTEMS_ICC__ 00047 #pragma pack() 00048 #endif 00049 } WORD_BYTE; 00050 #ifdef __IAR_SYSTEMS_ICC__ 00051 #pragma pack() 00052 #endif 00053 00054 00055 /* bmRequestType.Dir */ 00056 #define REQUEST_HOST_TO_DEVICE 0 00057 #define REQUEST_DEVICE_TO_HOST 1 00058 00059 /* bmRequestType.Type */ 00060 #define REQUEST_STANDARD 0 00061 #define REQUEST_CLASS 1 00062 #define REQUEST_VENDOR 2 00063 #define REQUEST_RESERVED 3 00064 00065 /* bmRequestType.Recipient */ 00066 #define REQUEST_TO_DEVICE 0 00067 #define REQUEST_TO_INTERFACE 1 00068 #define REQUEST_TO_ENDPOINT 2 00069 #define REQUEST_TO_OTHER 3 00070 00071 /* bmRequestType Definition */ 00072 #if defined ( __CC_ARM ) 00073 typedef __packed union _REQUEST_TYPE { 00074 #elif defined ( __GNUC__ ) 00075 typedef union __packed _REQUEST_TYPE { 00076 #elif defined ( __IAR_SYSTEMS_ICC__ ) 00077 #pragma pack(1) 00078 typedef union _REQUEST_TYPE { 00079 #endif 00080 #if defined ( __CC_ARM ) 00081 __packed struct _BM { 00082 #elif defined ( __GNUC__ ) 00083 struct __packed _BM { 00084 #elif defined ( __IAR_SYSTEMS_ICC__ ) 00085 #pragma pack(1) 00086 struct _BM { 00087 #endif 00088 uint8_t Recipient : 5; 00089 uint8_t Type : 2; 00090 uint8_t Dir : 1; 00091 } BM; 00092 #ifdef __IAR_SYSTEMS_ICC__ 00093 #pragma pack() 00094 #endif 00095 uint8_t B; 00096 } REQUEST_TYPE; 00097 #ifdef __IAR_SYSTEMS_ICC__ 00098 #pragma pack() 00099 #endif 00100 00101 /* USB Standard Request Codes */ 00102 #define USB_REQUEST_GET_STATUS 0 00103 #define USB_REQUEST_CLEAR_FEATURE 1 00104 #define USB_REQUEST_SET_FEATURE 3 00105 #define USB_REQUEST_SET_ADDRESS 5 00106 #define USB_REQUEST_GET_DESCRIPTOR 6 00107 #define USB_REQUEST_SET_DESCRIPTOR 7 00108 #define USB_REQUEST_GET_CONFIGURATION 8 00109 #define USB_REQUEST_SET_CONFIGURATION 9 00110 #define USB_REQUEST_GET_INTERFACE 10 00111 #define USB_REQUEST_SET_INTERFACE 11 00112 #define USB_REQUEST_SYNC_FRAME 12 00113 00114 /* USB GET_STATUS Bit Values */ 00115 #define USB_GETSTATUS_SELF_POWERED 0x01 00116 #define USB_GETSTATUS_REMOTE_WAKEUP 0x02 00117 #define USB_GETSTATUS_ENDPOINT_STALL 0x01 00118 00119 /* USB Standard Feature selectors */ 00120 #define USB_FEATURE_ENDPOINT_STALL 0 00121 #define USB_FEATURE_REMOTE_WAKEUP 1 00122 00123 /* USB Default Control Pipe Setup Packet */ 00124 #if defined ( __CC_ARM ) 00125 typedef __packed struct _USB_SETUP_PACKET { 00126 #elif defined ( __GNUC__ ) 00127 typedef struct __packed _USB_SETUP_PACKET { 00128 #elif defined ( __IAR_SYSTEMS_ICC__ ) 00129 #pragma pack(1) 00130 typedef struct _USB_SETUP_PACKET { 00131 #endif 00132 REQUEST_TYPE bmRequestType; 00133 uint8_t bRequest; 00134 WORD_BYTE wValue; 00135 WORD_BYTE wIndex; 00136 uint16_t wLength; 00137 } USB_SETUP_PACKET; 00138 #ifdef __IAR_SYSTEMS_ICC__ 00139 #pragma pack() 00140 #endif 00141 00142 00143 /* USB Descriptor Types */ 00144 #define USB_DEVICE_DESCRIPTOR_TYPE 1 00145 #define USB_CONFIGURATION_DESCRIPTOR_TYPE 2 00146 #define USB_STRING_DESCRIPTOR_TYPE 3 00147 #define USB_INTERFACE_DESCRIPTOR_TYPE 4 00148 #define USB_ENDPOINT_DESCRIPTOR_TYPE 5 00149 #define USB_DEVICE_QUALIFIER_DESCRIPTOR_TYPE 6 00150 #define USB_OTHER_SPEED_CONFIG_DESCRIPTOR_TYPE 7 00151 #define USB_INTERFACE_POWER_DESCRIPTOR_TYPE 8 00152 #define USB_OTG_DESCRIPTOR_TYPE 9 00153 #define USB_DEBUG_DESCRIPTOR_TYPE 10 00154 #define USB_INTERFACE_ASSOCIATION_DESCRIPTOR_TYPE 11 00155 00156 /* USB Device Classes */ 00157 #define USB_DEVICE_CLASS_RESERVED 0x00 00158 #define USB_DEVICE_CLASS_AUDIO 0x01 00159 #define USB_DEVICE_CLASS_COMMUNICATIONS 0x02 00160 #define USB_DEVICE_CLASS_HUMAN_INTERFACE 0x03 00161 #define USB_DEVICE_CLASS_MONITOR 0x04 00162 #define USB_DEVICE_CLASS_PHYSICAL_INTERFACE 0x05 00163 #define USB_DEVICE_CLASS_POWER 0x06 00164 #define USB_DEVICE_CLASS_PRINTER 0x07 00165 #define USB_DEVICE_CLASS_STORAGE 0x08 00166 #define USB_DEVICE_CLASS_HUB 0x09 00167 #define USB_DEVICE_CLASS_MISCELLANEOUS 0xEF 00168 #define USB_DEVICE_CLASS_VENDOR_SPECIFIC 0xFF 00169 00170 /* bmAttributes in Configuration Descriptor */ 00171 #define USB_CONFIG_POWERED_MASK 0x40 00172 #define USB_CONFIG_BUS_POWERED 0x80 00173 #define USB_CONFIG_SELF_POWERED 0xC0 00174 #define USB_CONFIG_REMOTE_WAKEUP 0x20 00175 00176 /* bMaxPower in Configuration Descriptor */ 00177 #define USB_CONFIG_POWER_MA(mA) ((mA)/2) 00178 00179 /* bEndpointAddress in Endpoint Descriptor */ 00180 #define USB_ENDPOINT_DIRECTION_MASK 0x80 00181 #define USB_ENDPOINT_OUT(addr) ((addr) | 0x00) 00182 #define USB_ENDPOINT_IN(addr) ((addr) | 0x80) 00183 00184 /* bmAttributes in Endpoint Descriptor */ 00185 #define USB_ENDPOINT_TYPE_MASK 0x03 00186 #define USB_ENDPOINT_TYPE_CONTROL 0x00 00187 #define USB_ENDPOINT_TYPE_ISOCHRONOUS 0x01 00188 #define USB_ENDPOINT_TYPE_BULK 0x02 00189 #define USB_ENDPOINT_TYPE_INTERRUPT 0x03 00190 #define USB_ENDPOINT_SYNC_MASK 0x0C 00191 #define USB_ENDPOINT_SYNC_NO_SYNCHRONIZATION 0x00 00192 #define USB_ENDPOINT_SYNC_ASYNCHRONOUS 0x04 00193 #define USB_ENDPOINT_SYNC_ADAPTIVE 0x08 00194 #define USB_ENDPOINT_SYNC_SYNCHRONOUS 0x0C 00195 #define USB_ENDPOINT_USAGE_MASK 0x30 00196 #define USB_ENDPOINT_USAGE_DATA 0x00 00197 #define USB_ENDPOINT_USAGE_FEEDBACK 0x10 00198 #define USB_ENDPOINT_USAGE_IMPLICIT_FEEDBACK 0x20 00199 #define USB_ENDPOINT_USAGE_RESERVED 0x30 00200 00201 /* USB Standard Device Descriptor */ 00202 #if defined ( __CC_ARM ) 00203 typedef __packed struct _USB_DEVICE_DESCRIPTOR { 00204 #elif defined ( __GNUC__ ) 00205 typedef struct __packed _USB_DEVICE_DESCRIPTOR { 00206 #elif defined ( __IAR_SYSTEMS_ICC__ ) 00207 #pragma pack(1) 00208 typedef struct _USB_DEVICE_DESCRIPTOR { 00209 #endif 00210 uint8_t bLength; 00211 uint8_t bDescriptorType; 00212 uint16_t bcdUSB; 00213 uint8_t bDeviceClass; 00214 uint8_t bDeviceSubClass; 00215 uint8_t bDeviceProtocol; 00216 uint8_t bMaxPacketSize0; 00217 uint16_t idVendor; 00218 uint16_t idProduct; 00219 uint16_t bcdDevice; 00220 uint8_t iManufacturer; 00221 uint8_t iProduct; 00222 uint8_t iSerialNumber; 00223 uint8_t bNumConfigurations; 00224 } USB_DEVICE_DESCRIPTOR; 00225 #ifdef __IAR_SYSTEMS_ICC__ 00226 #pragma pack() 00227 #endif 00228 00229 /* USB 2.0 Device Qualifier Descriptor */ 00230 #if defined ( __CC_ARM ) 00231 typedef __packed struct _USB_DEVICE_QUALIFIER_DESCRIPTOR { 00232 #elif defined ( __GNUC__ ) 00233 typedef struct __packed _USB_DEVICE_QUALIFIER_DESCRIPTOR { 00234 #elif defined ( __IAR_SYSTEMS_ICC__ ) 00235 #pragma pack(1) 00236 typedef struct _USB_DEVICE_QUALIFIER_DESCRIPTOR { 00237 #endif 00238 uint8_t bLength; 00239 uint8_t bDescriptorType; 00240 uint16_t bcdUSB; 00241 uint8_t bDeviceClass; 00242 uint8_t bDeviceSubClass; 00243 uint8_t bDeviceProtocol; 00244 uint8_t bMaxPacketSize0; 00245 uint8_t bNumConfigurations; 00246 uint8_t bReserved; 00247 } USB_DEVICE_QUALIFIER_DESCRIPTOR; 00248 #ifdef __IAR_SYSTEMS_ICC__ 00249 #pragma pack() 00250 #endif 00251 00252 /* USB Standard Configuration Descriptor */ 00253 #if defined ( __CC_ARM ) 00254 typedef __packed struct _USB_CONFIGURATION_DESCRIPTOR { 00255 #elif defined ( __GNUC__ ) 00256 typedef struct __packed _USB_CONFIGURATION_DESCRIPTOR { 00257 #elif defined ( __IAR_SYSTEMS_ICC__ ) 00258 #pragma pack(1) 00259 typedef struct _USB_CONFIGURATION_DESCRIPTOR { 00260 #endif 00261 uint8_t bLength; 00262 uint8_t bDescriptorType; 00263 uint16_t wTotalLength; 00264 uint8_t bNumInterfaces; 00265 uint8_t bConfigurationValue; 00266 uint8_t iConfiguration; 00267 uint8_t bmAttributes; 00268 uint8_t bMaxPower; 00269 } USB_CONFIGURATION_DESCRIPTOR; 00270 #ifdef __IAR_SYSTEMS_ICC__ 00271 #pragma pack() 00272 #endif 00273 00274 /* USB Standard Interface Descriptor */ 00275 #if defined ( __CC_ARM ) 00276 typedef __packed struct _USB_INTERFACE_DESCRIPTOR { 00277 #elif defined ( __GNUC__ ) 00278 typedef struct __packed _USB_INTERFACE_DESCRIPTOR { 00279 #elif defined ( __IAR_SYSTEMS_ICC__ ) 00280 #pragma pack(1) 00281 typedef struct _USB_INTERFACE_DESCRIPTOR { 00282 #endif 00283 uint8_t bLength; 00284 uint8_t bDescriptorType; 00285 uint8_t bInterfaceNumber; 00286 uint8_t bAlternateSetting; 00287 uint8_t bNumEndpoints; 00288 uint8_t bInterfaceClass; 00289 uint8_t bInterfaceSubClass; 00290 uint8_t bInterfaceProtocol; 00291 uint8_t iInterface; 00292 } USB_INTERFACE_DESCRIPTOR; 00293 #ifdef __IAR_SYSTEMS_ICC__ 00294 #pragma pack() 00295 #endif 00296 00297 /* USB Standard Endpoint Descriptor */ 00298 #if defined ( __CC_ARM ) 00299 typedef __packed struct _USB_ENDPOINT_DESCRIPTOR { 00300 #elif defined ( __GNUC__ ) 00301 typedef struct __packed _USB_ENDPOINT_DESCRIPTOR { 00302 #elif defined ( __IAR_SYSTEMS_ICC__ ) 00303 #pragma pack(1) 00304 typedef struct _USB_ENDPOINT_DESCRIPTOR { 00305 #endif 00306 uint8_t bLength; 00307 uint8_t bDescriptorType; 00308 uint8_t bEndpointAddress; 00309 uint8_t bmAttributes; 00310 uint16_t wMaxPacketSize; 00311 uint8_t bInterval; 00312 } USB_ENDPOINT_DESCRIPTOR; 00313 #ifdef __IAR_SYSTEMS_ICC__ 00314 #pragma pack() 00315 #endif 00316 00317 /* USB String Descriptor */ 00318 #if defined ( __CC_ARM ) 00319 typedef __packed struct _USB_STRING_DESCRIPTOR { 00320 #elif defined ( __GNUC__ ) 00321 typedef struct __packed _USB_STRING_DESCRIPTOR { 00322 #elif defined ( __IAR_SYSTEMS_ICC__ ) 00323 #pragma pack(1) 00324 typedef struct _USB_STRING_DESCRIPTOR { 00325 #endif 00326 uint8_t bLength; 00327 uint8_t bDescriptorType; 00328 uint16_t bString/*[]*/; 00329 } USB_STRING_DESCRIPTOR; 00330 #ifdef __IAR_SYSTEMS_ICC__ 00331 #pragma pack() 00332 #endif 00333 00334 /* USB Common Descriptor */ 00335 #if defined ( __CC_ARM ) 00336 typedef __packed struct _USB_COMMON_DESCRIPTOR { 00337 #elif defined ( __GNUC__ ) 00338 typedef struct __packed _USB_COMMON_DESCRIPTOR { 00339 #elif defined ( __IAR_SYSTEMS_ICC__ ) 00340 #pragma pack(1) 00341 typedef struct _USB_COMMON_DESCRIPTOR { 00342 #endif 00343 uint8_t bLength; 00344 uint8_t bDescriptorType; 00345 } USB_COMMON_DESCRIPTOR; 00346 #ifdef __IAR_SYSTEMS_ICC__ 00347 #pragma pack() 00348 #endif 00349 00350 00351 #endif /* __USB_H__ */
Generated on Tue Jul 12 2022 17:28:10 by 1.7.2