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