- /* Indicate error via status LEDs */
- LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-
- /* Wait until USB device disconnected */
- USB_HostState = HOST_STATE_WaitForDeviceRemoval;
- break;
- }
-
- puts_P(PSTR("MIDI Device Enumerated.\r\n"));
-
- USB_HostState = HOST_STATE_Configured;
- break;
- case HOST_STATE_Configured:
- Pipe_SelectPipe(MIDI_DATA_IN_PIPE);
-
- if (Pipe_IsINReceived())
- {
- MIDI_EventPacket_t MIDIEvent;
-
- Pipe_Read_Stream_LE(&MIDIEvent, sizeof(MIDIEvent), NULL);
-
- if (!(Pipe_BytesInPipe()))
- Pipe_ClearIN();
-
- bool NoteOnEvent = ((MIDIEvent.Command & 0x0F) == (MIDI_COMMAND_NOTE_ON >> 4));
- bool NoteOffEvent = ((MIDIEvent.Command & 0x0F) == (MIDI_COMMAND_NOTE_OFF >> 4));
-
- if (NoteOnEvent || NoteOffEvent)
- {
- printf_P(PSTR("MIDI Note %s - Channel %d, Pitch %d, Velocity %d\r\n"), NoteOnEvent ? "On" : "Off",
- ((MIDIEvent.Data1 & 0x0F) + 1),
- MIDIEvent.Data2, MIDIEvent.Data3);
- }
- }
-
- Pipe_SelectPipe(MIDI_DATA_OUT_PIPE);
-
- if (Pipe_IsOUTReady())
- {
- uint8_t MIDICommand = 0;
- uint8_t MIDIPitch;
-
- static uint8_t PrevJoystickStatus;
- uint8_t JoystickStatus = Joystick_GetStatus();
- uint8_t JoystickChanges = (JoystickStatus ^ PrevJoystickStatus);