Oops - fix include directory for case-sensitive filesystems.
[pub/USBasp.git] / LUFA / Drivers / USB / Class / Device / Audio.c
index b0800ba..a52e5d3 100644 (file)
@@ -9,13 +9,13 @@
 /*\r
   Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
 \r
 /*\r
   Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
 \r
-  Permission to use, copy, modify, and distribute this software\r
-  and its documentation for any purpose and without fee is hereby\r
-  granted, provided that the above copyright notice appear in all\r
-  copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
+  Permission to use, copy, modify, distribute, and sell this \r
+  software and its documentation for any purpose is hereby granted\r
+  without fee, provided that the above copyright notice appear in \r
+  all copies and that both that the copyright notice and this\r
+  permission notice and warranty disclaimer appear in supporting \r
+  documentation, and that the name of the author not be used in \r
+  advertising or publicity pertaining to distribution of the \r
   software without specific, written prior permission.\r
 \r
   The author disclaim all warranties with regard to this\r
   software without specific, written prior permission.\r
 \r
   The author disclaim all warranties with regard to this\r
   this software.\r
 */\r
 \r
   this software.\r
 */\r
 \r
+#include "../../HighLevel/USBMode.h"\r
+#if defined(USB_CAN_BE_DEVICE)\r
+\r
 #include "Audio.h"\r
 \r
 #include "Audio.h"\r
 \r
-void USB_Audio_ProcessControlPacket(USB_ClassInfo_Audio_t* AudioInterfaceInfo)\r
+void Audio_Device_ProcessControlRequest(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo)\r
 {\r
        if (!(Endpoint_IsSETUPReceived()))\r
          return;\r
          \r
 {\r
        if (!(Endpoint_IsSETUPReceived()))\r
          return;\r
          \r
-//     if (USB_ControlRequest.wIndex != AudioInterfaceInfo->InterfaceNumber)\r
-//       return;\r
+       if (USB_ControlRequest.wIndex != AudioInterfaceInfo->Config.StreamingInterfaceNumber)\r
+         return;\r
 \r
        switch (USB_ControlRequest.bRequest)\r
        {\r
 \r
        switch (USB_ControlRequest.bRequest)\r
        {\r
@@ -45,110 +48,63 @@ void USB_Audio_ProcessControlPacket(USB_ClassInfo_Audio_t* AudioInterfaceInfo)
                        {\r
                                Endpoint_ClearSETUP();\r
                                \r
                        {\r
                                Endpoint_ClearSETUP();\r
                                \r
-                               AudioInterfaceInfo->InterfaceEnabled = (USB_ControlRequest.wValue != 0);\r
+                               AudioInterfaceInfo->State.InterfaceEnabled = ((USB_ControlRequest.wValue & 0xFF) != 0);\r
                                  \r
                                  \r
-                               while (!(Endpoint_IsINReady()));\r
-                               Endpoint_ClearIN();\r
+                               Endpoint_ClearStatusStage();\r
                        }\r
 \r
                        break;\r
        }\r
 }\r
 \r
                        }\r
 \r
                        break;\r
        }\r
 }\r
 \r
-bool USB_Audio_ConfigureEndpoints(USB_ClassInfo_Audio_t* AudioInterfaceInfo)\r
+bool Audio_Device_ConfigureEndpoints(USB_ClassInfo_Audio_Device_t* AudioInterfaceInfo)\r
 {\r
 {\r
-       if (AudioInterfaceInfo->DataINEndpointNumber)\r
+       memset(&AudioInterfaceInfo->State, 0x00, sizeof(AudioInterfaceInfo->State));\r
+\r
+       if (AudioInterfaceInfo->Config.DataINEndpointNumber)\r
        {\r
        {\r
-               if (!(Endpoint_ConfigureEndpoint(AudioInterfaceInfo->DataINEndpointNumber, EP_TYPE_ISOCHRONOUS,\r
-                                                                                ENDPOINT_DIR_IN, AudioInterfaceInfo->DataINEndpointSize,\r
+               if (!(Endpoint_ConfigureEndpoint(AudioInterfaceInfo->Config.DataINEndpointNumber, EP_TYPE_ISOCHRONOUS,\r
+                                                                                ENDPOINT_DIR_IN, AudioInterfaceInfo->Config.DataINEndpointSize,\r
                                                                                 ENDPOINT_BANK_DOUBLE)))\r
                {\r
                        return false;\r
                }\r
        }\r
 \r
                                                                                 ENDPOINT_BANK_DOUBLE)))\r
                {\r
                        return false;\r
                }\r
        }\r
 \r
-       if (AudioInterfaceInfo->DataOUTEndpointNumber)\r
+       if (AudioInterfaceInfo->Config.DataOUTEndpointNumber)\r
        {\r
        {\r
-               if (!(Endpoint_ConfigureEndpoint(AudioInterfaceInfo->DataOUTEndpointNumber, EP_TYPE_ISOCHRONOUS,\r
-                                                                                ENDPOINT_DIR_OUT, AudioInterfaceInfo->DataOUTEndpointSize,\r
+               if (!(Endpoint_ConfigureEndpoint(AudioInterfaceInfo->Config.DataOUTEndpointNumber, EP_TYPE_ISOCHRONOUS,\r
+                                                                                ENDPOINT_DIR_OUT, AudioInterfaceInfo->Config.DataOUTEndpointSize,\r
                                                                                 ENDPOINT_BANK_DOUBLE)))\r
                {\r
                        return false;\r
                }\r
        }\r
                                                                                 ENDPOINT_BANK_DOUBLE)))\r
                {\r
                        return false;\r
                }\r
        }\r
-\r
-       return true;\r
-}\r
-\r
-int8_t USB_Audio_ReadSample8(void)\r
-{\r
-       int8_t Sample;\r
-\r
-       Sample = Endpoint_Read_Byte();\r
-\r
-       if (!(Endpoint_IsReadWriteAllowed()))\r
-         Endpoint_ClearOUT();\r
        \r
        \r
-       return Sample;\r
-}\r
-\r
-int16_t USB_Audio_ReadSample16(void)\r
-{\r
-       int16_t Sample;\r
-\r
-       Sample = (int16_t)Endpoint_Read_Word_LE();\r
-                 \r
-       if (!(Endpoint_IsReadWriteAllowed()))\r
-         Endpoint_ClearOUT();\r
-\r
-       return Sample;\r
-}\r
-\r
-int32_t USB_Audio_ReadSample24(void)\r
-{\r
-       int32_t Sample;\r
-\r
-       Sample = (((uint32_t)Endpoint_Read_Byte() << 16) | Endpoint_Read_Word_LE());\r
-                 \r
-       if (!(Endpoint_IsReadWriteAllowed()))\r
-         Endpoint_ClearOUT();\r
-\r
-       return Sample;\r
-}\r
-\r
-void USB_Audio_WriteSample8(int8_t Sample)\r
-{\r
-       Endpoint_Write_Byte(Sample);\r
-\r
-       if (!(Endpoint_IsReadWriteAllowed()))\r
-         Endpoint_ClearIN();\r
-}\r
-\r
-void USB_Audio_WriteSample16(int16_t Sample)\r
-{\r
-       Endpoint_Write_Word_LE(Sample);\r
-\r
-       if (!(Endpoint_IsReadWriteAllowed()))\r
-         Endpoint_ClearIN();\r
+       return true;\r
 }\r
 \r
 }\r
 \r
-void USB_Audio_WriteSample24(int32_t Sample)\r
+void Audio_Device_USBTask(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo)\r
 {\r
 {\r
-       Endpoint_Write_Byte(Sample >> 16);\r
-       Endpoint_Write_Word_LE(Sample);\r
-\r
-       if (!(Endpoint_IsReadWriteAllowed()))\r
-         Endpoint_ClearIN();\r
+       (void)AudioInterfaceInfo;\r
 }\r
 \r
 }\r
 \r
-bool USB_Audio_IsSampleReceived(USB_ClassInfo_Audio_t* AudioInterfaceInfo)\r
+bool Audio_Device_IsSampleReceived(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo)\r
 {\r
 {\r
-       Endpoint_SelectEndpoint(AudioInterfaceInfo->DataOUTEndpointNumber);\r
+       if ((USB_DeviceState != DEVICE_STATE_Configured) || !(AudioInterfaceInfo->State.InterfaceEnabled))\r
+         return false;\r
+       \r
+       Endpoint_SelectEndpoint(AudioInterfaceInfo->Config.DataOUTEndpointNumber);      \r
        return Endpoint_IsOUTReceived();\r
 }\r
 \r
        return Endpoint_IsOUTReceived();\r
 }\r
 \r
-bool USB_Audio_IsReadyForNextSample(USB_ClassInfo_Audio_t* AudioInterfaceInfo)\r
+bool Audio_Device_IsReadyForNextSample(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo)\r
 {\r
 {\r
-       Endpoint_SelectEndpoint(AudioInterfaceInfo->DataINEndpointNumber);\r
+       if ((USB_DeviceState != DEVICE_STATE_Configured) || !(AudioInterfaceInfo->State.InterfaceEnabled))\r
+         return false;\r
+       \r
+       Endpoint_SelectEndpoint(AudioInterfaceInfo->Config.DataINEndpointNumber);\r
        return Endpoint_IsINReady();\r
 }\r
        return Endpoint_IsINReady();\r
 }\r
+\r
+#endif
\ No newline at end of file