Use immediate variable expansion in the second-deepest level makefile scripts to...
[pub/USBasp.git] / Demos / Device / LowLevel / AudioInput / AudioInput.c
index e00b693..925517b 100644 (file)
@@ -1,13 +1,13 @@
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2011.
+     Copyright (C) Dean Camera, 2012.
 
   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
@@ -77,7 +77,7 @@ void SetupHardware(void)
        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
@@ -118,8 +118,7 @@ void EVENT_USB_Device_ConfigurationChanged(void)
        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);
@@ -163,16 +162,16 @@ void EVENT_USB_Device_ControlRequest(void)
                                /* 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);
-                               
+
                                /* Only handle SET CURRENT requests to the audio endpoint's sample frequency property */
-                               if ((EndpointAddress == (ENDPOINT_DESCRIPTOR_DIR_IN | AUDIO_STREAM_EPNUM)) && (EndpointControl == AUDIO_EPCONTROL_SamplingFreq))
+                               if ((EndpointAddress == AUDIO_STREAM_EPADDR) && (EndpointControl == AUDIO_EPCONTROL_SamplingFreq))
                                {
                                        uint8_t SampleRate[3];
-                               
+
                                        Endpoint_ClearSETUP();
                                        Endpoint_Read_Control_Stream_LE(SampleRate, sizeof(SampleRate));
                                        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]);
 
@@ -180,7 +179,7 @@ void EVENT_USB_Device_ControlRequest(void)
                                        OCR0A = ((F_CPU / 8 / CurrentAudioSampleFrequency) - 1);
                                }
                        }
-                       
+
                        break;
                case AUDIO_REQ_GetCurrent:
                        if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_ENDPOINT))
@@ -188,20 +187,20 @@ void EVENT_USB_Device_ControlRequest(void)
                                /* 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);
-                               
+
                                /* Only handle GET CURRENT requests to the audio endpoint's sample frequency property */
-                               if ((EndpointAddress == (ENDPOINT_DESCRIPTOR_DIR_IN | AUDIO_STREAM_EPNUM)) && (EndpointControl == AUDIO_EPCONTROL_SamplingFreq))
+                               if ((EndpointAddress == AUDIO_STREAM_EPADDR) && (EndpointControl == AUDIO_EPCONTROL_SamplingFreq))
                                {
                                        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);
-                               
+
                                        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 */
-       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)
@@ -225,11 +224,11 @@ ISR(TIMER0_COMPA_vect, ISR_BLOCK)
                #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;
-                       
+
                        /* 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);
-                       #endif          
+                       #endif
                #endif
 
                /* Write the sample to the buffer */