00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 #include "board.h"
00040 #include "USBD_Config.h"
00041 #include "AUDDSpeakerDriver.h"
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059 #define AUDDSpeakerDriver_SAMPLERATE AUDDevice_SAMPLERATE
00060
00061 #define AUDDSpeakerDriver_BYTESPERSAMPLE AUDDevice_BYTESPERSAMPLE
00062
00063 #define AUDDSpeakerDriver_BITSPERSAMPLE AUDDevice_BITSPERSAMPLE
00064
00065 #define AUDDSpeakerDriver_BYTESPERSUBFRAME AUDDevice_BYTESPERSUBFRAME
00066
00067 #define AUDDSpeakerDriver_SAMPLESPERFRAME AUDDevice_SAMPLESPERFRAME
00068
00069 #define AUDDSpeakerDriver_BYTESPERFRAME AUDDevice_BYTESPERFRAME
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081 #define AUDDSpeakerDriverDescriptors_VENDORID USBD_VID_ATMEL
00082
00083 #define AUDDSpeakerDriverDescriptors_PRODUCTID USBD_PID_AUDIO
00084
00085 #define AUDDSpeakerDriverDescriptors_RELEASE USBD_RELEASE_1_00
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098 const USBDeviceDescriptor deviceDescriptor = {
00099
00100 sizeof(USBDeviceDescriptor),
00101 USBGenericDescriptor_DEVICE,
00102 USBDeviceDescriptor_USB2_00,
00103 AUDDeviceDescriptor_CLASS,
00104 AUDDeviceDescriptor_SUBCLASS,
00105 AUDDeviceDescriptor_PROTOCOL,
00106 CHIP_USB_ENDPOINTS_MAXPACKETSIZE(0),
00107 AUDDSpeakerDriverDescriptors_VENDORID,
00108 AUDDSpeakerDriverDescriptors_PRODUCTID,
00109 AUDDSpeakerDriverDescriptors_RELEASE,
00110 1,
00111 2,
00112 3,
00113 1
00114 };
00115
00116
00117
00118 static const USBDeviceQualifierDescriptor qualifierDescriptor = {
00119
00120 sizeof(USBDeviceQualifierDescriptor),
00121 USBGenericDescriptor_DEVICEQUALIFIER,
00122 USBDeviceDescriptor_USB2_00,
00123 AUDDeviceDescriptor_CLASS,
00124 AUDDeviceDescriptor_SUBCLASS,
00125 AUDDeviceDescriptor_PROTOCOL,
00126 CHIP_USB_ENDPOINTS_MAXPACKETSIZE(0),
00127 0,
00128 0x00
00129 };
00130
00131 const AUDDSpeakerDriverConfigurationDescriptors fsConfigurationDescriptors = {
00132
00133
00134 {
00135 sizeof(USBConfigurationDescriptor),
00136 USBGenericDescriptor_CONFIGURATION,
00137 sizeof(AUDDSpeakerDriverConfigurationDescriptors),
00138 2,
00139 1,
00140 0,
00141 USBD_BMATTRIBUTES,
00142 USBConfigurationDescriptor_POWER(100)
00143 },
00144
00145 {
00146 sizeof(USBInterfaceDescriptor),
00147 USBGenericDescriptor_INTERFACE,
00148 AUDDSpeakerDriverDescriptors_CONTROL,
00149 0,
00150 0,
00151 AUDControlInterfaceDescriptor_CLASS,
00152 AUDControlInterfaceDescriptor_SUBCLASS,
00153 AUDControlInterfaceDescriptor_PROTOCOL,
00154 0
00155 },
00156
00157 {
00158
00159 {
00160 {
00161 sizeof(AUDHeaderDescriptor1),
00162 AUDGenericDescriptor_INTERFACE,
00163 AUDGenericDescriptor_HEADER,
00164 AUDHeaderDescriptor_AUD1_00,
00165 sizeof(AUDDSpeakerDriverAudioControlDescriptors),
00166 1
00167 },
00168 AUDDSpeakerDriverDescriptors_STREAMING
00169 },
00170
00171 {
00172 sizeof(AUDInputTerminalDescriptor),
00173 AUDGenericDescriptor_INTERFACE,
00174 AUDGenericDescriptor_INPUTTERMINAL,
00175 AUDDSpeakerDriverDescriptors_INPUTTERMINAL,
00176 AUDInputTerminalDescriptor_USBSTREAMING,
00177 AUDDSpeakerDriverDescriptors_OUTPUTTERMINAL,
00178 AUDDSpeakerDriver_NUMCHANNELS,
00179 AUDInputTerminalDescriptor_LEFTFRONT
00180 | AUDInputTerminalDescriptor_RIGHTFRONT,
00181 0,
00182 0
00183 },
00184
00185 {
00186 sizeof(AUDOutputTerminalDescriptor),
00187 AUDGenericDescriptor_INTERFACE,
00188 AUDGenericDescriptor_OUTPUTTERMINAL,
00189 AUDDSpeakerDriverDescriptors_OUTPUTTERMINAL,
00190 AUDOutputTerminalDescriptor_SPEAKER,
00191 AUDDSpeakerDriverDescriptors_INPUTTERMINAL,
00192 AUDDSpeakerDriverDescriptors_FEATUREUNIT,
00193 0
00194 },
00195
00196 {
00197 {
00198 sizeof(AUDFeatureUnitDescriptor3),
00199 AUDGenericDescriptor_INTERFACE,
00200 AUDGenericDescriptor_FEATUREUNIT,
00201 AUDDSpeakerDriverDescriptors_FEATUREUNIT,
00202 AUDDSpeakerDriverDescriptors_INPUTTERMINAL,
00203 1,
00204 },
00205 {
00206 AUDFeatureUnitDescriptor_MUTE,
00207 0,
00208 0
00209 },
00210 0
00211 }
00212 },
00213
00214 {
00215 sizeof(USBInterfaceDescriptor),
00216 USBGenericDescriptor_INTERFACE,
00217 AUDDSpeakerDriverDescriptors_STREAMING,
00218 0,
00219 0,
00220 AUDStreamingInterfaceDescriptor_CLASS,
00221 AUDStreamingInterfaceDescriptor_SUBCLASS,
00222 AUDStreamingInterfaceDescriptor_PROTOCOL,
00223 0
00224 },
00225
00226 {
00227 sizeof(USBInterfaceDescriptor),
00228 USBGenericDescriptor_INTERFACE,
00229 AUDDSpeakerDriverDescriptors_STREAMING,
00230 1,
00231 1,
00232 AUDStreamingInterfaceDescriptor_CLASS,
00233 AUDStreamingInterfaceDescriptor_SUBCLASS,
00234 AUDStreamingInterfaceDescriptor_PROTOCOL,
00235 0
00236 },
00237
00238 {
00239 sizeof(AUDStreamingInterfaceDescriptor),
00240 AUDGenericDescriptor_INTERFACE,
00241 AUDStreamingInterfaceDescriptor_GENERAL,
00242 AUDDSpeakerDriverDescriptors_INPUTTERMINAL,
00243 0,
00244 AUDFormatTypeOneDescriptor_PCM
00245 },
00246
00247 {
00248 {
00249 sizeof(AUDFormatTypeOneDescriptor1),
00250 AUDGenericDescriptor_INTERFACE,
00251 AUDStreamingInterfaceDescriptor_FORMATTYPE,
00252 AUDFormatTypeOneDescriptor_FORMATTYPEONE,
00253 AUDDSpeakerDriver_NUMCHANNELS,
00254 AUDDSpeakerDriver_BYTESPERSAMPLE,
00255 AUDDSpeakerDriver_BYTESPERSAMPLE*8,
00256 1
00257 },
00258 {
00259 AUDDSpeakerDriver_SAMPLERATE & 0xFF,
00260 (AUDDSpeakerDriver_SAMPLERATE >> 8) & 0xFF,
00261 (AUDDSpeakerDriver_SAMPLERATE >> 16) & 0xFF
00262 }
00263 },
00264
00265 {
00266 sizeof(AUDEndpointDescriptor),
00267 USBGenericDescriptor_ENDPOINT,
00268 USBEndpointDescriptor_ADDRESS(
00269 USBEndpointDescriptor_OUT,
00270 AUDDSpeakerDriverDescriptors_DATAOUT),
00271 USBEndpointDescriptor_ISOCHRONOUS,
00272 AUDDevice_BYTESPERFRAME,
00273 AUDDSpeakerDriverDescriptors_FS_INTERVAL,
00274 0,
00275 0
00276 },
00277
00278 {
00279 sizeof(AUDDataEndpointDescriptor),
00280 AUDGenericDescriptor_ENDPOINT,
00281 AUDDataEndpointDescriptor_SUBTYPE,
00282 0,
00283 0,
00284 0
00285 }
00286 };
00287
00288
00289 const AUDDSpeakerDriverConfigurationDescriptors hsConfigurationDescriptors = {
00290
00291
00292 {
00293 sizeof(USBConfigurationDescriptor),
00294 USBGenericDescriptor_CONFIGURATION,
00295 sizeof(AUDDSpeakerDriverConfigurationDescriptors),
00296 2,
00297 1,
00298 0,
00299 USBD_BMATTRIBUTES,
00300 USBConfigurationDescriptor_POWER(100)
00301 },
00302
00303 {
00304 sizeof(USBInterfaceDescriptor),
00305 USBGenericDescriptor_INTERFACE,
00306 AUDDSpeakerDriverDescriptors_CONTROL,
00307 0,
00308 0,
00309 AUDControlInterfaceDescriptor_CLASS,
00310 AUDControlInterfaceDescriptor_SUBCLASS,
00311 AUDControlInterfaceDescriptor_PROTOCOL,
00312 0
00313 },
00314
00315 {
00316
00317 {
00318 {
00319 sizeof(AUDHeaderDescriptor1),
00320 AUDGenericDescriptor_INTERFACE,
00321 AUDGenericDescriptor_HEADER,
00322 AUDHeaderDescriptor_AUD1_00,
00323 sizeof(AUDDSpeakerDriverAudioControlDescriptors),
00324 1
00325 },
00326 AUDDSpeakerDriverDescriptors_STREAMING
00327 },
00328
00329 {
00330 sizeof(AUDInputTerminalDescriptor),
00331 AUDGenericDescriptor_INTERFACE,
00332 AUDGenericDescriptor_INPUTTERMINAL,
00333 AUDDSpeakerDriverDescriptors_INPUTTERMINAL,
00334 AUDInputTerminalDescriptor_USBSTREAMING,
00335 AUDDSpeakerDriverDescriptors_OUTPUTTERMINAL,
00336 AUDDSpeakerDriver_NUMCHANNELS,
00337 AUDInputTerminalDescriptor_LEFTFRONT
00338 | AUDInputTerminalDescriptor_RIGHTFRONT,
00339 0,
00340 0
00341 },
00342
00343 {
00344 sizeof(AUDOutputTerminalDescriptor),
00345 AUDGenericDescriptor_INTERFACE,
00346 AUDGenericDescriptor_OUTPUTTERMINAL,
00347 AUDDSpeakerDriverDescriptors_OUTPUTTERMINAL,
00348 AUDOutputTerminalDescriptor_SPEAKER,
00349 AUDDSpeakerDriverDescriptors_INPUTTERMINAL,
00350 AUDDSpeakerDriverDescriptors_FEATUREUNIT,
00351 0
00352 },
00353
00354 {
00355 {
00356 sizeof(AUDFeatureUnitDescriptor3),
00357 AUDGenericDescriptor_INTERFACE,
00358 AUDGenericDescriptor_FEATUREUNIT,
00359 AUDDSpeakerDriverDescriptors_FEATUREUNIT,
00360 AUDDSpeakerDriverDescriptors_INPUTTERMINAL,
00361 1,
00362 },
00363 {
00364 AUDFeatureUnitDescriptor_MUTE,
00365 0,
00366 0
00367 },
00368 0
00369 }
00370 },
00371
00372 {
00373 sizeof(USBInterfaceDescriptor),
00374 USBGenericDescriptor_INTERFACE,
00375 AUDDSpeakerDriverDescriptors_STREAMING,
00376 0,
00377 0,
00378 AUDStreamingInterfaceDescriptor_CLASS,
00379 AUDStreamingInterfaceDescriptor_SUBCLASS,
00380 AUDStreamingInterfaceDescriptor_PROTOCOL,
00381 0
00382 },
00383
00384 {
00385 sizeof(USBInterfaceDescriptor),
00386 USBGenericDescriptor_INTERFACE,
00387 AUDDSpeakerDriverDescriptors_STREAMING,
00388 1,
00389 1,
00390 AUDStreamingInterfaceDescriptor_CLASS,
00391 AUDStreamingInterfaceDescriptor_SUBCLASS,
00392 AUDStreamingInterfaceDescriptor_PROTOCOL,
00393 0
00394 },
00395
00396 {
00397 sizeof(AUDStreamingInterfaceDescriptor),
00398 AUDGenericDescriptor_INTERFACE,
00399 AUDStreamingInterfaceDescriptor_GENERAL,
00400 AUDDSpeakerDriverDescriptors_INPUTTERMINAL,
00401 0,
00402 AUDFormatTypeOneDescriptor_PCM
00403 },
00404
00405 {
00406 {
00407 sizeof(AUDFormatTypeOneDescriptor1),
00408 AUDGenericDescriptor_INTERFACE,
00409 AUDStreamingInterfaceDescriptor_FORMATTYPE,
00410 AUDFormatTypeOneDescriptor_FORMATTYPEONE,
00411 AUDDSpeakerDriver_NUMCHANNELS,
00412 AUDDSpeakerDriver_BYTESPERSAMPLE,
00413 AUDDSpeakerDriver_BYTESPERSAMPLE*8,
00414 1
00415 },
00416 {
00417 AUDDSpeakerDriver_SAMPLERATE & 0xFF,
00418 (AUDDSpeakerDriver_SAMPLERATE >> 8) & 0xFF,
00419 (AUDDSpeakerDriver_SAMPLERATE >> 16) & 0xFF
00420 }
00421 },
00422
00423 {
00424 sizeof(AUDEndpointDescriptor),
00425 USBGenericDescriptor_ENDPOINT,
00426 USBEndpointDescriptor_ADDRESS(
00427 USBEndpointDescriptor_OUT,
00428 AUDDSpeakerDriverDescriptors_DATAOUT),
00429 USBEndpointDescriptor_ISOCHRONOUS,
00430 AUDDevice_BYTESPERFRAME,
00431 AUDDSpeakerDriverDescriptors_HS_INTERVAL,
00432 0,
00433 0
00434 },
00435
00436 {
00437 sizeof(AUDDataEndpointDescriptor),
00438 AUDGenericDescriptor_ENDPOINT,
00439 AUDDataEndpointDescriptor_SUBTYPE,
00440 0,
00441 0,
00442 0
00443 }
00444 };
00445
00446
00447 const unsigned char languageIdDescriptor[] = {
00448
00449 USBStringDescriptor_LENGTH(1),
00450 USBGenericDescriptor_STRING,
00451 USBStringDescriptor_ENGLISH_US
00452 };
00453
00454
00455 const unsigned char manufacturerDescriptor[] = {
00456
00457 USBStringDescriptor_LENGTH(5),
00458 USBGenericDescriptor_STRING,
00459 USBStringDescriptor_UNICODE('A'),
00460 USBStringDescriptor_UNICODE('t'),
00461 USBStringDescriptor_UNICODE('m'),
00462 USBStringDescriptor_UNICODE('e'),
00463 USBStringDescriptor_UNICODE('l')
00464 };
00465
00466
00467 const unsigned char productDescriptor[] = {
00468
00469 USBStringDescriptor_LENGTH(15),
00470 USBGenericDescriptor_STRING,
00471 USBStringDescriptor_UNICODE('D'),
00472 USBStringDescriptor_UNICODE('e'),
00473 USBStringDescriptor_UNICODE('s'),
00474 USBStringDescriptor_UNICODE('k'),
00475 USBStringDescriptor_UNICODE('t'),
00476 USBStringDescriptor_UNICODE('o'),
00477 USBStringDescriptor_UNICODE('p'),
00478 USBStringDescriptor_UNICODE(' '),
00479 USBStringDescriptor_UNICODE('s'),
00480 USBStringDescriptor_UNICODE('p'),
00481 USBStringDescriptor_UNICODE('e'),
00482 USBStringDescriptor_UNICODE('a'),
00483 USBStringDescriptor_UNICODE('k'),
00484 USBStringDescriptor_UNICODE('e'),
00485 USBStringDescriptor_UNICODE('r')
00486 };
00487
00488
00489 const unsigned char serialNumberDescriptor[] = {
00490
00491 USBStringDescriptor_LENGTH(4),
00492 USBGenericDescriptor_STRING,
00493 USBStringDescriptor_UNICODE('0'),
00494 USBStringDescriptor_UNICODE('1'),
00495 USBStringDescriptor_UNICODE('2'),
00496 USBStringDescriptor_UNICODE('3')
00497 };
00498
00499
00500 const unsigned char *stringDescriptors[] = {
00501
00502 languageIdDescriptor,
00503 manufacturerDescriptor,
00504 productDescriptor,
00505 serialNumberDescriptor,
00506 };
00507
00508
00509
00510
00511
00512
00513 const USBDDriverDescriptors auddSpeakerDriverDescriptors = {
00514
00515 &deviceDescriptor,
00516 (const USBConfigurationDescriptor *) &fsConfigurationDescriptors,
00517 &qualifierDescriptor,
00518 0,
00519 0,
00520 (const USBConfigurationDescriptor *) &hsConfigurationDescriptors,
00521 &qualifierDescriptor,
00522 0,
00523 stringDescriptors, 4
00524 };
00525
00526
00527