-/*----------------------------------------------------------------------------\r
- * U S B - K e r n e l\r
- *----------------------------------------------------------------------------\r
- * Name: usbdesc.c\r
- * Purpose: USB Descriptors\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 microcontroller devices only. Nothing else\r
- * gives you the right to use this software.\r
- *\r
- * Copyright (c) 2009 Keil - An ARM Company. All rights reserved.\r
- *----------------------------------------------------------------------------\r
- * History:\r
- * V1.20 Changed string descriptor handling\r
- * V1.00 Initial Version\r
- *---------------------------------------------------------------------------*/\r
-#include "lpc_types.h"\r
-#include "usb.h"\r
-#include "cdc.h"\r
-#include "usbcfg.h"\r
-#include "usbdesc.h"\r
-\r
-\r
-/* USB Standard Device Descriptor */\r
-const uint8_t USB_DeviceDescriptor[] = {\r
- USB_DEVICE_DESC_SIZE, /* bLength */\r
- USB_DEVICE_DESCRIPTOR_TYPE, /* bDescriptorType */\r
- WBVAL(0x0200), /* 2.0 */ /* bcdUSB */\r
- USB_DEVICE_CLASS_COMMUNICATIONS, /* bDeviceClass CDC*/\r
- 0x00, /* bDeviceSubClass */\r
- 0x00, /* bDeviceProtocol */\r
- USB_MAX_PACKET0, /* bMaxPacketSize0 */\r
- WBVAL(0x1FC9), /* idVendor */\r
- WBVAL(0x2002), /* idProduct */\r
- WBVAL(0x0100), /* 1.00 */ /* bcdDevice */\r
- 0x01, /* iManufacturer */\r
- 0x02, /* iProduct */\r
- 0x03, /* iSerialNumber */\r
- 0x01 /* bNumConfigurations: one possible configuration*/\r
-};\r
-\r
-/* USB Configuration Descriptor */\r
-/* All Descriptors (Configuration, Interface, Endpoint, Class, Vendor */\r
-const uint8_t USB_ConfigDescriptor[] = {\r
-/* Configuration 1 */\r
- USB_CONFIGUARTION_DESC_SIZE, /* bLength */\r
- USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType */\r
- WBVAL( /* wTotalLength */\r
- 1*USB_CONFIGUARTION_DESC_SIZE +\r
- 1*USB_INTERFACE_DESC_SIZE + /* communication interface */\r
- 0x0013 + /* CDC functions */\r
- 1*USB_ENDPOINT_DESC_SIZE + /* interrupt endpoint */\r
- 1*USB_INTERFACE_DESC_SIZE + /* data interface */\r
- 2*USB_ENDPOINT_DESC_SIZE /* bulk endpoints */\r
- ),\r
- 0x02, /* bNumInterfaces */\r
- 0x01, /* bConfigurationValue: 0x01 is used to select this configuration */\r
- 0x00, /* iConfiguration: no string to describe this configuration */\r
- USB_CONFIG_BUS_POWERED /*|*/ /* bmAttributes */\r
-/*USB_CONFIG_REMOTE_WAKEUP*/,\r
- USB_CONFIG_POWER_MA(100), /* bMaxPower, device power consumption is 100 mA */\r
-/* Interface 0, Alternate Setting 0, Communication class interface descriptor */\r
- USB_INTERFACE_DESC_SIZE, /* bLength */\r
- USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */\r
- USB_CDC_CIF_NUM, /* bInterfaceNumber: Number of Interface */\r
- 0x00, /* bAlternateSetting: Alternate setting */\r
- 0x01, /* bNumEndpoints: One endpoint used */\r
- CDC_COMMUNICATION_INTERFACE_CLASS, /* bInterfaceClass: Communication Interface Class */\r
- CDC_ABSTRACT_CONTROL_MODEL, /* bInterfaceSubClass: Abstract Control Model */\r
- 0x00, /* bInterfaceProtocol: no protocol used */\r
- 0x5E, /* iInterface: */\r
-/*Header Functional Descriptor*/\r
- 0x05, /* bLength: Endpoint Descriptor size */\r
- CDC_CS_INTERFACE, /* bDescriptorType: CS_INTERFACE */\r
- CDC_HEADER, /* bDescriptorSubtype: Header Func Desc */\r
- WBVAL(CDC_V1_10), /* 1.10 */ /* bcdCDC */\r
-/*Call Management Functional Descriptor*/\r
- 0x05, /* bFunctionLength */\r
- CDC_CS_INTERFACE, /* bDescriptorType: CS_INTERFACE */\r
- CDC_CALL_MANAGEMENT, /* bDescriptorSubtype: Call Management Func Desc */\r
- 0x01, /* bmCapabilities: device handles call management */\r
- 0x01, /* bDataInterface: CDC data IF ID */\r
-/*Abstract Control Management Functional Descriptor*/\r
- 0x04, /* bFunctionLength */\r
- CDC_CS_INTERFACE, /* bDescriptorType: CS_INTERFACE */\r
- CDC_ABSTRACT_CONTROL_MANAGEMENT, /* bDescriptorSubtype: Abstract Control Management desc */\r
- 0x02, /* bmCapabilities: SET_LINE_CODING, GET_LINE_CODING, SET_CONTROL_LINE_STATE supported */\r
-/*Union Functional Descriptor*/\r
- 0x05, /* bFunctionLength */\r
- CDC_CS_INTERFACE, /* bDescriptorType: CS_INTERFACE */\r
- CDC_UNION, /* bDescriptorSubtype: Union func desc */\r
- USB_CDC_CIF_NUM, /* bMasterInterface: Communication class interface is master */\r
- USB_CDC_DIF_NUM, /* bSlaveInterface0: Data class interface is slave 0 */\r
-/*Endpoint 1 Descriptor*/ /* event notification (optional) */\r
- USB_ENDPOINT_DESC_SIZE, /* bLength */\r
- USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */\r
- USB_ENDPOINT_IN(1), /* bEndpointAddress */\r
- USB_ENDPOINT_TYPE_INTERRUPT, /* bmAttributes */\r
- WBVAL(0x0010), /* wMaxPacketSize */\r
- 0x02, /* 2ms */ /* bInterval */\r
-/* Interface 1, Alternate Setting 0, Data class interface descriptor*/\r
- USB_INTERFACE_DESC_SIZE, /* bLength */\r
- USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */\r
- USB_CDC_DIF_NUM, /* bInterfaceNumber: Number of Interface */\r
- 0x00, /* bAlternateSetting: no alternate setting */\r
- 0x02, /* bNumEndpoints: two endpoints used */\r
- CDC_DATA_INTERFACE_CLASS, /* bInterfaceClass: Data Interface Class */\r
- 0x00, /* bInterfaceSubClass: no subclass available */\r
- 0x00, /* bInterfaceProtocol: no protocol used */\r
- 0x5E, /* iInterface: */\r
-/* Endpoint, EP2 Bulk Out */\r
- USB_ENDPOINT_DESC_SIZE, /* bLength */\r
- USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */\r
- USB_ENDPOINT_OUT(2), /* bEndpointAddress */\r
- USB_ENDPOINT_TYPE_BULK, /* bmAttributes */\r
- WBVAL(USB_CDC_BUFSIZE), /* wMaxPacketSize */\r
- 0x00, /* bInterval: ignore for Bulk transfer */\r
-/* Endpoint, EP2 Bulk In */\r
- USB_ENDPOINT_DESC_SIZE, /* bLength */\r
- USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */\r
- USB_ENDPOINT_IN(2), /* bEndpointAddress */\r
- USB_ENDPOINT_TYPE_BULK, /* bmAttributes */\r
- WBVAL(USB_CDC_BUFSIZE), /* wMaxPacketSize */\r
- 0x00, /* bInterval: ignore for Bulk transfer */\r
-/* Terminator */\r
- 0 /* bLength */\r
-};\r
-\r
-\r
-\r
-\r
-/* USB String Descriptor (optional) */\r
-const uint8_t USB_StringDescriptor[] = {\r
-/* Index 0x00: LANGID Codes */\r
- 0x04, /* bLength */\r
- USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */\r
- WBVAL(0x0409), /* US English */ /* wLANGID */\r
-/* Index 0x01: Manufacturer */\r
- (13*2 + 2), /* bLength (13 Char + Type + lenght) */\r
- USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */\r
- 'N',0,\r
- 'X',0,\r
- 'P',0,\r
- ' ',0,\r
- 'S',0,\r
- 'E',0,\r
- 'M',0,\r
- 'I',0,\r
- 'C',0,\r
- 'O',0,\r
- 'N',0,\r
- 'D',0,\r
- ' ',0,\r
-/* Index 0x02: Product */\r
- (17*2 + 2), /* bLength ( 17 Char + Type + lenght) */\r
- USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */\r
- 'N',0,\r
- 'X',0,\r
- 'P',0,\r
- ' ',0,\r
- 'L',0,\r
- 'P',0,\r
- 'C',0,\r
- '1',0,\r
- '7',0,\r
- 'x',0,\r
- 'x',0,\r
- ' ',0,\r
- 'V',0,\r
- 'C',0,\r
- 'O',0,\r
- 'M',0,\r
- ' ',0,\r
-/* Index 0x03: Serial Number */\r
- (12*2 + 2), /* bLength (12 Char + Type + lenght) */\r
- USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */\r
- 'D',0,\r
- 'E',0,\r
- 'M',0,\r
- 'O',0,\r
- '0',0,\r
- '0',0,\r
- '0',0,\r
- '0',0,\r
- '0',0,\r
- '0',0,\r
- '0',0,\r
- '0',0,\r
-/* Index 0x04: Interface 0, Alternate Setting 0 */\r
- ( 4*2 + 2), /* bLength (4 Char + Type + lenght) */\r
- USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */\r
- 'V',0,\r
- 'C',0,\r
- 'O',0,\r
- 'M',0,\r
-};\r
+/*----------------------------------------------------------------------------
+ * U S B - K e r n e l
+ *----------------------------------------------------------------------------
+ * Name: usbdesc.c
+ * Purpose: USB Descriptors
+ * 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 microcontroller devices only. Nothing else
+ * gives you the right to use this software.
+ *
+ * Copyright (c) 2009 Keil - An ARM Company. All rights reserved.
+ *----------------------------------------------------------------------------
+ * History:
+ * V1.20 Changed string descriptor handling
+ * V1.00 Initial Version
+ *---------------------------------------------------------------------------*/
+#include "lpc_types.h"
+#include "usb.h"
+#include "cdc.h"
+#include "cfg.h"
+#include "desc.h"
+
+
+/* USB Standard Device Descriptor */
+const uint8_t USB_DeviceDescriptor[] = {
+ USB_DEVICE_DESC_SIZE, /* bLength */
+ USB_DEVICE_DESCRIPTOR_TYPE, /* bDescriptorType */
+ WBVAL(0x0200), /* 2.0 */ /* bcdUSB */
+ USB_DEVICE_CLASS_COMMUNICATIONS, /* bDeviceClass CDC*/
+ 0x00, /* bDeviceSubClass */
+ 0x00, /* bDeviceProtocol */
+ USB_MAX_PACKET0, /* bMaxPacketSize0 */
+ WBVAL(0x1FC9), /* idVendor */
+ WBVAL(0x2002), /* idProduct */
+ WBVAL(0x0100), /* 1.00 */ /* bcdDevice */
+ 0x01, /* iManufacturer */
+ 0x02, /* iProduct */
+ 0x03, /* iSerialNumber */
+ 0x01 /* bNumConfigurations: one possible configuration*/
+};
+
+/* USB Configuration Descriptor */
+/* All Descriptors (Configuration, Interface, Endpoint, Class, Vendor */
+const uint8_t USB_ConfigDescriptor[] = {
+/* Configuration 1 */
+ USB_CONFIGUARTION_DESC_SIZE, + /* bLength */
+ USB_CONFIGURATION_DESCRIPTOR_TYPE, + /* bDescriptorType */
+ WBVAL( /* wTotalLength */
+ (USB_CONFIGUARTION_DESC_SIZE) +
+ (USB_INTERFACE_DESC_SIZE) + /* communication interface */
+ 0x0013 + /* CDC functions */
+ (USB_ENDPOINT_DESC_SIZE) + /* interrupt endpoint */
+ (USB_INTERFACE_DESC_SIZE) + /* data interface */
+ (2*USB_ENDPOINT_DESC_SIZE) /* bulk endpoints */
+ ),
+ 0x02, /* bNumInterfaces */
+ 0x01, /* bConfigurationValue: 0x01 is used to select this configuration */
+ 0x00, /* iConfiguration: no string to describe this configuration */
+ USB_CONFIG_BUS_POWERED /*|*/ /* bmAttributes */
+/*USB_CONFIG_REMOTE_WAKEUP*/,
+ USB_CONFIG_POWER_MA(100), /* bMaxPower, device power consumption is 100 mA */
+/* Interface 0, Alternate Setting 0, Communication class interface descriptor */
+ USB_INTERFACE_DESC_SIZE, /* bLength */
+ USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
+ USB_CDC_CIF_NUM, /* bInterfaceNumber: Number of Interface */
+ 0x00, /* bAlternateSetting: Alternate setting */
+ 0x01, /* bNumEndpoints: One endpoint used */
+ CDC_COMMUNICATION_INTERFACE_CLASS, /* bInterfaceClass: Communication Interface Class */
+ CDC_ABSTRACT_CONTROL_MODEL, /* bInterfaceSubClass: Abstract Control Model */
+ 0x00, /* bInterfaceProtocol: no protocol used */
+ 0x5E, /* iInterface: */
+/*Header Functional Descriptor*/
+ 0x05, /* bLength: Endpoint Descriptor size */
+ CDC_CS_INTERFACE, /* bDescriptorType: CS_INTERFACE */
+ CDC_HEADER, /* bDescriptorSubtype: Header Func Desc */
+ WBVAL(CDC_V1_10), /* 1.10 */ /* bcdCDC */
+/*Call Management Functional Descriptor*/
+ 0x05, /* bFunctionLength */
+ CDC_CS_INTERFACE, /* bDescriptorType: CS_INTERFACE */
+ CDC_CALL_MANAGEMENT, /* bDescriptorSubtype: Call Management Func Desc */
+ 0x01, /* bmCapabilities: device handles call management */
+ 0x01, /* bDataInterface: CDC data IF ID */
+/*Abstract Control Management Functional Descriptor*/
+ 0x04, /* bFunctionLength */
+ CDC_CS_INTERFACE, /* bDescriptorType: CS_INTERFACE */
+ CDC_ABSTRACT_CONTROL_MANAGEMENT, /* bDescriptorSubtype: Abstract Control Management desc */
+ 0x02, /* bmCapabilities: SET_LINE_CODING, GET_LINE_CODING, SET_CONTROL_LINE_STATE supported */
+/*Union Functional Descriptor*/
+ 0x05, /* bFunctionLength */
+ CDC_CS_INTERFACE, /* bDescriptorType: CS_INTERFACE */
+ CDC_UNION, /* bDescriptorSubtype: Union func desc */
+ USB_CDC_CIF_NUM, /* bMasterInterface: Communication class interface is master */
+ USB_CDC_DIF_NUM, /* bSlaveInterface0: Data class interface is slave 0 */
+/*Endpoint 1 Descriptor*/ /* event notification (optional) */
+ USB_ENDPOINT_DESC_SIZE, /* bLength */
+ USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */
+ USB_ENDPOINT_IN(1), /* bEndpointAddress */
+ USB_ENDPOINT_TYPE_INTERRUPT, /* bmAttributes */
+ WBVAL(0x0010), /* wMaxPacketSize */
+ 0x02, /* 2ms */ /* bInterval */
+/* Interface 1, Alternate Setting 0, Data class interface descriptor*/
+ USB_INTERFACE_DESC_SIZE, /* bLength */
+ USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
+ USB_CDC_DIF_NUM, /* bInterfaceNumber: Number of Interface */
+ 0x00, /* bAlternateSetting: no alternate setting */
+ 0x02, /* bNumEndpoints: two endpoints used */
+ CDC_DATA_INTERFACE_CLASS, /* bInterfaceClass: Data Interface Class */
+ 0x00, /* bInterfaceSubClass: no subclass available */
+ 0x00, /* bInterfaceProtocol: no protocol used */
+ 0x5E, /* iInterface: */
+/* Endpoint, EP2 Bulk Out */
+ USB_ENDPOINT_DESC_SIZE, /* bLength */
+ USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */
+ USB_ENDPOINT_OUT(2), /* bEndpointAddress */
+ USB_ENDPOINT_TYPE_BULK, /* bmAttributes */
+ WBVAL(USB_CDC_BUFSIZE), /* wMaxPacketSize */
+ 0x00, /* bInterval: ignore for Bulk transfer */
+/* Endpoint, EP2 Bulk In */
+ USB_ENDPOINT_DESC_SIZE, /* bLength */
+ USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */
+ USB_ENDPOINT_IN(2), /* bEndpointAddress */
+ USB_ENDPOINT_TYPE_BULK, /* bmAttributes */
+ WBVAL(USB_CDC_BUFSIZE), /* wMaxPacketSize */
+ 0x00, /* bInterval: ignore for Bulk transfer */
+/* Terminator */
+ 0 /* bLength */
+};
+
+
+
+
+/* USB String Descriptor (optional) */
+const uint8_t USB_StringDescriptor[] = {
+/* Index 0x00: LANGID Codes */
+ 0x04, /* bLength */
+ USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */
+ WBVAL(0x0409), /* US English */ /* wLANGID */
+/* Index 0x01: Manufacturer */
+ (7*2 + 2), /* bLength (13 Char + Type + lenght) */
+ USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */
+ 'L',0,
+ 'a',0,
+ 'b',0,
+ 'i',0,
+ 't',0,
+ 'a',0,
+ 't',0,
+/* Index 0x02: Product */
+ (17*2 + 2), /* bLength ( 17 Char + Type + lenght) */
+ USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */
+ 'R',0,
+ 'a',0,
+ 'p',0,
+ 'p',0,
+ 'e',0,
+ 'r',0,
+ ' ',0,
+ 'U',0,
+ 'S',0,
+ 'B',0,
+ ' ',0,
+ 'S',0,
+ 'e',0,
+ 'r',0,
+ 'i',0,
+ 'a',0,
+ 'l',0,
+/* Index 0x03: Serial Number */
+ (12*2 + 2), /* bLength (12 Char + Type + lenght) */
+ USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */
+ 'P',0,
+ 'R',0,
+ 'O',0,
+ 'T',0,
+ 'O',0,
+ 'T',0,
+ 'Y',0,
+ 'P',0,
+ 'E',0,
+ ' ',0,
+ '4',0,
+ '2',0,
+/* Index 0x04: Interface 0, Alternate Setting 0 */
+ ( 4*2 + 2), /* bLength (4 Char + Type + lenght) */
+ USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */
+ 'V',0,
+ 'C',0,
+ 'O',0,
+ 'M',0,
+};