Fixed compile errors in the incomplete BluetoothHost demo application (thanks to...
[pub/lufa.git] / Demos / Device / LowLevel / AudioOutput / AudioOutput.c
index 178fd5b..22cfac4 100644 (file)
@@ -1,13 +1,13 @@
 /*
              LUFA Library
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2010.
+     Copyright (C) Dean Camera, 2011.
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
 
   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
 
   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. */
 #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.
 
 /** Main program entry point. This routine contains the overall program flow, including initial
  *  setup of all components and the main program loop.
@@ -168,6 +169,15 @@ void EVENT_USB_Device_ControlRequest(void)
                        }
 
                        break;
                        }
 
                        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 */
        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);
 
                /* 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);