X-Git-Url: http://git.linex4red.de/pub/lufa.git/blobdiff_plain/fb76acb0844a2528c32610455a8c7cd5266f3027..0210fa5648b1ed65caa384f966ac40b4ecc489ae:/Demos/Device/LowLevel/AudioOutput/AudioOutput.c diff --git a/Demos/Device/LowLevel/AudioOutput/AudioOutput.c b/Demos/Device/LowLevel/AudioOutput/AudioOutput.c index 6e7d818fb..22cfac4d9 100644 --- a/Demos/Device/LowLevel/AudioOutput/AudioOutput.c +++ b/Demos/Device/LowLevel/AudioOutput/AudioOutput.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2010. + Copyright (C) Dean Camera, 2011. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -37,7 +37,8 @@ #include "AudioOutput.h" /** Flag to indicate if the streaming audio alternative interface has been selected by the host. */ -bool StreamingAudioInterfaceSelected = false; +static bool StreamingAudioInterfaceSelected = false; + /** Main program entry point. This routine contains the overall program flow, including initial * setup of all components and the main program loop. @@ -80,7 +81,7 @@ void EVENT_USB_Device_Connect(void) /* Sample reload timer initialization */ TIMSK0 = (1 << OCIE0A); - OCR0A = (F_CPU / 8 / AUDIO_SAMPLE_FREQUENCY) - 1; + OCR0A = ((F_CPU / 8 / AUDIO_SAMPLE_FREQUENCY) - 1); TCCR0A = (1 << WGM01); // CTC mode TCCR0B = (1 << CS01); // Fcpu/8 speed @@ -168,6 +169,15 @@ void EVENT_USB_Device_ControlRequest(void) } break; + case AUDIO_REQ_GetStatus: + /* Get Status request can be directed at either the interface or endpoint, neither is currently used + * according to the latest USB Audio 1.0 standard, but must be ACKed with no data when requested */ + if ((USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) || + (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_ENDPOINT))) + { + Endpoint_ClearSETUP(); + Endpoint_ClearStatusStage(); + } } } @@ -183,8 +193,8 @@ ISR(TIMER0_COMPA_vect, ISR_BLOCK) if (Endpoint_IsOUTReceived() && StreamingAudioInterfaceSelected) { /* Retrieve the signed 16-bit left and right audio samples, convert to 8-bit */ - int8_t LeftSample_8Bit = ((int16_t)Endpoint_Read_Word_LE() >> 8); - int8_t RightSample_8Bit = ((int16_t)Endpoint_Read_Word_LE() >> 8); + int8_t LeftSample_8Bit = ((int16_t)Endpoint_Read_16_LE() >> 8); + int8_t RightSample_8Bit = ((int16_t)Endpoint_Read_16_LE() >> 8); /* Mix the two channels together to produce a mono, 8-bit sample */ int8_t MixedSample_8Bit = (((int16_t)LeftSample_8Bit + (int16_t)RightSample_8Bit) >> 1);