if (USB_DeviceState != DEVICE_STATE_Configured)
return ENDPOINT_RWSTREAM_DeviceDisconnected;
+ uint8_t ErrorCode;
+
Endpoint_SelectEndpoint(MIDIInterfaceInfo->Config.DataINEndpointNumber);
- if (Endpoint_IsReadWriteAllowed())
- {
- uint8_t ErrorCode;
+ if ((ErrorCode = Endpoint_Write_Stream_LE(Event, sizeof(MIDI_EventPacket_t), NO_STREAM_CALLBACK)) != ENDPOINT_RWSTREAM_NoError)
+ return ErrorCode;
- if ((ErrorCode = Endpoint_Write_Stream_LE(Event, sizeof(MIDI_EventPacket_t), NO_STREAM_CALLBACK)) != ENDPOINT_RWSTREAM_NoError)
- return ErrorCode;
-
- if (!(Endpoint_IsReadWriteAllowed()))
- Endpoint_ClearIN();
- }
+ if (!(Endpoint_IsReadWriteAllowed()))
+ Endpoint_ClearIN();
return ENDPOINT_RWSTREAM_NoError;
}
if ((USB_HostState != HOST_STATE_Configured) || !(MIDIInterfaceInfo->State.IsActive))
return HOST_SENDCONTROL_DeviceDisconnected;
+ uint8_t ErrorCode;
+
Pipe_SelectPipe(MIDIInterfaceInfo->Config.DataOUTPipeNumber);
- if (Pipe_IsReadWriteAllowed())
- {
- uint8_t ErrorCode;
+ if ((ErrorCode = Pipe_Write_Stream_LE(Event, sizeof(MIDI_EventPacket_t), NO_STREAM_CALLBACK)) != PIPE_RWSTREAM_NoError)
+ return ErrorCode;
- if ((ErrorCode = Pipe_Write_Stream_LE(Event, sizeof(MIDI_EventPacket_t), NO_STREAM_CALLBACK)) != PIPE_RWSTREAM_NoError)
- return ErrorCode;
-
- if (!(Pipe_IsReadWriteAllowed()))
- Pipe_ClearOUT();
- }
+ if (!(Pipe_IsReadWriteAllowed()))
+ Pipe_ClearOUT();
return PIPE_RWSTREAM_NoError;
}
* - Fixed ISR definition conflict in the XPLAIN bridge between the software UART and the AVRISP-MKII ISP modules
* - Fixed random enumeration failure while in device mode due to interrupts causing the Set Address request to exceed maximum timings
* - Fixed MIDI_Host_Flush() not aborting early when the specified MIDI host interface was not configured
+ * - Fixed MIDI class driver send routines silently discarding packets if the endpoint or pipe is busy (thanks to Robin Green)
*
* \section Sec_ChangeLog100807 Version 100807
* <b>New:</b>