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 00023 #if defined ( __GNUC__ ) 00024 #define __packed __attribute__((__packed__)) 00025 #endif 00026 00027 #if defined ( __CC_ARM ) 00028 typedef __packed union { 00029 #elif defined ( __GNUC__ ) 00030 typedef union __packed { 00031 #elif defined ( __IAR_SYSTEMS_ICC__ ) 00032 #pragma pack(1) 00033 typedef union { 00034 #endif 00035 uint16_t W; 00036 #if defined ( __CC_ARM ) 00037 __packed struct { 00038 #elif defined ( __GNUC__ ) 00039 struct __packed { 00040 #elif defined ( __IAR_SYSTEMS_ICC__ ) 00041 #pragma pack(1) 00042 struct { 00043 #endif 00044 uint8_t L; 00045 uint8_t H; 00046 } WB; 00047 #ifdef __IAR_SYSTEMS_ICC__ 00048 #pragma pack() 00049 #endif 00050 } WORD_BYTE; 00051 #ifdef __IAR_SYSTEMS_ICC__ 00052 #pragma pack() 00053 #endif 00054 00055 00056 /* bmRequestType.Dir */ 00057 #define REQUEST_HOST_TO_DEVICE 0 00058 #define REQUEST_DEVICE_TO_HOST 1 00059 00060 /* bmRequestType.Type */ 00061 #define REQUEST_STANDARD 0 00062 #define REQUEST_CLASS 1 00063 #define REQUEST_VENDOR 2 00064 #define REQUEST_RESERVED 3 00065 00066 /* bmRequestType.Recipient */ 00067 #define REQUEST_TO_DEVICE 0 00068 #define REQUEST_TO_INTERFACE 1 00069 #define REQUEST_TO_ENDPOINT 2 00070 #define REQUEST_TO_OTHER 3 00071 00072 /* bmRequestType Definition */ 00073 #if defined ( __CC_ARM ) 00074 typedef __packed union _REQUEST_TYPE { 00075 #elif defined ( __GNUC__ ) 00076 typedef union __packed _REQUEST_TYPE { 00077 #elif defined ( __IAR_SYSTEMS_ICC__ ) 00078 #pragma pack(1) 00079 typedef union _REQUEST_TYPE { 00080 #endif 00081 #if defined ( __CC_ARM ) 00082 __packed struct _BM { 00083 #elif defined ( __GNUC__ ) 00084 struct __packed _BM { 00085 #elif defined ( __IAR_SYSTEMS_ICC__ ) 00086 #pragma pack(1) 00087 struct _BM { 00088 #endif 00089 uint8_t Recipient : 5; 00090 uint8_t Type : 2; 00091 uint8_t Dir : 1; 00092 } BM; 00093 #ifdef __IAR_SYSTEMS_ICC__ 00094 #pragma pack() 00095 #endif 00096 uint8_t B; 00097 } REQUEST_TYPE; 00098 #ifdef __IAR_SYSTEMS_ICC__ 00099 #pragma pack() 00100 #endif 00101 00102 /* USB Standard Request Codes */ 00103 #define USB_REQUEST_GET_STATUS 0 00104 #define USB_REQUEST_CLEAR_FEATURE 1 00105 #define USB_REQUEST_SET_FEATURE 3 00106 #define USB_REQUEST_SET_ADDRESS 5 00107 #define USB_REQUEST_GET_DESCRIPTOR 6 00108 #define USB_REQUEST_SET_DESCRIPTOR 7 00109 #define USB_REQUEST_GET_CONFIGURATION 8 00110 #define USB_REQUEST_SET_CONFIGURATION 9 00111 #define USB_REQUEST_GET_INTERFACE 10 00112 #define USB_REQUEST_SET_INTERFACE 11 00113 #define USB_REQUEST_SYNC_FRAME 12 00114 00115 /* USB GET_STATUS Bit Values */ 00116 #define USB_GETSTATUS_SELF_POWERED 0x01 00117 #define USB_GETSTATUS_REMOTE_WAKEUP 0x02 00118 #define USB_GETSTATUS_ENDPOINT_STALL 0x01 00119 00120 /* USB Standard Feature selectors */ 00121 #define USB_FEATURE_ENDPOINT_STALL 0 00122 #define USB_FEATURE_REMOTE_WAKEUP 1 00123 00124 /* USB Default Control Pipe Setup Packet */ 00125 #if defined ( __CC_ARM ) 00126 typedef __packed struct _USB_SETUP_PACKET { 00127 #elif defined ( __GNUC__ ) 00128 typedef struct __packed _USB_SETUP_PACKET { 00129 #elif defined ( __IAR_SYSTEMS_ICC__ ) 00130 #pragma pack(1) 00131 typedef struct _USB_SETUP_PACKET { 00132 #endif 00133 REQUEST_TYPE bmRequestType; 00134 uint8_t bRequest; 00135 WORD_BYTE wValue; 00136 WORD_BYTE wIndex; 00137 uint16_t wLength; 00138 } USB_SETUP_PACKET; 00139 #ifdef __IAR_SYSTEMS_ICC__ 00140 #pragma pack() 00141 #endif 00142 00143 00144 /* USB Descriptor Types */ 00145 #define USB_DEVICE_DESCRIPTOR_TYPE 1 00146 #define USB_CONFIGURATION_DESCRIPTOR_TYPE 2 00147 #define USB_STRING_DESCRIPTOR_TYPE 3 00148 #define USB_INTERFACE_DESCRIPTOR_TYPE 4 00149 #define USB_ENDPOINT_DESCRIPTOR_TYPE 5 00150 #define USB_DEVICE_QUALIFIER_DESCRIPTOR_TYPE 6 00151 #define USB_OTHER_SPEED_CONFIG_DESCRIPTOR_TYPE 7 00152 #define USB_INTERFACE_POWER_DESCRIPTOR_TYPE 8 00153 #define USB_OTG_DESCRIPTOR_TYPE 9 00154 #define USB_DEBUG_DESCRIPTOR_TYPE 10 00155 #define USB_INTERFACE_ASSOCIATION_DESCRIPTOR_TYPE 11 00156 00157 /* USB Device Classes */ 00158 #define USB_DEVICE_CLASS_RESERVED 0x00 00159 #define USB_DEVICE_CLASS_AUDIO 0x01 00160 #define USB_DEVICE_CLASS_COMMUNICATIONS 0x02 00161 #define USB_DEVICE_CLASS_HUMAN_INTERFACE 0x03 00162 #define USB_DEVICE_CLASS_MONITOR 0x04 00163 #define USB_DEVICE_CLASS_PHYSICAL_INTERFACE 0x05 00164 #define USB_DEVICE_CLASS_POWER 0x06 00165 #define USB_DEVICE_CLASS_PRINTER 0x07 00166 #define USB_DEVICE_CLASS_STORAGE 0x08 00167 #define USB_DEVICE_CLASS_HUB 0x09 00168 #define USB_DEVICE_CLASS_MISCELLANEOUS 0xEF 00169 #define USB_DEVICE_CLASS_VENDOR_SPECIFIC 0xFF 00170 00171 /* bmAttributes in Configuration Descriptor */ 00172 #define USB_CONFIG_POWERED_MASK 0x40 00173 #define USB_CONFIG_BUS_POWERED 0x80 00174 #define USB_CONFIG_SELF_POWERED 0xC0 00175 #define USB_CONFIG_REMOTE_WAKEUP 0x20 00176 00177 /* bMaxPower in Configuration Descriptor */ 00178 #define USB_CONFIG_POWER_MA(mA) ((mA)/2) 00179 00180 /* bEndpointAddress in Endpoint Descriptor */ 00181 #define USB_ENDPOINT_DIRECTION_MASK 0x80 00182 #define USB_ENDPOINT_OUT(addr) ((addr) | 0x00) 00183 #define USB_ENDPOINT_IN(addr) ((addr) | 0x80) 00184 00185 /* bmAttributes in Endpoint Descriptor */ 00186 #define USB_ENDPOINT_TYPE_MASK 0x03 00187 #define USB_ENDPOINT_TYPE_CONTROL 0x00 00188 #define USB_ENDPOINT_TYPE_ISOCHRONOUS 0x01 00189 #define USB_ENDPOINT_TYPE_BULK 0x02 00190 #define USB_ENDPOINT_TYPE_INTERRUPT 0x03 00191 #define USB_ENDPOINT_SYNC_MASK 0x0C 00192 #define USB_ENDPOINT_SYNC_NO_SYNCHRONIZATION 0x00 00193 #define USB_ENDPOINT_SYNC_ASYNCHRONOUS 0x04 00194 #define USB_ENDPOINT_SYNC_ADAPTIVE 0x08 00195 #define USB_ENDPOINT_SYNC_SYNCHRONOUS 0x0C 00196 #define USB_ENDPOINT_USAGE_MASK 0x30 00197 #define USB_ENDPOINT_USAGE_DATA 0x00 00198 #define USB_ENDPOINT_USAGE_FEEDBACK 0x10 00199 #define USB_ENDPOINT_USAGE_IMPLICIT_FEEDBACK 0x20 00200 #define USB_ENDPOINT_USAGE_RESERVED 0x30 00201 00202 /* USB Standard Device Descriptor */ 00203 #if defined ( __CC_ARM ) 00204 typedef __packed struct _USB_DEVICE_DESCRIPTOR { 00205 #elif defined ( __GNUC__ ) 00206 typedef struct __packed _USB_DEVICE_DESCRIPTOR { 00207 #elif defined ( __IAR_SYSTEMS_ICC__ ) 00208 #pragma pack(1) 00209 typedef struct _USB_DEVICE_DESCRIPTOR { 00210 #endif 00211 uint8_t bLength; 00212 uint8_t bDescriptorType; 00213 uint16_t bcdUSB; 00214 uint8_t bDeviceClass; 00215 uint8_t bDeviceSubClass; 00216 uint8_t bDeviceProtocol; 00217 uint8_t bMaxPacketSize0; 00218 uint16_t idVendor; 00219 uint16_t idProduct; 00220 uint16_t bcdDevice; 00221 uint8_t iManufacturer; 00222 uint8_t iProduct; 00223 uint8_t iSerialNumber; 00224 uint8_t bNumConfigurations; 00225 } USB_DEVICE_DESCRIPTOR; 00226 #ifdef __IAR_SYSTEMS_ICC__ 00227 #pragma pack() 00228 #endif 00229 00230 /* USB 2.0 Device Qualifier Descriptor */ 00231 #if defined ( __CC_ARM ) 00232 typedef __packed struct _USB_DEVICE_QUALIFIER_DESCRIPTOR { 00233 #elif defined ( __GNUC__ ) 00234 typedef struct __packed _USB_DEVICE_QUALIFIER_DESCRIPTOR { 00235 #elif defined ( __IAR_SYSTEMS_ICC__ ) 00236 #pragma pack(1) 00237 typedef struct _USB_DEVICE_QUALIFIER_DESCRIPTOR { 00238 #endif 00239 uint8_t bLength; 00240 uint8_t bDescriptorType; 00241 uint16_t bcdUSB; 00242 uint8_t bDeviceClass; 00243 uint8_t bDeviceSubClass; 00244 uint8_t bDeviceProtocol; 00245 uint8_t bMaxPacketSize0; 00246 uint8_t bNumConfigurations; 00247 uint8_t bReserved; 00248 } USB_DEVICE_QUALIFIER_DESCRIPTOR; 00249 #ifdef __IAR_SYSTEMS_ICC__ 00250 #pragma pack() 00251 #endif 00252 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 00352 #endif /* __USB_H__ */
Generated on Tue Jul 12 2022 17:28:10 by 1.7.2