aboutsummaryrefslogtreecommitdiff
path: root/LUFA/Drivers/USB/Class
diff options
context:
space:
mode:
authorDean <Dean@d5102386-fcda-11dd-9fdb-3debd5008f28>2012-05-20 13:04:26 +0000
committerDean <Dean@d5102386-fcda-11dd-9fdb-3debd5008f28>2012-05-20 13:04:26 +0000
commit767dcd48b5eae7aede5736fd35e3b863de5bc7ab (patch)
treef13423bf8139c609988242c76be20c29fe341e24 /LUFA/Drivers/USB/Class
parent139882d716083d9a872fa17c67e64b92e2ed4f06 (diff)
Additional fixes to the MIDI host driver due to not unfreezing/re-freezing pipes correctly (thanks to Michael Brown).
git-svn-id: http://lufa-lib.googlecode.com/svn/trunk@2225 d5102386-fcda-11dd-9fdb-3debd5008f28
Diffstat (limited to 'LUFA/Drivers/USB/Class')
-rw-r--r--LUFA/Drivers/USB/Class/Host/MIDIClassHost.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/LUFA/Drivers/USB/Class/Host/MIDIClassHost.c b/LUFA/Drivers/USB/Class/Host/MIDIClassHost.c
index 1300577f..b1abb68d 100644
--- a/LUFA/Drivers/USB/Class/Host/MIDIClassHost.c
+++ b/LUFA/Drivers/USB/Class/Host/MIDIClassHost.c
@@ -156,15 +156,21 @@ uint8_t MIDI_Host_Flush(USB_ClassInfo_MIDI_Host_t* const MIDIInterfaceInfo)
uint8_t ErrorCode;
Pipe_SelectPipe(MIDIInterfaceInfo->Config.DataOUTPipe.Address);
-
+ Pipe_Unfreeze();
+
if (Pipe_BytesInPipe())
{
Pipe_ClearOUT();
if ((ErrorCode = Pipe_WaitUntilReady()) != PIPE_READYWAIT_NoError)
- return ErrorCode;
+ {
+ Pipe_Freeze();
+ return ErrorCode;
+ }
}
+ Pipe_Freeze();
+
return PIPE_READYWAIT_NoError;
}
@@ -177,13 +183,19 @@ uint8_t MIDI_Host_SendEventPacket(USB_ClassInfo_MIDI_Host_t* const MIDIInterface
uint8_t ErrorCode;
Pipe_SelectPipe(MIDIInterfaceInfo->Config.DataOUTPipe.Address);
-
+ Pipe_Unfreeze();
+
if ((ErrorCode = Pipe_Write_Stream_LE(Event, sizeof(MIDI_EventPacket_t), NULL)) != PIPE_RWSTREAM_NoError)
- return ErrorCode;
+ {
+ Pipe_Freeze();
+ return ErrorCode;
+ }
if (!(Pipe_IsReadWriteAllowed()))
Pipe_ClearOUT();
+ Pipe_Freeze();
+
return PIPE_RWSTREAM_NoError;
}