X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/567f7ecce0d04c2406b2379eb34ef3e54178a6d1..77a9df36a77d2523dd2bc24fa17f9f04c6c175c5:/LUFA/Drivers/USB/Class/Device/Audio.c?ds=sidebyside diff --git a/LUFA/Drivers/USB/Class/Device/Audio.c b/LUFA/Drivers/USB/Class/Device/Audio.c index dbf62dae2..0b47b34a2 100644 --- a/LUFA/Drivers/USB/Class/Device/Audio.c +++ b/LUFA/Drivers/USB/Class/Device/Audio.c @@ -70,6 +70,7 @@ void Audio_Device_ProcessControlRequest(USB_ClassInfo_Audio_Device_t* const Audi Endpoint_ClearStatusStage(); AudioInterfaceInfo->State.InterfaceEnabled = ((USB_ControlRequest.wValue & 0xFF) != 0); + EVENT_Audio_Device_StreamStartStop(AudioInterfaceInfo); } break; @@ -92,7 +93,8 @@ void Audio_Device_ProcessControlRequest(USB_ClassInfo_Audio_Device_t* const Audi uint8_t EndpointAddress = (uint8_t)USB_ControlRequest.wIndex; uint8_t EndpointControl = (USB_ControlRequest.wValue >> 8); - if (CALLBACK_Audio_GetSetEndpointProperty(AudioInterfaceInfo, EndpointProperty, EndpointAddress, EndpointControl, NULL, NULL)) + if (CALLBACK_Audio_Device_GetSetEndpointProperty(AudioInterfaceInfo, EndpointProperty, EndpointAddress, + EndpointControl, NULL, NULL)) { uint16_t ValueLength = USB_ControlRequest.wLength; uint8_t Value[ValueLength]; @@ -101,7 +103,8 @@ void Audio_Device_ProcessControlRequest(USB_ClassInfo_Audio_Device_t* const Audi Endpoint_Read_Control_Stream_LE(Value, ValueLength); Endpoint_ClearIN(); - CALLBACK_Audio_GetSetEndpointProperty(AudioInterfaceInfo, EndpointProperty, EndpointAddress, EndpointControl, &ValueLength, Value); + CALLBACK_Audio_Device_GetSetEndpointProperty(AudioInterfaceInfo, EndpointProperty, EndpointAddress, + EndpointControl, &ValueLength, Value); } } @@ -118,7 +121,8 @@ void Audio_Device_ProcessControlRequest(USB_ClassInfo_Audio_Device_t* const Audi uint16_t ValueLength = USB_ControlRequest.wLength; uint8_t Value[ValueLength]; - if (CALLBACK_Audio_GetSetEndpointProperty(AudioInterfaceInfo, EndpointProperty, EndpointAddress, EndpointControl, &ValueLength, Value)) + if (CALLBACK_Audio_Device_GetSetEndpointProperty(AudioInterfaceInfo, EndpointProperty, EndpointAddress, + EndpointControl, &ValueLength, Value)) { Endpoint_ClearSETUP(); Endpoint_Write_Control_Stream_LE(Value, ValueLength); @@ -139,29 +143,40 @@ bool Audio_Device_ConfigureEndpoints(USB_ClassInfo_Audio_Device_t* const AudioIn uint16_t Size; uint8_t Type; uint8_t Direction; + bool DoubleBanked; if (EndpointNum == AudioInterfaceInfo->Config.DataINEndpointNumber) { Size = AudioInterfaceInfo->Config.DataINEndpointSize; Direction = ENDPOINT_DIR_IN; Type = EP_TYPE_ISOCHRONOUS; + DoubleBanked = true; } else if (EndpointNum == AudioInterfaceInfo->Config.DataOUTEndpointNumber) { Size = AudioInterfaceInfo->Config.DataOUTEndpointSize; Direction = ENDPOINT_DIR_OUT; Type = EP_TYPE_ISOCHRONOUS; + DoubleBanked = true; } else { continue; } - if (!(Endpoint_ConfigureEndpoint(EndpointNum, Type, Direction, Size, ENDPOINT_BANK_DOUBLE))) - return false; + if (!(Endpoint_ConfigureEndpoint(EndpointNum, Type, Direction, Size, + DoubleBanked ? ENDPOINT_BANK_DOUBLE : ENDPOINT_BANK_SINGLE))) + { + return false; + } } return true; } +void Audio_Device_Event_Stub(void) +{ + +} + #endif