Commit for the 090810 release.
[pub/USBasp.git] / Demos / Device / LowLevel / AudioInput / AudioInput.c
index 50e7f4d..a01c672 100644 (file)
@@ -78,7 +78,7 @@ void SetupHardware(void)
 /** Event handler for the USB_Connect event. This indicates that the device is enumerating via the status LEDs, and\r
  *  configures the sample update and PWM timers.\r
  */\r
 /** Event handler for the USB_Connect event. This indicates that the device is enumerating via the status LEDs, and\r
  *  configures the sample update and PWM timers.\r
  */\r
-void EVENT_USB_Connect(void)\r
+void EVENT_USB_Device_Connect(void)\r
 {\r
        /* Indicate USB enumerating */\r
        LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);\r
 {\r
        /* Indicate USB enumerating */\r
        LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);\r
@@ -92,7 +92,7 @@ void EVENT_USB_Connect(void)
 /** Event handler for the USB_Disconnect event. This indicates that the device is no longer connected to a host via\r
  *  the status LEDs, disables the sample update and PWM output timers and stops the USB and Audio management tasks.\r
  */\r
 /** Event handler for the USB_Disconnect event. This indicates that the device is no longer connected to a host via\r
  *  the status LEDs, disables the sample update and PWM output timers and stops the USB and Audio management tasks.\r
  */\r
-void EVENT_USB_Disconnect(void)\r
+void EVENT_USB_Device_Disconnect(void)\r
 {\r
        /* Stop the sample reload timer */\r
        TCCR0B = 0;\r
 {\r
        /* Stop the sample reload timer */\r
        TCCR0B = 0;\r
@@ -107,7 +107,7 @@ void EVENT_USB_Disconnect(void)
 /** Event handler for the USB_ConfigurationChanged event. This is fired when the host set the current configuration\r
  *  of the USB device after enumeration - the device endpoints are configured.\r
  */\r
 /** Event handler for the USB_ConfigurationChanged event. This is fired when the host set the current configuration\r
  *  of the USB device after enumeration - the device endpoints are configured.\r
  */\r
-void EVENT_USB_ConfigurationChanged(void)\r
+void EVENT_USB_Device_ConfigurationChanged(void)\r
 {\r
        /* Indicate USB connected and ready */\r
        LEDs_SetAllLEDs(LEDMASK_USB_READY);\r
 {\r
        /* Indicate USB connected and ready */\r
        LEDs_SetAllLEDs(LEDMASK_USB_READY);\r
@@ -121,11 +121,11 @@ void EVENT_USB_ConfigurationChanged(void)
        }\r
 }\r
 \r
        }\r
 }\r
 \r
-/** Event handler for the USB_UnhandledControlPacket event. This is used to catch standard and class specific\r
+/** Event handler for the USB_UnhandledControlRequest event. This is used to catch standard and class specific\r
  *  control requests that are not handled internally by the USB library (including the Audio class-specific\r
  *  requests) so that they can be handled appropriately for the application.\r
  */\r
  *  control requests that are not handled internally by the USB library (including the Audio class-specific\r
  *  requests) so that they can be handled appropriately for the application.\r
  */\r
-void EVENT_USB_UnhandledControlPacket(void)\r
+void EVENT_USB_Device_UnhandledControlRequest(void)\r
 {\r
        /* Process General and Audio specific control requests */\r
        switch (USB_ControlRequest.bRequest)\r
 {\r
        /* Process General and Audio specific control requests */\r
        switch (USB_ControlRequest.bRequest)\r
@@ -139,9 +139,7 @@ void EVENT_USB_UnhandledControlPacket(void)
                                /* Check if the host is enabling the audio interface (setting AlternateSetting to 1) */\r
                                StreamingAudioInterfaceSelected = ((USB_ControlRequest.wValue) != 0);\r
                                \r
                                /* Check if the host is enabling the audio interface (setting AlternateSetting to 1) */\r
                                StreamingAudioInterfaceSelected = ((USB_ControlRequest.wValue) != 0);\r
                                \r
-                               /* Acknowledge status stage */\r
-                               while (!(Endpoint_IsINReady()));\r
-                               Endpoint_ClearIN();\r
+                               Endpoint_ClearStatusStage();\r
                        }\r
 \r
                        break;\r
                        }\r
 \r
                        break;\r
@@ -151,6 +149,10 @@ void EVENT_USB_UnhandledControlPacket(void)
 /** Task to manage the Audio interface, reading in ADC samples from the microphone, and them to the host. */\r
 void USB_Audio_Task(void)\r
 {\r
 /** Task to manage the Audio interface, reading in ADC samples from the microphone, and them to the host. */\r
 void USB_Audio_Task(void)\r
 {\r
+       /* Device must be connected and configured for the task to run */\r
+       if (USB_DeviceState != DEVICE_STATE_Configured)\r
+         return;\r
+\r
        /* Check to see if the streaming interface is selected, if not the host is not receiving audio */\r
        if (!(StreamingAudioInterfaceSelected))\r
          return;\r
        /* Check to see if the streaming interface is selected, if not the host is not receiving audio */\r
        if (!(StreamingAudioInterfaceSelected))\r
          return;\r