diff options
Diffstat (limited to 'Demos/Device/LowLevel/AudioOutput')
-rw-r--r-- | Demos/Device/LowLevel/AudioOutput/AudioOutput.c | 31 | ||||
-rw-r--r-- | Demos/Device/LowLevel/AudioOutput/AudioOutput.h | 19 | ||||
-rw-r--r-- | Demos/Device/LowLevel/AudioOutput/AudioOutput.txt | 11 | ||||
-rw-r--r-- | Demos/Device/LowLevel/AudioOutput/Descriptors.c | 135 | ||||
-rw-r--r-- | Demos/Device/LowLevel/AudioOutput/Descriptors.h | 69 | ||||
-rw-r--r-- | Demos/Device/LowLevel/AudioOutput/makefile | 49 |
6 files changed, 160 insertions, 154 deletions
diff --git a/Demos/Device/LowLevel/AudioOutput/AudioOutput.c b/Demos/Device/LowLevel/AudioOutput/AudioOutput.c index fbadf8d0b..e33eb401e 100644 --- a/Demos/Device/LowLevel/AudioOutput/AudioOutput.c +++ b/Demos/Device/LowLevel/AudioOutput/AudioOutput.c @@ -1,7 +1,7 @@ /* LUFA Library Copyright (C) Dean Camera, 2010. - + dean [at] fourwalledcubicle [dot] com www.fourwalledcubicle.com */ @@ -9,13 +9,13 @@ /* Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) - Permission to use, copy, modify, distribute, and sell this + Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in + without fee, provided that the above copyright notice appear in all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the software without specific, written prior permission. The author disclaim all warranties with regard to this @@ -33,7 +33,7 @@ * Main source file for the AudioOutput demo. This file contains the main tasks of the demo and * is responsible for the initial application hardware configuration. */ - + #include "AudioOutput.h" /** Flag to indicate if the streaming audio alternative interface has been selected by the host. */ @@ -48,7 +48,7 @@ int main(void) LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); sei(); - + for (;;) { USB_Audio_Task(); @@ -65,7 +65,7 @@ void SetupHardware(void) /* Disable clock division */ clock_prescale_set(clock_div_1); - + /* Hardware Initialization */ LEDs_Init(); USB_Init(); @@ -78,12 +78,12 @@ void EVENT_USB_Device_Connect(void) { /* Indicate USB enumerating */ LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING); - + /* Sample reload timer initialization */ OCR0A = (F_CPU / 8 / AUDIO_SAMPLE_FREQUENCY) - 1; TCCR0A = (1 << WGM01); // CTC mode TCCR0B = (1 << CS01); // Fcpu/8 speed - + #if defined(AUDIO_OUT_MONO) /* Set speaker as output */ DDRC |= (1 << 6); @@ -100,7 +100,7 @@ void EVENT_USB_Device_Connect(void) TCCR3A = ((1 << WGM30) | (1 << COM3A1) | (1 << COM3A0) | (1 << COM3B1) | (1 << COM3B0)); // Set on match, clear on TOP TCCR3B = ((1 << WGM32) | (1 << CS30)); // Fast 8-Bit PWM, F_CPU speed -#endif +#endif } /** Event handler for the USB_Disconnect event. This indicates that the device is no longer connected to a host via @@ -112,7 +112,7 @@ void EVENT_USB_Device_Disconnect(void) TCCR0B = 0; #if (defined(AUDIO_OUT_MONO) || defined(AUDIO_OUT_STEREO)) TCCR3B = 0; -#endif +#endif #if defined(AUDIO_OUT_MONO) /* Set speaker as input to reduce current draw */ @@ -182,11 +182,11 @@ void USB_Audio_Task(void) /* Check to see if the streaming interface is selected, if not the host is not receiving audio */ if (!(StreamingAudioInterfaceSelected)) - return; + return; /* Select the audio stream endpoint */ Endpoint_SelectEndpoint(AUDIO_STREAM_EPNUM); - + /* Check if the current endpoint can be read from (contains a packet) and that the next sample should be read */ if (Endpoint_IsOUTReceived() && (TIFR0 & (1 << OCF0A))) { @@ -234,3 +234,4 @@ void USB_Audio_Task(void) LEDs_SetAllLEDs(LEDMask); } } + diff --git a/Demos/Device/LowLevel/AudioOutput/AudioOutput.h b/Demos/Device/LowLevel/AudioOutput/AudioOutput.h index de7b07175..7e224f23c 100644 --- a/Demos/Device/LowLevel/AudioOutput/AudioOutput.h +++ b/Demos/Device/LowLevel/AudioOutput/AudioOutput.h @@ -1,7 +1,7 @@ /* LUFA Library Copyright (C) Dean Camera, 2010. - + dean [at] fourwalledcubicle [dot] com www.fourwalledcubicle.com */ @@ -9,13 +9,13 @@ /* Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) - Permission to use, copy, modify, distribute, and sell this + Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in + without fee, provided that the above copyright notice appear in all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the software without specific, written prior permission. The author disclaim all warranties with regard to this @@ -43,11 +43,11 @@ #include <avr/interrupt.h> #include "Descriptors.h" - + #include <LUFA/Version.h> #include <LUFA/Drivers/USB/USB.h> #include <LUFA/Drivers/Board/LEDs.h> - + /* Macros: */ /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */ #define LEDMASK_USB_NOTREADY LEDS_LED1 @@ -60,7 +60,7 @@ /** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */ #define LEDMASK_USB_ERROR (LEDS_LED1 | LEDS_LED3) - + /* Function Prototypes: */ void SetupHardware(void); void USB_Audio_Task(void); @@ -71,3 +71,4 @@ void EVENT_USB_Device_UnhandledControlRequest(void); #endif + diff --git a/Demos/Device/LowLevel/AudioOutput/AudioOutput.txt b/Demos/Device/LowLevel/AudioOutput/AudioOutput.txt index 079b537b0..c42fc744b 100644 --- a/Demos/Device/LowLevel/AudioOutput/AudioOutput.txt +++ b/Demos/Device/LowLevel/AudioOutput/AudioOutput.txt @@ -3,7 +3,7 @@ * This file contains special DoxyGen information for the generation of the main page and other special * documentation pages. It is not a project source file. */ - + /** \mainpage Audio Output Device Demo * * \section SSec_Compat Demo Compatibility: @@ -27,7 +27,7 @@ * <td><b>USB Class:</b></td> * <td>Audio Class</td> * </tr> - * <tr> + * <tr> * <td><b>USB Subclass:</b></td> * <td>Standard Audio Device</td> * </tr> @@ -43,13 +43,13 @@ * </tr> * </table> * - * \section SSec_Description Project Description: + * \section SSec_Description Project Description: * * Audio demonstration application. This gives a simple reference * application for implementing a USB Audio Output device using the * basic USB Audio 1.0 drivers in all modern OSes (i.e. no special drivers * required). - * + * * On start-up the system will automatically enumerate and function * as a USB speaker. Outgoing audio will output in 8-bit PWM onto * the timer 3 output compare channel A for AUDIO_OUT_MONO mode, on @@ -57,7 +57,7 @@ * mono sample for AUDIO_OUT_PORTC. Audio output will also be indicated on * the board LEDs in all modes. Decouple audio outputs with a capacitor and * attach to a speaker to hear the audio. - * + * * Under Windows, if a driver request dialogue pops up, select the option * to automatically install the appropriate drivers. * @@ -94,3 +94,4 @@ * </tr> * </table> */ + diff --git a/Demos/Device/LowLevel/AudioOutput/Descriptors.c b/Demos/Device/LowLevel/AudioOutput/Descriptors.c index 1194568ad..cc3d8ccae 100644 --- a/Demos/Device/LowLevel/AudioOutput/Descriptors.c +++ b/Demos/Device/LowLevel/AudioOutput/Descriptors.c @@ -1,7 +1,7 @@ /* LUFA Library Copyright (C) Dean Camera, 2010. - + dean [at] fourwalledcubicle [dot] com www.fourwalledcubicle.com */ @@ -9,13 +9,13 @@ /* Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) - Permission to use, copy, modify, distribute, and sell this + Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in + without fee, provided that the above copyright notice appear in all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the software without specific, written prior permission. The author disclaim all warranties with regard to this @@ -30,11 +30,11 @@ /** \file * - * USB Device Descriptors, for library use when in USB device mode. Descriptors are special + * USB Device Descriptors, for library use when in USB device mode. Descriptors are special * computer-readable structures which the host requests upon device enumeration, to determine - * the device's capabilities and functions. + * the device's capabilities and functions. */ - + #include "Descriptors.h" /** Device descriptor structure. This descriptor, located in FLASH memory, describes the overall @@ -45,22 +45,22 @@ USB_Descriptor_Device_t PROGMEM DeviceDescriptor = { .Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device}, - + .USBSpecification = VERSION_BCD(01.10), .Class = 0x00, .SubClass = 0x00, .Protocol = 0x00, - + .Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE, - + .VendorID = 0x03EB, .ProductID = 0x2046, .ReleaseNumber = VERSION_BCD(00.01), - + .ManufacturerStrIndex = 0x01, .ProductStrIndex = 0x02, .SerialNumStrIndex = NO_DESCRIPTOR, - + .NumberOfConfigurations = FIXED_NUM_CONFIGURATIONS }; @@ -71,7 +71,7 @@ USB_Descriptor_Device_t PROGMEM DeviceDescriptor = */ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = { - .Config = + .Config = { .Header = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration}, @@ -80,134 +80,134 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = .ConfigurationNumber = 1, .ConfigurationStrIndex = NO_DESCRIPTOR, - + .ConfigAttributes = (USB_CONFIG_ATTR_BUSPOWERED | USB_CONFIG_ATTR_SELFPOWERED), - + .MaxPowerConsumption = USB_CONFIG_POWER_MA(100) }, - - .Audio_ControlInterface = + + .Audio_ControlInterface = { .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, .InterfaceNumber = 0, .AlternateSetting = 0, - + .TotalEndpoints = 0, - + .Class = 0x01, .SubClass = 0x01, .Protocol = 0x00, - + .InterfaceStrIndex = NO_DESCRIPTOR }, - - .Audio_ControlInterface_SPC = + + .Audio_ControlInterface_SPC = { .Header = {.Size = sizeof(USB_Audio_Interface_AC_t), .Type = DTYPE_CSInterface}, .Subtype = DSUBTYPE_AudioHeader, - + .ACSpecification = VERSION_BCD(01.00), .TotalLength = (sizeof(USB_Audio_Interface_AC_t) + sizeof(USB_Audio_InputTerminal_t) + sizeof(USB_Audio_OutputTerminal_t)), - + .InCollection = 1, .InterfaceNumbers = {1}, }, - .Audio_InputTerminal = + .Audio_InputTerminal = { .Header = {.Size = sizeof(USB_Audio_InputTerminal_t), .Type = DTYPE_CSInterface}, .Subtype = DSUBTYPE_InputTerminal, - + .TerminalID = 0x01, .TerminalType = TERMINAL_STREAMING, .AssociatedOutputTerminal = 0x00, - + .TotalChannels = 2, .ChannelConfig = (CHANNEL_LEFT_FRONT | CHANNEL_RIGHT_FRONT), - + .ChannelStrIndex = NO_DESCRIPTOR, .TerminalStrIndex = NO_DESCRIPTOR }, - .Audio_OutputTerminal = + .Audio_OutputTerminal = { .Header = {.Size = sizeof(USB_Audio_OutputTerminal_t), .Type = DTYPE_CSInterface}, .Subtype = DSUBTYPE_OutputTerminal, - + .TerminalID = 0x02, .TerminalType = TERMINAL_OUT_SPEAKER, .AssociatedInputTerminal = 0x00, - + .SourceID = 0x01, - - .TerminalStrIndex = NO_DESCRIPTOR + + .TerminalStrIndex = NO_DESCRIPTOR }, - .Audio_StreamInterface_Alt0 = + .Audio_StreamInterface_Alt0 = { .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, .InterfaceNumber = 1, .AlternateSetting = 0, - + .TotalEndpoints = 0, - + .Class = 0x01, .SubClass = 0x02, .Protocol = 0x00, - + .InterfaceStrIndex = NO_DESCRIPTOR }, - .Audio_StreamInterface_Alt1 = + .Audio_StreamInterface_Alt1 = { .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, .InterfaceNumber = 1, .AlternateSetting = 1, - + .TotalEndpoints = 1, - + .Class = 0x01, .SubClass = 0x02, .Protocol = 0x00, - + .InterfaceStrIndex = NO_DESCRIPTOR }, - - .Audio_StreamInterface_SPC = + + .Audio_StreamInterface_SPC = { .Header = {.Size = sizeof(USB_Audio_Interface_AS_t), .Type = DTYPE_CSInterface}, .Subtype = DSUBTYPE_General, - + .TerminalLink = 0x01, - + .FrameDelay = 1, .AudioFormat = 0x0001 }, - - .Audio_AudioFormat = + + .Audio_AudioFormat = { .Header = {.Size = sizeof(USB_Audio_Format_t), .Type = DTYPE_CSInterface}, .Subtype = DSUBTYPE_Format, .FormatType = 0x01, .Channels = 0x02, - + .SubFrameSize = 0x02, .BitResolution = 16, .SampleFrequencyType = (sizeof(ConfigurationDescriptor.Audio_AudioFormat.SampleFrequencies) / - sizeof(Audio_SampleFreq_t)), + sizeof(Audio_SampleFreq_t)), .SampleFrequencies = {SAMPLE_FREQ(AUDIO_SAMPLE_FREQUENCY)} }, - - .Audio_StreamEndpoint = + + .Audio_StreamEndpoint = { - .Endpoint = + .Endpoint = { .Header = {.Size = sizeof(USB_Audio_StreamEndpoint_Std_t), .Type = DTYPE_Endpoint}, @@ -216,18 +216,18 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = .EndpointSize = AUDIO_STREAM_EPSIZE, .PollingIntervalMS = 1 }, - + .Refresh = 0, .SyncEndpointNumber = 0 }, - - .Audio_StreamEndpoint_SPC = + + .Audio_StreamEndpoint_SPC = { .Header = {.Size = sizeof(USB_Audio_StreamEndpoint_Spc_t), .Type = DTYPE_CSEndpoint}, .Subtype = DSUBTYPE_General, - + .Attributes = EP_ACCEPTS_SMALL_PACKETS, - + .LockDelayUnits = 0x00, .LockDelay = 0x0000 } @@ -240,7 +240,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = USB_Descriptor_String_t PROGMEM LanguageString = { .Header = {.Size = USB_STRING_LEN(1), .Type = DTYPE_String}, - + .UnicodeString = {LANGUAGE_ID_ENG} }; @@ -251,7 +251,7 @@ USB_Descriptor_String_t PROGMEM LanguageString = USB_Descriptor_String_t PROGMEM ManufacturerString = { .Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String}, - + .UnicodeString = L"Dean Camera" }; @@ -262,7 +262,7 @@ USB_Descriptor_String_t PROGMEM ManufacturerString = USB_Descriptor_String_t PROGMEM ProductString = { .Header = {.Size = USB_STRING_LEN(19), .Type = DTYPE_String}, - + .UnicodeString = L"LUFA Audio Out Demo" }; @@ -292,26 +292,27 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, Address = &ConfigurationDescriptor; Size = sizeof(USB_Descriptor_Configuration_t); break; - case DTYPE_String: + case DTYPE_String: switch (DescriptorNumber) { case 0x00: Address = &LanguageString; Size = pgm_read_byte(&LanguageString.Header.Size); break; - case 0x01: + case 0x01: Address = &ManufacturerString; Size = pgm_read_byte(&ManufacturerString.Header.Size); break; - case 0x02: + case 0x02: Address = &ProductString; Size = pgm_read_byte(&ProductString.Header.Size); break; } - + break; } - + *DescriptorAddress = Address; return Size; } + diff --git a/Demos/Device/LowLevel/AudioOutput/Descriptors.h b/Demos/Device/LowLevel/AudioOutput/Descriptors.h index cd6b2b8cf..c8b43b617 100644 --- a/Demos/Device/LowLevel/AudioOutput/Descriptors.h +++ b/Demos/Device/LowLevel/AudioOutput/Descriptors.h @@ -1,7 +1,7 @@ /* LUFA Library Copyright (C) Dean Camera, 2010. - + dean [at] fourwalledcubicle [dot] com www.fourwalledcubicle.com */ @@ -9,13 +9,13 @@ /* Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) - Permission to use, copy, modify, distribute, and sell this + Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in + without fee, provided that the above copyright notice appear in all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the software without specific, written prior permission. The author disclaim all warranties with regard to this @@ -32,7 +32,7 @@ * * Header file for Descriptors.c. */ - + #ifndef _DESCRIPTORS_H_ #define _DESCRIPTORS_H_ @@ -59,7 +59,7 @@ /** Audio class descriptor subtype value for an Audio class specific descriptor indicating the format of an audio stream. */ #define DSUBTYPE_Format 0x02 - + //@{ /** Supported channel mask for an Audio class terminal descriptor. See the Audio class specification for more details. */ @@ -94,7 +94,7 @@ //@{ /** Terminal type constant for an Audio class terminal descriptor. See the Audio class specification for more details. */ - + #define TERMINAL_UNDEFINED 0x0100 #define TERMINAL_STREAMING 0x0101 #define TERMINAL_VENDOR 0x01FF @@ -120,7 +120,7 @@ * \param[in] freq Required audio sampling frequency in HZ */ #define SAMPLE_FREQ(freq) {LowWord: ((uint32_t)(freq) & 0x00FFFF), HighByte: (((uint32_t)(freq) >> 16) & 0x0000FF)} - + /** Mask for the attributes parameter of an Audio class specific Endpoint descriptor, indicating that the endpoint * accepts only filled endpoint packets of audio samples. */ @@ -133,16 +133,16 @@ /** Endpoint number of the Audio isochronous streaming data endpoint. */ #define AUDIO_STREAM_EPNUM 1 - + /** Endpoint size in bytes of the Audio isochronous streaming data endpoint. The Windows audio stack requires * at least 192 bytes for correct output, thus the smaller 128 byte maximum endpoint size on some of the smaller * USB AVR models will result in unavoidable distorted output. */ #define AUDIO_STREAM_EPSIZE ENDPOINT_MAX_SIZE(AUDIO_STREAM_EPNUM) - + /** Sample frequency of the data being transmitted through the streaming endpoint. */ #define AUDIO_SAMPLE_FREQUENCY 48000 - + /* Type Defines: */ /** Type define for an Audio class specific interface descriptor. This follows a regular interface descriptor to * supply extra information about the audio device's layout to the host. See the USB Audio specification for more @@ -155,11 +155,11 @@ uint16_t ACSpecification; /**< Binary coded decimal value, indicating the supported Audio Class specification version */ uint16_t TotalLength; /**< Total length of the Audio class specific descriptors, including this descriptor */ - + uint8_t InCollection; /**< Total number of audio class interfaces within this device */ uint8_t InterfaceNumbers[1]; /**< Interface numbers of each audio interface */ } USB_Audio_Interface_AC_t; - + /** Type define for an Audio class specific Feature Unit descriptor. This indicates to the host what features * are present in the device's audio stream for basic control, such as per-channel volume. See the USB Audio * specification for more details. @@ -168,13 +168,13 @@ { USB_Descriptor_Header_t Header; /**< Regular descriptor header containing the descriptor's type and length */ uint8_t Subtype; /**< Sub type value used to distinguish between audio class specific descriptors */ - + uint8_t UnitID; /**< ID value of this feature unit - must be a unique value within the device */ uint8_t SourceID; /**< Source ID value of the audio source input into this feature unit */ - + uint8_t ControlSize; /**< Size of each element in the ChanelControlls array */ uint8_t ChannelControls[3]; /**< Feature masks for the control channel, and each separate audio channel */ - + uint8_t FeatureUnitStrIndex; /**< Index of a string descriptor describing this descriptor within the device */ } USB_Audio_FeatureUnit_t; @@ -186,7 +186,7 @@ { USB_Descriptor_Header_t Header; /**< Regular descriptor header containing the descriptor's type and length */ uint8_t Subtype; /**< Sub type value used to distinguish between audio class specific descriptors */ - + uint8_t TerminalID; /**< ID value of this terminal unit - must be a unique value within the device */ uint16_t TerminalType; /**< Type of terminal, a TERMINAL_* mask */ uint8_t AssociatedOutputTerminal; /**< ID of associated output terminal, for physically grouped terminals @@ -194,7 +194,7 @@ */ uint8_t TotalChannels; /**< Total number of separate audio channels within this interface (right, left, etc.) */ uint16_t ChannelConfig; /**< CHANNEL_* masks indicating what channel layout is supported by this terminal */ - + uint8_t ChannelStrIndex; /**< Index of a string descriptor describing this channel within the device */ uint8_t TerminalStrIndex; /**< Index of a string descriptor describing this descriptor within the device */ } USB_Audio_InputTerminal_t; @@ -207,17 +207,17 @@ { USB_Descriptor_Header_t Header; /**< Regular descriptor header containing the descriptor's type and length */ uint8_t Subtype; /**< Sub type value used to distinguish between audio class specific descriptors */ - + uint8_t TerminalID; /**< ID value of this terminal unit - must be a unique value within the device */ uint16_t TerminalType; /**< Type of terminal, a TERMINAL_* mask */ uint8_t AssociatedInputTerminal; /**< ID of associated input terminal, for physically grouped terminals * such as the speaker and microphone of a phone handset */ uint8_t SourceID; /**< ID value of the unit this terminal's audio is sourced from */ - + uint8_t TerminalStrIndex; /**< Index of a string descriptor describing this descriptor within the device */ } USB_Audio_OutputTerminal_t; - + /** Type define for an Audio class specific streaming interface descriptor. This indicates to the host * how audio streams within the device are formatted. See the USB Audio specification for more details. */ @@ -225,13 +225,13 @@ { USB_Descriptor_Header_t Header; /**< Regular descriptor header containing the descriptor's type and length */ uint8_t Subtype; /**< Sub type value used to distinguish between audio class specific descriptors */ - + uint8_t TerminalLink; /**< ID value of the output terminal this descriptor is describing */ - + uint8_t FrameDelay; /**< Delay in frames resulting from the complete sample processing from input to output */ uint16_t AudioFormat; /**< Format of the audio stream, see Audio Device Formats specification */ } USB_Audio_Interface_AS_t; - + /** Type define for a 24bit audio sample frequency structure. GCC does not contain a built in 24bit datatype, * this this structure is used to build up the value instead. Fill this structure with the SAMPLE_FREQ() macro. */ @@ -252,15 +252,15 @@ uint8_t FormatType; /**< Format of the audio stream, see Audio Device Formats specification */ uint8_t Channels; /**< Total number of discrete channels in the stream */ - + uint8_t SubFrameSize; /**< Size in bytes of each channel's sample data in the stream */ uint8_t BitResolution; /**< Bits of resolution of each channel's samples in the stream */ - uint8_t SampleFrequencyType; /**< Total number of sample frequencies supported by the device */ + uint8_t SampleFrequencyType; /**< Total number of sample frequencies supported by the device */ Audio_SampleFreq_t SampleFrequencies[1]; /**< Sample frequencies supported by the device */ } USB_Audio_Format_t; - - /** Type define for an Audio class specific endpoint descriptor. This contains a regular endpoint + + /** Type define for an Audio class specific endpoint descriptor. This contains a regular endpoint * descriptor with a few Audio-class specific extensions. See the USB Audio specification for more details. */ typedef struct @@ -270,7 +270,7 @@ uint8_t Refresh; /**< Always set to zero */ uint8_t SyncEndpointNumber; /**< Endpoint address to send synchronization information to, if needed (zero otherwise) */ } USB_Audio_StreamEndpoint_Std_t; - + /** Type define for an Audio class specific extended endpoint descriptor. This contains extra information * on the usage of endpoints used to stream audio in and out of the USB Audio device, and follows an Audio * class specific extended endpoint descriptor. See the USB Audio specification for more details. @@ -279,12 +279,12 @@ { USB_Descriptor_Header_t Header; /**< Regular descriptor header containing the descriptor's type and length */ uint8_t Subtype; /**< Sub type value used to distinguish between audio class specific descriptors */ - + uint8_t Attributes; /**< Audio class specific endpoint attributes, such as ACCEPTS_SMALL_PACKETS */ uint8_t LockDelayUnits; /**< Units used for the LockDelay field, see Audio class specification */ uint16_t LockDelay; /**< Time required to internally lock endpoint's internal clock recovery circuitry */ - } USB_Audio_StreamEndpoint_Spc_t; + } USB_Audio_StreamEndpoint_Spc_t; /** Type define for the device configuration descriptor structure. This must be defined in the * application code, as the configuration descriptor contains several sub-descriptors which @@ -304,7 +304,7 @@ USB_Audio_StreamEndpoint_Std_t Audio_StreamEndpoint; USB_Audio_StreamEndpoint_Spc_t Audio_StreamEndpoint_SPC; } USB_Descriptor_Configuration_t; - + /* Function Prototypes: */ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, @@ -312,3 +312,4 @@ ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); #endif + diff --git a/Demos/Device/LowLevel/AudioOutput/makefile b/Demos/Device/LowLevel/AudioOutput/makefile index 6bcfcafd5..1f526006c 100644 --- a/Demos/Device/LowLevel/AudioOutput/makefile +++ b/Demos/Device/LowLevel/AudioOutput/makefile @@ -47,7 +47,7 @@ # make doxygen = Generate DoxyGen documentation for the project (must have # DoxyGen installed) # -# make debug = Start either simulavr or avarice as specified for debugging, +# make debug = Start either simulavr or avarice as specified for debugging, # with avr-gdb or avr-insight as the front end for debugging. # # make filename.s = Just compile filename.c into the assembler code only. @@ -64,14 +64,14 @@ MCU = at90usb1287 # Target board (see library "Board Types" documentation, NONE for projects not requiring -# LUFA board drivers). If USER is selected, put custom board drivers in a directory called +# LUFA board drivers). If USER is selected, put custom board drivers in a directory called # "Board" inside the application directory. BOARD = USBKEY # Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to # calculate timings. Do NOT tack on a 'UL' at the end, this will be done # automatically to create a 32-bit value in your source code. # @@ -84,7 +84,7 @@ F_CPU = 8000000 # Input clock frequency. -# This will define a symbol, F_CLOCK, in all source code files equal to the +# This will define a symbol, F_CLOCK, in all source code files equal to the # input clock frequency (before any prescaling is performed) in Hz. This value may # differ from F_CPU if prescaling is used on the latter, and is required as the # raw input clock is fed directly to the PLL sections of the AVR for high speed @@ -138,7 +138,7 @@ SRC = $(TARGET).c \ # List C++ source files here. (C dependencies are automatically generated.) -CPPSRC = +CPPSRC = # List Assembler source files here. @@ -151,7 +151,7 @@ CPPSRC = ASRC = -# Optimization level, can be [0, 1, 2, 3, s]. +# Optimization level, can be [0, 1, 2, 3, s]. # 0 = turn off optimization. s = optimize for size. # (Note: 3 is not always the best optimization level. See avr-libc FAQ.) OPT = s @@ -265,7 +265,7 @@ CPPFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) # for use in COFF files, additional information about filenames # and function names needs to be present in the assembler source # files -- see avr-libc docs [FIXME: not yet described there] -# -listing-cont-lines: Sets the maximum number of continuation lines of hex +# -listing-cont-lines: Sets the maximum number of continuation lines of hex # dump that will be displayed for a given single line of source input. ASFLAGS = $(ADEFS) -Wa,-adhlns=$(<:%.S=$(OBJDIR)/%.lst),-gstabs,--listing-cont-lines=100 @@ -278,7 +278,7 @@ PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt # If this is left blank, then it will use the Standard printf version. -PRINTF_LIB = +PRINTF_LIB = #PRINTF_LIB = $(PRINTF_LIB_MIN) #PRINTF_LIB = $(PRINTF_LIB_FLOAT) @@ -290,7 +290,7 @@ SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt # If this is left blank, then it will use the Standard scanf version. -SCANF_LIB = +SCANF_LIB = #SCANF_LIB = $(SCANF_LIB_MIN) #SCANF_LIB = $(SCANF_LIB_FLOAT) @@ -302,7 +302,7 @@ MATH_LIB = -lm # Each directory must be seperated by a space. # Use forward slashes for directory separators. # For a directory that has spaces, enclose it in quotes. -EXTRALIBDIRS = +EXTRALIBDIRS = @@ -325,7 +325,7 @@ EXTMEMOPTS = # -Map: create map file # --cref: add cross reference to map file LDFLAGS = -Wl,-Map=$(TARGET).map,--cref -LDFLAGS += -Wl,--relax +LDFLAGS += -Wl,--relax LDFLAGS += -Wl,--gc-sections LDFLAGS += $(EXTMEMOPTS) LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS)) @@ -359,7 +359,7 @@ AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex #AVRDUDE_NO_VERIFY = -V # Increase verbosity level. Please use this when submitting bug -# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> +# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> # to submit bug reports. #AVRDUDE_VERBOSE = -v -v @@ -393,7 +393,7 @@ JTAG_DEV = /dev/com1 DEBUG_PORT = 4242 # Debugging host used to communicate between GDB / avarice / simulavr, normally -# just set to localhost unless doing some sort of crazy debugging when +# just set to localhost unless doing some sort of crazy debugging when # avarice is running on a different computer. DEBUG_HOST = localhost @@ -422,7 +422,7 @@ WINSHELL = cmd MSG_ERRORS_NONE = Errors: none MSG_BEGIN = -------- begin -------- MSG_END = -------- end -------- -MSG_SIZE_BEFORE = Size before: +MSG_SIZE_BEFORE = Size before: MSG_SIZE_AFTER = Size after: MSG_COFF = Converting to AVR COFF: MSG_EXTENDED_COFF = Converting to AVR Extended COFF: @@ -441,10 +441,10 @@ MSG_CREATING_LIBRARY = Creating library: # Define all object files. -OBJ = $(SRC:%.c=$(OBJDIR)/%.o) $(CPPSRC:%.cpp=$(OBJDIR)/%.o) $(ASRC:%.S=$(OBJDIR)/%.o) +OBJ = $(SRC:%.c=$(OBJDIR)/%.o) $(CPPSRC:%.cpp=$(OBJDIR)/%.o) $(ASRC:%.S=$(OBJDIR)/%.o) # Define all listing files. -LST = $(SRC:%.c=$(OBJDIR)/%.lst) $(CPPSRC:%.cpp=$(OBJDIR)/%.lst) $(ASRC:%.S=$(OBJDIR)/%.lst) +LST = $(SRC:%.c=$(OBJDIR)/%.lst) $(CPPSRC:%.cpp=$(OBJDIR)/%.lst) $(ASRC:%.S=$(OBJDIR)/%.lst) # Compiler flags to generate dependency files. @@ -509,11 +509,11 @@ sizeafter: # Display compiler version information. -gccversion : +gccversion : @$(CC) --version -# Program the device. +# Program the device. program: $(TARGET).hex $(TARGET).eep $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) @@ -540,9 +540,9 @@ dfu-ee: $(TARGET).hex $(TARGET).eep # Generate avr-gdb config/init file which does the following: -# define the reset signal, load the target file, connect to target, and set +# define the reset signal, load the target file, connect to target, and set # a breakpoint at main(). -gdb-config: +gdb-config: @$(REMOVE) $(GDBINIT_FILE) @echo define reset >> $(GDBINIT_FILE) @echo SIGNAL SIGHUP >> $(GDBINIT_FILE) @@ -640,14 +640,14 @@ extcoff: $(TARGET).elf $(OBJDIR)/%.o : %.c @echo @echo $(MSG_COMPILING) $< - $(CC) -c $(ALL_CFLAGS) $< -o $@ + $(CC) -c $(ALL_CFLAGS) $< -o $@ # Compile: create object files from C++ source files. $(OBJDIR)/%.o : %.cpp @echo @echo $(MSG_COMPILING_CPP) $< - $(CC) -c $(ALL_CPPFLAGS) $< -o $@ + $(CC) -c $(ALL_CPPFLAGS) $< -o $@ # Compile: create assembler files from C source files. @@ -669,7 +669,7 @@ $(OBJDIR)/%.o : %.S # Create preprocessed source for use in sending a bug report. %.i : %.c - $(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@ + $(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@ # Target: clean project. @@ -713,3 +713,4 @@ $(shell mkdir $(OBJDIR) 2>/dev/null) build elf hex eep lss sym coff extcoff doxygen clean \ clean_list clean_doxygen program dfu flip flip-ee dfu-ee \ debug gdb-config + |