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 family microcontroller devices only. Nothing
frank26080115 0:bf7b9fba3924 14 * else 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
frank26080115 0:bf7b9fba3924 24 #include "usb.h"
frank26080115 0:bf7b9fba3924 25 #include "audio.h"
frank26080115 0:bf7b9fba3924 26 #include "usbcfg.h"
frank26080115 0:bf7b9fba3924 27 #include "usbdesc.h"
frank26080115 0:bf7b9fba3924 28
frank26080115 0:bf7b9fba3924 29
frank26080115 0:bf7b9fba3924 30 /* USB Standard Device Descriptor */
frank26080115 0:bf7b9fba3924 31 const uint8_t USB_DeviceDescriptor[] = {
frank26080115 0:bf7b9fba3924 32 USB_DEVICE_DESC_SIZE, /* bLength */
frank26080115 0:bf7b9fba3924 33 USB_DEVICE_DESCRIPTOR_TYPE, /* bDescriptorType */
frank26080115 0:bf7b9fba3924 34 WBVAL(0x0200), /* 2.00 */ /* bcdUSB */
frank26080115 0:bf7b9fba3924 35 0x00, /* bDeviceClass */
frank26080115 0:bf7b9fba3924 36 0x00, /* bDeviceSubClass */
frank26080115 0:bf7b9fba3924 37 0x00, /* bDeviceProtocol */
frank26080115 0:bf7b9fba3924 38 USB_MAX_PACKET0, /* bMaxPacketSize0 */
frank26080115 0:bf7b9fba3924 39 WBVAL(0x1FC9), /* idVendor */
frank26080115 0:bf7b9fba3924 40 WBVAL(0x4002), /* idProduct */
frank26080115 0:bf7b9fba3924 41 WBVAL(0x0100), /* 1.00 */ /* bcdDevice */
frank26080115 0:bf7b9fba3924 42 0x01, /* iManufacturer */
frank26080115 0:bf7b9fba3924 43 0x02, /* iProduct */
frank26080115 0:bf7b9fba3924 44 0x03, /* iSerialNumber */
frank26080115 0:bf7b9fba3924 45 0x01 /* bNumConfigurations: one possible configuration*/
frank26080115 0:bf7b9fba3924 46 };
frank26080115 0:bf7b9fba3924 47
frank26080115 0:bf7b9fba3924 48 /* USB Configuration Descriptor */
frank26080115 0:bf7b9fba3924 49 /* All Descriptors (Configuration, Interface, Endpoint, Class, Vendor */
frank26080115 0:bf7b9fba3924 50 const uint8_t USB_ConfigDescriptor[] = {
frank26080115 0:bf7b9fba3924 51 /* Configuration 1 */
frank26080115 0:bf7b9fba3924 52 USB_CONFIGUARTION_DESC_SIZE, /* bLength */
frank26080115 0:bf7b9fba3924 53 USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType */
frank26080115 0:bf7b9fba3924 54 WBVAL( /* wTotalLength */
frank26080115 0:bf7b9fba3924 55 USB_CONFIGUARTION_DESC_SIZE +
frank26080115 0:bf7b9fba3924 56 USB_INTERFACE_DESC_SIZE +
frank26080115 0:bf7b9fba3924 57 AUDIO_CONTROL_INTERFACE_DESC_SZ(1) +
frank26080115 0:bf7b9fba3924 58 AUDIO_INPUT_TERMINAL_DESC_SIZE +
frank26080115 0:bf7b9fba3924 59 AUDIO_FEATURE_UNIT_DESC_SZ(1,1) +
frank26080115 0:bf7b9fba3924 60 AUDIO_OUTPUT_TERMINAL_DESC_SIZE +
frank26080115 0:bf7b9fba3924 61 USB_INTERFACE_DESC_SIZE +
frank26080115 0:bf7b9fba3924 62 USB_INTERFACE_DESC_SIZE +
frank26080115 0:bf7b9fba3924 63 AUDIO_STREAMING_INTERFACE_DESC_SIZE +
frank26080115 0:bf7b9fba3924 64 AUDIO_FORMAT_TYPE_I_DESC_SZ(1) +
frank26080115 0:bf7b9fba3924 65 AUDIO_STANDARD_ENDPOINT_DESC_SIZE +
frank26080115 0:bf7b9fba3924 66 AUDIO_STREAMING_ENDPOINT_DESC_SIZE
frank26080115 0:bf7b9fba3924 67 ),
frank26080115 0:bf7b9fba3924 68 0x02, /* bNumInterfaces */
frank26080115 0:bf7b9fba3924 69 0x01, /* bConfigurationValue */
frank26080115 0:bf7b9fba3924 70 0x00, /* iConfiguration */
frank26080115 0:bf7b9fba3924 71 USB_CONFIG_BUS_POWERED, /* bmAttributes */
frank26080115 0:bf7b9fba3924 72 USB_CONFIG_POWER_MA(100), /* bMaxPower */
frank26080115 0:bf7b9fba3924 73 /* Interface 0, Alternate Setting 0, Audio Control */
frank26080115 0:bf7b9fba3924 74 USB_INTERFACE_DESC_SIZE, /* bLength */
frank26080115 0:bf7b9fba3924 75 USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
frank26080115 0:bf7b9fba3924 76 0x00, /* bInterfaceNumber */
frank26080115 0:bf7b9fba3924 77 0x00, /* bAlternateSetting */
frank26080115 0:bf7b9fba3924 78 0x00, /* bNumEndpoints */
frank26080115 0:bf7b9fba3924 79 USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */
frank26080115 0:bf7b9fba3924 80 AUDIO_SUBCLASS_AUDIOCONTROL, /* bInterfaceSubClass */
frank26080115 0:bf7b9fba3924 81 AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */
frank26080115 0:bf7b9fba3924 82 0x00, /* iInterface */
frank26080115 0:bf7b9fba3924 83 /* Audio Control Interface */
frank26080115 0:bf7b9fba3924 84 AUDIO_CONTROL_INTERFACE_DESC_SZ(1), /* bLength */
frank26080115 0:bf7b9fba3924 85 AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
frank26080115 0:bf7b9fba3924 86 AUDIO_CONTROL_HEADER, /* bDescriptorSubtype */
frank26080115 0:bf7b9fba3924 87 WBVAL(0x0100), /* 1.00 */ /* bcdADC */
frank26080115 0:bf7b9fba3924 88 WBVAL( /* wTotalLength */
frank26080115 0:bf7b9fba3924 89 AUDIO_CONTROL_INTERFACE_DESC_SZ(1) +
frank26080115 0:bf7b9fba3924 90 AUDIO_INPUT_TERMINAL_DESC_SIZE +
frank26080115 0:bf7b9fba3924 91 AUDIO_FEATURE_UNIT_DESC_SZ(1,1) +
frank26080115 0:bf7b9fba3924 92 AUDIO_OUTPUT_TERMINAL_DESC_SIZE
frank26080115 0:bf7b9fba3924 93 ),
frank26080115 0:bf7b9fba3924 94 0x01, /* bInCollection */
frank26080115 0:bf7b9fba3924 95 0x01, /* baInterfaceNr */
frank26080115 0:bf7b9fba3924 96 /* Audio Input Terminal */
frank26080115 0:bf7b9fba3924 97 AUDIO_INPUT_TERMINAL_DESC_SIZE, /* bLength */
frank26080115 0:bf7b9fba3924 98 AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
frank26080115 0:bf7b9fba3924 99 AUDIO_CONTROL_INPUT_TERMINAL, /* bDescriptorSubtype */
frank26080115 0:bf7b9fba3924 100 0x01, /* bTerminalID */
frank26080115 0:bf7b9fba3924 101 WBVAL(AUDIO_TERMINAL_USB_STREAMING), /* wTerminalType */
frank26080115 0:bf7b9fba3924 102 0x00, /* bAssocTerminal */
frank26080115 0:bf7b9fba3924 103 0x01, /* bNrChannels */
frank26080115 0:bf7b9fba3924 104 WBVAL(AUDIO_CHANNEL_M), /* wChannelConfig */
frank26080115 0:bf7b9fba3924 105 0x00, /* iChannelNames */
frank26080115 0:bf7b9fba3924 106 0x00, /* iTerminal */
frank26080115 0:bf7b9fba3924 107 /* Audio Feature Unit */
frank26080115 0:bf7b9fba3924 108 AUDIO_FEATURE_UNIT_DESC_SZ(1,1), /* bLength */
frank26080115 0:bf7b9fba3924 109 AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
frank26080115 0:bf7b9fba3924 110 AUDIO_CONTROL_FEATURE_UNIT, /* bDescriptorSubtype */
frank26080115 0:bf7b9fba3924 111 0x02, /* bUnitID */
frank26080115 0:bf7b9fba3924 112 0x01, /* bSourceID */
frank26080115 0:bf7b9fba3924 113 0x01, /* bControlSize */
frank26080115 0:bf7b9fba3924 114 AUDIO_CONTROL_MUTE |
frank26080115 0:bf7b9fba3924 115 AUDIO_CONTROL_VOLUME, /* bmaControls(0) */
frank26080115 0:bf7b9fba3924 116 0x00, /* bmaControls(1) */
frank26080115 0:bf7b9fba3924 117 0x00, /* iTerminal */
frank26080115 0:bf7b9fba3924 118 /* Audio Output Terminal */
frank26080115 0:bf7b9fba3924 119 AUDIO_OUTPUT_TERMINAL_DESC_SIZE, /* bLength */
frank26080115 0:bf7b9fba3924 120 AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
frank26080115 0:bf7b9fba3924 121 AUDIO_CONTROL_OUTPUT_TERMINAL, /* bDescriptorSubtype */
frank26080115 0:bf7b9fba3924 122 0x03, /* bTerminalID */
frank26080115 0:bf7b9fba3924 123 WBVAL(AUDIO_TERMINAL_SPEAKER), /* wTerminalType */
frank26080115 0:bf7b9fba3924 124 0x00, /* bAssocTerminal */
frank26080115 0:bf7b9fba3924 125 0x02, /* bSourceID */
frank26080115 0:bf7b9fba3924 126 0x00, /* iTerminal */
frank26080115 0:bf7b9fba3924 127 /* Interface 1, Alternate Setting 0, Audio Streaming - Zero Bandwith */
frank26080115 0:bf7b9fba3924 128 USB_INTERFACE_DESC_SIZE, /* bLength */
frank26080115 0:bf7b9fba3924 129 USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
frank26080115 0:bf7b9fba3924 130 0x01, /* bInterfaceNumber */
frank26080115 0:bf7b9fba3924 131 0x00, /* bAlternateSetting */
frank26080115 0:bf7b9fba3924 132 0x00, /* bNumEndpoints */
frank26080115 0:bf7b9fba3924 133 USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */
frank26080115 0:bf7b9fba3924 134 AUDIO_SUBCLASS_AUDIOSTREAMING, /* bInterfaceSubClass */
frank26080115 0:bf7b9fba3924 135 AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */
frank26080115 0:bf7b9fba3924 136 0x00, /* iInterface */
frank26080115 0:bf7b9fba3924 137 /* Interface 1, Alternate Setting 1, Audio Streaming - Operational */
frank26080115 0:bf7b9fba3924 138 USB_INTERFACE_DESC_SIZE, /* bLength */
frank26080115 0:bf7b9fba3924 139 USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
frank26080115 0:bf7b9fba3924 140 0x01, /* bInterfaceNumber */
frank26080115 0:bf7b9fba3924 141 0x01, /* bAlternateSetting */
frank26080115 0:bf7b9fba3924 142 0x01, /* bNumEndpoints */
frank26080115 0:bf7b9fba3924 143 USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */
frank26080115 0:bf7b9fba3924 144 AUDIO_SUBCLASS_AUDIOSTREAMING, /* bInterfaceSubClass */
frank26080115 0:bf7b9fba3924 145 AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */
frank26080115 0:bf7b9fba3924 146 0x00, /* iInterface */
frank26080115 0:bf7b9fba3924 147 /* Audio Streaming Interface */
frank26080115 0:bf7b9fba3924 148 AUDIO_STREAMING_INTERFACE_DESC_SIZE, /* bLength */
frank26080115 0:bf7b9fba3924 149 AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
frank26080115 0:bf7b9fba3924 150 AUDIO_STREAMING_GENERAL, /* bDescriptorSubtype */
frank26080115 0:bf7b9fba3924 151 0x01, /* bTerminalLink */
frank26080115 0:bf7b9fba3924 152 0x01, /* bDelay */
frank26080115 0:bf7b9fba3924 153 WBVAL(AUDIO_FORMAT_PCM), /* wFormatTag */
frank26080115 0:bf7b9fba3924 154 /* Audio Type I Format */
frank26080115 0:bf7b9fba3924 155 AUDIO_FORMAT_TYPE_I_DESC_SZ(1), /* bLength */
frank26080115 0:bf7b9fba3924 156 AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
frank26080115 0:bf7b9fba3924 157 AUDIO_STREAMING_FORMAT_TYPE, /* bDescriptorSubtype */
frank26080115 0:bf7b9fba3924 158 AUDIO_FORMAT_TYPE_I, /* bFormatType */
frank26080115 0:bf7b9fba3924 159 0x01, /* bNrChannels */
frank26080115 0:bf7b9fba3924 160 0x02, /* bSubFrameSize */
frank26080115 0:bf7b9fba3924 161 16, /* bBitResolution */
frank26080115 0:bf7b9fba3924 162 0x01, /* bSamFreqType */
frank26080115 0:bf7b9fba3924 163 B3VAL(32000), /* tSamFreq */
frank26080115 0:bf7b9fba3924 164 /* Endpoint - Standard Descriptor */
frank26080115 0:bf7b9fba3924 165 AUDIO_STANDARD_ENDPOINT_DESC_SIZE, /* bLength */
frank26080115 0:bf7b9fba3924 166 USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */
frank26080115 0:bf7b9fba3924 167 USB_ENDPOINT_OUT(3), /* bEndpointAddress */
frank26080115 0:bf7b9fba3924 168 USB_ENDPOINT_TYPE_ISOCHRONOUS, /* bmAttributes */
frank26080115 0:bf7b9fba3924 169 WBVAL(64), /* wMaxPacketSize */
frank26080115 0:bf7b9fba3924 170 0x01, /* bInterval */
frank26080115 0:bf7b9fba3924 171 0x00, /* bRefresh */
frank26080115 0:bf7b9fba3924 172 0x00, /* bSynchAddress */
frank26080115 0:bf7b9fba3924 173 /* Endpoint - Audio Streaming */
frank26080115 0:bf7b9fba3924 174 AUDIO_STREAMING_ENDPOINT_DESC_SIZE, /* bLength */
frank26080115 0:bf7b9fba3924 175 AUDIO_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */
frank26080115 0:bf7b9fba3924 176 AUDIO_ENDPOINT_GENERAL, /* bDescriptor */
frank26080115 0:bf7b9fba3924 177 0x00, /* bmAttributes */
frank26080115 0:bf7b9fba3924 178 0x00, /* bLockDelayUnits */
frank26080115 0:bf7b9fba3924 179 WBVAL(0x0000), /* wLockDelay */
frank26080115 0:bf7b9fba3924 180 /* Terminator */
frank26080115 0:bf7b9fba3924 181 0 /* bLength */
frank26080115 0:bf7b9fba3924 182 };
frank26080115 0:bf7b9fba3924 183
frank26080115 0:bf7b9fba3924 184 /* USB String Descriptor (optional) */
frank26080115 0:bf7b9fba3924 185 const uint8_t USB_StringDescriptor[] = {
frank26080115 0:bf7b9fba3924 186 /* Index 0x00: LANGID Codes */
frank26080115 0:bf7b9fba3924 187 0x04, /* bLength */
frank26080115 0:bf7b9fba3924 188 USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */
frank26080115 0:bf7b9fba3924 189 WBVAL(0x0409), /* US English */ /* wLANGID */
frank26080115 0:bf7b9fba3924 190 /* Index 0x01: Manufacturer */
frank26080115 0:bf7b9fba3924 191 (13*2 + 2), /* bLength (13 Char + Type + lenght) */
frank26080115 0:bf7b9fba3924 192 USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */
frank26080115 0:bf7b9fba3924 193 'N',0,
frank26080115 0:bf7b9fba3924 194 'X',0,
frank26080115 0:bf7b9fba3924 195 'P',0,
frank26080115 0:bf7b9fba3924 196 ' ',0,
frank26080115 0:bf7b9fba3924 197 'S',0,
frank26080115 0:bf7b9fba3924 198 'e',0,
frank26080115 0:bf7b9fba3924 199 'm',0,
frank26080115 0:bf7b9fba3924 200 'i',0,
frank26080115 0:bf7b9fba3924 201 'c',0,
frank26080115 0:bf7b9fba3924 202 'o',0,
frank26080115 0:bf7b9fba3924 203 'n',0,
frank26080115 0:bf7b9fba3924 204 'd',0,
frank26080115 0:bf7b9fba3924 205 ' ',0,
frank26080115 0:bf7b9fba3924 206 /* Index 0x02: Product */
frank26080115 0:bf7b9fba3924 207 (20*2 + 2), /* bLength ( 20 Char + Type + lenght) */
frank26080115 0:bf7b9fba3924 208 USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */
frank26080115 0:bf7b9fba3924 209 'N',0,
frank26080115 0:bf7b9fba3924 210 'X',0,
frank26080115 0:bf7b9fba3924 211 'P',0,
frank26080115 0:bf7b9fba3924 212 ' ',0,
frank26080115 0:bf7b9fba3924 213 'L',0,
frank26080115 0:bf7b9fba3924 214 'P',0,
frank26080115 0:bf7b9fba3924 215 'C',0,
frank26080115 0:bf7b9fba3924 216 '1',0,
frank26080115 0:bf7b9fba3924 217 '7',0,
frank26080115 0:bf7b9fba3924 218 'x',0,
frank26080115 0:bf7b9fba3924 219 'x',0,
frank26080115 0:bf7b9fba3924 220 ' ',0,
frank26080115 0:bf7b9fba3924 221 'S',0,
frank26080115 0:bf7b9fba3924 222 'p',0,
frank26080115 0:bf7b9fba3924 223 'e',0,
frank26080115 0:bf7b9fba3924 224 'a',0,
frank26080115 0:bf7b9fba3924 225 'k',0,
frank26080115 0:bf7b9fba3924 226 'e',0,
frank26080115 0:bf7b9fba3924 227 'r',0,
frank26080115 0:bf7b9fba3924 228 ' ',0,
frank26080115 0:bf7b9fba3924 229 /* Index 0x03: Serial Number */
frank26080115 0:bf7b9fba3924 230 (12*2 + 2), /* bLength (12 Char + Type + lenght) */
frank26080115 0:bf7b9fba3924 231 USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */
frank26080115 0:bf7b9fba3924 232 'D',0,
frank26080115 0:bf7b9fba3924 233 'E',0,
frank26080115 0:bf7b9fba3924 234 'M',0,
frank26080115 0:bf7b9fba3924 235 'O',0,
frank26080115 0:bf7b9fba3924 236 '0',0,
frank26080115 0:bf7b9fba3924 237 '0',0,
frank26080115 0:bf7b9fba3924 238 '0',0,
frank26080115 0:bf7b9fba3924 239 '0',0,
frank26080115 0:bf7b9fba3924 240 '0',0,
frank26080115 0:bf7b9fba3924 241 '0',0,
frank26080115 0:bf7b9fba3924 242 '0',0,
frank26080115 0:bf7b9fba3924 243 '0',0,
frank26080115 0:bf7b9fba3924 244 };