Added new RESET_TOGGLES_LIBUSB_COMPAT compile time option to the AVRISP-MKII clone...
[pub/USBasp.git] / Demos / Host / LowLevel / MIDIHost / MIDIHost.c
index b666e84..f6b607a 100644 (file)
@@ -7,7 +7,7 @@
 */
 
 /*
 */
 
 /*
-  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2012  Dean Camera (dean [at] fourwalledcubicle [dot] com)
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
@@ -167,6 +167,7 @@ void MIDIHost_Task(void)
          return;
 
        Pipe_SelectPipe(MIDI_DATA_IN_PIPE);
          return;
 
        Pipe_SelectPipe(MIDI_DATA_IN_PIPE);
+       Pipe_Unfreeze();
 
        if (Pipe_IsINReceived())
        {
 
        if (Pipe_IsINReceived())
        {
@@ -177,8 +178,8 @@ void MIDIHost_Task(void)
                if (!(Pipe_BytesInPipe()))
                  Pipe_ClearIN();
 
                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));
+               bool NoteOnEvent  = (MIDIEvent.Event == MIDI_EVENT(0, MIDI_COMMAND_NOTE_ON));
+               bool NoteOffEvent = (MIDIEvent.Event == MIDI_EVENT(0, MIDI_COMMAND_NOTE_OFF));
 
                if (NoteOnEvent || NoteOffEvent)
                {
 
                if (NoteOnEvent || NoteOffEvent)
                {
@@ -187,8 +188,11 @@ void MIDIHost_Task(void)
                                                                                                                                                                   MIDIEvent.Data2, MIDIEvent.Data3);
                }
        }
                                                                                                                                                                   MIDIEvent.Data2, MIDIEvent.Data3);
                }
        }
+       
+       Pipe_Freeze();
 
        Pipe_SelectPipe(MIDI_DATA_OUT_PIPE);
 
        Pipe_SelectPipe(MIDI_DATA_OUT_PIPE);
+       Pipe_Unfreeze();
 
        if (Pipe_IsOUTReady())
        {
 
        if (Pipe_IsOUTReady())
        {
@@ -237,8 +241,7 @@ void MIDIHost_Task(void)
                {
                        MIDI_EventPacket_t MIDIEvent = (MIDI_EventPacket_t)
                                {
                {
                        MIDI_EventPacket_t MIDIEvent = (MIDI_EventPacket_t)
                                {
-                                       .CableNumber = 0,
-                                       .Command     = (MIDICommand >> 4),
+                                       .Event       = MIDI_EVENT(0, MIDICommand),
 
                                        .Data1       = MIDICommand | Channel,
                                        .Data2       = MIDIPitch,
 
                                        .Data1       = MIDICommand | Channel,
                                        .Data2       = MIDIPitch,
@@ -252,6 +255,8 @@ void MIDIHost_Task(void)
                        Pipe_ClearOUT();
                }
 
                        Pipe_ClearOUT();
                }
 
+               Pipe_Freeze();
+
                /* Save previous joystick value for next joystick change detection */
                PrevJoystickStatus = JoystickStatus;
        }
                /* Save previous joystick value for next joystick change detection */
                PrevJoystickStatus = JoystickStatus;
        }