Use immediate variable expansion in the second-deepest level makefile scripts to...
[pub/USBasp.git] / Demos / Device / LowLevel / AudioInput / AudioInput.c
index d791676..925517b 100644 (file)
@@ -1,13 +1,13 @@
 /*
              LUFA Library
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2011.
+     Copyright (C) Dean Camera, 2012.
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
-  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2012  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
@@ -77,7 +77,7 @@ void SetupHardware(void)
        USB_Init();
 
        /* Start the ADC conversion in free running mode */
        USB_Init();
 
        /* Start the ADC conversion in free running mode */
-       ADC_StartReading(ADC_REFERENCE_AVCC | ADC_RIGHT_ADJUSTED | MIC_IN_ADC_MUX_MASK);
+       ADC_StartReading(ADC_REFERENCE_AVCC | ADC_RIGHT_ADJUSTED | ADC_GET_CHANNEL_MASK(MIC_IN_ADC_CHANNEL));
 }
 
 /** Event handler for the USB_Connect event. This indicates that the device is enumerating via the status LEDs, and
 }
 
 /** Event handler for the USB_Connect event. This indicates that the device is enumerating via the status LEDs, and
@@ -118,8 +118,7 @@ void EVENT_USB_Device_ConfigurationChanged(void)
        bool ConfigSuccess = true;
 
        /* Setup Audio Stream Endpoint */
        bool ConfigSuccess = true;
 
        /* Setup Audio Stream Endpoint */
-       ConfigSuccess &= Endpoint_ConfigureEndpoint(AUDIO_STREAM_EPNUM, EP_TYPE_ISOCHRONOUS, ENDPOINT_DIR_IN,
-                                                   AUDIO_STREAM_EPSIZE, ENDPOINT_BANK_DOUBLE);
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(AUDIO_STREAM_EPADDR, EP_TYPE_ISOCHRONOUS, AUDIO_STREAM_EPSIZE, 2);
 
        /* Indicate endpoint configuration success or failure */
        LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 
        /* Indicate endpoint configuration success or failure */
        LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
@@ -160,19 +159,19 @@ void EVENT_USB_Device_ControlRequest(void)
                case AUDIO_REQ_SetCurrent:
                        if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_ENDPOINT))
                        {
                case AUDIO_REQ_SetCurrent:
                        if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_ENDPOINT))
                        {
-                               /* Extract out the relevant request information to get the target Endpoint index and control being set */
-                               uint8_t EndpointIndex   = (uint8_t)USB_ControlRequest.wIndex;
+                               /* Extract out the relevant request information to get the target Endpoint address and control being set */
+                               uint8_t EndpointAddress = (uint8_t)USB_ControlRequest.wIndex;
                                uint8_t EndpointControl = (USB_ControlRequest.wValue >> 8);
                                uint8_t EndpointControl = (USB_ControlRequest.wValue >> 8);
-                               
+
                                /* Only handle SET CURRENT requests to the audio endpoint's sample frequency property */
                                /* Only handle SET CURRENT requests to the audio endpoint's sample frequency property */
-                               if ((EndpointIndex == AUDIO_STREAM_EPNUM) && (EndpointControl == AUDIO_EPCONTROL_SamplingFreq))
+                               if ((EndpointAddress == AUDIO_STREAM_EPADDR) && (EndpointControl == AUDIO_EPCONTROL_SamplingFreq))
                                {
                                        uint8_t SampleRate[3];
                                {
                                        uint8_t SampleRate[3];
-                               
+
                                        Endpoint_ClearSETUP();
                                        Endpoint_Read_Control_Stream_LE(SampleRate, sizeof(SampleRate));
                                        Endpoint_ClearSETUP();
                                        Endpoint_Read_Control_Stream_LE(SampleRate, sizeof(SampleRate));
-                                       Endpoint_ClearOUT();
-                                       
+                                       Endpoint_ClearIN();
+
                                        /* Set the new sampling frequency to the value given by the host */
                                        CurrentAudioSampleFrequency = (((uint32_t)SampleRate[2] << 16) | ((uint32_t)SampleRate[1] << 8) | (uint32_t)SampleRate[0]);
 
                                        /* Set the new sampling frequency to the value given by the host */
                                        CurrentAudioSampleFrequency = (((uint32_t)SampleRate[2] << 16) | ((uint32_t)SampleRate[1] << 8) | (uint32_t)SampleRate[0]);
 
@@ -180,28 +179,28 @@ void EVENT_USB_Device_ControlRequest(void)
                                        OCR0A = ((F_CPU / 8 / CurrentAudioSampleFrequency) - 1);
                                }
                        }
                                        OCR0A = ((F_CPU / 8 / CurrentAudioSampleFrequency) - 1);
                                }
                        }
-                       
+
                        break;
                case AUDIO_REQ_GetCurrent:
                        break;
                case AUDIO_REQ_GetCurrent:
-                       if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_ENDPOINT))
+                       if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_ENDPOINT))
                        {
                        {
-                               /* Extract out the relevant request information to get the target Endpoint index and control being retrieved */
-                               uint8_t EndpointIndex   = (uint8_t)USB_ControlRequest.wIndex;
+                               /* Extract out the relevant request information to get the target Endpoint address and control being retrieved */
+                               uint8_t EndpointAddress = (uint8_t)USB_ControlRequest.wIndex;
                                uint8_t EndpointControl = (USB_ControlRequest.wValue >> 8);
                                uint8_t EndpointControl = (USB_ControlRequest.wValue >> 8);
-                               
+
                                /* Only handle GET CURRENT requests to the audio endpoint's sample frequency property */
                                /* Only handle GET CURRENT requests to the audio endpoint's sample frequency property */
-                               if ((EndpointIndex == AUDIO_STREAM_EPNUM) && (EndpointControl == AUDIO_EPCONTROL_SamplingFreq))
+                               if ((EndpointAddress == AUDIO_STREAM_EPADDR) && (EndpointControl == AUDIO_EPCONTROL_SamplingFreq))
                                {
                                        uint8_t SampleRate[3];
                                {
                                        uint8_t SampleRate[3];
-                                       
+
                                        /* Convert the sampling rate value into the 24-bit format the host expects for the property */
                                        SampleRate[2] = (CurrentAudioSampleFrequency >> 16);
                                        SampleRate[1] = (CurrentAudioSampleFrequency >> 8);
                                        SampleRate[0] = (CurrentAudioSampleFrequency &  0xFF);
                                        /* Convert the sampling rate value into the 24-bit format the host expects for the property */
                                        SampleRate[2] = (CurrentAudioSampleFrequency >> 16);
                                        SampleRate[1] = (CurrentAudioSampleFrequency >> 8);
                                        SampleRate[0] = (CurrentAudioSampleFrequency &  0xFF);
-                               
+
                                        Endpoint_ClearSETUP();
                                        Endpoint_Write_Control_Stream_LE(SampleRate, sizeof(SampleRate));
                                        Endpoint_ClearSETUP();
                                        Endpoint_Write_Control_Stream_LE(SampleRate, sizeof(SampleRate));
-                                       Endpoint_ClearOUT();                                    
+                                       Endpoint_ClearOUT();
                                }
                        }
 
                                }
                        }
 
@@ -215,7 +214,7 @@ ISR(TIMER0_COMPA_vect, ISR_BLOCK)
        uint8_t PrevEndpoint = Endpoint_GetCurrentEndpoint();
 
        /* Select the audio stream endpoint */
        uint8_t PrevEndpoint = Endpoint_GetCurrentEndpoint();
 
        /* Select the audio stream endpoint */
-       Endpoint_SelectEndpoint(AUDIO_STREAM_EPNUM);
+       Endpoint_SelectEndpoint(AUDIO_STREAM_EPADDR);
 
        /* Check if the current endpoint can be written to and that the audio interface is enabled */
        if (Endpoint_IsINReady() && StreamingAudioInterfaceSelected)
 
        /* Check if the current endpoint can be written to and that the audio interface is enabled */
        if (Endpoint_IsINReady() && StreamingAudioInterfaceSelected)
@@ -225,11 +224,11 @@ ISR(TIMER0_COMPA_vect, ISR_BLOCK)
                #if defined(USE_TEST_TONE)
                        static uint8_t SquareWaveSampleCount;
                        static int16_t CurrentWaveValue;
                #if defined(USE_TEST_TONE)
                        static uint8_t SquareWaveSampleCount;
                        static int16_t CurrentWaveValue;
-                       
+
                        /* In test tone mode, generate a square wave at 1/256 of the sample rate */
                        if (SquareWaveSampleCount++ == 0xFF)
                          CurrentWaveValue ^= 0x8000;
                        /* In test tone mode, generate a square wave at 1/256 of the sample rate */
                        if (SquareWaveSampleCount++ == 0xFF)
                          CurrentWaveValue ^= 0x8000;
-                       
+
                        /* Only generate audio if the board button is being pressed */
                        AudioSample = (Buttons_GetStatus() & BUTTONS_BUTTON1) ? CurrentWaveValue : 0;
                #else
                        /* Only generate audio if the board button is being pressed */
                        AudioSample = (Buttons_GetStatus() & BUTTONS_BUTTON1) ? CurrentWaveValue : 0;
                #else
@@ -239,7 +238,7 @@ ISR(TIMER0_COMPA_vect, ISR_BLOCK)
                        #if defined(MICROPHONE_BIASED_TO_HALF_RAIL)
                        /* Microphone is biased to half rail voltage, subtract the bias from the sample value */
                        AudioSample -= (SAMPLE_MAX_RANGE / 2);
                        #if defined(MICROPHONE_BIASED_TO_HALF_RAIL)
                        /* Microphone is biased to half rail voltage, subtract the bias from the sample value */
                        AudioSample -= (SAMPLE_MAX_RANGE / 2);
-                       #endif          
+                       #endif
                #endif
 
                /* Write the sample to the buffer */
                #endif
 
                /* Write the sample to the buffer */