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

Committer:
frank26080115
Date:
Sun Mar 20 05:38:56 2011 +0000
Revision:
0:bf7b9fba3924

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
frank26080115 0:bf7b9fba3924 1 /*----------------------------------------------------------------------------
frank26080115 0:bf7b9fba3924 2 * U S B - K e r n e l
frank26080115 0:bf7b9fba3924 3 *----------------------------------------------------------------------------
frank26080115 0:bf7b9fba3924 4 * Name: usb.h
frank26080115 0:bf7b9fba3924 5 * Purpose: USB Definitions
frank26080115 0:bf7b9fba3924 6 * Version: V1.20
frank26080115 0:bf7b9fba3924 7 *----------------------------------------------------------------------------
frank26080115 0:bf7b9fba3924 8 * This software is supplied "AS IS" without any warranties, express,
frank26080115 0:bf7b9fba3924 9 * implied or statutory, including but not limited to the implied
frank26080115 0:bf7b9fba3924 10 * warranties of fitness for purpose, satisfactory quality and
frank26080115 0:bf7b9fba3924 11 * noninfringement. Keil extends you a royalty-free right to reproduce
frank26080115 0:bf7b9fba3924 12 * and distribute executable files created using this software for use
frank26080115 0:bf7b9fba3924 13 * on NXP Semiconductors LPC family microcontroller devices only. Nothing
frank26080115 0:bf7b9fba3924 14 * else gives you the right to use this software.
frank26080115 0:bf7b9fba3924 15 *
frank26080115 0:bf7b9fba3924 16 * Copyright (c) 2009 Keil - An ARM Company. All rights reserved.
frank26080115 0:bf7b9fba3924 17 *---------------------------------------------------------------------------*/
frank26080115 0:bf7b9fba3924 18
frank26080115 0:bf7b9fba3924 19 #ifndef __USB_H__
frank26080115 0:bf7b9fba3924 20 #define __USB_H__
frank26080115 0:bf7b9fba3924 21 #include "lpc_types.h"
frank26080115 0:bf7b9fba3924 22 #if defined ( __GNUC__ )
frank26080115 0:bf7b9fba3924 23 #define __packed __attribute__((__packed__))
frank26080115 0:bf7b9fba3924 24 #endif
frank26080115 0:bf7b9fba3924 25
frank26080115 0:bf7b9fba3924 26 #if defined ( __CC_ARM )
frank26080115 0:bf7b9fba3924 27 typedef __packed union {
frank26080115 0:bf7b9fba3924 28 #elif defined ( __GNUC__ )
frank26080115 0:bf7b9fba3924 29 typedef union __packed {
frank26080115 0:bf7b9fba3924 30 #elif defined ( __IAR_SYSTEMS_ICC__ )
frank26080115 0:bf7b9fba3924 31 #pragma pack(1)
frank26080115 0:bf7b9fba3924 32 typedef union {
frank26080115 0:bf7b9fba3924 33 #endif
frank26080115 0:bf7b9fba3924 34 uint16_t W;
frank26080115 0:bf7b9fba3924 35 #if defined ( __CC_ARM )
frank26080115 0:bf7b9fba3924 36 __packed struct {
frank26080115 0:bf7b9fba3924 37 #elif defined ( __GNUC__ )
frank26080115 0:bf7b9fba3924 38 struct __packed {
frank26080115 0:bf7b9fba3924 39 #elif defined ( __IAR_SYSTEMS_ICC__ )
frank26080115 0:bf7b9fba3924 40 #pragma pack(1)
frank26080115 0:bf7b9fba3924 41 struct {
frank26080115 0:bf7b9fba3924 42 #endif
frank26080115 0:bf7b9fba3924 43 uint8_t L;
frank26080115 0:bf7b9fba3924 44 uint8_t H;
frank26080115 0:bf7b9fba3924 45 } WB;
frank26080115 0:bf7b9fba3924 46 #ifdef __IAR_SYSTEMS_ICC__
frank26080115 0:bf7b9fba3924 47 #pragma pack()
frank26080115 0:bf7b9fba3924 48 #endif
frank26080115 0:bf7b9fba3924 49 } WORD_BYTE;
frank26080115 0:bf7b9fba3924 50 #ifdef __IAR_SYSTEMS_ICC__
frank26080115 0:bf7b9fba3924 51 #pragma pack()
frank26080115 0:bf7b9fba3924 52 #endif
frank26080115 0:bf7b9fba3924 53
frank26080115 0:bf7b9fba3924 54
frank26080115 0:bf7b9fba3924 55 /* bmRequestType.Dir */
frank26080115 0:bf7b9fba3924 56 #define REQUEST_HOST_TO_DEVICE 0
frank26080115 0:bf7b9fba3924 57 #define REQUEST_DEVICE_TO_HOST 1
frank26080115 0:bf7b9fba3924 58
frank26080115 0:bf7b9fba3924 59 /* bmRequestType.Type */
frank26080115 0:bf7b9fba3924 60 #define REQUEST_STANDARD 0
frank26080115 0:bf7b9fba3924 61 #define REQUEST_CLASS 1
frank26080115 0:bf7b9fba3924 62 #define REQUEST_VENDOR 2
frank26080115 0:bf7b9fba3924 63 #define REQUEST_RESERVED 3
frank26080115 0:bf7b9fba3924 64
frank26080115 0:bf7b9fba3924 65 /* bmRequestType.Recipient */
frank26080115 0:bf7b9fba3924 66 #define REQUEST_TO_DEVICE 0
frank26080115 0:bf7b9fba3924 67 #define REQUEST_TO_INTERFACE 1
frank26080115 0:bf7b9fba3924 68 #define REQUEST_TO_ENDPOINT 2
frank26080115 0:bf7b9fba3924 69 #define REQUEST_TO_OTHER 3
frank26080115 0:bf7b9fba3924 70
frank26080115 0:bf7b9fba3924 71 /* bmRequestType Definition */
frank26080115 0:bf7b9fba3924 72 #if defined ( __CC_ARM )
frank26080115 0:bf7b9fba3924 73 typedef __packed union _REQUEST_TYPE {
frank26080115 0:bf7b9fba3924 74 #elif defined ( __GNUC__ )
frank26080115 0:bf7b9fba3924 75 typedef union __packed _REQUEST_TYPE {
frank26080115 0:bf7b9fba3924 76 #elif defined ( __IAR_SYSTEMS_ICC__ )
frank26080115 0:bf7b9fba3924 77 #pragma pack(1)
frank26080115 0:bf7b9fba3924 78 typedef union _REQUEST_TYPE {
frank26080115 0:bf7b9fba3924 79 #endif
frank26080115 0:bf7b9fba3924 80 #if defined ( __CC_ARM )
frank26080115 0:bf7b9fba3924 81 __packed struct _BM {
frank26080115 0:bf7b9fba3924 82 #elif defined ( __GNUC__ )
frank26080115 0:bf7b9fba3924 83 struct __packed _BM {
frank26080115 0:bf7b9fba3924 84 #elif defined ( __IAR_SYSTEMS_ICC__ )
frank26080115 0:bf7b9fba3924 85 #pragma pack(1)
frank26080115 0:bf7b9fba3924 86 struct _BM {
frank26080115 0:bf7b9fba3924 87 #endif
frank26080115 0:bf7b9fba3924 88 uint8_t Recipient : 5;
frank26080115 0:bf7b9fba3924 89 uint8_t Type : 2;
frank26080115 0:bf7b9fba3924 90 uint8_t Dir : 1;
frank26080115 0:bf7b9fba3924 91 } BM;
frank26080115 0:bf7b9fba3924 92 #ifdef __IAR_SYSTEMS_ICC__
frank26080115 0:bf7b9fba3924 93 #pragma pack()
frank26080115 0:bf7b9fba3924 94 #endif
frank26080115 0:bf7b9fba3924 95 uint8_t B;
frank26080115 0:bf7b9fba3924 96 } REQUEST_TYPE;
frank26080115 0:bf7b9fba3924 97 #ifdef __IAR_SYSTEMS_ICC__
frank26080115 0:bf7b9fba3924 98 #pragma pack()
frank26080115 0:bf7b9fba3924 99 #endif
frank26080115 0:bf7b9fba3924 100
frank26080115 0:bf7b9fba3924 101 /* USB Standard Request Codes */
frank26080115 0:bf7b9fba3924 102 #define USB_REQUEST_GET_STATUS 0
frank26080115 0:bf7b9fba3924 103 #define USB_REQUEST_CLEAR_FEATURE 1
frank26080115 0:bf7b9fba3924 104 #define USB_REQUEST_SET_FEATURE 3
frank26080115 0:bf7b9fba3924 105 #define USB_REQUEST_SET_ADDRESS 5
frank26080115 0:bf7b9fba3924 106 #define USB_REQUEST_GET_DESCRIPTOR 6
frank26080115 0:bf7b9fba3924 107 #define USB_REQUEST_SET_DESCRIPTOR 7
frank26080115 0:bf7b9fba3924 108 #define USB_REQUEST_GET_CONFIGURATION 8
frank26080115 0:bf7b9fba3924 109 #define USB_REQUEST_SET_CONFIGURATION 9
frank26080115 0:bf7b9fba3924 110 #define USB_REQUEST_GET_INTERFACE 10
frank26080115 0:bf7b9fba3924 111 #define USB_REQUEST_SET_INTERFACE 11
frank26080115 0:bf7b9fba3924 112 #define USB_REQUEST_SYNC_FRAME 12
frank26080115 0:bf7b9fba3924 113
frank26080115 0:bf7b9fba3924 114 /* USB GET_STATUS Bit Values */
frank26080115 0:bf7b9fba3924 115 #define USB_GETSTATUS_SELF_POWERED 0x01
frank26080115 0:bf7b9fba3924 116 #define USB_GETSTATUS_REMOTE_WAKEUP 0x02
frank26080115 0:bf7b9fba3924 117 #define USB_GETSTATUS_ENDPOINT_STALL 0x01
frank26080115 0:bf7b9fba3924 118
frank26080115 0:bf7b9fba3924 119 /* USB Standard Feature selectors */
frank26080115 0:bf7b9fba3924 120 #define USB_FEATURE_ENDPOINT_STALL 0
frank26080115 0:bf7b9fba3924 121 #define USB_FEATURE_REMOTE_WAKEUP 1
frank26080115 0:bf7b9fba3924 122
frank26080115 0:bf7b9fba3924 123 /* USB Default Control Pipe Setup Packet */
frank26080115 0:bf7b9fba3924 124 #if defined ( __CC_ARM )
frank26080115 0:bf7b9fba3924 125 typedef __packed struct _USB_SETUP_PACKET {
frank26080115 0:bf7b9fba3924 126 #elif defined ( __GNUC__ )
frank26080115 0:bf7b9fba3924 127 typedef struct __packed _USB_SETUP_PACKET {
frank26080115 0:bf7b9fba3924 128 #elif defined ( __IAR_SYSTEMS_ICC__ )
frank26080115 0:bf7b9fba3924 129 #pragma pack(1)
frank26080115 0:bf7b9fba3924 130 typedef struct _USB_SETUP_PACKET {
frank26080115 0:bf7b9fba3924 131 #endif
frank26080115 0:bf7b9fba3924 132 REQUEST_TYPE bmRequestType;
frank26080115 0:bf7b9fba3924 133 uint8_t bRequest;
frank26080115 0:bf7b9fba3924 134 WORD_BYTE wValue;
frank26080115 0:bf7b9fba3924 135 WORD_BYTE wIndex;
frank26080115 0:bf7b9fba3924 136 uint16_t wLength;
frank26080115 0:bf7b9fba3924 137 } USB_SETUP_PACKET;
frank26080115 0:bf7b9fba3924 138 #ifdef __IAR_SYSTEMS_ICC__
frank26080115 0:bf7b9fba3924 139 #pragma pack()
frank26080115 0:bf7b9fba3924 140 #endif
frank26080115 0:bf7b9fba3924 141
frank26080115 0:bf7b9fba3924 142
frank26080115 0:bf7b9fba3924 143 /* USB Descriptor Types */
frank26080115 0:bf7b9fba3924 144 #define USB_DEVICE_DESCRIPTOR_TYPE 1
frank26080115 0:bf7b9fba3924 145 #define USB_CONFIGURATION_DESCRIPTOR_TYPE 2
frank26080115 0:bf7b9fba3924 146 #define USB_STRING_DESCRIPTOR_TYPE 3
frank26080115 0:bf7b9fba3924 147 #define USB_INTERFACE_DESCRIPTOR_TYPE 4
frank26080115 0:bf7b9fba3924 148 #define USB_ENDPOINT_DESCRIPTOR_TYPE 5
frank26080115 0:bf7b9fba3924 149 #define USB_DEVICE_QUALIFIER_DESCRIPTOR_TYPE 6
frank26080115 0:bf7b9fba3924 150 #define USB_OTHER_SPEED_CONFIG_DESCRIPTOR_TYPE 7
frank26080115 0:bf7b9fba3924 151 #define USB_INTERFACE_POWER_DESCRIPTOR_TYPE 8
frank26080115 0:bf7b9fba3924 152 #define USB_OTG_DESCRIPTOR_TYPE 9
frank26080115 0:bf7b9fba3924 153 #define USB_DEBUG_DESCRIPTOR_TYPE 10
frank26080115 0:bf7b9fba3924 154 #define USB_INTERFACE_ASSOCIATION_DESCRIPTOR_TYPE 11
frank26080115 0:bf7b9fba3924 155
frank26080115 0:bf7b9fba3924 156 /* USB Device Classes */
frank26080115 0:bf7b9fba3924 157 #define USB_DEVICE_CLASS_RESERVED 0x00
frank26080115 0:bf7b9fba3924 158 #define USB_DEVICE_CLASS_AUDIO 0x01
frank26080115 0:bf7b9fba3924 159 #define USB_DEVICE_CLASS_COMMUNICATIONS 0x02
frank26080115 0:bf7b9fba3924 160 #define USB_DEVICE_CLASS_HUMAN_INTERFACE 0x03
frank26080115 0:bf7b9fba3924 161 #define USB_DEVICE_CLASS_MONITOR 0x04
frank26080115 0:bf7b9fba3924 162 #define USB_DEVICE_CLASS_PHYSICAL_INTERFACE 0x05
frank26080115 0:bf7b9fba3924 163 #define USB_DEVICE_CLASS_POWER 0x06
frank26080115 0:bf7b9fba3924 164 #define USB_DEVICE_CLASS_PRINTER 0x07
frank26080115 0:bf7b9fba3924 165 #define USB_DEVICE_CLASS_STORAGE 0x08
frank26080115 0:bf7b9fba3924 166 #define USB_DEVICE_CLASS_HUB 0x09
frank26080115 0:bf7b9fba3924 167 #define USB_DEVICE_CLASS_MISCELLANEOUS 0xEF
frank26080115 0:bf7b9fba3924 168 #define USB_DEVICE_CLASS_VENDOR_SPECIFIC 0xFF
frank26080115 0:bf7b9fba3924 169
frank26080115 0:bf7b9fba3924 170 /* bmAttributes in Configuration Descriptor */
frank26080115 0:bf7b9fba3924 171 #define USB_CONFIG_POWERED_MASK 0x40
frank26080115 0:bf7b9fba3924 172 #define USB_CONFIG_BUS_POWERED 0x80
frank26080115 0:bf7b9fba3924 173 #define USB_CONFIG_SELF_POWERED 0xC0
frank26080115 0:bf7b9fba3924 174 #define USB_CONFIG_REMOTE_WAKEUP 0x20
frank26080115 0:bf7b9fba3924 175
frank26080115 0:bf7b9fba3924 176 /* bMaxPower in Configuration Descriptor */
frank26080115 0:bf7b9fba3924 177 #define USB_CONFIG_POWER_MA(mA) ((mA)/2)
frank26080115 0:bf7b9fba3924 178
frank26080115 0:bf7b9fba3924 179 /* bEndpointAddress in Endpoint Descriptor */
frank26080115 0:bf7b9fba3924 180 #define USB_ENDPOINT_DIRECTION_MASK 0x80
frank26080115 0:bf7b9fba3924 181 #define USB_ENDPOINT_OUT(addr) ((addr) | 0x00)
frank26080115 0:bf7b9fba3924 182 #define USB_ENDPOINT_IN(addr) ((addr) | 0x80)
frank26080115 0:bf7b9fba3924 183
frank26080115 0:bf7b9fba3924 184 /* bmAttributes in Endpoint Descriptor */
frank26080115 0:bf7b9fba3924 185 #define USB_ENDPOINT_TYPE_MASK 0x03
frank26080115 0:bf7b9fba3924 186 #define USB_ENDPOINT_TYPE_CONTROL 0x00
frank26080115 0:bf7b9fba3924 187 #define USB_ENDPOINT_TYPE_ISOCHRONOUS 0x01
frank26080115 0:bf7b9fba3924 188 #define USB_ENDPOINT_TYPE_BULK 0x02
frank26080115 0:bf7b9fba3924 189 #define USB_ENDPOINT_TYPE_INTERRUPT 0x03
frank26080115 0:bf7b9fba3924 190 #define USB_ENDPOINT_SYNC_MASK 0x0C
frank26080115 0:bf7b9fba3924 191 #define USB_ENDPOINT_SYNC_NO_SYNCHRONIZATION 0x00
frank26080115 0:bf7b9fba3924 192 #define USB_ENDPOINT_SYNC_ASYNCHRONOUS 0x04
frank26080115 0:bf7b9fba3924 193 #define USB_ENDPOINT_SYNC_ADAPTIVE 0x08
frank26080115 0:bf7b9fba3924 194 #define USB_ENDPOINT_SYNC_SYNCHRONOUS 0x0C
frank26080115 0:bf7b9fba3924 195 #define USB_ENDPOINT_USAGE_MASK 0x30
frank26080115 0:bf7b9fba3924 196 #define USB_ENDPOINT_USAGE_DATA 0x00
frank26080115 0:bf7b9fba3924 197 #define USB_ENDPOINT_USAGE_FEEDBACK 0x10
frank26080115 0:bf7b9fba3924 198 #define USB_ENDPOINT_USAGE_IMPLICIT_FEEDBACK 0x20
frank26080115 0:bf7b9fba3924 199 #define USB_ENDPOINT_USAGE_RESERVED 0x30
frank26080115 0:bf7b9fba3924 200
frank26080115 0:bf7b9fba3924 201 /* USB Standard Device Descriptor */
frank26080115 0:bf7b9fba3924 202 #if defined ( __CC_ARM )
frank26080115 0:bf7b9fba3924 203 typedef __packed struct _USB_DEVICE_DESCRIPTOR {
frank26080115 0:bf7b9fba3924 204 #elif defined ( __GNUC__ )
frank26080115 0:bf7b9fba3924 205 typedef struct __packed _USB_DEVICE_DESCRIPTOR {
frank26080115 0:bf7b9fba3924 206 #elif defined ( __IAR_SYSTEMS_ICC__ )
frank26080115 0:bf7b9fba3924 207 #pragma pack(1)
frank26080115 0:bf7b9fba3924 208 typedef struct _USB_DEVICE_DESCRIPTOR {
frank26080115 0:bf7b9fba3924 209 #endif
frank26080115 0:bf7b9fba3924 210 uint8_t bLength;
frank26080115 0:bf7b9fba3924 211 uint8_t bDescriptorType;
frank26080115 0:bf7b9fba3924 212 uint16_t bcdUSB;
frank26080115 0:bf7b9fba3924 213 uint8_t bDeviceClass;
frank26080115 0:bf7b9fba3924 214 uint8_t bDeviceSubClass;
frank26080115 0:bf7b9fba3924 215 uint8_t bDeviceProtocol;
frank26080115 0:bf7b9fba3924 216 uint8_t bMaxPacketSize0;
frank26080115 0:bf7b9fba3924 217 uint16_t idVendor;
frank26080115 0:bf7b9fba3924 218 uint16_t idProduct;
frank26080115 0:bf7b9fba3924 219 uint16_t bcdDevice;
frank26080115 0:bf7b9fba3924 220 uint8_t iManufacturer;
frank26080115 0:bf7b9fba3924 221 uint8_t iProduct;
frank26080115 0:bf7b9fba3924 222 uint8_t iSerialNumber;
frank26080115 0:bf7b9fba3924 223 uint8_t bNumConfigurations;
frank26080115 0:bf7b9fba3924 224 } USB_DEVICE_DESCRIPTOR;
frank26080115 0:bf7b9fba3924 225 #ifdef __IAR_SYSTEMS_ICC__
frank26080115 0:bf7b9fba3924 226 #pragma pack()
frank26080115 0:bf7b9fba3924 227 #endif
frank26080115 0:bf7b9fba3924 228
frank26080115 0:bf7b9fba3924 229 /* USB 2.0 Device Qualifier Descriptor */
frank26080115 0:bf7b9fba3924 230 #if defined ( __CC_ARM )
frank26080115 0:bf7b9fba3924 231 typedef __packed struct _USB_DEVICE_QUALIFIER_DESCRIPTOR {
frank26080115 0:bf7b9fba3924 232 #elif defined ( __GNUC__ )
frank26080115 0:bf7b9fba3924 233 typedef struct __packed _USB_DEVICE_QUALIFIER_DESCRIPTOR {
frank26080115 0:bf7b9fba3924 234 #elif defined ( __IAR_SYSTEMS_ICC__ )
frank26080115 0:bf7b9fba3924 235 #pragma pack(1)
frank26080115 0:bf7b9fba3924 236 typedef struct _USB_DEVICE_QUALIFIER_DESCRIPTOR {
frank26080115 0:bf7b9fba3924 237 #endif
frank26080115 0:bf7b9fba3924 238 uint8_t bLength;
frank26080115 0:bf7b9fba3924 239 uint8_t bDescriptorType;
frank26080115 0:bf7b9fba3924 240 uint16_t bcdUSB;
frank26080115 0:bf7b9fba3924 241 uint8_t bDeviceClass;
frank26080115 0:bf7b9fba3924 242 uint8_t bDeviceSubClass;
frank26080115 0:bf7b9fba3924 243 uint8_t bDeviceProtocol;
frank26080115 0:bf7b9fba3924 244 uint8_t bMaxPacketSize0;
frank26080115 0:bf7b9fba3924 245 uint8_t bNumConfigurations;
frank26080115 0:bf7b9fba3924 246 uint8_t bReserved;
frank26080115 0:bf7b9fba3924 247 } USB_DEVICE_QUALIFIER_DESCRIPTOR;
frank26080115 0:bf7b9fba3924 248 #ifdef __IAR_SYSTEMS_ICC__
frank26080115 0:bf7b9fba3924 249 #pragma pack()
frank26080115 0:bf7b9fba3924 250 #endif
frank26080115 0:bf7b9fba3924 251
frank26080115 0:bf7b9fba3924 252 /* USB Standard Configuration Descriptor */
frank26080115 0:bf7b9fba3924 253 #if defined ( __CC_ARM )
frank26080115 0:bf7b9fba3924 254 typedef __packed struct _USB_CONFIGURATION_DESCRIPTOR {
frank26080115 0:bf7b9fba3924 255 #elif defined ( __GNUC__ )
frank26080115 0:bf7b9fba3924 256 typedef struct __packed _USB_CONFIGURATION_DESCRIPTOR {
frank26080115 0:bf7b9fba3924 257 #elif defined ( __IAR_SYSTEMS_ICC__ )
frank26080115 0:bf7b9fba3924 258 #pragma pack(1)
frank26080115 0:bf7b9fba3924 259 typedef struct _USB_CONFIGURATION_DESCRIPTOR {
frank26080115 0:bf7b9fba3924 260 #endif
frank26080115 0:bf7b9fba3924 261 uint8_t bLength;
frank26080115 0:bf7b9fba3924 262 uint8_t bDescriptorType;
frank26080115 0:bf7b9fba3924 263 uint16_t wTotalLength;
frank26080115 0:bf7b9fba3924 264 uint8_t bNumInterfaces;
frank26080115 0:bf7b9fba3924 265 uint8_t bConfigurationValue;
frank26080115 0:bf7b9fba3924 266 uint8_t iConfiguration;
frank26080115 0:bf7b9fba3924 267 uint8_t bmAttributes;
frank26080115 0:bf7b9fba3924 268 uint8_t bMaxPower;
frank26080115 0:bf7b9fba3924 269 } USB_CONFIGURATION_DESCRIPTOR;
frank26080115 0:bf7b9fba3924 270 #ifdef __IAR_SYSTEMS_ICC__
frank26080115 0:bf7b9fba3924 271 #pragma pack()
frank26080115 0:bf7b9fba3924 272 #endif
frank26080115 0:bf7b9fba3924 273
frank26080115 0:bf7b9fba3924 274 /* USB Standard Interface Descriptor */
frank26080115 0:bf7b9fba3924 275 #if defined ( __CC_ARM )
frank26080115 0:bf7b9fba3924 276 typedef __packed struct _USB_INTERFACE_DESCRIPTOR {
frank26080115 0:bf7b9fba3924 277 #elif defined ( __GNUC__ )
frank26080115 0:bf7b9fba3924 278 typedef struct __packed _USB_INTERFACE_DESCRIPTOR {
frank26080115 0:bf7b9fba3924 279 #elif defined ( __IAR_SYSTEMS_ICC__ )
frank26080115 0:bf7b9fba3924 280 #pragma pack(1)
frank26080115 0:bf7b9fba3924 281 typedef struct _USB_INTERFACE_DESCRIPTOR {
frank26080115 0:bf7b9fba3924 282 #endif
frank26080115 0:bf7b9fba3924 283 uint8_t bLength;
frank26080115 0:bf7b9fba3924 284 uint8_t bDescriptorType;
frank26080115 0:bf7b9fba3924 285 uint8_t bInterfaceNumber;
frank26080115 0:bf7b9fba3924 286 uint8_t bAlternateSetting;
frank26080115 0:bf7b9fba3924 287 uint8_t bNumEndpoints;
frank26080115 0:bf7b9fba3924 288 uint8_t bInterfaceClass;
frank26080115 0:bf7b9fba3924 289 uint8_t bInterfaceSubClass;
frank26080115 0:bf7b9fba3924 290 uint8_t bInterfaceProtocol;
frank26080115 0:bf7b9fba3924 291 uint8_t iInterface;
frank26080115 0:bf7b9fba3924 292 } USB_INTERFACE_DESCRIPTOR;
frank26080115 0:bf7b9fba3924 293 #ifdef __IAR_SYSTEMS_ICC__
frank26080115 0:bf7b9fba3924 294 #pragma pack()
frank26080115 0:bf7b9fba3924 295 #endif
frank26080115 0:bf7b9fba3924 296
frank26080115 0:bf7b9fba3924 297 /* USB Standard Endpoint Descriptor */
frank26080115 0:bf7b9fba3924 298 #if defined ( __CC_ARM )
frank26080115 0:bf7b9fba3924 299 typedef __packed struct _USB_ENDPOINT_DESCRIPTOR {
frank26080115 0:bf7b9fba3924 300 #elif defined ( __GNUC__ )
frank26080115 0:bf7b9fba3924 301 typedef struct __packed _USB_ENDPOINT_DESCRIPTOR {
frank26080115 0:bf7b9fba3924 302 #elif defined ( __IAR_SYSTEMS_ICC__ )
frank26080115 0:bf7b9fba3924 303 #pragma pack(1)
frank26080115 0:bf7b9fba3924 304 typedef struct _USB_ENDPOINT_DESCRIPTOR {
frank26080115 0:bf7b9fba3924 305 #endif
frank26080115 0:bf7b9fba3924 306 uint8_t bLength;
frank26080115 0:bf7b9fba3924 307 uint8_t bDescriptorType;
frank26080115 0:bf7b9fba3924 308 uint8_t bEndpointAddress;
frank26080115 0:bf7b9fba3924 309 uint8_t bmAttributes;
frank26080115 0:bf7b9fba3924 310 uint16_t wMaxPacketSize;
frank26080115 0:bf7b9fba3924 311 uint8_t bInterval;
frank26080115 0:bf7b9fba3924 312 } USB_ENDPOINT_DESCRIPTOR;
frank26080115 0:bf7b9fba3924 313 #ifdef __IAR_SYSTEMS_ICC__
frank26080115 0:bf7b9fba3924 314 #pragma pack()
frank26080115 0:bf7b9fba3924 315 #endif
frank26080115 0:bf7b9fba3924 316
frank26080115 0:bf7b9fba3924 317 /* USB String Descriptor */
frank26080115 0:bf7b9fba3924 318 #if defined ( __CC_ARM )
frank26080115 0:bf7b9fba3924 319 typedef __packed struct _USB_STRING_DESCRIPTOR {
frank26080115 0:bf7b9fba3924 320 #elif defined ( __GNUC__ )
frank26080115 0:bf7b9fba3924 321 typedef struct __packed _USB_STRING_DESCRIPTOR {
frank26080115 0:bf7b9fba3924 322 #elif defined ( __IAR_SYSTEMS_ICC__ )
frank26080115 0:bf7b9fba3924 323 #pragma pack(1)
frank26080115 0:bf7b9fba3924 324 typedef struct _USB_STRING_DESCRIPTOR {
frank26080115 0:bf7b9fba3924 325 #endif
frank26080115 0:bf7b9fba3924 326 uint8_t bLength;
frank26080115 0:bf7b9fba3924 327 uint8_t bDescriptorType;
frank26080115 0:bf7b9fba3924 328 uint16_t bString/*[]*/;
frank26080115 0:bf7b9fba3924 329 } USB_STRING_DESCRIPTOR;
frank26080115 0:bf7b9fba3924 330 #ifdef __IAR_SYSTEMS_ICC__
frank26080115 0:bf7b9fba3924 331 #pragma pack()
frank26080115 0:bf7b9fba3924 332 #endif
frank26080115 0:bf7b9fba3924 333
frank26080115 0:bf7b9fba3924 334 /* USB Common Descriptor */
frank26080115 0:bf7b9fba3924 335 #if defined ( __CC_ARM )
frank26080115 0:bf7b9fba3924 336 typedef __packed struct _USB_COMMON_DESCRIPTOR {
frank26080115 0:bf7b9fba3924 337 #elif defined ( __GNUC__ )
frank26080115 0:bf7b9fba3924 338 typedef struct __packed _USB_COMMON_DESCRIPTOR {
frank26080115 0:bf7b9fba3924 339 #elif defined ( __IAR_SYSTEMS_ICC__ )
frank26080115 0:bf7b9fba3924 340 #pragma pack(1)
frank26080115 0:bf7b9fba3924 341 typedef struct _USB_COMMON_DESCRIPTOR {
frank26080115 0:bf7b9fba3924 342 #endif
frank26080115 0:bf7b9fba3924 343 uint8_t bLength;
frank26080115 0:bf7b9fba3924 344 uint8_t bDescriptorType;
frank26080115 0:bf7b9fba3924 345 } USB_COMMON_DESCRIPTOR;
frank26080115 0:bf7b9fba3924 346 #ifdef __IAR_SYSTEMS_ICC__
frank26080115 0:bf7b9fba3924 347 #pragma pack()
frank26080115 0:bf7b9fba3924 348 #endif
frank26080115 0:bf7b9fba3924 349
frank26080115 0:bf7b9fba3924 350
frank26080115 0:bf7b9fba3924 351 #endif /* __USB_H__ */