diff options
author | AJM <poslathian@poslathian.(none)> | 2010-05-20 22:47:59 -0400 |
---|---|---|
committer | AJM <poslathian@poslathian.(none)> | 2010-05-20 22:47:59 -0400 |
commit | dcc4c457f0cad15b9d60e8fc3afa913bacacdbc6 (patch) | |
tree | ad805c404ec1414a330aad74fb833137a44ad136 /libmaple/usb/descriptors.h | |
parent | 3d0c8c9b374a9a2e3e9fb296cf8a89239106eea2 (diff) | |
download | librambutan-dcc4c457f0cad15b9d60e8fc3afa913bacacdbc6.tar.gz librambutan-dcc4c457f0cad15b9d60e8fc3afa913bacacdbc6.zip |
moved the usb directory to its proper home in ./libmaple
also, removed some old usb file, bootVect.h, which setup the static table for the runtime usb lib that no longer exists and was provided by the bootloader rev 1
Diffstat (limited to 'libmaple/usb/descriptors.h')
-rw-r--r-- | libmaple/usb/descriptors.h | 202 |
1 files changed, 202 insertions, 0 deletions
diff --git a/libmaple/usb/descriptors.h b/libmaple/usb/descriptors.h new file mode 100644 index 0000000..6e96024 --- /dev/null +++ b/libmaple/usb/descriptors.h @@ -0,0 +1,202 @@ +/* insert license */ +#ifndef __DESCRIPTORS_H +#define __DESCRIPTORS_H + + +#include "libmaple.h" +#include "usb_lib.h" + +#define USB_DESCRIPTOR_TYPE_DEVICE 0x01 +#define USB_DESCRIPTOR_TYPE_CONFIGURATION 0x02 +#define USB_DESCRIPTOR_TYPE_STRING 0x03 +#define USB_DESCRIPTOR_TYPE_INTERFACE 0x04 +#define USB_DESCRIPTOR_TYPE_ENDPOINT 0x05 + +#define USB_DEVICE_CLASS_CDC 0x02 +#define USB_DEVICE_SUBCLASS_CDC 0x00 + +#define USB_CONFIG_ATTR_BUSPOWERED 0b10000000 +#define USB_CONFIG_ATTR_SELF_POWERED 0b11000000 + +#define EP_TYPE_INTERRUPT 0x03 +#define EP_TYPE_BULK 0x02 + +#define USB_DESCRIPTOR_ENDPOINT_IN 0x80 +#define USB_DESCRIPTOR_ENDPOINT_OUT 0x00 + +#define USB_DESCRIPTOR_STRING_LEN(x) (2 + (x << 1)) + + +#if defined(__cplusplus) +extern "C" { +#endif + +#define USB_DESCRIPTOR_STRING(len) \ + struct { \ + uint8 bLength; \ + uint8 bDescriptorType; \ + uint16 bString[len]; \ + } + +#define CDC_FUCNTIONAL_DESCRIPTOR(DataSize) \ + struct \ + { \ + uint8 bLength; \ + uint8 bDescriptorType; \ + uint8 SubType; \ + uint8 Data[DataSize]; \ + } + +typedef struct { + uint8 bLength; + uint8 bDescriptorType; + uint16 bcdUSB; + uint8 bDeviceClass; + uint8 bDeviceSubClass; + uint8 bDeviceProtocol; + uint8 bMaxPacketSize0; + uint16 idVendor; + uint16 idProduct; + uint16 bcdDevice; + uint8 iManufacturer; + uint8 iProduct; + uint8 iSerialNumber; + uint8 bNumConfigurations; +} USB_Descriptor_Device; + +typedef struct { + 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_Descriptor_Config_Header; + +typedef struct { + 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_Descriptor_Interface; + +typedef struct { + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bEndpointAddress; + uint8_t bmAttributes; + uint16_t wMaxPacketSize; + uint8_t bInterval; +} USB_Descriptor_Endpoint; + +typedef struct { + /* config header */ + 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_Descriptor_Interface CCI_Interface; + struct { + uint8 bLength; + uint8 bDescriptorType; + uint8 SubType; + uint8 Data[2]; + } CDC_Functional_IntHeader; + struct { + uint8 bLength; + uint8 bDescriptorType; + uint8 SubType; + uint8 Data[2]; + } CDC_Functional_CallManagement; + struct { + uint8 bLength; + uint8 bDescriptorType; + uint8 SubType; + uint8 Data[1]; + } CDC_Functional_ACM; + struct { + uint8 bLength; + uint8 bDescriptorType; + uint8 SubType; + uint8 Data[2]; + } CDC_Functional_Union; + + /* + USB_Descriptor_Endpoint ManagementEndpoint; + */ + uint8_t EP1_bLength; + uint8_t EP1_bDescriptorType; + uint8_t EP1_bEndpointAddress; + uint8_t EP1_bmAttributes; + uint8_t EP1_wMaxPacketSize0; + uint8_t EP1_wMaxPacketSize1; + uint8_t EP1_bInterval; + + /* + USB_Descriptor_Interface DCI_Interface; + */ + + uint8_t DCI_bLength; + uint8_t DCI_bDescriptorType; + uint8_t DCI_bInterfaceNumber; + uint8_t DCI_bAlternateSetting; + uint8_t DCI_bNumEndpoints; + uint8_t DCI_bInterfaceClass; + uint8_t DCI_bInterfaceSubClass; + uint8_t DCI_bInterfaceProtocol; + uint8_t DCI_iInterface; + + /* + USB_Descriptor_Endpoint DataOutEndpoint; + USB_Descriptor_Endpoint DataInEndpoint; + */ + + uint8_t EP2_bLength; + uint8_t EP2_bDescriptorType; + uint8_t EP2_bEndpointAddress; + uint8_t EP2_bmAttributes; + uint8_t EP2_wMaxPacketSize0; + uint8_t EP2_wMaxPacketSize1; + uint8_t EP2_bInterval; + + uint8_t EP3_bLength; + uint8_t EP3_bDescriptorType; + uint8_t EP3_bEndpointAddress; + uint8_t EP3_bmAttributes; + uint8_t EP3_wMaxPacketSize0; + uint8_t EP3_wMaxPacketSize1; + uint8_t EP3_bInterval; + + +}USB_Descriptor_Config; + + typedef struct { + uint8 bLength; + uint8 bDescriptorType; + uint16 bString[]; + } USB_Descriptor_String; + +extern const USB_Descriptor_Device usbVcomDescriptor_Device; +extern const USB_Descriptor_Config usbVcomDescriptor_Config; + +extern const uint8 usbVcomDescriptor_LangID[USB_DESCRIPTOR_STRING_LEN(1)]; +extern const uint8 usbVcomDescriptor_iManufacturer[USB_DESCRIPTOR_STRING_LEN(8)]; +extern const uint8 usbVcomDescriptor_iProduct[USB_DESCRIPTOR_STRING_LEN(8)]; + +#if defined(__cplusplus) + } +#endif + +#endif // __DESCRIPTORS_H |