diff options
Diffstat (limited to 'LUFA/Drivers/USB/Class/Device')
-rw-r--r-- | LUFA/Drivers/USB/Class/Device/Audio.h | 4 | ||||
-rw-r--r-- | LUFA/Drivers/USB/Class/Device/CDC.c | 6 | ||||
-rw-r--r-- | LUFA/Drivers/USB/Class/Device/CDC.h | 4 | ||||
-rw-r--r-- | LUFA/Drivers/USB/Class/Device/HID.c | 2 | ||||
-rw-r--r-- | LUFA/Drivers/USB/Class/Device/HID.h | 5 | ||||
-rw-r--r-- | LUFA/Drivers/USB/Class/Device/MIDI.c | 4 | ||||
-rw-r--r-- | LUFA/Drivers/USB/Class/Device/MIDI.h | 4 | ||||
-rw-r--r-- | LUFA/Drivers/USB/Class/Device/MassStorage.c | 65 | ||||
-rw-r--r-- | LUFA/Drivers/USB/Class/Device/MassStorage.h | 9 | ||||
-rw-r--r-- | LUFA/Drivers/USB/Class/Device/RNDIS.c | 10 | ||||
-rw-r--r-- | LUFA/Drivers/USB/Class/Device/RNDIS.h | 5 |
11 files changed, 47 insertions, 71 deletions
diff --git a/LUFA/Drivers/USB/Class/Device/Audio.h b/LUFA/Drivers/USB/Class/Device/Audio.h index 180b9a3b6..c674b6d94 100644 --- a/LUFA/Drivers/USB/Class/Device/Audio.h +++ b/LUFA/Drivers/USB/Class/Device/Audio.h @@ -69,10 +69,6 @@ #error Do not include this file directly. Include LUFA/Drivers/USB.h instead. #endif - #if defined(__INCLUDE_FROM_AUDIO_DEVICE_C) && defined(NO_STREAM_CALLBACKS) - #error The NO_STREAM_CALLBACKS compile time option cannot be used in projects using the library Class drivers. - #endif - /* Public Interface - May be used in end-application: */ /* Type Defines: */ /** \brief Audio Class Device Mode Configuration and State Structure. diff --git a/LUFA/Drivers/USB/Class/Device/CDC.c b/LUFA/Drivers/USB/Class/Device/CDC.c index 63a1bad33..e3d1c4def 100644 --- a/LUFA/Drivers/USB/Class/Device/CDC.c +++ b/LUFA/Drivers/USB/Class/Device/CDC.c @@ -161,7 +161,7 @@ uint8_t CDC_Device_SendString(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo return ENDPOINT_RWSTREAM_DeviceDisconnected; Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpointNumber); - return Endpoint_Write_Stream_LE(Data, Length, NO_STREAM_CALLBACK); + return Endpoint_Write_Stream_LE(Data, Length, NULL); } uint8_t CDC_Device_SendByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, @@ -275,10 +275,10 @@ void CDC_Device_SendControlLineStateChange(USB_ClassInfo_CDC_Device_t* const CDC .wLength = sizeof(CDCInterfaceInfo->State.ControlLineStates.DeviceToHost), }; - Endpoint_Write_Stream_LE(&Notification, sizeof(USB_Request_Header_t), NO_STREAM_CALLBACK); + Endpoint_Write_Stream_LE(&Notification, sizeof(USB_Request_Header_t), NULL); Endpoint_Write_Stream_LE(&CDCInterfaceInfo->State.ControlLineStates.DeviceToHost, sizeof(CDCInterfaceInfo->State.ControlLineStates.DeviceToHost), - NO_STREAM_CALLBACK); + NULL); Endpoint_ClearIN(); } diff --git a/LUFA/Drivers/USB/Class/Device/CDC.h b/LUFA/Drivers/USB/Class/Device/CDC.h index 8d8176bee..62ee0433f 100644 --- a/LUFA/Drivers/USB/Class/Device/CDC.h +++ b/LUFA/Drivers/USB/Class/Device/CDC.h @@ -87,10 +87,6 @@ #error Do not include this file directly. Include LUFA/Drivers/USB.h instead. #endif - #if defined(__INCLUDE_FROM_CDC_DEVICE_C) && defined(NO_STREAM_CALLBACKS) - #error The NO_STREAM_CALLBACKS compile time option cannot be used in projects using the library Class drivers. - #endif - /* Public Interface - May be used in end-application: */ /* Type Defines: */ /** \brief CDC Class Device Mode Configuration and State Structure. diff --git a/LUFA/Drivers/USB/Class/Device/HID.c b/LUFA/Drivers/USB/Class/Device/HID.c index 7d48ba432..e75b022f5 100644 --- a/LUFA/Drivers/USB/Class/Device/HID.c +++ b/LUFA/Drivers/USB/Class/Device/HID.c @@ -179,7 +179,7 @@ void HID_Device_USBTask(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo) if (ReportID) Endpoint_Write_Byte(ReportID); - Endpoint_Write_Stream_LE(ReportINData, ReportINSize, NO_STREAM_CALLBACK); + Endpoint_Write_Stream_LE(ReportINData, ReportINSize, NULL); Endpoint_ClearIN(); } diff --git a/LUFA/Drivers/USB/Class/Device/HID.h b/LUFA/Drivers/USB/Class/Device/HID.h index 658acb4f4..631b191b5 100644 --- a/LUFA/Drivers/USB/Class/Device/HID.h +++ b/LUFA/Drivers/USB/Class/Device/HID.h @@ -69,11 +69,6 @@ #error Do not include this file directly. Include LUFA/Drivers/USB.h instead. #endif - #if defined(__INCLUDE_FROM_HID_DEVICE_C) && defined(NO_STREAM_CALLBACKS) - #error The NO_STREAM_CALLBACKS compile time option cannot be used in projects using the library Class drivers. - #endif - - /* Public Interface - May be used in end-application: */ /* Type Defines: */ /** \brief HID Class Device Mode Configuration and State Structure. diff --git a/LUFA/Drivers/USB/Class/Device/MIDI.c b/LUFA/Drivers/USB/Class/Device/MIDI.c index ee9417aa6..ecedea77c 100644 --- a/LUFA/Drivers/USB/Class/Device/MIDI.c +++ b/LUFA/Drivers/USB/Class/Device/MIDI.c @@ -96,7 +96,7 @@ uint8_t MIDI_Device_SendEventPacket(USB_ClassInfo_MIDI_Device_t* const MIDIInter Endpoint_SelectEndpoint(MIDIInterfaceInfo->Config.DataINEndpointNumber); - if ((ErrorCode = Endpoint_Write_Stream_LE(Event, sizeof(MIDI_EventPacket_t), NO_STREAM_CALLBACK)) != ENDPOINT_RWSTREAM_NoError) + if ((ErrorCode = Endpoint_Write_Stream_LE(Event, sizeof(MIDI_EventPacket_t), NULL)) != ENDPOINT_RWSTREAM_NoError) return ErrorCode; if (!(Endpoint_IsReadWriteAllowed())) @@ -136,7 +136,7 @@ bool MIDI_Device_ReceiveEventPacket(USB_ClassInfo_MIDI_Device_t* const MIDIInter if (!(Endpoint_IsReadWriteAllowed())) return false; - Endpoint_Read_Stream_LE(Event, sizeof(MIDI_EventPacket_t), NO_STREAM_CALLBACK); + Endpoint_Read_Stream_LE(Event, sizeof(MIDI_EventPacket_t), NULL); if (!(Endpoint_IsReadWriteAllowed())) Endpoint_ClearOUT(); diff --git a/LUFA/Drivers/USB/Class/Device/MIDI.h b/LUFA/Drivers/USB/Class/Device/MIDI.h index 54dd094e0..3ea45d127 100644 --- a/LUFA/Drivers/USB/Class/Device/MIDI.h +++ b/LUFA/Drivers/USB/Class/Device/MIDI.h @@ -69,10 +69,6 @@ #error Do not include this file directly. Include LUFA/Drivers/USB.h instead. #endif - #if defined(__INCLUDE_FROM_MIDI_DEVICE_C) && defined(NO_STREAM_CALLBACKS) - #error The NO_STREAM_CALLBACKS compile time option cannot be used in projects using the library Class drivers. - #endif - /* Public Interface - May be used in end-application: */ /* Type Define: */ /** \brief MIDI Class Device Mode Configuration and State Structure. diff --git a/LUFA/Drivers/USB/Class/Device/MassStorage.c b/LUFA/Drivers/USB/Class/Device/MassStorage.c index 676acd186..18f7b8e52 100644 --- a/LUFA/Drivers/USB/Class/Device/MassStorage.c +++ b/LUFA/Drivers/USB/Class/Device/MassStorage.c @@ -36,8 +36,6 @@ #define __INCLUDE_FROM_MASSSTORAGE_DEVICE_C #include "MassStorage.h" -static volatile bool* CallbackIsResetSource; - void MS_Device_ProcessControlRequest(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) { if (!(Endpoint_IsSETUPReceived())) @@ -159,14 +157,21 @@ void MS_Device_USBTask(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) static bool MS_Device_ReadInCommandBlock(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) { - Endpoint_SelectEndpoint(MSInterfaceInfo->Config.DataOUTEndpointNumber); + uint16_t BytesProcessed; - CallbackIsResetSource = &MSInterfaceInfo->State.IsMassStoreReset; - if (Endpoint_Read_Stream_LE(&MSInterfaceInfo->State.CommandBlock, - (sizeof(MS_CommandBlockWrapper_t) - 16), - StreamCallback_MS_Device_AbortOnMassStoreReset)) + Endpoint_SelectEndpoint(MSInterfaceInfo->Config.DataOUTEndpointNumber); + + BytesProcessed = 0; + while (Endpoint_Read_Stream_LE(&MSInterfaceInfo->State.CommandBlock, + (sizeof(MS_CommandBlockWrapper_t) - 16), &BytesProcessed) == + ENDPOINT_RWSTREAM_IncompleteTransfer) { - return false; + #if !defined(INTERRUPT_CONTROL_ENDPOINT) + USB_USBTask(); + #endif + + if (MSInterfaceInfo->State.IsMassStoreReset) + return false; } if ((MSInterfaceInfo->State.CommandBlock.Signature != MS_CBW_SIGNATURE) || @@ -182,12 +187,17 @@ static bool MS_Device_ReadInCommandBlock(USB_ClassInfo_MS_Device_t* const MSInte return false; } - CallbackIsResetSource = &MSInterfaceInfo->State.IsMassStoreReset; - if (Endpoint_Read_Stream_LE(&MSInterfaceInfo->State.CommandBlock.SCSICommandData, - MSInterfaceInfo->State.CommandBlock.SCSICommandLength, - StreamCallback_MS_Device_AbortOnMassStoreReset)) + BytesProcessed = 0; + while (Endpoint_Read_Stream_LE(&MSInterfaceInfo->State.CommandBlock.SCSICommandData, + MSInterfaceInfo->State.CommandBlock.SCSICommandLength, &BytesProcessed) == + ENDPOINT_RWSTREAM_IncompleteTransfer) { - return false; + #if !defined(INTERRUPT_CONTROL_ENDPOINT) + USB_USBTask(); + #endif + + if (MSInterfaceInfo->State.IsMassStoreReset) + return false; } Endpoint_ClearOUT(); @@ -221,27 +231,20 @@ static void MS_Device_ReturnCommandStatus(USB_ClassInfo_MS_Device_t* const MSInt return; } - CallbackIsResetSource = &MSInterfaceInfo->State.IsMassStoreReset; - if (Endpoint_Write_Stream_LE(&MSInterfaceInfo->State.CommandStatus, sizeof(MS_CommandStatusWrapper_t), - StreamCallback_MS_Device_AbortOnMassStoreReset)) + uint16_t BytesProcessed = 0; + while (Endpoint_Write_Stream_LE(&MSInterfaceInfo->State.CommandStatus, + sizeof(MS_CommandStatusWrapper_t), &BytesProcessed) == + ENDPOINT_RWSTREAM_IncompleteTransfer) { - return; - } + #if !defined(INTERRUPT_CONTROL_ENDPOINT) + USB_USBTask(); + #endif + if (MSInterfaceInfo->State.IsMassStoreReset) + return; + } + Endpoint_ClearIN(); } -static uint8_t StreamCallback_MS_Device_AbortOnMassStoreReset(void) -{ - #if !defined(INTERRUPT_CONTROL_ENDPOINT) - USB_USBTask(); - #endif - - if (*CallbackIsResetSource) - return STREAMCALLBACK_Abort; - else - return STREAMCALLBACK_Continue; -} - #endif - diff --git a/LUFA/Drivers/USB/Class/Device/MassStorage.h b/LUFA/Drivers/USB/Class/Device/MassStorage.h index 774d3e5e9..6ca0a7633 100644 --- a/LUFA/Drivers/USB/Class/Device/MassStorage.h +++ b/LUFA/Drivers/USB/Class/Device/MassStorage.h @@ -69,10 +69,6 @@ #error Do not include this file directly. Include LUFA/Drivers/USB.h instead. #endif - #if defined(__INCLUDE_FROM_MASSSTORAGE_DEVICE_C) && defined(NO_STREAM_CALLBACKS) - #error The NO_STREAM_CALLBACKS compile time option cannot be used in projects using the library Class drivers. - #endif - /* Public Interface - May be used in end-application: */ /* Type Defines: */ /** \brief Mass Storage Class Device Mode Configuration and State Structure. @@ -159,9 +155,8 @@ #if !defined(__DOXYGEN__) /* Function Prototypes: */ #if defined(__INCLUDE_FROM_MASSSTORAGE_DEVICE_C) - static void MS_Device_ReturnCommandStatus(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1); - static bool MS_Device_ReadInCommandBlock(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1); - static uint8_t StreamCallback_MS_Device_AbortOnMassStoreReset(void); + static void MS_Device_ReturnCommandStatus(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1); + static bool MS_Device_ReadInCommandBlock(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1); #endif #endif diff --git a/LUFA/Drivers/USB/Class/Device/RNDIS.c b/LUFA/Drivers/USB/Class/Device/RNDIS.c index 57ad70877..490ad5127 100644 --- a/LUFA/Drivers/USB/Class/Device/RNDIS.c +++ b/LUFA/Drivers/USB/Class/Device/RNDIS.c @@ -177,7 +177,7 @@ void RNDIS_Device_USBTask(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo .wLength = 0, }; - Endpoint_Write_Stream_LE(&Notification, sizeof(USB_Request_Header_t), NO_STREAM_CALLBACK); + Endpoint_Write_Stream_LE(&Notification, sizeof(USB_Request_Header_t), NULL); Endpoint_ClearIN(); @@ -192,7 +192,7 @@ void RNDIS_Device_USBTask(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo if (Endpoint_IsOUTReceived() && !(RNDISInterfaceInfo->State.FrameIN.FrameInBuffer)) { - Endpoint_Read_Stream_LE(&RNDISPacketHeader, sizeof(RNDIS_Packet_Message_t), NO_STREAM_CALLBACK); + Endpoint_Read_Stream_LE(&RNDISPacketHeader, sizeof(RNDIS_Packet_Message_t), NULL); if (RNDISPacketHeader.DataLength > ETHERNET_FRAME_SIZE_MAX) { @@ -200,7 +200,7 @@ void RNDIS_Device_USBTask(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo return; } - Endpoint_Read_Stream_LE(RNDISInterfaceInfo->State.FrameIN.FrameData, RNDISPacketHeader.DataLength, NO_STREAM_CALLBACK); + Endpoint_Read_Stream_LE(RNDISInterfaceInfo->State.FrameIN.FrameData, RNDISPacketHeader.DataLength, NULL); Endpoint_ClearOUT(); @@ -220,8 +220,8 @@ void RNDIS_Device_USBTask(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo RNDISPacketHeader.DataOffset = (sizeof(RNDIS_Packet_Message_t) - sizeof(RNDIS_Message_Header_t)); RNDISPacketHeader.DataLength = RNDISInterfaceInfo->State.FrameOUT.FrameLength; - Endpoint_Write_Stream_LE(&RNDISPacketHeader, sizeof(RNDIS_Packet_Message_t), NO_STREAM_CALLBACK); - Endpoint_Write_Stream_LE(RNDISInterfaceInfo->State.FrameOUT.FrameData, RNDISPacketHeader.DataLength, NO_STREAM_CALLBACK); + Endpoint_Write_Stream_LE(&RNDISPacketHeader, sizeof(RNDIS_Packet_Message_t), NULL); + Endpoint_Write_Stream_LE(RNDISInterfaceInfo->State.FrameOUT.FrameData, RNDISPacketHeader.DataLength, NULL); Endpoint_ClearIN(); RNDISInterfaceInfo->State.FrameOUT.FrameInBuffer = false; diff --git a/LUFA/Drivers/USB/Class/Device/RNDIS.h b/LUFA/Drivers/USB/Class/Device/RNDIS.h index 2bafe6c9b..40d15ef23 100644 --- a/LUFA/Drivers/USB/Class/Device/RNDIS.h +++ b/LUFA/Drivers/USB/Class/Device/RNDIS.h @@ -69,11 +69,6 @@ #error Do not include this file directly. Include LUFA/Drivers/USB.h instead. #endif - #if defined(__INCLUDE_FROM_RNDIS_DEVICE_C) && defined(NO_STREAM_CALLBACKS) - #error The NO_STREAM_CALLBACKS compile time option cannot be used in projects using the library Class drivers. - #endif - - /* Public Interface - May be used in end-application: */ /* Type Defines: */ /** \brief RNDIS Class Device Mode Configuration and State Structure. |