Loop in the ClassDriver MIDI device/host demos until there are no more incomming...
authorDean Camera <dean@fourwalledcubicle.com>
Fri, 5 Nov 2010 03:43:11 +0000 (03:43 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Fri, 5 Nov 2010 03:43:11 +0000 (03:43 +0000)
Demos/Device/ClassDriver/MIDI/MIDI.c
Demos/Device/LowLevel/MIDI/MIDI.c
Demos/Host/ClassDriver/MIDIHost/MIDIHost.c
Demos/Host/LowLevel/MIDIHost/MIDIHost.c

index 217a3a4..95a2ddd 100644 (file)
@@ -71,7 +71,7 @@ int main(void)
                CheckJoystickMovement();
 
                MIDI_EventPacket_t ReceivedMIDIEvent;
                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);
                {
                        if ((ReceivedMIDIEvent.Command == (MIDI_COMMAND_NOTE_ON >> 4)) && (ReceivedMIDIEvent.Data3 > 0))
                          LEDs_SetAllLEDs(ReceivedMIDIEvent.Data2 > 64 ? LEDS_LED1 : LEDS_LED2);
index e436455..bfe90b0 100644 (file)
@@ -204,8 +204,12 @@ void MIDI_Task(void)
                        LEDs_SetAllLEDs(LEDS_NO_LEDS);
                }
 
                        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();
+               }
        }
 }
 
        }
 }
 
index 56daf12..eda8272 100644 (file)
@@ -109,7 +109,7 @@ int main(void)
                                CheckJoystickMovement();
 
                                MIDI_EventPacket_t MIDIEvent;
                                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));
                                {
                                        bool NoteOnEvent  = ((MIDIEvent.Command & 0x0F) == (MIDI_COMMAND_NOTE_ON  >> 4));
                                        bool NoteOffEvent = ((MIDIEvent.Command & 0x0F) == (MIDI_COMMAND_NOTE_OFF >> 4));
index b616b67..5ff3baa 100644 (file)
@@ -192,19 +192,19 @@ void MIDI_Host_Task(void)
                                                                                                           ((MIDIEvent.Data1 & 0x0F) + 1),
                                                                                                           MIDIEvent.Data2, MIDIEvent.Data3);
                                }
                                                                                                           ((MIDIEvent.Data1 & 0x0F) + 1),
                                                                                                           MIDIEvent.Data2, MIDIEvent.Data3);
                                }
-
-                               Pipe_ClearIN();
+                               
+                               if (!(Pipe_BytesInPipe()))
+                                 Pipe_ClearIN();
                        }
 
                        Pipe_SelectPipe(MIDI_DATA_OUT_PIPE);
 
                        }
 
                        Pipe_SelectPipe(MIDI_DATA_OUT_PIPE);
 
-                       static uint8_t PrevJoystickStatus;
-
                        if (Pipe_IsOUTReady())
                        {
                                uint8_t MIDICommand = 0;
                                uint8_t MIDIPitch;
 
                        if (Pipe_IsOUTReady())
                        {
                                uint8_t MIDICommand = 0;
                                uint8_t MIDIPitch;
 
+                               static uint8_t PrevJoystickStatus;
                                uint8_t JoystickStatus  = Joystick_GetStatus();
                                uint8_t JoystickChanges = (JoystickStatus ^ PrevJoystickStatus);
 
                                uint8_t JoystickStatus  = Joystick_GetStatus();
                                uint8_t JoystickChanges = (JoystickStatus ^ PrevJoystickStatus);