These are the examples provided for [[/users/frank26080115/libraries/LPC1700CMSIS_Lib/]] Note, the entire "program" is not compilable!

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers usb.h Source File

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__ */