X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/3472af91a5c167cf243335fa32b5284a4a796e39..a459f10b0c1a3e02f160ff3a1a2a0b45ae5b69a7:/Demos/Device/ClassDriver/AudioOutput/AudioOutput.c?ds=inline diff --git a/Demos/Device/ClassDriver/AudioOutput/AudioOutput.c b/Demos/Device/ClassDriver/AudioOutput/AudioOutput.c index 9a63af68a..d7de7d5b0 100644 --- a/Demos/Device/ClassDriver/AudioOutput/AudioOutput.c +++ b/Demos/Device/ClassDriver/AudioOutput/AudioOutput.c @@ -46,8 +46,8 @@ USB_ClassInfo_Audio_Device_t Speaker_Audio_Interface = { .StreamingInterfaceNumber = 1, - .DataINEndpointNumber = AUDIO_STREAM_EPNUM, - .DataINEndpointSize = AUDIO_STREAM_EPSIZE, + .DataOUTEndpointNumber = AUDIO_STREAM_EPNUM, + .DataOUTEndpointSize = AUDIO_STREAM_EPSIZE, }, }; @@ -62,8 +62,7 @@ int main(void) for (;;) { - if (Speaker_Audio_Interface.State.InterfaceEnabled) - ProcessNextSample(); + ProcessNextSample(); Audio_Device_USBTask(&Speaker_Audio_Interface); USB_USBTask(); @@ -90,23 +89,25 @@ void SetupHardware(void) */ void ProcessNextSample(void) { + /* Check if the sample reload timer period has elapsed, and that the USB bus is ready for a new sample */ if ((TIFR0 & (1 << OCF0A)) && Audio_Device_IsSampleReceived(&Speaker_Audio_Interface)) { /* Clear the sample reload timer */ TIFR0 |= (1 << OCF0A); /* Retrieve the signed 16-bit left and right audio samples */ - int16_t LeftSample_16Bit = (int16_t)Audio_Device_ReadSample16(); - int16_t RightSample_16Bit = (int16_t)Audio_Device_ReadSample16(); + int16_t LeftSample_16Bit = Audio_Device_ReadSample16(&Speaker_Audio_Interface); + int16_t RightSample_16Bit = Audio_Device_ReadSample16(&Speaker_Audio_Interface); /* Massage signed 16-bit left and right audio samples into signed 8-bit */ int8_t LeftSample_8Bit = (LeftSample_16Bit >> 8); int8_t RightSample_8Bit = (RightSample_16Bit >> 8); -#if !defined(AUDIO_OUT_STEREO) /* 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); -#endif + + /* Get absolute value of mixed sample value */ + uint8_t MixedSample_8Bit_Abs = abs(MixedSample_8Bit); #if defined(AUDIO_OUT_MONO) /* Load the sample into the PWM timer channel */ @@ -118,31 +119,28 @@ void ProcessNextSample(void) #elif defined(AUDIO_OUT_PORTC) /* Load the 8-bit mixed sample into PORTC */ PORTC = MixedSample_8Bit; -#else - uint8_t LEDMask = LEDS_NO_LEDS; +#endif - /* Make mixed sample value positive (absolute) */ - MixedSample_8Bit = abs(MixedSample_8Bit); + uint8_t LEDMask = LEDS_NO_LEDS; - if (MixedSample_8Bit > ((128 / 8) * 1)) + if (MixedSample_8Bit_Abs > 2) LEDMask |= LEDS_LED1; - if (MixedSample_8Bit > ((128 / 8) * 2)) + if (MixedSample_8Bit_Abs > 4) LEDMask |= LEDS_LED2; - if (MixedSample_8Bit > ((128 / 8) * 3)) + if (MixedSample_8Bit_Abs > 8) LEDMask |= LEDS_LED3; - if (MixedSample_8Bit > ((128 / 8) * 4)) + if (MixedSample_8Bit_Abs > 16) LEDMask |= LEDS_LED4; LEDs_SetAllLEDs(LEDMask); -#endif } } /** Event handler for the library USB Connection event. */ -void EVENT_USB_Connect(void) +void EVENT_USB_Device_Connect(void) { LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING); @@ -171,7 +169,7 @@ void EVENT_USB_Connect(void) } /** Event handler for the library USB Disconnection event. */ -void EVENT_USB_Disconnect(void) +void EVENT_USB_Device_Disconnect(void) { LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); @@ -196,7 +194,7 @@ void EVENT_USB_Disconnect(void) } /** Event handler for the library USB Configuration Changed event. */ -void EVENT_USB_ConfigurationChanged(void) +void EVENT_USB_Device_ConfigurationChanged(void) { LEDs_SetAllLEDs(LEDMASK_USB_READY); @@ -204,8 +202,8 @@ 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) +/** Event handler for the library USB Unhandled Control Request event. */ +void EVENT_USB_Device_UnhandledControlRequest(void) { - Audio_Device_ProcessControlPacket(&Speaker_Audio_Interface); + Audio_Device_ProcessControlRequest(&Speaker_Audio_Interface); }