Add LUFA-side channel open/close routines, add signalling handlers for the creation...
[pub/USBasp.git] / Demos / Device / ClassDriver / AudioInput / AudioInput.c
index 7b7ca2c..22d0173 100644 (file)
@@ -1,21 +1,21 @@
 /*\r
              LUFA Library\r
-     Copyright (C) Dean Camera, 2009.\r
+     Copyright (C) Dean Camera, 2010.\r
               \r
   dean [at] fourwalledcubicle [dot] com\r
       www.fourwalledcubicle.com\r
 */\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
+  Copyright 2010  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\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
@@ -62,8 +62,7 @@ int main(void)
        \r
        for (;;)\r
        {\r
-               if (Microphone_Audio_Interface.State.InterfaceEnabled)\r
-                 ProcessNextSample();\r
+               ProcessNextSample();\r
 \r
                Audio_Device_USBTask(&Microphone_Audio_Interface);\r
                USB_USBTask();\r
@@ -87,7 +86,7 @@ void SetupHardware(void)
        ADC_SetupChannel(MIC_IN_ADC_CHANNEL);\r
        \r
        /* Start the ADC conversion in free running mode */\r
-       ADC_StartReading(ADC_REFERENCE_AVCC | ADC_RIGHT_ADJUSTED | MIC_IN_ADC_CHANNEL);\r
+       ADC_StartReading(ADC_REFERENCE_AVCC | ADC_RIGHT_ADJUSTED | MIC_IN_ADC_MUX_MASK);\r
 }\r
 \r
 /** Processes the next audio sample by reading the last ADC conversion and writing it to the audio\r
@@ -95,6 +94,7 @@ void SetupHardware(void)
  */\r
 void ProcessNextSample(void)\r
 {\r
+       /* Check if the sample reload timer period has elapsed, and that the USB bus is ready for a new sample */\r
        if ((TIFR0 & (1 << OCF0A)) && Audio_Device_IsReadyForNextSample(&Microphone_Audio_Interface))\r
        {\r
                TIFR0 |= (1 << OCF0A);\r
@@ -102,28 +102,28 @@ void ProcessNextSample(void)
                /* Audio sample is ADC value scaled to fit the entire range */\r
                int16_t AudioSample = ((SAMPLE_MAX_RANGE / ADC_MAX_RANGE) * ADC_GetResult());\r
                \r
-#if defined(MICROPHONE_BIASED_TO_HALF_RAIL)\r
+               #if defined(MICROPHONE_BIASED_TO_HALF_RAIL)\r
                /* Microphone is biased to half rail voltage, subtract the bias from the sample value */\r
-               AudioSample -= (SAMPLE_MAX_RANGE / 2));\r
-#endif\r
+               AudioSample -= (SAMPLE_MAX_RANGE / 2);\r
+               #endif\r
 \r
-               Audio_Device_WriteSample16(AudioSample);\r
+               Audio_Device_WriteSample16(&Microphone_Audio_Interface, AudioSample);\r
        }\r
 }\r
 \r
 /** Event handler for the library USB Connection event. */\r
-void EVENT_USB_Connect(void)\r
+void EVENT_USB_Device_Connect(void)\r
 {\r
        LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);\r
 \r
        /* Sample reload timer initialization */\r
-       OCR0A   = (F_CPU / AUDIO_SAMPLE_FREQUENCY) - 1;\r
+       OCR0A   = (F_CPU / 8 / AUDIO_SAMPLE_FREQUENCY) - 1;\r
        TCCR0A  = (1 << WGM01);  // CTC mode\r
-       TCCR0B  = (1 << CS00);   // Fcpu speed\r
+       TCCR0B  = (1 << CS01);   // Fcpu/8 speed\r
 }\r
 \r
 /** Event handler for the library USB Disconnection event. */\r
-void EVENT_USB_Disconnect(void)\r
+void EVENT_USB_Device_Disconnect(void)\r
 {\r
        /* Stop the sample reload timer */\r
        TCCR0B = 0;\r
@@ -132,7 +132,7 @@ void EVENT_USB_Disconnect(void)
 }\r
 \r
 /** Event handler for the library USB Configuration Changed event. */\r
-void EVENT_USB_ConfigurationChanged(void)\r
+void EVENT_USB_Device_ConfigurationChanged(void)\r
 {\r
        LEDs_SetAllLEDs(LEDMASK_USB_READY);\r
        \r
@@ -140,8 +140,8 @@ void EVENT_USB_ConfigurationChanged(void)
          LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
 }\r
 \r
-/** Event handler for the library USB Unhandled Control Packet event. */\r
-void EVENT_USB_UnhandledControlPacket(void)\r
+/** Event handler for the library USB Unhandled Control Request event. */\r
+void EVENT_USB_Device_UnhandledControlRequest(void)\r
 {\r
-       Audio_Device_ProcessControlPacket(&Microphone_Audio_Interface);\r
+       Audio_Device_ProcessControlRequest(&Microphone_Audio_Interface);\r
 }\r