From a67bd74e3e8aad87dcee8cf0c0eaaccbe7d00552 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Thu, 4 Jun 2009 02:55:30 +0000 Subject: Minor documentation page updates. Redocumented all device demos, now that they have changed over to the new USB class drivers. Added C linkage to class drivers for C++ support. Added prefixes to most of the class driver constants to prevent name clashes. --- Demos/Device/AudioInput/AudioInput.c | 29 ++++++++++-- Demos/Device/AudioInput/AudioInput.h | 13 ++++-- Demos/Device/AudioInput/Descriptors.c | 2 +- Demos/Device/AudioOutput/AudioOutput.c | 71 +++++++++++++++++------------- Demos/Device/AudioOutput/AudioOutput.h | 7 +++ Demos/Device/AudioOutput/Descriptors.c | 2 +- Demos/Device/CDC/CDC.c | 21 ++++++++- Demos/Device/CDC/CDC.h | 7 +++ Demos/Device/DualCDC/DualCDC.c | 33 +++++++++++++- Demos/Device/DualCDC/DualCDC.h | 7 +++ Demos/Device/GenericHID/GenericHID.c | 32 ++++++++++++++ Demos/Device/GenericHID/GenericHID.h | 7 +++ Demos/Device/Joystick/Joystick.c | 32 ++++++++++++++ Demos/Device/Joystick/Joystick.h | 7 +++ Demos/Device/Keyboard/Keyboard.c | 34 +++++++++++++- Demos/Device/Keyboard/Keyboard.h | 7 +++ Demos/Device/KeyboardMouse/KeyboardMouse.c | 46 +++++++++++++++++-- Demos/Device/KeyboardMouse/KeyboardMouse.h | 7 +++ Demos/Device/MIDI/Descriptors.c | 8 ++-- Demos/Device/MIDI/MIDI.c | 30 ++++++++++--- Demos/Device/MIDI/MIDI.h | 7 +++ Demos/Device/MassStorage/MassStorage.c | 22 +++++++++ Demos/Device/MassStorage/MassStorage.h | 12 ++++- Demos/Device/Mouse/Mouse.c | 38 ++++++++++++++-- Demos/Device/Mouse/Mouse.h | 7 +++ Demos/Device/RNDISEthernet/RNDISEthernet.c | 31 ++++++++++--- Demos/Device/RNDISEthernet/RNDISEthernet.h | 11 ++++- Demos/Device/USBtoSerial/USBtoSerial.c | 34 ++++++++++++-- Demos/Device/USBtoSerial/USBtoSerial.h | 7 +++ 29 files changed, 498 insertions(+), 73 deletions(-) (limited to 'Demos') diff --git a/Demos/Device/AudioInput/AudioInput.c b/Demos/Device/AudioInput/AudioInput.c index bcfb04be1..31b3159e0 100644 --- a/Demos/Device/AudioInput/AudioInput.c +++ b/Demos/Device/AudioInput/AudioInput.c @@ -28,16 +28,29 @@ this software. */ +/** \file + * + * Main source file for the AudioInput demo. This file contains the main tasks of + * the demo and is responsible for the initial application hardware configuration. + */ + #include "AudioInput.h" +/** LUFA Audio Class driver interface configuration and state information. This structure is + * passed to all Audio Class driver functions, so that multiple instances of the same class + * within a device can be differentiated from one another. + */ USB_ClassInfo_Audio_t Microphone_Audio_Interface = { - .InterfaceNumber = 0, + .StreamingInterfaceNumber = 1, - .DataINEndpointNumber = AUDIO_STREAM_EPNUM, - .DataINEndpointSize = AUDIO_STREAM_EPSIZE, + .DataINEndpointNumber = AUDIO_STREAM_EPNUM, + .DataINEndpointSize = AUDIO_STREAM_EPSIZE, }; - + +/** Main program entry point. This routine contains the overall program flow, including initial + * setup of all components and the main program loop. + */ int main(void) { SetupHardware(); @@ -53,6 +66,7 @@ int main(void) } } +/** Configures the board hardware and chip peripherals for the demo's functionality. */ void SetupHardware(void) { /* Disable watchdog if enabled by bootloader/fuses */ @@ -72,6 +86,9 @@ void SetupHardware(void) ADC_StartReading(ADC_REFERENCE_AVCC | ADC_RIGHT_ADJUSTED | MIC_IN_ADC_CHANNEL); } +/** Processes the next audio sample by reading the last ADC conversion and writing it to the audio + * interface, each time the sample reload timer period elapses to give a constant sample rate. + */ void ProcessNextSample(void) { if ((TIFR0 & (1 << OCF0A)) && USB_Audio_IsReadyForNextSample(&Microphone_Audio_Interface)) @@ -90,6 +107,7 @@ void ProcessNextSample(void) } } +/** Event handler for the library USB Connection event. */ void EVENT_USB_Connect(void) { LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING); @@ -100,6 +118,7 @@ void EVENT_USB_Connect(void) TCCR0B = (1 << CS00); // Fcpu speed } +/** Event handler for the library USB Disconnection event. */ void EVENT_USB_Disconnect(void) { /* Stop the sample reload timer */ @@ -108,6 +127,7 @@ void EVENT_USB_Disconnect(void) LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); } +/** Event handler for the library USB Configuration Changed event. */ void EVENT_USB_ConfigurationChanged(void) { LEDs_SetAllLEDs(LEDMASK_USB_READY); @@ -116,6 +136,7 @@ void EVENT_USB_ConfigurationChanged(void) LEDs_SetAllLEDs(LEDMASK_USB_ERROR); } +/** Event handler for the library USB Unhandled Control Packet event. */ void EVENT_USB_UnhandledControlPacket(void) { USB_Audio_ProcessControlPacket(&Microphone_Audio_Interface); diff --git a/Demos/Device/AudioInput/AudioInput.h b/Demos/Device/AudioInput/AudioInput.h index e9f56b30a..e4dd7fe66 100644 --- a/Demos/Device/AudioInput/AudioInput.h +++ b/Demos/Device/AudioInput/AudioInput.h @@ -52,18 +52,25 @@ /* Macros: */ /** ADC channel number for the microphone input. */ - #define MIC_IN_ADC_CHANNEL 2 + #define MIC_IN_ADC_CHANNEL 2 /** Maximum ADC sample value for the microphone input. */ - #define SAMPLE_MAX_RANGE 0xFFFF + #define SAMPLE_MAX_RANGE 0xFFFF /** Maximum ADC range for the microphone input. */ - #define ADC_MAX_RANGE 0x3FF + #define ADC_MAX_RANGE 0x3FF /* Macros: */ + /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */ #define LEDMASK_USB_NOTREADY LEDS_LED1 + + /** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */ #define LEDMASK_USB_ENUMERATING (LEDS_LED2 | LEDS_LED3) + + /** LED mask for the library LED driver, to indicate that the USB interface is ready. */ #define LEDMASK_USB_READY (LEDS_LED2 | LEDS_LED4) + + /** 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: */ diff --git a/Demos/Device/AudioInput/Descriptors.c b/Demos/Device/AudioInput/Descriptors.c index b8de373d6..6697cfe1d 100644 --- a/Demos/Device/AudioInput/Descriptors.c +++ b/Demos/Device/AudioInput/Descriptors.c @@ -201,7 +201,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = .BitResolution = 16, .SampleFrequencyType = (sizeof(ConfigurationDescriptor.AudioFormat.SampleFrequencies) / sizeof(AudioSampleFreq_t)), - .SampleFrequencies = {SAMPLE_FREQ(AUDIO_SAMPLE_FREQUENCY)} + .SampleFrequencies = {AUDIO_SAMPLE_FREQ(AUDIO_SAMPLE_FREQUENCY)} }, .AudioEndpoint = diff --git a/Demos/Device/AudioOutput/AudioOutput.c b/Demos/Device/AudioOutput/AudioOutput.c index 0f193567a..4ff2e7453 100644 --- a/Demos/Device/AudioOutput/AudioOutput.c +++ b/Demos/Device/AudioOutput/AudioOutput.c @@ -28,16 +28,29 @@ this software. */ +/** \file + * + * 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" +/** LUFA Audio Class driver interface configuration and state information. This structure is + * passed to all Audio Class driver functions, so that multiple instances of the same class + * within a device can be differentiated from one another. + */ USB_ClassInfo_Audio_t Speaker_Audio_Interface = { - .InterfaceNumber = 0, + .StreamingInterfaceNumber = 1, - .DataOUTEndpointNumber = AUDIO_STREAM_EPNUM, - .DataOUTEndpointSize = AUDIO_STREAM_EPSIZE, + .DataOUTEndpointNumber = AUDIO_STREAM_EPNUM, + .DataOUTEndpointSize = AUDIO_STREAM_EPSIZE, }; +/** Main program entry point. This routine contains the overall program flow, including initial + * setup of all components and the main program loop. + */ int main(void) { SetupHardware(); @@ -53,6 +66,7 @@ int main(void) } } +/** Configures the board hardware and chip peripherals for the demo's functionality. */ void SetupHardware(void) { /* Disable watchdog if enabled by bootloader/fuses */ @@ -67,6 +81,9 @@ void SetupHardware(void) USB_Init(); } +/** Processes the next audio sample by reading the last ADC conversion and writing it to the audio + * interface, each time the sample reload timer period elapses to give a constant sample rate. + */ void ProcessNextSample(void) { if ((TIFR0 & (1 << OCF0A)) && USB_Audio_IsSampleReceived(&Speaker_Audio_Interface)) @@ -82,10 +99,10 @@ void ProcessNextSample(void) int8_t LeftSample_8Bit = (LeftSample_16Bit >> 8); int8_t RightSample_8Bit = (RightSample_16Bit >> 8); -#if defined(AUDIO_OUT_MONO) /* Mix the two channels together to produce a mono, 8-bit sample */ int8_t MixedSample_8Bit = (((int16_t)LeftSample_8Bit + (int16_t)RightSample_8Bit) >> 1); +#if defined(AUDIO_OUT_MONO) /* Load the sample into the PWM timer channel */ OCRxA = ((uint8_t)MixedSample_8Bit ^ (1 << 7)); #elif defined(AUDIO_OUT_STEREO) @@ -93,42 +110,32 @@ void ProcessNextSample(void) OCRxA = ((uint8_t)LeftSample_8Bit ^ (1 << 7)); OCRxB = ((uint8_t)RightSample_8Bit ^ (1 << 7)); #elif defined(AUDIO_OUT_PORTC) - /* Mix the two channels together to produce a mono, 8-bit sample */ - int8_t MixedSample_8Bit = (((int16_t)LeftSample_8Bit + (int16_t)RightSample_8Bit) >> 1); - PORTC = MixedSample_8Bit; #else uint8_t LEDMask = LEDS_NO_LEDS; - /* Make left channel positive (absolute) */ - if (LeftSample_8Bit < 0) - LeftSample_8Bit = -LeftSample_8Bit; - - /* Make right channel positive (absolute) */ - if (RightSample_8Bit < 0) - RightSample_8Bit = -RightSample_8Bit; + /* Make mixed sample value positive (absolute) */ + if (MixedSample_8Bit < 0) + MixedSample_8Bit = -MixedSample_8Bit; - /* Set first LED based on sample value */ - if (LeftSample_8Bit < ((128 / 8) * 1)) - LEDMask |= LEDS_LED2; - else if (LeftSample_8Bit < ((128 / 8) * 3)) - LEDMask |= (LEDS_LED1 | LEDS_LED2); - else + if (MixedSample_8Bit > ((128 / 8) * 1)) LEDMask |= LEDS_LED1; + + if (MixedSample_8Bit > ((128 / 8) * 2)) + LEDMask |= LEDS_LED2; + + if (MixedSample_8Bit > ((128 / 8) * 3)) + LEDMask |= LEDS_LED3; - /* Set second LED based on sample value */ - if (RightSample_8Bit < ((128 / 8) * 1)) + if (MixedSample_8Bit > ((128 / 8) * 4)) LEDMask |= LEDS_LED4; - else if (RightSample_8Bit < ((128 / 8) * 3)) - LEDMask |= (LEDS_LED3 | LEDS_LED4); - else - LEDMask |= LEDS_LED3; - + LEDs_SetAllLEDs(LEDMask); #endif } } +/** Event handler for the library USB Connection event. */ void EVENT_USB_Connect(void) { LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING); @@ -157,16 +164,16 @@ void EVENT_USB_Connect(void) #endif } -/** Event handler for the USB_Disconnect event. This indicates that the device is no longer connected to a host via - * the status LEDs, disables the sample update and PWM output timers and stops the USB and Audio management tasks. - */ +/** Event handler for the library USB Disconnection event. */ void EVENT_USB_Disconnect(void) { LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); - /* Stop the timers */ + /* Stop the sample reload timer */ TCCR0B = 0; + #if (defined(AUDIO_OUT_MONO) || defined(AUDIO_OUT_STEREO)) + /* Stop the PWM generation timer */ TCCRxB = 0; #endif @@ -182,6 +189,7 @@ void EVENT_USB_Disconnect(void) #endif } +/** Event handler for the library USB Configuration Changed event. */ void EVENT_USB_ConfigurationChanged(void) { LEDs_SetAllLEDs(LEDMASK_USB_READY); @@ -190,6 +198,7 @@ void EVENT_USB_ConfigurationChanged(void) LEDs_SetAllLEDs(LEDMASK_USB_ERROR); } +/** Event handler for the library USB Unhandled Control Packet event. */ void EVENT_USB_UnhandledControlPacket(void) { USB_Audio_ProcessControlPacket(&Speaker_Audio_Interface); diff --git a/Demos/Device/AudioOutput/AudioOutput.h b/Demos/Device/AudioOutput/AudioOutput.h index 7d112db88..e8435e3ad 100644 --- a/Demos/Device/AudioOutput/AudioOutput.h +++ b/Demos/Device/AudioOutput/AudioOutput.h @@ -99,9 +99,16 @@ #endif /* Macros: */ + /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */ #define LEDMASK_USB_NOTREADY LEDS_LED1 + + /** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */ #define LEDMASK_USB_ENUMERATING (LEDS_LED2 | LEDS_LED3) + + /** LED mask for the library LED driver, to indicate that the USB interface is ready. */ #define LEDMASK_USB_READY (LEDS_LED2 | LEDS_LED4) + + /** 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: */ diff --git a/Demos/Device/AudioOutput/Descriptors.c b/Demos/Device/AudioOutput/Descriptors.c index 92d7e0d57..0039c2ba8 100644 --- a/Demos/Device/AudioOutput/Descriptors.c +++ b/Demos/Device/AudioOutput/Descriptors.c @@ -201,7 +201,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = .BitResolution = 16, .SampleFrequencyType = (sizeof(ConfigurationDescriptor.AudioFormat.SampleFrequencies) / sizeof(AudioSampleFreq_t)), - .SampleFrequencies = {SAMPLE_FREQ(AUDIO_SAMPLE_FREQUENCY)} + .SampleFrequencies = {AUDIO_SAMPLE_FREQ(AUDIO_SAMPLE_FREQUENCY)} }, .AudioEndpoint = diff --git a/Demos/Device/CDC/CDC.c b/Demos/Device/CDC/CDC.c index e6bc1a455..6f1539334 100644 --- a/Demos/Device/CDC/CDC.c +++ b/Demos/Device/CDC/CDC.c @@ -28,8 +28,18 @@ this software. */ +/** \file + * + * Main source file for the CDC demo. This file contains the main tasks of + * the demo and is responsible for the initial application hardware configuration. + */ + #include "CDC.h" +/** LUFA CDC Class driver interface configuration and state information. This structure is + * passed to all CDC Class driver functions, so that multiple instances of the same class + * within a device can be differentiated from one another. + */ USB_ClassInfo_CDC_t VirtualSerial_CDC_Interface = { .ControlInterfaceNumber = 0, @@ -44,6 +54,9 @@ USB_ClassInfo_CDC_t VirtualSerial_CDC_Interface = .NotificationEndpointSize = CDC_NOTIFICATION_EPSIZE, }; +/** Main program entry point. This routine contains the overall program flow, including initial + * setup of all components and the main program loop. + */ int main(void) { SetupHardware(); @@ -63,6 +76,7 @@ int main(void) } } +/** Configures the board hardware and chip peripherals for the demo's functionality. */ void SetupHardware(void) { /* Disable watchdog if enabled by bootloader/fuses */ @@ -78,11 +92,12 @@ void SetupHardware(void) USB_Init(); } +/** Checks for changes in the position of the board joystick, sending strings to the host upon each change. */ void CheckJoystickMovement(void) { uint8_t JoyStatus_LCL = Joystick_GetStatus(); char* ReportString = NULL; - static bool ActionSent = false; + static bool ActionSent = false; char* JoystickStrings[] = { @@ -114,16 +129,19 @@ void CheckJoystickMovement(void) } } +/** Event handler for the library USB Connection event. */ void EVENT_USB_Connect(void) { LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING); } +/** Event handler for the library USB Disconnection event. */ void EVENT_USB_Disconnect(void) { LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); } +/** Event handler for the library USB Configuration Changed event. */ void EVENT_USB_ConfigurationChanged(void) { LEDs_SetAllLEDs(LEDMASK_USB_READY); @@ -132,6 +150,7 @@ void EVENT_USB_ConfigurationChanged(void) LEDs_SetAllLEDs(LEDMASK_USB_ERROR); } +/** Event handler for the library USB Unhandled Control Packet event. */ void EVENT_USB_UnhandledControlPacket(void) { USB_CDC_ProcessControlPacket(&VirtualSerial_CDC_Interface); diff --git a/Demos/Device/CDC/CDC.h b/Demos/Device/CDC/CDC.h index dc4033448..23072d683 100644 --- a/Demos/Device/CDC/CDC.h +++ b/Demos/Device/CDC/CDC.h @@ -51,9 +51,16 @@ #include /* Macros: */ + /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */ #define LEDMASK_USB_NOTREADY LEDS_LED1 + + /** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */ #define LEDMASK_USB_ENUMERATING (LEDS_LED2 | LEDS_LED3) + + /** LED mask for the library LED driver, to indicate that the USB interface is ready. */ #define LEDMASK_USB_READY (LEDS_LED2 | LEDS_LED4) + + /** 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: */ diff --git a/Demos/Device/DualCDC/DualCDC.c b/Demos/Device/DualCDC/DualCDC.c index 26947f433..216902c67 100644 --- a/Demos/Device/DualCDC/DualCDC.c +++ b/Demos/Device/DualCDC/DualCDC.c @@ -27,9 +27,20 @@ arising out of or in connection with the use or performance of this software. */ - + +/** \file + * + * Main source file for the DualCDC demo. This file contains the main tasks of + * the demo and is responsible for the initial application hardware configuration. + */ + #include "DualCDC.h" +/** LUFA CDC Class driver interface configuration and state information. This structure is + * passed to all CDC Class driver functions, so that multiple instances of the same class + * within a device can be differentiated from one another. This is for the first CDC interface, + * which sends strings to the host for each joystick movement. + */ USB_ClassInfo_CDC_t VirtualSerial1_CDC_Interface = { .ControlInterfaceNumber = 0, @@ -44,9 +55,14 @@ USB_ClassInfo_CDC_t VirtualSerial1_CDC_Interface = .NotificationEndpointSize = CDC_NOTIFICATION_EPSIZE, }; +/** LUFA CDC Class driver interface configuration and state information. This structure is + * passed to all CDC Class driver functions, so that multiple instances of the same class + * within a device can be differentiated from one another. This is for the second CDC interface, + * which echos back all received data from the host. + */ USB_ClassInfo_CDC_t VirtualSerial2_CDC_Interface = { - .ControlInterfaceNumber = 0, + .ControlInterfaceNumber = 2, .DataINEndpointNumber = CDC2_TX_EPNUM, .DataINEndpointSize = CDC_TXRX_EPSIZE, @@ -58,6 +74,9 @@ USB_ClassInfo_CDC_t VirtualSerial2_CDC_Interface = .NotificationEndpointSize = CDC_NOTIFICATION_EPSIZE, }; +/** Main program entry point. This routine contains the overall program flow, including initial + * setup of all components and the main program loop. + */ int main(void) { SetupHardware(); @@ -68,10 +87,12 @@ int main(void) { CheckJoystickMovement(); + /* Discard all received data on the first CDC interface */ uint16_t BytesToDiscard = USB_CDC_BytesReceived(&VirtualSerial1_CDC_Interface); while (BytesToDiscard--) USB_CDC_ReceiveByte(&VirtualSerial1_CDC_Interface); + /* Echo all received data on the second CDC interface */ uint16_t BytesToEcho = USB_CDC_BytesReceived(&VirtualSerial2_CDC_Interface); while (BytesToEcho--) USB_CDC_SendByte(&VirtualSerial2_CDC_Interface, USB_CDC_ReceiveByte(&VirtualSerial2_CDC_Interface)); @@ -82,6 +103,7 @@ int main(void) } } +/** Configures the board hardware and chip peripherals for the demo's functionality. */ void SetupHardware(void) { /* Disable watchdog if enabled by bootloader/fuses */ @@ -97,6 +119,9 @@ void SetupHardware(void) USB_Init(); } +/** Checks for changes in the position of the board joystick, sending strings to the host upon each change + * through the first of the CDC interfaces. + */ void CheckJoystickMovement(void) { uint8_t JoyStatus_LCL = Joystick_GetStatus(); @@ -133,16 +158,19 @@ void CheckJoystickMovement(void) } } +/** Event handler for the library USB Connection event. */ void EVENT_USB_Connect(void) { LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING); } +/** Event handler for the library USB Disconnection event. */ void EVENT_USB_Disconnect(void) { LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); } +/** Event handler for the library USB Configuration Changed event. */ void EVENT_USB_ConfigurationChanged(void) { LEDs_SetAllLEDs(LEDMASK_USB_READY); @@ -154,6 +182,7 @@ void EVENT_USB_ConfigurationChanged(void) LEDs_SetAllLEDs(LEDMASK_USB_ERROR); } +/** Event handler for the library USB Unhandled Control Packet event. */ void EVENT_USB_UnhandledControlPacket(void) { USB_CDC_ProcessControlPacket(&VirtualSerial1_CDC_Interface); diff --git a/Demos/Device/DualCDC/DualCDC.h b/Demos/Device/DualCDC/DualCDC.h index fc782ee5a..93b785d31 100644 --- a/Demos/Device/DualCDC/DualCDC.h +++ b/Demos/Device/DualCDC/DualCDC.h @@ -51,9 +51,16 @@ #include /* Macros: */ + /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */ #define LEDMASK_USB_NOTREADY LEDS_LED1 + + /** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */ #define LEDMASK_USB_ENUMERATING (LEDS_LED2 | LEDS_LED3) + + /** LED mask for the library LED driver, to indicate that the USB interface is ready. */ #define LEDMASK_USB_READY (LEDS_LED2 | LEDS_LED4) + + /** 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: */ diff --git a/Demos/Device/GenericHID/GenericHID.c b/Demos/Device/GenericHID/GenericHID.c index 9c8023a5c..b933e4506 100644 --- a/Demos/Device/GenericHID/GenericHID.c +++ b/Demos/Device/GenericHID/GenericHID.c @@ -28,8 +28,18 @@ this software. */ +/** \file + * + * Main source file for the GenericHID demo. This file contains the main tasks of + * the demo and is responsible for the initial application hardware configuration. + */ + #include "GenericHID.h" +/** LUFA HID Class driver interface configuration and state information. This structure is + * passed to all HID Class driver functions, so that multiple instances of the same class + * within a device can be differentiated from one another. + */ USB_ClassInfo_HID_t Generic_HID_Interface = { .InterfaceNumber = 0, @@ -45,6 +55,9 @@ USB_ClassInfo_HID_t Generic_HID_Interface = .UsingReportProtocol = true, }; +/** Main program entry point. This routine contains the overall program flow, including initial + * setup of all components and the main program loop. + */ int main(void) { SetupHardware(); @@ -58,6 +71,7 @@ int main(void) } } +/** Configures the board hardware and chip peripherals for the demo's functionality. */ void SetupHardware(void) { /* Disable watchdog if enabled by bootloader/fuses */ @@ -78,16 +92,19 @@ void SetupHardware(void) TIMSK0 = (1 << OCIE0A); } +/** Event handler for the library USB Connection event. */ void EVENT_USB_Connect(void) { LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING); } +/** Event handler for the library USB Disconnection event. */ void EVENT_USB_Disconnect(void) { LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); } +/** Event handler for the library USB Configuration Changed event. */ void EVENT_USB_ConfigurationChanged(void) { LEDs_SetAllLEDs(LEDMASK_USB_READY); @@ -96,17 +113,26 @@ void EVENT_USB_ConfigurationChanged(void) LEDs_SetAllLEDs(LEDMASK_USB_ERROR); } +/** Event handler for the library USB Unhandled Control Packet event. */ void EVENT_USB_UnhandledControlPacket(void) { USB_HID_ProcessControlPacket(&Generic_HID_Interface); } +/** ISR to keep track of each millisecond interrupt, for determining the HID class idle period remaining when set. */ ISR(TIMER0_COMPA_vect, ISR_BLOCK) { if (Generic_HID_Interface.IdleMSRemaining) Generic_HID_Interface.IdleMSRemaining--; } +/** HID class driver callback function for the creation of HID reports to the host. + * + * \param HIDInterfaceInfo Pointer to the HID class interface configuration structure being referenced + * \param ReportData Pointer to a buffer where the created report should be stored + * + * \return Number of bytes written in the report (or zero if no report is to be sent + */ uint16_t CALLBACK_USB_HID_CreateNextHIDReport(USB_ClassInfo_HID_t* HIDInterfaceInfo, void* ReportData) { // Create generic HID report here @@ -114,6 +140,12 @@ uint16_t CALLBACK_USB_HID_CreateNextHIDReport(USB_ClassInfo_HID_t* HIDInterfaceI return 0; } +/** HID class driver callback function for the processing of HID reports from the host. + * + * \param HIDInterfaceInfo Pointer to the HID class interface configuration structure being referenced + * \param ReportData Pointer to a buffer where the created report has been stored + * \param ReportSize Size in bytes of the received HID report + */ void CALLBACK_USB_HID_ProcessReceivedHIDReport(USB_ClassInfo_HID_t* HIDInterfaceInfo, void* ReportData, uint16_t ReportSize) { // Process received generic HID report here diff --git a/Demos/Device/GenericHID/GenericHID.h b/Demos/Device/GenericHID/GenericHID.h index 94a09af93..b68dc4c24 100644 --- a/Demos/Device/GenericHID/GenericHID.h +++ b/Demos/Device/GenericHID/GenericHID.h @@ -52,9 +52,16 @@ #include /* Macros: */ + /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */ #define LEDMASK_USB_NOTREADY LEDS_LED1 + + /** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */ #define LEDMASK_USB_ENUMERATING (LEDS_LED2 | LEDS_LED3) + + /** LED mask for the library LED driver, to indicate that the USB interface is ready. */ #define LEDMASK_USB_READY (LEDS_LED2 | LEDS_LED4) + + /** 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: */ diff --git a/Demos/Device/Joystick/Joystick.c b/Demos/Device/Joystick/Joystick.c index d5c20737d..66cb808d0 100644 --- a/Demos/Device/Joystick/Joystick.c +++ b/Demos/Device/Joystick/Joystick.c @@ -28,8 +28,18 @@ this software. */ +/** \file + * + * Main source file for the Joystick demo. This file contains the main tasks of + * the demo and is responsible for the initial application hardware configuration. + */ + #include "Joystick.h" +/** LUFA HID Class driver interface configuration and state information. This structure is + * passed to all HID Class driver functions, so that multiple instances of the same class + * within a device can be differentiated from one another. + */ USB_ClassInfo_HID_t Joystick_HID_Interface = { .InterfaceNumber = 0, @@ -42,6 +52,9 @@ USB_ClassInfo_HID_t Joystick_HID_Interface = .UsingReportProtocol = true, }; +/** Main program entry point. This routine contains the overall program flow, including initial + * setup of all components and the main program loop. + */ int main(void) { SetupHardware(); @@ -55,6 +68,7 @@ int main(void) } } +/** Configures the board hardware and chip peripherals for the demo's functionality. */ void SetupHardware(void) { /* Disable watchdog if enabled by bootloader/fuses */ @@ -77,16 +91,19 @@ void SetupHardware(void) TIMSK0 = (1 << OCIE0A); } +/** Event handler for the library USB Connection event. */ void EVENT_USB_Connect(void) { LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING); } +/** Event handler for the library USB Disconnection event. */ void EVENT_USB_Disconnect(void) { LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); } +/** Event handler for the library USB Configuration Changed event. */ void EVENT_USB_ConfigurationChanged(void) { LEDs_SetAllLEDs(LEDMASK_USB_READY); @@ -95,17 +112,26 @@ void EVENT_USB_ConfigurationChanged(void) LEDs_SetAllLEDs(LEDMASK_USB_ERROR); } +/** Event handler for the library USB Unhandled Control Packet event. */ void EVENT_USB_UnhandledControlPacket(void) { USB_HID_ProcessControlPacket(&Joystick_HID_Interface); } +/** ISR to keep track of each millisecond interrupt, for determining the HID class idle period remaining when set. */ ISR(TIMER0_COMPA_vect, ISR_BLOCK) { if (Joystick_HID_Interface.IdleMSRemaining) Joystick_HID_Interface.IdleMSRemaining--; } +/** HID class driver callback function for the creation of HID reports to the host. + * + * \param HIDInterfaceInfo Pointer to the HID class interface configuration structure being referenced + * \param ReportData Pointer to a buffer where the created report should be stored + * + * \return Number of bytes written in the report (or zero if no report is to be sent + */ uint16_t CALLBACK_USB_HID_CreateNextHIDReport(USB_ClassInfo_HID_t* HIDInterfaceInfo, void* ReportData) { USB_JoystickReport_Data_t* JoystickReport = (USB_JoystickReport_Data_t*)ReportData; @@ -132,6 +158,12 @@ uint16_t CALLBACK_USB_HID_CreateNextHIDReport(USB_ClassInfo_HID_t* HIDInterfaceI return sizeof(USB_JoystickReport_Data_t); } +/** HID class driver callback function for the processing of HID reports from the host. + * + * \param HIDInterfaceInfo Pointer to the HID class interface configuration structure being referenced + * \param ReportData Pointer to a buffer where the created report has been stored + * \param ReportSize Size in bytes of the received HID report + */ void CALLBACK_USB_HID_ProcessReceivedHIDReport(USB_ClassInfo_HID_t* HIDInterfaceInfo, void* ReportData, uint16_t ReportSize) { // Unused (but mandatory for the HID class driver) in this demo, since there are no Host->Device reports diff --git a/Demos/Device/Joystick/Joystick.h b/Demos/Device/Joystick/Joystick.h index 164c58ea2..9db357b40 100644 --- a/Demos/Device/Joystick/Joystick.h +++ b/Demos/Device/Joystick/Joystick.h @@ -63,9 +63,16 @@ } USB_JoystickReport_Data_t; /* Macros: */ + /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */ #define LEDMASK_USB_NOTREADY LEDS_LED1 + + /** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */ #define LEDMASK_USB_ENUMERATING (LEDS_LED2 | LEDS_LED3) + + /** LED mask for the library LED driver, to indicate that the USB interface is ready. */ #define LEDMASK_USB_READY (LEDS_LED2 | LEDS_LED4) + + /** 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: */ diff --git a/Demos/Device/Keyboard/Keyboard.c b/Demos/Device/Keyboard/Keyboard.c index d506657a6..923dd7176 100644 --- a/Demos/Device/Keyboard/Keyboard.c +++ b/Demos/Device/Keyboard/Keyboard.c @@ -28,9 +28,19 @@ arising out of or in connection with the use or performance of this software. */ - + +/** \file + * + * Main source file for the Keyboard demo. This file contains the main tasks of + * the demo and is responsible for the initial application hardware configuration. + */ + #include "Keyboard.h" +/** LUFA HID Class driver interface configuration and state information. This structure is + * passed to all HID Class driver functions, so that multiple instances of the same class + * within a device can be differentiated from one another. + */ USB_ClassInfo_HID_t Keyboard_HID_Interface = { .InterfaceNumber = 0, @@ -46,6 +56,9 @@ USB_ClassInfo_HID_t Keyboard_HID_Interface = .IdleCount = 500, }; +/** Main program entry point. This routine contains the overall program flow, including initial + * setup of all components and the main program loop. + */ int main(void) { SetupHardware(); @@ -59,6 +72,7 @@ int main(void) } } +/** Configures the board hardware and chip peripherals for the demo's functionality. */ void SetupHardware() { /* Disable watchdog if enabled by bootloader/fuses */ @@ -81,16 +95,19 @@ void SetupHardware() TIMSK0 = (1 << OCIE0A); } +/** Event handler for the library USB Connection event. */ void EVENT_USB_Connect(void) { LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING); } +/** Event handler for the library USB Disconnection event. */ void EVENT_USB_Disconnect(void) { LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); } +/** Event handler for the library USB Configuration Changed event. */ void EVENT_USB_ConfigurationChanged(void) { LEDs_SetAllLEDs(LEDMASK_USB_READY); @@ -99,17 +116,26 @@ void EVENT_USB_ConfigurationChanged(void) LEDs_SetAllLEDs(LEDMASK_USB_ERROR); } +/** Event handler for the library USB Unhandled Control Packet event. */ void EVENT_USB_UnhandledControlPacket(void) { USB_HID_ProcessControlPacket(&Keyboard_HID_Interface); } +/** ISR to keep track of each millisecond interrupt, for determining the HID class idle period remaining when set. */ ISR(TIMER0_COMPA_vect, ISR_BLOCK) { if (Keyboard_HID_Interface.IdleMSRemaining) Keyboard_HID_Interface.IdleMSRemaining--; } +/** HID class driver callback function for the creation of HID reports to the host. + * + * \param HIDInterfaceInfo Pointer to the HID class interface configuration structure being referenced + * \param ReportData Pointer to a buffer where the created report should be stored + * + * \return Number of bytes written in the report (or zero if no report is to be sent + */ uint16_t CALLBACK_USB_HID_CreateNextHIDReport(USB_ClassInfo_HID_t* HIDInterfaceInfo, void* ReportData) { USB_KeyboardReport_Data_t* KeyboardReport = (USB_KeyboardReport_Data_t*)ReportData; @@ -136,6 +162,12 @@ uint16_t CALLBACK_USB_HID_CreateNextHIDReport(USB_ClassInfo_HID_t* HIDInterfaceI return sizeof(USB_KeyboardReport_Data_t); } +/** HID class driver callback function for the processing of HID reports from the host. + * + * \param HIDInterfaceInfo Pointer to the HID class interface configuration structure being referenced + * \param ReportData Pointer to a buffer where the created report has been stored + * \param ReportSize Size in bytes of the received HID report + */ void CALLBACK_USB_HID_ProcessReceivedHIDReport(USB_ClassInfo_HID_t* HIDInterfaceInfo, void* ReportData, uint16_t ReportSize) { uint8_t LEDMask = LEDS_NO_LEDS; diff --git a/Demos/Device/Keyboard/Keyboard.h b/Demos/Device/Keyboard/Keyboard.h index 9cfc9aba4..e04ae9e34 100644 --- a/Demos/Device/Keyboard/Keyboard.h +++ b/Demos/Device/Keyboard/Keyboard.h @@ -66,9 +66,16 @@ } USB_KeyboardReport_Data_t; /* Macros: */ + /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */ #define LEDMASK_USB_NOTREADY LEDS_LED1 + + /** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */ #define LEDMASK_USB_ENUMERATING (LEDS_LED2 | LEDS_LED3) + + /** LED mask for the library LED driver, to indicate that the USB interface is ready. */ #define LEDMASK_USB_READY (LEDS_LED2 | LEDS_LED4) + + /** 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: */ diff --git a/Demos/Device/KeyboardMouse/KeyboardMouse.c b/Demos/Device/KeyboardMouse/KeyboardMouse.c index 71a8375aa..e68a24793 100644 --- a/Demos/Device/KeyboardMouse/KeyboardMouse.c +++ b/Demos/Device/KeyboardMouse/KeyboardMouse.c @@ -28,9 +28,20 @@ arising out of or in connection with the use or performance of this software. */ - + +/** \file + * + * Main source file for the KeyboardMouse demo. This file contains the main tasks of + * the demo and is responsible for the initial application hardware configuration. + */ + #include "KeyboardMouse.h" +/** LUFA HID Class driver interface configuration and state information. This structure is + * passed to all HID Class driver functions, so that multiple instances of the same class + * within a device can be differentiated from one another. This is for the keyboard HID + * interface within the device. + */ USB_ClassInfo_HID_t Keyboard_HID_Interface = { .InterfaceNumber = 0, @@ -46,6 +57,11 @@ USB_ClassInfo_HID_t Keyboard_HID_Interface = .IdleCount = 500, }; +/** LUFA HID Class driver interface configuration and state information. This structure is + * passed to all HID Class driver functions, so that multiple instances of the same class + * within a device can be differentiated from one another. This is for the mouse HID + * interface within the device. + */ USB_ClassInfo_HID_t Mouse_HID_Interface = { .InterfaceNumber = 0, @@ -58,7 +74,10 @@ USB_ClassInfo_HID_t Mouse_HID_Interface = .ReportOUTEndpointNumber = 0, .ReportOUTEndpointSize = 0, }; - + +/** Main program entry point. This routine contains the overall program flow, including initial + * setup of all components and the main program loop. + */ int main(void) { SetupHardware(); @@ -73,6 +92,7 @@ int main(void) } } +/** Configures the board hardware and chip peripherals for the demo's functionality. */ void SetupHardware() { /* Disable watchdog if enabled by bootloader/fuses */ @@ -94,16 +114,19 @@ void SetupHardware() TIMSK0 = (1 << OCIE0A); } +/** Event handler for the library USB Connection event. */ void EVENT_USB_Connect(void) { - LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING); + LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING); } +/** Event handler for the library USB Disconnection event. */ void EVENT_USB_Disconnect(void) { - LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); + LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); } +/** Event handler for the library USB Configuration Changed event. */ void EVENT_USB_ConfigurationChanged(void) { LEDs_SetAllLEDs(LEDMASK_USB_READY); @@ -115,12 +138,14 @@ void EVENT_USB_ConfigurationChanged(void) LEDs_SetAllLEDs(LEDMASK_USB_ERROR); } +/** Event handler for the library USB Unhandled Control Packet event. */ void EVENT_USB_UnhandledControlPacket(void) { USB_HID_ProcessControlPacket(&Keyboard_HID_Interface); USB_HID_ProcessControlPacket(&Mouse_HID_Interface); } +/** ISR to keep track of each millisecond interrupt, for determining the HID class idle period remaining when set. */ ISR(TIMER0_COMPA_vect, ISR_BLOCK) { if (Keyboard_HID_Interface.IdleMSRemaining) @@ -130,6 +155,13 @@ ISR(TIMER0_COMPA_vect, ISR_BLOCK) Mouse_HID_Interface.IdleMSRemaining--; } +/** HID class driver callback function for the creation of HID reports to the host. + * + * \param HIDInterfaceInfo Pointer to the HID class interface configuration structure being referenced + * \param ReportData Pointer to a buffer where the created report should be stored + * + * \return Number of bytes written in the report (or zero if no report is to be sent + */ uint16_t CALLBACK_USB_HID_CreateNextHIDReport(USB_ClassInfo_HID_t* HIDInterfaceInfo, void* ReportData) { uint8_t JoyStatus_LCL = Joystick_GetStatus(); @@ -183,6 +215,12 @@ uint16_t CALLBACK_USB_HID_CreateNextHIDReport(USB_ClassInfo_HID_t* HIDInterfaceI } } +/** HID class driver callback function for the processing of HID reports from the host. + * + * \param HIDInterfaceInfo Pointer to the HID class interface configuration structure being referenced + * \param ReportData Pointer to a buffer where the created report has been stored + * \param ReportSize Size in bytes of the received HID report + */ void CALLBACK_USB_HID_ProcessReceivedHIDReport(USB_ClassInfo_HID_t* HIDInterfaceInfo, void* ReportData, uint16_t ReportSize) { if (HIDInterfaceInfo == &Keyboard_HID_Interface) diff --git a/Demos/Device/KeyboardMouse/KeyboardMouse.h b/Demos/Device/KeyboardMouse/KeyboardMouse.h index c18c6e1af..9afe7646b 100644 --- a/Demos/Device/KeyboardMouse/KeyboardMouse.h +++ b/Demos/Device/KeyboardMouse/KeyboardMouse.h @@ -49,9 +49,16 @@ #include /* Macros: */ + /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */ #define LEDMASK_USB_NOTREADY LEDS_LED1 + + /** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */ #define LEDMASK_USB_ENUMERATING (LEDS_LED2 | LEDS_LED3) + + /** LED mask for the library LED driver, to indicate that the USB interface is ready. */ #define LEDMASK_USB_READY (LEDS_LED2 | LEDS_LED4) + + /** 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) /* Type Defines: */ diff --git a/Demos/Device/MIDI/Descriptors.c b/Demos/Device/MIDI/Descriptors.c index 2007858dd..6973a4caa 100644 --- a/Demos/Device/MIDI/Descriptors.c +++ b/Demos/Device/MIDI/Descriptors.c @@ -145,7 +145,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = .Header = {.Size = sizeof(USB_MIDI_In_Jack_t), .Type = DTYPE_AudioInterface}, .Subtype = DSUBTYPE_InputJack, - .JackType = JACKTYPE_EMBEDDED, + .JackType = MIDI_JACKTYPE_EMBEDDED, .JackID = 0x01, .JackStrIndex = NO_DESCRIPTOR @@ -156,7 +156,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = .Header = {.Size = sizeof(USB_MIDI_In_Jack_t), .Type = DTYPE_AudioInterface}, .Subtype = DSUBTYPE_InputJack, - .JackType = JACKTYPE_EXTERNAL, + .JackType = MIDI_JACKTYPE_EXTERNAL, .JackID = 0x02, .JackStrIndex = NO_DESCRIPTOR @@ -167,7 +167,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = .Header = {.Size = sizeof(USB_MIDI_Out_Jack_t), .Type = DTYPE_AudioInterface}, .Subtype = DSUBTYPE_OutputJack, - .JackType = JACKTYPE_EMBEDDED, + .JackType = MIDI_JACKTYPE_EMBEDDED, .JackID = 0x03, .NumberOfPins = 1, @@ -182,7 +182,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = .Header = {.Size = sizeof(USB_MIDI_Out_Jack_t), .Type = DTYPE_AudioInterface}, .Subtype = DSUBTYPE_OutputJack, - .JackType = JACKTYPE_EXTERNAL, + .JackType = MIDI_JACKTYPE_EXTERNAL, .JackID = 0x04, .NumberOfPins = 1, diff --git a/Demos/Device/MIDI/MIDI.c b/Demos/Device/MIDI/MIDI.c index 1fee34705..4fef04754 100644 --- a/Demos/Device/MIDI/MIDI.c +++ b/Demos/Device/MIDI/MIDI.c @@ -28,19 +28,32 @@ this software. */ +/** \file + * + * Main source file for the MIDI demo. This file contains the main tasks of + * the demo and is responsible for the initial application hardware configuration. + */ + #include "MIDI.h" +/** LUFA MIDI Class driver interface configuration and state information. This structure is + * passed to all MIDI Class driver functions, so that multiple instances of the same class + * within a device can be differentiated from one another. + */ USB_ClassInfo_MIDI_t Keyboard_MIDI_Interface = { - .InterfaceNumber = 0, + .StreamingInterfaceNumber = 1, - .DataINEndpointNumber = MIDI_STREAM_IN_EPNUM, - .DataINEndpointSize = MIDI_STREAM_EPSIZE, + .DataINEndpointNumber = MIDI_STREAM_IN_EPNUM, + .DataINEndpointSize = MIDI_STREAM_EPSIZE, - .DataOUTEndpointNumber = MIDI_STREAM_OUT_EPNUM, - .DataOUTEndpointSize = MIDI_STREAM_EPSIZE, + .DataOUTEndpointNumber = MIDI_STREAM_OUT_EPNUM, + .DataOUTEndpointSize = MIDI_STREAM_EPSIZE, }; - + +/** Main program entry point. This routine contains the overall program flow, including initial + * setup of all components and the main program loop. + */ int main(void) { SetupHardware(); @@ -55,6 +68,7 @@ int main(void) } } +/** Configures the board hardware and chip peripherals for the demo's functionality. */ void SetupHardware(void) { /* Disable watchdog if enabled by bootloader/fuses */ @@ -71,6 +85,7 @@ void SetupHardware(void) USB_Init(); } +/** Checks for changes in the position of the board joystick, sending MIDI events to the host upon each change. */ void CheckJoystickMovement(void) { static uint8_t PrevJoystickStatus; @@ -133,16 +148,19 @@ void CheckJoystickMovement(void) PrevJoystickStatus = JoystickStatus; } +/** Event handler for the library USB Connection event. */ void EVENT_USB_Connect(void) { LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING); } +/** Event handler for the library USB Disconnection event. */ void EVENT_USB_Disconnect(void) { LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); } +/** Event handler for the library USB Configuration Changed event. */ void EVENT_USB_ConfigurationChanged(void) { LEDs_SetAllLEDs(LEDMASK_USB_READY); diff --git a/Demos/Device/MIDI/MIDI.h b/Demos/Device/MIDI/MIDI.h index 10d8d3366..913b318f7 100644 --- a/Demos/Device/MIDI/MIDI.h +++ b/Demos/Device/MIDI/MIDI.h @@ -53,9 +53,16 @@ #include /* Macros: */ + /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */ #define LEDMASK_USB_NOTREADY LEDS_LED1 + + /** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */ #define LEDMASK_USB_ENUMERATING (LEDS_LED2 | LEDS_LED3) + + /** LED mask for the library LED driver, to indicate that the USB interface is ready. */ #define LEDMASK_USB_READY (LEDS_LED2 | LEDS_LED4) + + /** 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: */ diff --git a/Demos/Device/MassStorage/MassStorage.c b/Demos/Device/MassStorage/MassStorage.c index 8e2b9f450..5dbc4a2cc 100644 --- a/Demos/Device/MassStorage/MassStorage.c +++ b/Demos/Device/MassStorage/MassStorage.c @@ -28,8 +28,18 @@ this software. */ +/** \file + * + * Main source file for the MassStorage demo. This file contains the main tasks of + * the demo and is responsible for the initial application hardware configuration. + */ + #include "MassStorage.h" +/** LUFA Mass Storage Class driver interface configuration and state information. This structure is + * passed to all Mass Storage Class driver functions, so that multiple instances of the same class + * within a device can be differentiated from one another. + */ USB_ClassInfo_MS_t Disk_MS_Interface = { .InterfaceNumber = 0, @@ -43,6 +53,9 @@ USB_ClassInfo_MS_t Disk_MS_Interface = .TotalLUNs = TOTAL_LUNS, }; +/** Main program entry point. This routine contains the overall program flow, including initial + * setup of all components and the main program loop. + */ int main(void) { SetupHardware(); @@ -56,6 +69,7 @@ int main(void) } } +/** Configures the board hardware and chip peripherals for the demo's functionality. */ void SetupHardware(void) { /* Disable watchdog if enabled by bootloader/fuses */ @@ -74,16 +88,19 @@ void SetupHardware(void) DataflashManager_ResetDataflashProtections(); } +/** Event handler for the library USB Connection event. */ void EVENT_USB_Connect(void) { LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING); } +/** Event handler for the library USB Disconnection event. */ void EVENT_USB_Disconnect(void) { LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); } +/** Event handler for the library USB Configuration Changed event. */ void EVENT_USB_ConfigurationChanged(void) { LEDs_SetAllLEDs(LEDMASK_USB_READY); @@ -92,11 +109,16 @@ void EVENT_USB_ConfigurationChanged(void) LEDs_SetAllLEDs(LEDMASK_USB_ERROR); } +/** Event handler for the library USB Unhandled Control Packet event. */ void EVENT_USB_UnhandledControlPacket(void) { USB_MS_ProcessControlPacket(&Disk_MS_Interface); } +/** Mass Storage class driver callback function the reception of SCSI commands from the host, which must be processed. + * + * \param MSInterfaceInfo Pointer to the Mass Storage class interface configuration structure being referenced + */ bool CALLBACK_USB_MS_SCSICommandReceived(USB_ClassInfo_MS_t* MSInterfaceInfo) { bool CommandSuccess; diff --git a/Demos/Device/MassStorage/MassStorage.h b/Demos/Device/MassStorage/MassStorage.h index a50edac99..50a77250d 100644 --- a/Demos/Device/MassStorage/MassStorage.h +++ b/Demos/Device/MassStorage/MassStorage.h @@ -54,12 +54,22 @@ #include /* Macros: */ + /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */ #define LEDMASK_USB_NOTREADY LEDS_LED1 + + /** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */ #define LEDMASK_USB_ENUMERATING (LEDS_LED2 | LEDS_LED3) + + /** LED mask for the library LED driver, to indicate that the USB interface is ready. */ #define LEDMASK_USB_READY (LEDS_LED2 | LEDS_LED4) + + /** 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) - #define LEDMASK_USB_BUSY LEDS_LED2 + + /** LED mask for the library LED driver, to indicate that the USB interface is busy. */ + #define LEDMASK_USB_BUSY (LEDS_LED2) + /** Total number of logical drives within the device - must be non-zero. */ #define TOTAL_LUNS 2 /** Blocks in each LUN, calculated from the total capacity divided by the total number of Logical Units in the device. */ diff --git a/Demos/Device/Mouse/Mouse.c b/Demos/Device/Mouse/Mouse.c index 01ead0012..1bc62dac6 100644 --- a/Demos/Device/Mouse/Mouse.c +++ b/Demos/Device/Mouse/Mouse.c @@ -27,9 +27,19 @@ arising out of or in connection with the use or performance of this software. */ - + +/** \file + * + * Main source file for the Mouse demo. This file contains the main tasks of + * the demo and is responsible for the initial application hardware configuration. + */ + #include "Mouse.h" +/** LUFA HID Class driver interface configuration and state information. This structure is + * passed to all HID Class driver functions, so that multiple instances of the same class + * within a device can be differentiated from one another. + */ USB_ClassInfo_HID_t Mouse_HID_Interface = { .InterfaceNumber = 0, @@ -40,6 +50,9 @@ USB_ClassInfo_HID_t Mouse_HID_Interface = .ReportINBufferSize = sizeof(USB_MouseReport_Data_t), }; +/** Main program entry point. This routine contains the overall program flow, including initial + * setup of all components and the main program loop. + */ int main(void) { SetupHardware(); @@ -53,6 +66,7 @@ int main(void) } } +/** Configures the board hardware and chip peripherals for the demo's functionality. */ void SetupHardware(void) { /* Disable watchdog if enabled by bootloader/fuses */ @@ -75,16 +89,19 @@ void SetupHardware(void) TIMSK0 = (1 << OCIE0A); } +/** Event handler for the library USB Connection event. */ void EVENT_USB_Connect(void) { - LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING); + LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING); } +/** Event handler for the library USB Disconnection event. */ void EVENT_USB_Disconnect(void) { - LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); + LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); } +/** Event handler for the library USB Configuration Changed event. */ void EVENT_USB_ConfigurationChanged(void) { LEDs_SetAllLEDs(LEDMASK_USB_READY); @@ -93,17 +110,26 @@ void EVENT_USB_ConfigurationChanged(void) LEDs_SetAllLEDs(LEDMASK_USB_ERROR); } +/** Event handler for the library USB Unhandled Control Packet event. */ void EVENT_USB_UnhandledControlPacket(void) { USB_HID_ProcessControlPacket(&Mouse_HID_Interface); } +/** ISR to keep track of each millisecond interrupt, for determining the HID class idle period remaining when set. */ ISR(TIMER0_COMPA_vect, ISR_BLOCK) { if (Mouse_HID_Interface.IdleMSRemaining) Mouse_HID_Interface.IdleMSRemaining--; } +/** HID class driver callback function for the creation of HID reports to the host. + * + * \param HIDInterfaceInfo Pointer to the HID class interface configuration structure being referenced + * \param ReportData Pointer to a buffer where the created report should be stored + * + * \return Number of bytes written in the report (or zero if no report is to be sent + */ uint16_t CALLBACK_USB_HID_CreateNextHIDReport(USB_ClassInfo_HID_t* HIDInterfaceInfo, void* ReportData) { USB_MouseReport_Data_t* MouseReport = (USB_MouseReport_Data_t*)ReportData; @@ -130,6 +156,12 @@ uint16_t CALLBACK_USB_HID_CreateNextHIDReport(USB_ClassInfo_HID_t* HIDInterfaceI return sizeof(USB_MouseReport_Data_t); } +/** HID class driver callback function for the processing of HID reports from the host. + * + * \param HIDInterfaceInfo Pointer to the HID class interface configuration structure being referenced + * \param ReportData Pointer to a buffer where the created report has been stored + * \param ReportSize Size in bytes of the received HID report + */ void CALLBACK_USB_HID_ProcessReceivedHIDReport(USB_ClassInfo_HID_t* HIDInterfaceInfo, void* ReportData, uint16_t ReportSize) { // Unused (but mandatory for the HID class driver) in this demo, since there are no Host->Device reports diff --git a/Demos/Device/Mouse/Mouse.h b/Demos/Device/Mouse/Mouse.h index 9134e6772..62d6d8323 100644 --- a/Demos/Device/Mouse/Mouse.h +++ b/Demos/Device/Mouse/Mouse.h @@ -65,9 +65,16 @@ } USB_MouseReport_Data_t; /* Macros: */ + /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */ #define LEDMASK_USB_NOTREADY LEDS_LED1 + + /** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */ #define LEDMASK_USB_ENUMERATING (LEDS_LED2 | LEDS_LED3) + + /** LED mask for the library LED driver, to indicate that the USB interface is ready. */ #define LEDMASK_USB_READY (LEDS_LED2 | LEDS_LED4) + + /** 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: */ diff --git a/Demos/Device/RNDISEthernet/RNDISEthernet.c b/Demos/Device/RNDISEthernet/RNDISEthernet.c index 3246cd8bc..7c857197f 100644 --- a/Demos/Device/RNDISEthernet/RNDISEthernet.c +++ b/Demos/Device/RNDISEthernet/RNDISEthernet.c @@ -28,8 +28,18 @@ this software. */ +/** \file + * + * Main source file for the RNDISEthernet demo. This file contains the main tasks of + * the demo and is responsible for the initial application hardware configuration. + */ + #include "RNDISEthernet.h" +/** LUFA RNDIS Class driver interface configuration and state information. This structure is + * passed to all RNDIS Class driver functions, so that multiple instances of the same class + * within a device can be differentiated from one another. + */ USB_ClassInfo_RNDIS_t Ethernet_RNDIS_Interface = { .ControlInterfaceNumber = 0, @@ -46,13 +56,19 @@ USB_ClassInfo_RNDIS_t Ethernet_RNDIS_Interface = .AdapterVendorDescription = "LUFA RNDIS Demo Adapter", .AdapterMACAddress = {ADAPTER_MAC_ADDRESS}, }; - + +/** Main program entry point. This routine contains the overall program flow, including initial + * setup of all components and the main program loop. + */ int main(void) { SetupHardware(); LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); + TCP_Init(); + Webserver_Init(); + printf_P(PSTR("\r\n\r\n****** RNDIS Demo running. ******\r\n")); for (;;) @@ -71,6 +87,7 @@ int main(void) } } +/** Configures the board hardware and chip peripherals for the demo's functionality. */ void SetupHardware(void) { /* Disable watchdog if enabled by bootloader/fuses */ @@ -84,22 +101,21 @@ void SetupHardware(void) LEDs_Init(); SerialStream_Init(9600, false); USB_Init(); - - /* Initialize TCP and Webserver modules */ - TCP_Init(); - Webserver_Init(); } +/** Event handler for the library USB Connection event. */ void EVENT_USB_Connect(void) { - LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING); + LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING); } +/** Event handler for the library USB Disconnection event. */ void EVENT_USB_Disconnect(void) { - LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); + LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); } +/** Event handler for the library USB Configuration Changed event. */ void EVENT_USB_ConfigurationChanged(void) { LEDs_SetAllLEDs(LEDMASK_USB_READY); @@ -108,6 +124,7 @@ void EVENT_USB_ConfigurationChanged(void) LEDs_SetAllLEDs(LEDMASK_USB_ERROR); } +/** Event handler for the library USB Unhandled Control Packet event. */ void EVENT_USB_UnhandledControlPacket(void) { USB_RNDIS_ProcessControlPacket(&Ethernet_RNDIS_Interface); diff --git a/Demos/Device/RNDISEthernet/RNDISEthernet.h b/Demos/Device/RNDISEthernet/RNDISEthernet.h index f0247ce81..f0ba75a3d 100644 --- a/Demos/Device/RNDISEthernet/RNDISEthernet.h +++ b/Demos/Device/RNDISEthernet/RNDISEthernet.h @@ -58,11 +58,20 @@ #include /* Macros: */ + /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */ #define LEDMASK_USB_NOTREADY LEDS_LED1 + + /** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */ #define LEDMASK_USB_ENUMERATING (LEDS_LED2 | LEDS_LED3) + + /** LED mask for the library LED driver, to indicate that the USB interface is ready. */ #define LEDMASK_USB_READY (LEDS_LED2 | LEDS_LED4) + + /** 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) - #define LEDMASK_USB_BUSY LEDS_LED2 + + /** LED mask for the library LED driver, to indicate that the USB interface is busy. */ + #define LEDMASK_USB_BUSY (LEDS_LED2) /* Function Prototypes: */ void SetupHardware(void); diff --git a/Demos/Device/USBtoSerial/USBtoSerial.c b/Demos/Device/USBtoSerial/USBtoSerial.c index 7c89278ef..85826c2b3 100644 --- a/Demos/Device/USBtoSerial/USBtoSerial.c +++ b/Demos/Device/USBtoSerial/USBtoSerial.c @@ -28,11 +28,24 @@ this software. */ +/** \file + * + * Main source file for the USBtoSerial demo. This file contains the main tasks of + * the demo and is responsible for the initial application hardware configuration. + */ + #include "USBtoSerial.h" +/** Circular buffer to hold data from the host before it is sent to the device via the serial port. */ RingBuff_t Rx_Buffer; + +/** Circular buffer to hold data from the serial port before it is sent to the host. */ RingBuff_t Tx_Buffer; +/** LUFA CDC Class driver interface configuration and state information. This structure is + * passed to all CDC Class driver functions, so that multiple instances of the same class + * within a device can be differentiated from one another. + */ USB_ClassInfo_CDC_t VirtualSerial_CDC_Interface = { .ControlInterfaceNumber = 0, @@ -47,6 +60,9 @@ USB_ClassInfo_CDC_t VirtualSerial_CDC_Interface = .NotificationEndpointSize = CDC_NOTIFICATION_EPSIZE, }; +/** Main program entry point. This routine contains the overall program flow, including initial + * setup of all components and the main program loop. + */ int main(void) { SetupHardware(); @@ -77,6 +93,7 @@ int main(void) } } +/** Configures the board hardware and chip peripherals for the demo's functionality. */ void SetupHardware(void) { /* Disable watchdog if enabled by bootloader/fuses */ @@ -92,16 +109,19 @@ void SetupHardware(void) USB_Init(); } +/** Event handler for the library USB Connection event. */ void EVENT_USB_Connect(void) { LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING); } +/** Event handler for the library USB Disconnection event. */ void EVENT_USB_Disconnect(void) { LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); } +/** Event handler for the library USB Configuration Changed event. */ void EVENT_USB_ConfigurationChanged(void) { LEDs_SetAllLEDs(LEDMASK_USB_READY); @@ -110,27 +130,35 @@ void EVENT_USB_ConfigurationChanged(void) LEDs_SetAllLEDs(LEDMASK_USB_ERROR); } +/** Event handler for the library USB Unhandled Control Packet event. */ void EVENT_USB_UnhandledControlPacket(void) { USB_CDC_ProcessControlPacket(&VirtualSerial_CDC_Interface); } +/** ISR to manage the reception of data from the serial port, placing received bytes into a circular buffer + * for later transmission to the host. + */ ISR(USART1_RX_vect, ISR_BLOCK) { if (USB_IsConnected) Buffer_StoreElement(&Tx_Buffer, UDR1); } +/** Event handler for the CDC Class driver Line Encoding Changed event. + * + * \param CDCInterfaceInfo Pointer to the CDC class interface configuration structure being referenced + */ void EVENT_USB_CDC_LineEncodingChanged(USB_ClassInfo_CDC_t* CDCInterfaceInfo) { uint8_t ConfigMask = 0; - if (CDCInterfaceInfo->LineEncoding.ParityType == Parity_Odd) + if (CDCInterfaceInfo->LineEncoding.ParityType == CDC_PARITY_Odd) ConfigMask = ((1 << UPM11) | (1 << UPM10)); - else if (CDCInterfaceInfo->LineEncoding.ParityType == Parity_Even) + else if (CDCInterfaceInfo->LineEncoding.ParityType == CDC_PARITY_Even) ConfigMask = (1 << UPM11); - if (CDCInterfaceInfo->LineEncoding.CharFormat == TwoStopBits) + if (CDCInterfaceInfo->LineEncoding.CharFormat == CDC_LINEENCODING_TwoStopBits) ConfigMask |= (1 << USBS1); if (CDCInterfaceInfo->LineEncoding.DataBits == 6) diff --git a/Demos/Device/USBtoSerial/USBtoSerial.h b/Demos/Device/USBtoSerial/USBtoSerial.h index bc8d98398..9660381bb 100644 --- a/Demos/Device/USBtoSerial/USBtoSerial.h +++ b/Demos/Device/USBtoSerial/USBtoSerial.h @@ -54,9 +54,16 @@ #include /* Macros: */ + /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */ #define LEDMASK_USB_NOTREADY LEDS_LED1 + + /** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */ #define LEDMASK_USB_ENUMERATING (LEDS_LED2 | LEDS_LED3) + + /** LED mask for the library LED driver, to indicate that the USB interface is ready. */ #define LEDMASK_USB_READY (LEDS_LED2 | LEDS_LED4) + + /** 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: */ -- cgit v1.2.3