forked from mfulz_github/qmk_firmware
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.
This commit is contained in:
parent
85cf202737
commit
99a9e415ef
|
@ -71,7 +71,7 @@ int main(void)
|
||||||
CheckJoystickMovement();
|
CheckJoystickMovement();
|
||||||
|
|
||||||
MIDI_EventPacket_t ReceivedMIDIEvent;
|
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))
|
if ((ReceivedMIDIEvent.Command == (MIDI_COMMAND_NOTE_ON >> 4)) && (ReceivedMIDIEvent.Data3 > 0))
|
||||||
LEDs_SetAllLEDs(ReceivedMIDIEvent.Data2 > 64 ? LEDS_LED1 : LEDS_LED2);
|
LEDs_SetAllLEDs(ReceivedMIDIEvent.Data2 > 64 ? LEDS_LED1 : LEDS_LED2);
|
||||||
|
|
|
@ -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 */
|
/* If the endpoint is now empty, clear the bank */
|
||||||
Endpoint_ClearOUT();
|
if (!(Endpoint_BytesInEndpoint()))
|
||||||
|
{
|
||||||
|
/* Clear the endpoint ready for new packet */
|
||||||
|
Endpoint_ClearOUT();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -109,7 +109,7 @@ int main(void)
|
||||||
CheckJoystickMovement();
|
CheckJoystickMovement();
|
||||||
|
|
||||||
MIDI_EventPacket_t MIDIEvent;
|
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 NoteOnEvent = ((MIDIEvent.Command & 0x0F) == (MIDI_COMMAND_NOTE_ON >> 4));
|
||||||
bool NoteOffEvent = ((MIDIEvent.Command & 0x0F) == (MIDI_COMMAND_NOTE_OFF >> 4));
|
bool NoteOffEvent = ((MIDIEvent.Command & 0x0F) == (MIDI_COMMAND_NOTE_OFF >> 4));
|
||||||
|
|
|
@ -192,19 +192,19 @@ void MIDI_Host_Task(void)
|
||||||
((MIDIEvent.Data1 & 0x0F) + 1),
|
((MIDIEvent.Data1 & 0x0F) + 1),
|
||||||
MIDIEvent.Data2, MIDIEvent.Data3);
|
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())
|
if (Pipe_IsOUTReady())
|
||||||
{
|
{
|
||||||
uint8_t MIDICommand = 0;
|
uint8_t MIDICommand = 0;
|
||||||
uint8_t MIDIPitch;
|
uint8_t MIDIPitch;
|
||||||
|
|
||||||
|
static uint8_t PrevJoystickStatus;
|
||||||
uint8_t JoystickStatus = Joystick_GetStatus();
|
uint8_t JoystickStatus = Joystick_GetStatus();
|
||||||
uint8_t JoystickChanges = (JoystickStatus ^ PrevJoystickStatus);
|
uint8_t JoystickChanges = (JoystickStatus ^ PrevJoystickStatus);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue