initial usb
[rapper.git] / new_cmsis / usb / usb.h
diff --git a/new_cmsis/usb/usb.h b/new_cmsis/usb/usb.h
new file mode 100755 (executable)
index 0000000..21db7b4
--- /dev/null
@@ -0,0 +1,352 @@
+/*----------------------------------------------------------------------------\r
+ *      U S B  -  K e r n e l\r
+ *----------------------------------------------------------------------------\r
+ * Name:    usb.h\r
+ * Purpose: USB Definitions\r
+ * Version: V1.20\r
+ *----------------------------------------------------------------------------\r
+ *      This software is supplied "AS IS" without any warranties, express,\r
+ *      implied or statutory, including but not limited to the implied\r
+ *      warranties of fitness for purpose, satisfactory quality and\r
+ *      noninfringement. Keil extends you a royalty-free right to reproduce\r
+ *      and distribute executable files created using this software for use\r
+ *      on NXP Semiconductors LPC family microcontroller devices only. Nothing\r
+ *      else gives you the right to use this software.\r
+ *\r
+ * Copyright (c) 2009 Keil - An ARM Company. All rights reserved.\r
+ *---------------------------------------------------------------------------*/\r
+\r
+#ifndef __USB_H__\r
+#define __USB_H__\r
+#include "lpc_types.h"\r
+\r
+#if defined   (  __GNUC__  )\r
+#define __packed __attribute__((__packed__))\r
+#endif\r
+\r
+#if defined     (  __CC_ARM  )\r
+typedef __packed union {\r
+#elif defined   (  __GNUC__  )\r
+typedef union __packed {\r
+#elif defined   (  __IAR_SYSTEMS_ICC__  )\r
+#pragma pack(1)\r
+typedef union {\r
+#endif\r
+  uint16_t W;\r
+#if defined     (  __CC_ARM  )\r
+  __packed struct {\r
+#elif defined   (  __GNUC__  )\r
+  struct __packed {\r
+#elif defined   (  __IAR_SYSTEMS_ICC__  )\r
+#pragma pack(1)\r
+  struct {\r
+#endif\r
+    uint8_t L;\r
+    uint8_t H;\r
+  } WB;\r
+#ifdef __IAR_SYSTEMS_ICC__\r
+#pragma pack()\r
+#endif\r
+} WORD_BYTE;\r
+#ifdef __IAR_SYSTEMS_ICC__\r
+#pragma pack()\r
+#endif\r
+\r
+\r
+/* bmRequestType.Dir */\r
+#define REQUEST_HOST_TO_DEVICE     0\r
+#define REQUEST_DEVICE_TO_HOST     1\r
+\r
+/* bmRequestType.Type */\r
+#define REQUEST_STANDARD           0\r
+#define REQUEST_CLASS              1\r
+#define REQUEST_VENDOR             2\r
+#define REQUEST_RESERVED           3\r
+\r
+/* bmRequestType.Recipient */\r
+#define REQUEST_TO_DEVICE          0\r
+#define REQUEST_TO_INTERFACE       1\r
+#define REQUEST_TO_ENDPOINT        2\r
+#define REQUEST_TO_OTHER           3\r
+\r
+/* bmRequestType Definition */\r
+#if defined     (  __CC_ARM  )\r
+typedef __packed union _REQUEST_TYPE {\r
+#elif defined   (  __GNUC__  )\r
+typedef union __packed _REQUEST_TYPE {\r
+#elif defined   (  __IAR_SYSTEMS_ICC__  )\r
+#pragma pack(1)\r
+typedef union _REQUEST_TYPE {\r
+#endif\r
+#if defined     (  __CC_ARM  )\r
+       __packed struct _BM {\r
+#elif defined   (  __GNUC__  )\r
+       struct __packed _BM {\r
+#elif defined   (  __IAR_SYSTEMS_ICC__  )\r
+#pragma pack(1)\r
+       struct _BM {\r
+#endif\r
+    uint8_t Recipient : 5;\r
+    uint8_t Type      : 2;\r
+    uint8_t Dir       : 1;\r
+  } BM;\r
+#ifdef __IAR_SYSTEMS_ICC__\r
+#pragma pack()\r
+#endif\r
+  uint8_t B;\r
+} REQUEST_TYPE;\r
+#ifdef __IAR_SYSTEMS_ICC__\r
+#pragma pack()\r
+#endif\r
+\r
+/* USB Standard Request Codes */\r
+#define USB_REQUEST_GET_STATUS                 0\r
+#define USB_REQUEST_CLEAR_FEATURE              1\r
+#define USB_REQUEST_SET_FEATURE                3\r
+#define USB_REQUEST_SET_ADDRESS                5\r
+#define USB_REQUEST_GET_DESCRIPTOR             6\r
+#define USB_REQUEST_SET_DESCRIPTOR             7\r
+#define USB_REQUEST_GET_CONFIGURATION          8\r
+#define USB_REQUEST_SET_CONFIGURATION          9\r
+#define USB_REQUEST_GET_INTERFACE              10\r
+#define USB_REQUEST_SET_INTERFACE              11\r
+#define USB_REQUEST_SYNC_FRAME                 12\r
+\r
+/* USB GET_STATUS Bit Values */\r
+#define USB_GETSTATUS_SELF_POWERED             0x01\r
+#define USB_GETSTATUS_REMOTE_WAKEUP            0x02\r
+#define USB_GETSTATUS_ENDPOINT_STALL           0x01\r
+\r
+/* USB Standard Feature selectors */\r
+#define USB_FEATURE_ENDPOINT_STALL             0\r
+#define USB_FEATURE_REMOTE_WAKEUP              1\r
+\r
+/* USB Default Control Pipe Setup Packet */\r
+#if defined     (  __CC_ARM  )\r
+typedef __packed struct _USB_SETUP_PACKET {\r
+#elif defined   (  __GNUC__  )\r
+typedef struct __packed _USB_SETUP_PACKET {\r
+#elif defined   (  __IAR_SYSTEMS_ICC__  )\r
+#pragma pack(1)\r
+typedef struct _USB_SETUP_PACKET {\r
+#endif\r
+  REQUEST_TYPE bmRequestType;\r
+  uint8_t         bRequest;\r
+  WORD_BYTE    wValue;\r
+  WORD_BYTE    wIndex;\r
+  uint16_t         wLength;\r
+} USB_SETUP_PACKET;\r
+#ifdef __IAR_SYSTEMS_ICC__\r
+#pragma pack()\r
+#endif\r
+\r
+\r
+/* USB Descriptor Types */\r
+#define USB_DEVICE_DESCRIPTOR_TYPE             1\r
+#define USB_CONFIGURATION_DESCRIPTOR_TYPE      2\r
+#define USB_STRING_DESCRIPTOR_TYPE             3\r
+#define USB_INTERFACE_DESCRIPTOR_TYPE          4\r
+#define USB_ENDPOINT_DESCRIPTOR_TYPE           5\r
+#define USB_DEVICE_QUALIFIER_DESCRIPTOR_TYPE   6\r
+#define USB_OTHER_SPEED_CONFIG_DESCRIPTOR_TYPE 7\r
+#define USB_INTERFACE_POWER_DESCRIPTOR_TYPE    8\r
+#define USB_OTG_DESCRIPTOR_TYPE                     9\r
+#define USB_DEBUG_DESCRIPTOR_TYPE                  10\r
+#define USB_INTERFACE_ASSOCIATION_DESCRIPTOR_TYPE  11\r
+\r
+/* USB Device Classes */\r
+#define USB_DEVICE_CLASS_RESERVED              0x00\r
+#define USB_DEVICE_CLASS_AUDIO                 0x01\r
+#define USB_DEVICE_CLASS_COMMUNICATIONS        0x02\r
+#define USB_DEVICE_CLASS_HUMAN_INTERFACE       0x03\r
+#define USB_DEVICE_CLASS_MONITOR               0x04\r
+#define USB_DEVICE_CLASS_PHYSICAL_INTERFACE    0x05\r
+#define USB_DEVICE_CLASS_POWER                 0x06\r
+#define USB_DEVICE_CLASS_PRINTER               0x07\r
+#define USB_DEVICE_CLASS_STORAGE               0x08\r
+#define USB_DEVICE_CLASS_HUB                   0x09\r
+#define USB_DEVICE_CLASS_MISCELLANEOUS         0xEF\r
+#define USB_DEVICE_CLASS_VENDOR_SPECIFIC       0xFF\r
+\r
+/* bmAttributes in Configuration Descriptor */\r
+#define USB_CONFIG_POWERED_MASK                0x40\r
+#define USB_CONFIG_BUS_POWERED                 0x80\r
+#define USB_CONFIG_SELF_POWERED                0xC0\r
+#define USB_CONFIG_REMOTE_WAKEUP               0x20\r
+\r
+/* bMaxPower in Configuration Descriptor */\r
+#define USB_CONFIG_POWER_MA(mA)                ((mA)/2)\r
+\r
+/* bEndpointAddress in Endpoint Descriptor */\r
+#define USB_ENDPOINT_DIRECTION_MASK            0x80\r
+#define USB_ENDPOINT_OUT(addr)                 ((addr) | 0x00)\r
+#define USB_ENDPOINT_IN(addr)                  ((addr) | 0x80)\r
+\r
+/* bmAttributes in Endpoint Descriptor */\r
+#define USB_ENDPOINT_TYPE_MASK                 0x03\r
+#define USB_ENDPOINT_TYPE_CONTROL              0x00\r
+#define USB_ENDPOINT_TYPE_ISOCHRONOUS          0x01\r
+#define USB_ENDPOINT_TYPE_BULK                 0x02\r
+#define USB_ENDPOINT_TYPE_INTERRUPT            0x03\r
+#define USB_ENDPOINT_SYNC_MASK                 0x0C\r
+#define USB_ENDPOINT_SYNC_NO_SYNCHRONIZATION   0x00\r
+#define USB_ENDPOINT_SYNC_ASYNCHRONOUS         0x04\r
+#define USB_ENDPOINT_SYNC_ADAPTIVE             0x08\r
+#define USB_ENDPOINT_SYNC_SYNCHRONOUS          0x0C\r
+#define USB_ENDPOINT_USAGE_MASK                0x30\r
+#define USB_ENDPOINT_USAGE_DATA                0x00\r
+#define USB_ENDPOINT_USAGE_FEEDBACK            0x10\r
+#define USB_ENDPOINT_USAGE_IMPLICIT_FEEDBACK   0x20\r
+#define USB_ENDPOINT_USAGE_RESERVED            0x30\r
+\r
+/* USB Standard Device Descriptor */\r
+#if defined     (  __CC_ARM  )\r
+typedef __packed struct _USB_DEVICE_DESCRIPTOR {\r
+#elif defined   (  __GNUC__  )\r
+typedef struct __packed _USB_DEVICE_DESCRIPTOR {\r
+#elif defined   (  __IAR_SYSTEMS_ICC__  )\r
+#pragma pack(1)\r
+typedef struct _USB_DEVICE_DESCRIPTOR {\r
+#endif\r
+  uint8_t  bLength;\r
+  uint8_t  bDescriptorType;\r
+  uint16_t  bcdUSB;\r
+  uint8_t  bDeviceClass;\r
+  uint8_t  bDeviceSubClass;\r
+  uint8_t  bDeviceProtocol;\r
+  uint8_t  bMaxPacketSize0;\r
+  uint16_t  idVendor;\r
+  uint16_t  idProduct;\r
+  uint16_t  bcdDevice;\r
+  uint8_t  iManufacturer;\r
+  uint8_t  iProduct;\r
+  uint8_t  iSerialNumber;\r
+  uint8_t  bNumConfigurations;\r
+} USB_DEVICE_DESCRIPTOR;\r
+#ifdef __IAR_SYSTEMS_ICC__\r
+#pragma pack()\r
+#endif\r
+\r
+/* USB 2.0 Device Qualifier Descriptor */\r
+#if defined     (  __CC_ARM  )\r
+typedef __packed struct _USB_DEVICE_QUALIFIER_DESCRIPTOR {\r
+#elif defined   (  __GNUC__  )\r
+typedef struct __packed _USB_DEVICE_QUALIFIER_DESCRIPTOR {\r
+#elif defined   (  __IAR_SYSTEMS_ICC__  )\r
+#pragma pack(1)\r
+typedef struct _USB_DEVICE_QUALIFIER_DESCRIPTOR {\r
+#endif\r
+  uint8_t  bLength;\r
+  uint8_t  bDescriptorType;\r
+  uint16_t  bcdUSB;\r
+  uint8_t  bDeviceClass;\r
+  uint8_t  bDeviceSubClass;\r
+  uint8_t  bDeviceProtocol;\r
+  uint8_t  bMaxPacketSize0;\r
+  uint8_t  bNumConfigurations;\r
+  uint8_t  bReserved;\r
+} USB_DEVICE_QUALIFIER_DESCRIPTOR;\r
+#ifdef __IAR_SYSTEMS_ICC__\r
+#pragma pack()\r
+#endif\r
+\r
+#if defined     (  __CC_ARM  )\r
+typedef __packed struct _USB_CONFIGURATION_DESCRIPTOR {\r
+#elif defined   (  __GNUC__  )\r
+typedef struct __packed _USB_CONFIGURATION_DESCRIPTOR {\r
+#elif defined   (  __IAR_SYSTEMS_ICC__  )\r
+#pragma pack(1)\r
+typedef struct _USB_CONFIGURATION_DESCRIPTOR {\r
+#endif\r
+  uint8_t  bLength;\r
+  uint8_t  bDescriptorType;\r
+  uint16_t  wTotalLength;\r
+  uint8_t  bNumInterfaces;\r
+  uint8_t  bConfigurationValue;\r
+  uint8_t  iConfiguration;\r
+  uint8_t  bmAttributes;\r
+  uint8_t  bMaxPower;\r
+} USB_CONFIGURATION_DESCRIPTOR;\r
+#ifdef __IAR_SYSTEMS_ICC__\r
+#pragma pack()\r
+#endif\r
+\r
+/* USB Standard Interface Descriptor */\r
+#if defined     (  __CC_ARM  )\r
+typedef __packed struct _USB_INTERFACE_DESCRIPTOR {\r
+#elif defined   (  __GNUC__  )\r
+typedef struct __packed _USB_INTERFACE_DESCRIPTOR {\r
+#elif defined   (  __IAR_SYSTEMS_ICC__  )\r
+#pragma pack(1)\r
+typedef struct _USB_INTERFACE_DESCRIPTOR {\r
+#endif\r
+  uint8_t  bLength;\r
+  uint8_t  bDescriptorType;\r
+  uint8_t  bInterfaceNumber;\r
+  uint8_t  bAlternateSetting;\r
+  uint8_t  bNumEndpoints;\r
+  uint8_t  bInterfaceClass;\r
+  uint8_t  bInterfaceSubClass;\r
+  uint8_t  bInterfaceProtocol;\r
+  uint8_t  iInterface;\r
+} USB_INTERFACE_DESCRIPTOR;\r
+#ifdef __IAR_SYSTEMS_ICC__\r
+#pragma pack()\r
+#endif\r
+\r
+/* USB Standard Endpoint Descriptor */\r
+#if defined     (  __CC_ARM  )\r
+typedef __packed struct _USB_ENDPOINT_DESCRIPTOR {\r
+#elif defined   (  __GNUC__  )\r
+typedef struct __packed _USB_ENDPOINT_DESCRIPTOR {\r
+#elif defined   (  __IAR_SYSTEMS_ICC__  )\r
+#pragma pack(1)\r
+typedef struct _USB_ENDPOINT_DESCRIPTOR {\r
+#endif\r
+  uint8_t  bLength;\r
+  uint8_t  bDescriptorType;\r
+  uint8_t  bEndpointAddress;\r
+  uint8_t  bmAttributes;\r
+  uint16_t  wMaxPacketSize;\r
+  uint8_t  bInterval;\r
+} USB_ENDPOINT_DESCRIPTOR;\r
+#ifdef __IAR_SYSTEMS_ICC__\r
+#pragma pack()\r
+#endif\r
+\r
+/* USB String Descriptor */\r
+#if defined     (  __CC_ARM  )\r
+typedef __packed struct _USB_STRING_DESCRIPTOR {\r
+#elif defined   (  __GNUC__  )\r
+typedef struct __packed _USB_STRING_DESCRIPTOR {\r
+#elif defined   (  __IAR_SYSTEMS_ICC__  )\r
+#pragma pack(1)\r
+typedef struct _USB_STRING_DESCRIPTOR {\r
+#endif\r
+  uint8_t  bLength;\r
+  uint8_t  bDescriptorType;\r
+  uint16_t  bString/*[]*/;\r
+} USB_STRING_DESCRIPTOR;\r
+#ifdef __IAR_SYSTEMS_ICC__\r
+#pragma pack()\r
+#endif\r
+\r
+/* USB Common Descriptor */\r
+#if defined     (  __CC_ARM  )\r
+typedef __packed struct _USB_COMMON_DESCRIPTOR {\r
+#elif defined   (  __GNUC__  )\r
+typedef struct __packed _USB_COMMON_DESCRIPTOR {\r
+#elif defined   (  __IAR_SYSTEMS_ICC__  )\r
+#pragma pack(1)\r
+typedef struct _USB_COMMON_DESCRIPTOR {\r
+#endif\r
+  uint8_t  bLength;\r
+  uint8_t  bDescriptorType;\r
+} USB_COMMON_DESCRIPTOR;\r
+#ifdef __IAR_SYSTEMS_ICC__\r
+#pragma pack()\r
+#endif\r
+\r
+\r
+\r
+#endif  /* __USB_H__ */\r