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: usbdesc.c
frank26080115 0:bf7b9fba3924 5 * Purpose: USB Descriptors
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 microcontroller devices only. Nothing else
frank26080115 0:bf7b9fba3924 14 * 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 * History:
frank26080115 0:bf7b9fba3924 19 * V1.20 Changed string descriptor handling
frank26080115 0:bf7b9fba3924 20 * V1.00 Initial Version
frank26080115 0:bf7b9fba3924 21 *---------------------------------------------------------------------------*/
frank26080115 0:bf7b9fba3924 22 #include "lpc_types.h"
frank26080115 0:bf7b9fba3924 23 #include "usb.h"
frank26080115 0:bf7b9fba3924 24 #include "cdc.h"
frank26080115 0:bf7b9fba3924 25 #include "usbcfg.h"
frank26080115 0:bf7b9fba3924 26 #include "usbdesc.h"
frank26080115 0:bf7b9fba3924 27
frank26080115 0:bf7b9fba3924 28
frank26080115 0:bf7b9fba3924 29 /* USB Standard Device Descriptor */
frank26080115 0:bf7b9fba3924 30 const uint8_t USB_DeviceDescriptor[] = {
frank26080115 0:bf7b9fba3924 31 USB_DEVICE_DESC_SIZE, /* bLength */
frank26080115 0:bf7b9fba3924 32 USB_DEVICE_DESCRIPTOR_TYPE, /* bDescriptorType */
frank26080115 0:bf7b9fba3924 33 WBVAL(0x0200), /* 2.0 */ /* bcdUSB */
frank26080115 0:bf7b9fba3924 34 USB_DEVICE_CLASS_COMMUNICATIONS, /* bDeviceClass CDC*/
frank26080115 0:bf7b9fba3924 35 0x00, /* bDeviceSubClass */
frank26080115 0:bf7b9fba3924 36 0x00, /* bDeviceProtocol */
frank26080115 0:bf7b9fba3924 37 USB_MAX_PACKET0, /* bMaxPacketSize0 */
frank26080115 0:bf7b9fba3924 38 WBVAL(0x1FC9), /* idVendor */
frank26080115 0:bf7b9fba3924 39 WBVAL(0x2002), /* idProduct */
frank26080115 0:bf7b9fba3924 40 WBVAL(0x0100), /* 1.00 */ /* bcdDevice */
frank26080115 0:bf7b9fba3924 41 0x01, /* iManufacturer */
frank26080115 0:bf7b9fba3924 42 0x02, /* iProduct */
frank26080115 0:bf7b9fba3924 43 0x03, /* iSerialNumber */
frank26080115 0:bf7b9fba3924 44 0x01 /* bNumConfigurations: one possible configuration*/
frank26080115 0:bf7b9fba3924 45 };
frank26080115 0:bf7b9fba3924 46
frank26080115 0:bf7b9fba3924 47 /* USB Configuration Descriptor */
frank26080115 0:bf7b9fba3924 48 /* All Descriptors (Configuration, Interface, Endpoint, Class, Vendor */
frank26080115 0:bf7b9fba3924 49 const uint8_t USB_ConfigDescriptor[] = {
frank26080115 0:bf7b9fba3924 50 /* Configuration 1 */
frank26080115 0:bf7b9fba3924 51 USB_CONFIGUARTION_DESC_SIZE, /* bLength */
frank26080115 0:bf7b9fba3924 52 USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType */
frank26080115 0:bf7b9fba3924 53 WBVAL( /* wTotalLength */
frank26080115 0:bf7b9fba3924 54 1*USB_CONFIGUARTION_DESC_SIZE +
frank26080115 0:bf7b9fba3924 55 1*USB_INTERFACE_DESC_SIZE + /* communication interface */
frank26080115 0:bf7b9fba3924 56 0x0013 + /* CDC functions */
frank26080115 0:bf7b9fba3924 57 1*USB_ENDPOINT_DESC_SIZE + /* interrupt endpoint */
frank26080115 0:bf7b9fba3924 58 1*USB_INTERFACE_DESC_SIZE + /* data interface */
frank26080115 0:bf7b9fba3924 59 2*USB_ENDPOINT_DESC_SIZE /* bulk endpoints */
frank26080115 0:bf7b9fba3924 60 ),
frank26080115 0:bf7b9fba3924 61 0x02, /* bNumInterfaces */
frank26080115 0:bf7b9fba3924 62 0x01, /* bConfigurationValue: 0x01 is used to select this configuration */
frank26080115 0:bf7b9fba3924 63 0x00, /* iConfiguration: no string to describe this configuration */
frank26080115 0:bf7b9fba3924 64 USB_CONFIG_BUS_POWERED /*|*/ /* bmAttributes */
frank26080115 0:bf7b9fba3924 65 /*USB_CONFIG_REMOTE_WAKEUP*/,
frank26080115 0:bf7b9fba3924 66 USB_CONFIG_POWER_MA(100), /* bMaxPower, device power consumption is 100 mA */
frank26080115 0:bf7b9fba3924 67 /* Interface 0, Alternate Setting 0, Communication class interface descriptor */
frank26080115 0:bf7b9fba3924 68 USB_INTERFACE_DESC_SIZE, /* bLength */
frank26080115 0:bf7b9fba3924 69 USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
frank26080115 0:bf7b9fba3924 70 USB_CDC_CIF_NUM, /* bInterfaceNumber: Number of Interface */
frank26080115 0:bf7b9fba3924 71 0x00, /* bAlternateSetting: Alternate setting */
frank26080115 0:bf7b9fba3924 72 0x01, /* bNumEndpoints: One endpoint used */
frank26080115 0:bf7b9fba3924 73 CDC_COMMUNICATION_INTERFACE_CLASS, /* bInterfaceClass: Communication Interface Class */
frank26080115 0:bf7b9fba3924 74 CDC_ABSTRACT_CONTROL_MODEL, /* bInterfaceSubClass: Abstract Control Model */
frank26080115 0:bf7b9fba3924 75 0x00, /* bInterfaceProtocol: no protocol used */
frank26080115 0:bf7b9fba3924 76 0x5E, /* iInterface: */
frank26080115 0:bf7b9fba3924 77 /*Header Functional Descriptor*/
frank26080115 0:bf7b9fba3924 78 0x05, /* bLength: Endpoint Descriptor size */
frank26080115 0:bf7b9fba3924 79 CDC_CS_INTERFACE, /* bDescriptorType: CS_INTERFACE */
frank26080115 0:bf7b9fba3924 80 CDC_HEADER, /* bDescriptorSubtype: Header Func Desc */
frank26080115 0:bf7b9fba3924 81 WBVAL(CDC_V1_10), /* 1.10 */ /* bcdCDC */
frank26080115 0:bf7b9fba3924 82 /*Call Management Functional Descriptor*/
frank26080115 0:bf7b9fba3924 83 0x05, /* bFunctionLength */
frank26080115 0:bf7b9fba3924 84 CDC_CS_INTERFACE, /* bDescriptorType: CS_INTERFACE */
frank26080115 0:bf7b9fba3924 85 CDC_CALL_MANAGEMENT, /* bDescriptorSubtype: Call Management Func Desc */
frank26080115 0:bf7b9fba3924 86 0x01, /* bmCapabilities: device handles call management */
frank26080115 0:bf7b9fba3924 87 0x01, /* bDataInterface: CDC data IF ID */
frank26080115 0:bf7b9fba3924 88 /*Abstract Control Management Functional Descriptor*/
frank26080115 0:bf7b9fba3924 89 0x04, /* bFunctionLength */
frank26080115 0:bf7b9fba3924 90 CDC_CS_INTERFACE, /* bDescriptorType: CS_INTERFACE */
frank26080115 0:bf7b9fba3924 91 CDC_ABSTRACT_CONTROL_MANAGEMENT, /* bDescriptorSubtype: Abstract Control Management desc */
frank26080115 0:bf7b9fba3924 92 0x02, /* bmCapabilities: SET_LINE_CODING, GET_LINE_CODING, SET_CONTROL_LINE_STATE supported */
frank26080115 0:bf7b9fba3924 93 /*Union Functional Descriptor*/
frank26080115 0:bf7b9fba3924 94 0x05, /* bFunctionLength */
frank26080115 0:bf7b9fba3924 95 CDC_CS_INTERFACE, /* bDescriptorType: CS_INTERFACE */
frank26080115 0:bf7b9fba3924 96 CDC_UNION, /* bDescriptorSubtype: Union func desc */
frank26080115 0:bf7b9fba3924 97 USB_CDC_CIF_NUM, /* bMasterInterface: Communication class interface is master */
frank26080115 0:bf7b9fba3924 98 USB_CDC_DIF_NUM, /* bSlaveInterface0: Data class interface is slave 0 */
frank26080115 0:bf7b9fba3924 99 /*Endpoint 1 Descriptor*/ /* event notification (optional) */
frank26080115 0:bf7b9fba3924 100 USB_ENDPOINT_DESC_SIZE, /* bLength */
frank26080115 0:bf7b9fba3924 101 USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */
frank26080115 0:bf7b9fba3924 102 USB_ENDPOINT_IN(1), /* bEndpointAddress */
frank26080115 0:bf7b9fba3924 103 USB_ENDPOINT_TYPE_INTERRUPT, /* bmAttributes */
frank26080115 0:bf7b9fba3924 104 WBVAL(0x0010), /* wMaxPacketSize */
frank26080115 0:bf7b9fba3924 105 0x02, /* 2ms */ /* bInterval */
frank26080115 0:bf7b9fba3924 106 /* Interface 1, Alternate Setting 0, Data class interface descriptor*/
frank26080115 0:bf7b9fba3924 107 USB_INTERFACE_DESC_SIZE, /* bLength */
frank26080115 0:bf7b9fba3924 108 USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
frank26080115 0:bf7b9fba3924 109 USB_CDC_DIF_NUM, /* bInterfaceNumber: Number of Interface */
frank26080115 0:bf7b9fba3924 110 0x00, /* bAlternateSetting: no alternate setting */
frank26080115 0:bf7b9fba3924 111 0x02, /* bNumEndpoints: two endpoints used */
frank26080115 0:bf7b9fba3924 112 CDC_DATA_INTERFACE_CLASS, /* bInterfaceClass: Data Interface Class */
frank26080115 0:bf7b9fba3924 113 0x00, /* bInterfaceSubClass: no subclass available */
frank26080115 0:bf7b9fba3924 114 0x00, /* bInterfaceProtocol: no protocol used */
frank26080115 0:bf7b9fba3924 115 0x5E, /* iInterface: */
frank26080115 0:bf7b9fba3924 116 /* Endpoint, EP2 Bulk Out */
frank26080115 0:bf7b9fba3924 117 USB_ENDPOINT_DESC_SIZE, /* bLength */
frank26080115 0:bf7b9fba3924 118 USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */
frank26080115 0:bf7b9fba3924 119 USB_ENDPOINT_OUT(2), /* bEndpointAddress */
frank26080115 0:bf7b9fba3924 120 USB_ENDPOINT_TYPE_BULK, /* bmAttributes */
frank26080115 0:bf7b9fba3924 121 WBVAL(USB_CDC_BUFSIZE), /* wMaxPacketSize */
frank26080115 0:bf7b9fba3924 122 0x00, /* bInterval: ignore for Bulk transfer */
frank26080115 0:bf7b9fba3924 123 /* Endpoint, EP2 Bulk In */
frank26080115 0:bf7b9fba3924 124 USB_ENDPOINT_DESC_SIZE, /* bLength */
frank26080115 0:bf7b9fba3924 125 USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */
frank26080115 0:bf7b9fba3924 126 USB_ENDPOINT_IN(2), /* bEndpointAddress */
frank26080115 0:bf7b9fba3924 127 USB_ENDPOINT_TYPE_BULK, /* bmAttributes */
frank26080115 0:bf7b9fba3924 128 WBVAL(USB_CDC_BUFSIZE), /* wMaxPacketSize */
frank26080115 0:bf7b9fba3924 129 0x00, /* bInterval: ignore for Bulk transfer */
frank26080115 0:bf7b9fba3924 130 /* Terminator */
frank26080115 0:bf7b9fba3924 131 0 /* bLength */
frank26080115 0:bf7b9fba3924 132 };
frank26080115 0:bf7b9fba3924 133
frank26080115 0:bf7b9fba3924 134
frank26080115 0:bf7b9fba3924 135
frank26080115 0:bf7b9fba3924 136
frank26080115 0:bf7b9fba3924 137 /* USB String Descriptor (optional) */
frank26080115 0:bf7b9fba3924 138 const uint8_t USB_StringDescriptor[] = {
frank26080115 0:bf7b9fba3924 139 /* Index 0x00: LANGID Codes */
frank26080115 0:bf7b9fba3924 140 0x04, /* bLength */
frank26080115 0:bf7b9fba3924 141 USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */
frank26080115 0:bf7b9fba3924 142 WBVAL(0x0409), /* US English */ /* wLANGID */
frank26080115 0:bf7b9fba3924 143 /* Index 0x01: Manufacturer */
frank26080115 0:bf7b9fba3924 144 (13*2 + 2), /* bLength (13 Char + Type + lenght) */
frank26080115 0:bf7b9fba3924 145 USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */
frank26080115 0:bf7b9fba3924 146 'N',0,
frank26080115 0:bf7b9fba3924 147 'X',0,
frank26080115 0:bf7b9fba3924 148 'P',0,
frank26080115 0:bf7b9fba3924 149 ' ',0,
frank26080115 0:bf7b9fba3924 150 'S',0,
frank26080115 0:bf7b9fba3924 151 'E',0,
frank26080115 0:bf7b9fba3924 152 'M',0,
frank26080115 0:bf7b9fba3924 153 'I',0,
frank26080115 0:bf7b9fba3924 154 'C',0,
frank26080115 0:bf7b9fba3924 155 'O',0,
frank26080115 0:bf7b9fba3924 156 'N',0,
frank26080115 0:bf7b9fba3924 157 'D',0,
frank26080115 0:bf7b9fba3924 158 ' ',0,
frank26080115 0:bf7b9fba3924 159 /* Index 0x02: Product */
frank26080115 0:bf7b9fba3924 160 (17*2 + 2), /* bLength ( 17 Char + Type + lenght) */
frank26080115 0:bf7b9fba3924 161 USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */
frank26080115 0:bf7b9fba3924 162 'N',0,
frank26080115 0:bf7b9fba3924 163 'X',0,
frank26080115 0:bf7b9fba3924 164 'P',0,
frank26080115 0:bf7b9fba3924 165 ' ',0,
frank26080115 0:bf7b9fba3924 166 'L',0,
frank26080115 0:bf7b9fba3924 167 'P',0,
frank26080115 0:bf7b9fba3924 168 'C',0,
frank26080115 0:bf7b9fba3924 169 '1',0,
frank26080115 0:bf7b9fba3924 170 '7',0,
frank26080115 0:bf7b9fba3924 171 'x',0,
frank26080115 0:bf7b9fba3924 172 'x',0,
frank26080115 0:bf7b9fba3924 173 ' ',0,
frank26080115 0:bf7b9fba3924 174 'V',0,
frank26080115 0:bf7b9fba3924 175 'C',0,
frank26080115 0:bf7b9fba3924 176 'O',0,
frank26080115 0:bf7b9fba3924 177 'M',0,
frank26080115 0:bf7b9fba3924 178 ' ',0,
frank26080115 0:bf7b9fba3924 179 /* Index 0x03: Serial Number */
frank26080115 0:bf7b9fba3924 180 (12*2 + 2), /* bLength (12 Char + Type + lenght) */
frank26080115 0:bf7b9fba3924 181 USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */
frank26080115 0:bf7b9fba3924 182 'D',0,
frank26080115 0:bf7b9fba3924 183 'E',0,
frank26080115 0:bf7b9fba3924 184 'M',0,
frank26080115 0:bf7b9fba3924 185 'O',0,
frank26080115 0:bf7b9fba3924 186 '0',0,
frank26080115 0:bf7b9fba3924 187 '0',0,
frank26080115 0:bf7b9fba3924 188 '0',0,
frank26080115 0:bf7b9fba3924 189 '0',0,
frank26080115 0:bf7b9fba3924 190 '0',0,
frank26080115 0:bf7b9fba3924 191 '0',0,
frank26080115 0:bf7b9fba3924 192 '0',0,
frank26080115 0:bf7b9fba3924 193 '0',0,
frank26080115 0:bf7b9fba3924 194 /* Index 0x04: Interface 0, Alternate Setting 0 */
frank26080115 0:bf7b9fba3924 195 ( 4*2 + 2), /* bLength (4 Char + Type + lenght) */
frank26080115 0:bf7b9fba3924 196 USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */
frank26080115 0:bf7b9fba3924 197 'V',0,
frank26080115 0:bf7b9fba3924 198 'C',0,
frank26080115 0:bf7b9fba3924 199 'O',0,
frank26080115 0:bf7b9fba3924 200 'M',0,
frank26080115 0:bf7b9fba3924 201 };