aboutsummaryrefslogtreecommitdiffstats
path: root/Demos
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2010-11-05 03:43:11 +0000
committerDean Camera <dean@fourwalledcubicle.com>2010-11-05 03:43:11 +0000
commit99a9e415efd1e27d902427ccd1aa6e4a9f9d4d05 (patch)
treee2ec634f9434253203e0e34765688f4c2baec1ca /Demos
parent85cf2027373cfbe6f6fb257a84a59df0d74f3e1a (diff)
downloadlufa-99a9e415efd1e27d902427ccd1aa6e4a9f9d4d05.tar.gz
lufa-99a9e415efd1e27d902427ccd1aa6e4a9f9d4d05.tar.bz2
lufa-99a9e415efd1e27d902427ccd1aa6e4a9f9d4d05.zip
Loop in the ClassDriver MIDI device/host demos until there are no more incomming events to process. Only clear the endpoint/pipe bank in the LowLevel MIDI device/host demos when the endpoint is empty after an event read.
Diffstat (limited to 'Demos')
-rw-r--r--Demos/Device/ClassDriver/MIDI/MIDI.c2
-rw-r--r--Demos/Device/LowLevel/MIDI/MIDI.c8
-rw-r--r--Demos/Host/ClassDriver/MIDIHost/MIDIHost.c2
-rw-r--r--Demos/Host/LowLevel/MIDIHost/MIDIHost.c8
4 files changed, 12 insertions, 8 deletions
diff --git a/Demos/Device/ClassDriver/MIDI/MIDI.c b/Demos/Device/ClassDriver/MIDI/MIDI.c
index 217a3a4bd..95a2ddd0e 100644
--- a/Demos/Device/ClassDriver/MIDI/MIDI.c
+++ b/Demos/Device/ClassDriver/MIDI/MIDI.c
@@ -71,7 +71,7 @@ int main(void)
CheckJoystickMovement();
MIDI_EventPacket_t ReceivedMIDIEvent;
- if (MIDI_Device_ReceiveEventPacket(&Keyboard_MIDI_Interface, &ReceivedMIDIEvent))
+ while (MIDI_Device_ReceiveEventPacket(&Keyboard_MIDI_Interface, &ReceivedMIDIEvent))
{
if ((ReceivedMIDIEvent.Command == (MIDI_COMMAND_NOTE_ON >> 4)) && (ReceivedMIDIEvent.Data3 > 0))
LEDs_SetAllLEDs(ReceivedMIDIEvent.Data2 > 64 ? LEDS_LED1 : LEDS_LED2);
diff --git a/Demos/Device/LowLevel/MIDI/MIDI.c b/Demos/Device/LowLevel/MIDI/MIDI.c
index e43645585..bfe90b0d1 100644
--- a/Demos/Device/LowLevel/MIDI/MIDI.c
+++ b/Demos/Device/LowLevel/MIDI/MIDI.c
@@ -204,8 +204,12 @@ void MIDI_Task(void)
LEDs_SetAllLEDs(LEDS_NO_LEDS);
}
- /* Clear the endpoint ready for new packet */
- Endpoint_ClearOUT();
+ /* If the endpoint is now empty, clear the bank */
+ if (!(Endpoint_BytesInEndpoint()))
+ {
+ /* Clear the endpoint ready for new packet */
+ Endpoint_ClearOUT();
+ }
}
}
diff --git a/Demos/Host/ClassDriver/MIDIHost/MIDIHost.c b/Demos/Host/ClassDriver/MIDIHost/MIDIHost.c
index 56daf125c..eda827257 100644
--- a/Demos/Host/ClassDriver/MIDIHost/MIDIHost.c
+++ b/Demos/Host/ClassDriver/MIDIHost/MIDIHost.c
@@ -109,7 +109,7 @@ int main(void)
CheckJoystickMovement();
MIDI_EventPacket_t MIDIEvent;
- if (MIDI_Host_ReceiveEventPacket(&Keyboard_MIDI_Interface, &MIDIEvent))
+ while (MIDI_Host_ReceiveEventPacket(&Keyboard_MIDI_Interface, &MIDIEvent))
{
bool NoteOnEvent = ((MIDIEvent.Command & 0x0F) == (MIDI_COMMAND_NOTE_ON >> 4));
bool NoteOffEvent = ((MIDIEvent.Command & 0x0F) == (MIDI_COMMAND_NOTE_OFF >> 4));
diff --git a/Demos/Host/LowLevel/MIDIHost/MIDIHost.c b/Demos/Host/LowLevel/MIDIHost/MIDIHost.c
index b616b679f..5ff3baa39 100644
--- a/Demos/Host/LowLevel/MIDIHost/MIDIHost.c
+++ b/Demos/Host/LowLevel/MIDIHost/MIDIHost.c
@@ -192,19 +192,19 @@ void MIDI_Host_Task(void)
((MIDIEvent.Data1 & 0x0F) + 1),
MIDIEvent.Data2, MIDIEvent.Data3);
}
-
- Pipe_ClearIN();
+
+ if (!(Pipe_BytesInPipe()))
+ Pipe_ClearIN();
}
Pipe_SelectPipe(MIDI_DATA_OUT_PIPE);
- static uint8_t PrevJoystickStatus;
-
if (Pipe_IsOUTReady())
{
uint8_t MIDICommand = 0;
uint8_t MIDIPitch;
+ static uint8_t PrevJoystickStatus;
uint8_t JoystickStatus = Joystick_GetStatus();
uint8_t JoystickChanges = (JoystickStatus ^ PrevJoystickStatus);