X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/567f7ecce0d04c2406b2379eb34ef3e54178a6d1..77a9df36a77d2523dd2bc24fa17f9f04c6c175c5:/LUFA/Drivers/USB/Class/Device/Audio.h diff --git a/LUFA/Drivers/USB/Class/Device/Audio.h b/LUFA/Drivers/USB/Class/Device/Audio.h index cad87f3b6..60880c29e 100644 --- a/LUFA/Drivers/USB/Class/Device/Audio.h +++ b/LUFA/Drivers/USB/Class/Device/Audio.h @@ -38,7 +38,7 @@ */ /** \ingroup Group_USBClassAudio - * \defgroup Group_USBClassAudioDevice Audio Class Device Mode Driver + * \defgroup Group_USBClassAudioDevice Audio 1.0 Class Device Mode Driver * * \section Sec_Dependencies Module Source Dependencies * The following files must be built with any user project that uses this module: @@ -101,9 +101,9 @@ */ struct { - bool InterfaceEnabled; /**< Set and cleared by the class driver to indicate if the host has enabled the streaming endpoints - * of the Audio Streaming interface. - */ + bool InterfaceEnabled; /**< Set and cleared by the class driver to indicate if the host has enabled the streaming endpoints + * of the Audio Streaming interface. + */ } State; /**< State data for the USB class interface within the device. All elements in this section * are reset to their defaults when the interface is enumerated. */ @@ -114,10 +114,6 @@ * \ref EVENT_USB_Device_ConfigurationChanged() event so that the endpoints are configured when the configuration containing the * given Audio interface is selected. * - * \note The endpoint index numbers as given in the interface's configuration structure must not overlap with any other - * interface, or endpoint bank corruption will occur. Gaps in the allocated endpoint numbers or non-sequential indexes - * within a single interface is allowed, but no two interfaces of any type have have interleaved endpoint indexes. - * * \param[in,out] AudioInterfaceInfo Pointer to a structure containing an Audio Class configuration and state. * * \return Boolean \c true if the endpoints were successfully configured, \c false otherwise. @@ -153,12 +149,20 @@ * * \return Boolean true if the property get/set was successful, false otherwise */ - bool CALLBACK_Audio_GetSetEndpointProperty(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo, - const uint8_t EndpointProperty, - const uint8_t EndpointAddress, - const uint8_t EndpointControl, - uint16_t* const DataLength, - uint8_t* Data); + bool CALLBACK_Audio_Device_GetSetEndpointProperty(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo, + const uint8_t EndpointProperty, + const uint8_t EndpointAddress, + const uint8_t EndpointControl, + uint16_t* const DataLength, + uint8_t* Data); + + /** Audio class driver event for an Audio Stream start/stop change. This event fires each time the device receives a stream enable or + * disable control request from the host, to start and stop the audio stream. The current state of the stream can be determined by the + * State.InterfaceEnabled value inside the Audio interface structure passed as a parameter. + * + * \param[in,out] AudioInterfaceInfo Pointer to a structure containing an Audio Class configuration and state. + */ + void EVENT_Audio_Device_StreamStartStop(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo); /* Inline Functions: */ /** General management task for a given Audio class interface, required for the correct operation of the interface. This should @@ -348,6 +352,18 @@ Endpoint_ClearIN(); } + /* Private Interface - For use in library only: */ + #if !defined(__DOXYGEN__) + /* Function Prototypes: */ + #if defined(__INCLUDE_FROM_AUDIO_DEVICE_C) + void Audio_Device_Event_Stub(void) ATTR_CONST; + + void EVENT_Audio_Device_StreamStartStop(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo) + ATTR_WEAK ATTR_NON_NULL_PTR_ARG(1) ATTR_ALIAS(Audio_Device_Event_Stub); + #endif + + #endif + /* Disable C linkage for C++ Compilers: */ #if defined(__cplusplus) }