X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/1f1d0710f379a8b08ef646cbadb63d92c35e47fb..eea687e6d9524e252d3ae50f06b33f4e753dcf2b:/Demos/Device/ClassDriver/AudioInput/AudioInput.c diff --git a/Demos/Device/ClassDriver/AudioInput/AudioInput.c b/Demos/Device/ClassDriver/AudioInput/AudioInput.c index 4bf1ef875..31e8d96ad 100644 --- a/Demos/Device/ClassDriver/AudioInput/AudioInput.c +++ b/Demos/Device/ClassDriver/AudioInput/AudioInput.c @@ -178,7 +178,7 @@ void EVENT_USB_Device_ControlRequest(void) * * \param[in,out] AudioInterfaceInfo Pointer to a structure containing an Audio Class configuration and state. * \param[in] EndpointProperty Property of the endpoint to get or set, a value from Audio_ClassRequests_t. - * \param[in] EndpointIndex Index of the streaming endpoint whose property is being referenced. + * \param[in] EndpointAddress Address of the streaming endpoint whose property is being referenced. * \param[in] EndpointControl Parameter of the endpoint to get or set, a value from 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. When NULL, the function should return whether the given property @@ -188,47 +188,45 @@ void EVENT_USB_Device_ControlRequest(void) * * \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) { /* Check the requested endpoint to see if a supported endpoint is being manipulated */ - if (EndpointAddress == (ENDPOINT_DESCRIPTOR_DIR_IN | Microphone_Audio_Interface.Config.DataINEndpointNumber)) + if (EndpointAddress == (ENDPOINT_DIR_IN | Microphone_Audio_Interface.Config.DataINEndpointNumber)) { /* Check the requested control to see if a supported control is being manipulated */ if (EndpointControl == AUDIO_EPCONTROL_SamplingFreq) { - /* Check the requested property to see if a supported property is being manipulated */ - if (EndpointProperty == AUDIO_REQ_SetCurrent) + switch (EndpointProperty) { - /* Check if we are just testing for a valid property, or actually adjusting it */ - if (DataLength != NULL) - { - /* Set the new sampling frequency to the value given by the host */ - CurrentAudioSampleFrequency = (((uint32_t)Data[2] << 16) | ((uint32_t)Data[1] << 8) | (uint32_t)Data[0]); - - /* Adjust sample reload timer to the new frequency */ - OCR0A = ((F_CPU / 8 / CurrentAudioSampleFrequency) - 1); - } - - return true; - } - else if (EndpointProperty == AUDIO_REQ_GetCurrent) - { - /* Check if we are just testing for a valid property, or actually reading it */ - if (DataLength != NULL) - { - *DataLength = 3; - - Data[2] = (CurrentAudioSampleFrequency >> 16); - Data[1] = (CurrentAudioSampleFrequency >> 8); - Data[0] = (CurrentAudioSampleFrequency & 0xFF); - } - - return true; + case AUDIO_REQ_SetCurrent: + /* Check if we are just testing for a valid property, or actually adjusting it */ + if (DataLength != NULL) + { + /* Set the new sampling frequency to the value given by the host */ + CurrentAudioSampleFrequency = (((uint32_t)Data[2] << 16) | ((uint32_t)Data[1] << 8) | (uint32_t)Data[0]); + + /* Adjust sample reload timer to the new frequency */ + OCR0A = ((F_CPU / 8 / CurrentAudioSampleFrequency) - 1); + } + + return true; + case AUDIO_REQ_GetCurrent: + /* Check if we are just testing for a valid property, or actually reading it */ + if (DataLength != NULL) + { + *DataLength = 3; + + Data[2] = (CurrentAudioSampleFrequency >> 16); + Data[1] = (CurrentAudioSampleFrequency >> 8); + Data[0] = (CurrentAudioSampleFrequency & 0xFF); + } + + return true; } } }