X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/6e2a3174a5e08528299c208bf9415beccf43840a..21a012a018221fd1e55b8b054d09d7900ed9fd79:/LUFA/Drivers/USB/Class/Host/Audio.h diff --git a/LUFA/Drivers/USB/Class/Host/Audio.h b/LUFA/Drivers/USB/Class/Host/Audio.h index befcc2f59..81dcedbcd 100644 --- a/LUFA/Drivers/USB/Class/Host/Audio.h +++ b/LUFA/Drivers/USB/Class/Host/Audio.h @@ -79,8 +79,14 @@ { const struct { - uint8_t DataINPipeNumber; /**< Pipe number of the Audio interface's IN data pipe. */ - uint8_t DataOUTPipeNumber; /**< Pipe number of the Audio interface's OUT data pipe. */ + uint8_t DataINPipeNumber; /**< Pipe number of the Audio interface's IN data pipe. If this interface should not + * bind to an IN endpoint, this may be set to 0 to disable audio input streaming for + * this driver instance. + */ + uint8_t DataOUTPipeNumber; /**< Pipe number of the Audio interface's OUT data pipe. If this interface should not + * bind to an OUT endpoint, this may be set to 0 to disable audio output streaming for + * this driver instance. + */ } Config; /**< Config data for the USB class interface within the device. All elements in this section * must be set or the interface will fail to enumerate and operate correctly. */ @@ -139,7 +145,7 @@ * \return A value from the \ref USB_Host_SendControlErrorCodes_t enum. */ uint8_t Audio_Host_StartStopStreaming(USB_ClassInfo_Audio_Host_t* const AudioInterfaceInfo, - bool EnableStreaming); + const bool EnableStreaming); /** Gets or sets the specified property of a streaming audio class endpoint that is bound to a pipe in the given * class instance. @@ -159,7 +165,7 @@ const uint8_t DataPipeIndex, const uint8_t EndpointProperty, const uint8_t EndpointControl, - uint16_t const DataLength, + const uint16_t DataLength, void* const Data); /* Inline Functions: */ @@ -325,10 +331,11 @@ { Pipe_Write_8(Sample); - if (Pipe_BytesInPipe() == AudioInterfaceInfo->State.DataOUTPipeSize) + if (!(Pipe_IsReadWriteAllowed())) { Pipe_Unfreeze(); Pipe_ClearOUT(); + Pipe_WaitUntilReady(); Pipe_Freeze(); } } @@ -348,10 +355,11 @@ { Pipe_Write_16_LE(Sample); - if (Pipe_BytesInPipe() == AudioInterfaceInfo->State.DataOUTPipeSize) + if (!(Pipe_IsReadWriteAllowed())) { Pipe_Unfreeze(); Pipe_ClearOUT(); + Pipe_WaitUntilReady(); Pipe_Freeze(); } } @@ -372,10 +380,11 @@ Pipe_Write_16_LE(Sample); Pipe_Write_8(Sample >> 16); - if (Pipe_BytesInPipe() == AudioInterfaceInfo->State.DataOUTPipeSize) + if (!(Pipe_IsReadWriteAllowed())) { Pipe_Unfreeze(); Pipe_ClearOUT(); + Pipe_WaitUntilReady(); Pipe_Freeze(); } } @@ -384,9 +393,9 @@ #if !defined(__DOXYGEN__) /* Function Prototypes: */ #if defined(__INCLUDE_FROM_AUDIO_HOST_C) - static uint8_t DComp_NextAudioControlInterface(void* CurrentDescriptor); - static uint8_t DComp_NextAudioStreamInterface(void* CurrentDescriptor); - static uint8_t DComp_NextAudioInterfaceDataEndpoint(void* CurrentDescriptor); + static uint8_t DCOMP_Audio_Host_NextAudioControlInterface(void* CurrentDescriptor); + static uint8_t DCOMP_Audio_Host_NextAudioStreamInterface(void* CurrentDescriptor); + static uint8_t DCOMP_Audio_Host_NextAudioInterfaceDataEndpoint(void* CurrentDescriptor); #endif #endif