#include <avr/io.h>\r
#include <avr/wdt.h>\r
#include <avr/power.h>\r
+ #include <stdlib.h>\r
\r
#include "Descriptors.h"\r
\r
- #include <LUFA/Version.h> // Library Version Information\r
- #include <LUFA/Drivers/USB/USB.h> // USB Functionality\r
- #include <LUFA/Drivers/Board/LEDs.h> // LEDs driver\r
- #include <LUFA/Scheduler/Scheduler.h> // Simple scheduler for task management\r
+ #include <LUFA/Version.h>\r
+ #include <LUFA/Drivers/USB/USB.h>\r
+ #include <LUFA/Drivers/Board/LEDs.h>
\r
/* Macros: */\r
- #if defined(USB_FULL_CONTROLLER) || defined(USB_MODIFIED_FULL_CONTROLLER)\r
- #define TCCRxA TCCR3A\r
- #define TCCRxB TCCR3B\r
- #define OCRxA OCR3A\r
- #define OCRxB OCR3B\r
- #define WGMx0 WGM30\r
- #define WGMx2 WGM32\r
- #define COMxA1 COM3A1\r
- #define COMxA0 COM3A0\r
- #define COMxB1 COM3B1\r
- #define COMxB0 COM3B0\r
- #define CSx0 CS30\r
- #else\r
- /** Timer count register used for left channel PWM audio output (or mixed output in mono output mode) */\r
- #define TCCRxA TCCR1A\r
+ /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */\r
+ #define LEDMASK_USB_NOTREADY LEDS_LED1\r
\r
- /** Timer count register used for right channel PWM audio output */\r
- #define TCCRxB TCCR1B\r
+ /** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */\r
+ #define LEDMASK_USB_ENUMERATING (LEDS_LED2 | LEDS_LED3)\r
\r
- /** Timer compare register used for left channel PWM audio output (or mixed output in mono output mode) */\r
- #define OCRxA OCR1A\r
+ /** LED mask for the library LED driver, to indicate that the USB interface is ready. */\r
+ #define LEDMASK_USB_READY (LEDS_LED2 | LEDS_LED4)\r
\r
- /** Timer compare register used for right channel PWM audio output */\r
- #define OCRxB OCR1B\r
-\r
- /** Timer control register mask used to select PWM mode */\r
- #define WGMx0 WGM10\r
-\r
- /** Timer control register mask used to select PWM mode */\r
- #define WGMx2 WGM12\r
-\r
- /** Timer control register mask used to set, clear or toggle channel output pin on match */\r
- #define COMxA1 COM1A1\r
-\r
- /** Timer control register mask used to set, clear or toggle channel output pin on match */\r
- #define COMxA0 COM1A0\r
-\r
- /** Timer control register mask used to set, clear or toggle channel output pin on match */\r
- #define COMxB1 COM1B1\r
-\r
- /** Timer control register mask used to set, clear or toggle channel output pin on match */\r
- #define COMxB0 COM1B0\r
-\r
- /** Timer control register mask used to start the timer at Fcpu clock rate */\r
- #define CSx0 CS10\r
- #endif\r
- \r
- /* Enums: */\r
- /** Enum for the possible status codes for passing to the UpdateStatus() function. */\r
- enum AudioOutput_StatusCodes_t\r
- {\r
- Status_USBNotReady = 0, /**< USB is not ready (disconnected from a USB host) */\r
- Status_USBEnumerating = 1, /**< USB interface is enumerating */\r
- Status_USBReady = 2, /**< USB interface is connected and ready */\r
- };\r
-\r
- /* Task Definitions: */\r
- TASK(USB_Audio_Task);\r
+ /** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */\r
+ #define LEDMASK_USB_ERROR (LEDS_LED1 | LEDS_LED3)\r
\r
/* Function Prototypes: */\r
- void EVENT_USB_Connect(void);\r
- void EVENT_USB_Disconnect(void);\r
- void EVENT_USB_ConfigurationChanged(void);\r
- void EVENT_USB_UnhandledControlPacket(void);\r
- \r
- void UpdateStatus(uint8_t CurrentStatus);\r
+ void SetupHardware(void);\r
+ void USB_Audio_Task(void);\r
+\r
+ void EVENT_USB_Device_Connect(void);\r
+ void EVENT_USB_Device_Disconnect(void);\r
+ void EVENT_USB_Device_ConfigurationChanged(void);\r
+ void EVENT_USB_Device_UnhandledControlRequest(void);\r
\r
#endif\r