Pipe_BoundEndpointNumber() has been renamed to Pipe_GetBoundEndpointAddress(), and now returns the correct endpoint direction as part of the endpoint address.
Add Audio_GetSetEndpointProperty() function to the Host mode Audio class driver.
This commit is contained in:
parent
34164a5550
commit
0bf5064aec
9 changed files with 82 additions and 37 deletions
|
@ -29,16 +29,16 @@
|
|||
*/
|
||||
|
||||
/** \file
|
||||
* \brief Master include file for the library USB Audio Class driver.
|
||||
* \brief Master include file for the library USB Audio 1.0 Class driver.
|
||||
*
|
||||
* Master include file for the library USB Audio Class driver, for both host and device modes, where available.
|
||||
* Master include file for the library USB Audio 1.0 Class driver, for both host and device modes, where available.
|
||||
*
|
||||
* This file should be included in all user projects making use of this optional class driver, instead of
|
||||
* including any headers in the USB/ClassDriver/Device, USB/ClassDriver/Host or USB/ClassDriver/Common subdirectories.
|
||||
*/
|
||||
|
||||
/** \ingroup Group_USBClassDrivers
|
||||
* \defgroup Group_USBClassAudio Audio Class Driver
|
||||
* \defgroup Group_USBClassAudio Audio 1.0 Class Driver
|
||||
*
|
||||
* \section Sec_Dependencies Module Source Dependencies
|
||||
* The following files must be built with any user project that uses this module:
|
||||
|
@ -46,12 +46,12 @@
|
|||
* - LUFA/Drivers/USB/Class/Host/Audio.c <i>(Makefile source module name: LUFA_SRC_USBCLASS)</i>
|
||||
*
|
||||
* \section Sec_ModDescription Module Description
|
||||
* Audio Class Driver module. This module contains an internal implementation of the USB Audio 1.0 Class, for both
|
||||
* Device and Host USB modes. User applications can use this class driver instead of implementing the Audio class
|
||||
* Audio 1.0 Class Driver module. This module contains an internal implementation of the USB Audio 1.0 Class, for both
|
||||
* Device and Host USB modes. User applications can use this class driver instead of implementing the Audio 1.0 class
|
||||
* manually via the low-level LUFA APIs.
|
||||
*
|
||||
* This module is designed to simplify the user code by exposing only the required interface needed to interface with
|
||||
* Hosts or Devices using the USB Audio Class.
|
||||
* Hosts or Devices using the USB Audio 1.0 Class.
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -194,7 +194,7 @@ static uint8_t DComp_NextAudioInterfaceDataEndpoint(void* CurrentDescriptor)
|
|||
return DESCRIPTOR_SEARCH_NotFound;
|
||||
}
|
||||
|
||||
uint8_t AUDIO_Host_StartStopStreaming(USB_ClassInfo_Audio_Host_t* const AudioInterfaceInfo,
|
||||
uint8_t Audio_Host_StartStopStreaming(USB_ClassInfo_Audio_Host_t* const AudioInterfaceInfo,
|
||||
bool EnableStreaming)
|
||||
{
|
||||
if (!(AudioInterfaceInfo->State.IsActive))
|
||||
|
@ -204,5 +204,37 @@ uint8_t AUDIO_Host_StartStopStreaming(USB_ClassInfo_Audio_Host_t* const AudioInt
|
|||
EnableStreaming ? AudioInterfaceInfo->State.EnabledStreamingAltIndex : 0);
|
||||
}
|
||||
|
||||
uint8_t Audio_GetSetEndpointProperty(USB_ClassInfo_Audio_Host_t* const AudioInterfaceInfo,
|
||||
const uint8_t DataPipeIndex,
|
||||
const uint8_t EndpointProperty,
|
||||
const uint8_t EndpointControl,
|
||||
uint16_t const DataLength,
|
||||
uint8_t* Data)
|
||||
{
|
||||
uint8_t RequestType;
|
||||
uint8_t EndpointAddress;
|
||||
|
||||
if (EndpointProperty & 0x80)
|
||||
RequestType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE);
|
||||
else
|
||||
RequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE);
|
||||
|
||||
Pipe_SelectPipe(DataPipeIndex);
|
||||
EndpointAddress = Pipe_GetBoundEndpointAddress();
|
||||
|
||||
USB_ControlRequest = (USB_Request_Header_t)
|
||||
{
|
||||
.bmRequestType = RequestType,
|
||||
.bRequest = EndpointProperty,
|
||||
.wValue = ((uint16_t)EndpointControl << 8),
|
||||
.wIndex = EndpointAddress,
|
||||
.wLength = DataLength,
|
||||
};
|
||||
|
||||
Pipe_SelectPipe(PIPE_CONTROLPIPE);
|
||||
|
||||
return USB_Host_SendControlRequest(Data);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -29,23 +29,23 @@
|
|||
*/
|
||||
|
||||
/** \file
|
||||
* \brief Host mode driver for the library USB Audio Class driver.
|
||||
* \brief Host mode driver for the library USB Audio 1.0 Class driver.
|
||||
*
|
||||
* Host mode driver for the library USB Audio Class driver.
|
||||
* Host mode driver for the library USB Audio 1.0 Class driver.
|
||||
*
|
||||
* \note This file should not be included directly. It is automatically included as needed by the USB module driver
|
||||
* dispatch header located in LUFA/Drivers/USB.h.
|
||||
*/
|
||||
|
||||
/** \ingroup Group_USBClassAudio
|
||||
* \defgroup Group_USBClassAudioHost Audio Class Host Mode Driver
|
||||
* \defgroup Group_USBClassAudioHost Audio 1.0 Class Host Mode Driver
|
||||
*
|
||||
* \section Sec_Dependencies Module Source Dependencies
|
||||
* The following files must be built with any user project that uses this module:
|
||||
* - LUFA/Drivers/USB/Class/Host/Audio.c <i>(Makefile source module name: LUFA_SRC_USBCLASS)</i>
|
||||
*
|
||||
* \section Sec_ModDescription Module Description
|
||||
* Host Mode USB Class driver framework interface, for the Audio USB Class driver.
|
||||
* Host Mode USB Class driver framework interface, for the Audio 1.0 USB Class driver.
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
|
@ -138,9 +138,30 @@
|
|||
*
|
||||
* \return A value from the \ref USB_Host_SendControlErrorCodes_t enum.
|
||||
*/
|
||||
uint8_t AUDIO_Host_StartStopStreaming(USB_ClassInfo_Audio_Host_t* const AudioInterfaceInfo,
|
||||
uint8_t Audio_Host_StartStopStreaming(USB_ClassInfo_Audio_Host_t* const AudioInterfaceInfo,
|
||||
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.
|
||||
*
|
||||
* \param[in,out] AudioInterfaceInfo Pointer to a structure containing an Audio Class host configuration and state.
|
||||
* \param[in] DataPipeIndex Index of the data pipe whose bound endpoint is to be altered.
|
||||
* \param[in] EndpointProperty Property of the endpoint to get or set, a value from \ref Audio_ClassRequests_t.
|
||||
* \param[in] EndpointControl Parameter of the endpoint to get or set, a value from \ref Audio_EndpointControls_t.
|
||||
* \param[in,out] DataLength For SET operations, the length of the parameter data to set. For GET operations, the maximum
|
||||
* length of the retrieved data.
|
||||
* \param[in,out] Data Pointer to a location where the parameter data is stored for SET operations, or where
|
||||
* the retrieved data is to be stored for GET operations.
|
||||
*
|
||||
* \return A value from the \ref USB_Host_SendControlErrorCodes_t enum.
|
||||
*/
|
||||
uint8_t Audio_GetSetEndpointProperty(USB_ClassInfo_Audio_Host_t* const AudioInterfaceInfo,
|
||||
const uint8_t DataPipeIndex,
|
||||
const uint8_t EndpointProperty,
|
||||
const uint8_t EndpointControl,
|
||||
uint16_t* const DataLength,
|
||||
uint8_t* Data);
|
||||
|
||||
/* Inline Functions: */
|
||||
/** General management task for a given Audio host class interface, required for the correct operation of
|
||||
* the interface. This should be called frequently in the main program loop, before the master USB management task
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue