diff options
author | Dean Camera <dean@fourwalledcubicle.com> | 2009-09-30 04:40:36 +0000 |
---|---|---|
committer | Dean Camera <dean@fourwalledcubicle.com> | 2009-09-30 04:40:36 +0000 |
commit | 89c837ee34db186f7b1f859f767d587036573c4c (patch) | |
tree | 0fd7efe823b1924c89628052398851e54b92fe06 /Demos/Device | |
parent | 059ebd01a3f34ce288adfe30c6cd5b88553882fa (diff) | |
download | lufa-89c837ee34db186f7b1f859f767d587036573c4c.tar.gz lufa-89c837ee34db186f7b1f859f767d587036573c4c.tar.bz2 lufa-89c837ee34db186f7b1f859f767d587036573c4c.zip |
Removed mostly useless "TestApp" demo, as it was mainly useful only for checking for sytax errors in the library.
MIDI device demos now receive MIDI events from the host and display note ON messages via the board LEDs.
Added beginnings of a MIDI class bootloader.
Diffstat (limited to 'Demos/Device')
-rw-r--r-- | Demos/Device/ClassDriver/MIDI/MIDI.c | 11 | ||||
-rw-r--r-- | Demos/Device/LowLevel/MIDI/MIDI.c | 23 |
2 files changed, 29 insertions, 5 deletions
diff --git a/Demos/Device/ClassDriver/MIDI/MIDI.c b/Demos/Device/ClassDriver/MIDI/MIDI.c index f1a0d9afc..d50a254a2 100644 --- a/Demos/Device/ClassDriver/MIDI/MIDI.c +++ b/Demos/Device/ClassDriver/MIDI/MIDI.c @@ -67,9 +67,14 @@ int main(void) {
CheckJoystickMovement();
- /* Must acknowedge MIDI packets from the host even though they aren't used, or the host locks up */
- MIDI_EventPacket_t DummyMIDIEvent;
- MIDI_Device_ReceiveEventPacket(&Keyboard_MIDI_Interface, &DummyMIDIEvent);
+ MIDI_EventPacket_t ReceivedMIDIEvent;
+ if (MIDI_Device_ReceiveEventPacket(&Keyboard_MIDI_Interface, &ReceivedMIDIEvent))
+ {
+ if (ReceivedMIDIEvent.Command == (MIDI_COMMAND_NOTE_ON >> 4))
+ LEDs_SetAllLEDs(ReceivedMIDIEvent.Data2 > 64 ? LEDS_LED1 : LEDS_LED2);
+ else
+ LEDs_SetAllLEDs(LEDS_NO_LEDS);
+ }
MIDI_Device_USBTask(&Keyboard_MIDI_Interface);
USB_USBTask();
diff --git a/Demos/Device/LowLevel/MIDI/MIDI.c b/Demos/Device/LowLevel/MIDI/MIDI.c index 4dfb9b7e6..c4ec8941f 100644 --- a/Demos/Device/LowLevel/MIDI/MIDI.c +++ b/Demos/Device/LowLevel/MIDI/MIDI.c @@ -190,7 +190,26 @@ void MIDI_Task(void) /* Select the MIDI OUT stream */
Endpoint_SelectEndpoint(MIDI_STREAM_OUT_EPNUM);
- /* Check if endpoint is ready to be read from, if so discard its (unused) data */
+ /* Check if a MIDI command has been received */
if (Endpoint_IsOUTReceived())
- Endpoint_ClearOUT();
+ {
+ USB_MIDI_EventPacket_t MIDIEvent;
+
+ /* Read the MIDI event packet from the endpoint */
+ Endpoint_Read_Stream_LE(&MIDIEvent, sizeof(MIDIEvent));
+
+ if (MIDIEvent.Command == (MIDI_COMMAND_NOTE_ON >> 4))
+ {
+ /* Change LEDs depending on the pitch of the sent note */
+ LEDs_SetAllLEDs(MIDIEvent.Data2 > 64 ? LEDS_LED1 : LEDS_LED2);
+ }
+ else
+ {
+ /* Turn off all LEDs in response to non-Note On messages */
+ LEDs_SetAllLEDs(LEDS_NO_LEDS);
+ }
+
+ /* Clear the endpoint ready for new packet */
+ Endpoint_ClearOUT();
+ }
}
|