/*
LUFA Library
- Copyright (C) Dean Camera, 2010.
+ Copyright (C) Dean Camera, 2011.
dean [at] fourwalledcubicle [dot] com
- www.fourwalledcubicle.com
+ www.lufa-lib.org
*/
/*
- Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+ Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com)
Permission to use, copy, modify, distribute, and sell this
software and its documentation for any purpose is hereby granted
#include "AudioOutput.h"
/** Flag to indicate if the streaming audio alternative interface has been selected by the host. */
-bool StreamingAudioInterfaceSelected = false;
+static bool StreamingAudioInterfaceSelected = false;
+
/** Main program entry point. This routine contains the overall program flow, including initial
* setup of all components and the main program loop.
/* Sample reload timer initialization */
TIMSK0 = (1 << OCIE0A);
- OCR0A = (F_CPU / 8 / AUDIO_SAMPLE_FREQUENCY) - 1;
+ OCR0A = ((F_CPU / 8 / AUDIO_SAMPLE_FREQUENCY) - 1);
TCCR0A = (1 << WGM01); // CTC mode
TCCR0B = (1 << CS01); // Fcpu/8 speed
LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
}
-/** Event handler for the USB_UnhandledControlRequest event. This is used to catch standard and class specific
- * control requests that are not handled internally by the USB library (including the Audio class-specific
- * requests) so that they can be handled appropriately for the application.
+/** Event handler for the USB_ControlRequest event. This is used to catch and process control requests sent to
+ * the device from the USB host before passing along unhandled control requests to the library for processing
+ * internally.
*/
-void EVENT_USB_Device_UnhandledControlRequest(void)
+void EVENT_USB_Device_ControlRequest(void)
{
/* Process General and Audio specific control requests */
switch (USB_ControlRequest.bRequest)
if (Endpoint_IsOUTReceived() && StreamingAudioInterfaceSelected)
{
/* Retrieve the signed 16-bit left and right audio samples, convert to 8-bit */
- int8_t LeftSample_8Bit = ((int16_t)Endpoint_Read_Word_LE() >> 8);
- int8_t RightSample_8Bit = ((int16_t)Endpoint_Read_Word_LE() >> 8);
+ int8_t LeftSample_8Bit = ((int16_t)Endpoint_Read_16_LE() >> 8);
+ int8_t RightSample_8Bit = ((int16_t)Endpoint_Read_16_LE() >> 8);
/* 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);