Add Midi Endpoint task to ChibiOS main (#8071) 0.7.139
authorDrashna Jaelre <drashna@live.com>
Wed, 5 Feb 2020 02:28:47 +0000 (18:28 -0800)
committerGitHub <noreply@github.com>
Wed, 5 Feb 2020 02:28:47 +0000 (18:28 -0800)
tmk_core/protocol/chibios/main.c
tmk_core/protocol/chibios/usb_main.c

index 4b66bc5..a61ffad 100644 (file)
@@ -81,6 +81,9 @@ void raw_hid_task(void);
 #ifdef CONSOLE_ENABLE
 void console_task(void);
 #endif
+#ifdef MIDI_ENABLE
+void midi_ep_task(void);
+#endif
 
 /* TESTING
  * Amber LED blinker thread, times are in milliseconds.
@@ -214,6 +217,9 @@ int main(void) {
 #ifdef CONSOLE_ENABLE
         console_task();
 #endif
+#ifdef MIDI_ENABLE
+        midi_ep_task();
+#endif
 #ifdef VIRTSER_ENABLE
         virtser_task();
 #endif
index dd701f6..d5eeffc 100644 (file)
@@ -833,7 +833,17 @@ bool recv_midi_packet(MIDI_EventPacket_t *const event) {
     size_t size = chnReadTimeout(&drivers.midi_driver.driver, (uint8_t *)event, sizeof(MIDI_EventPacket_t), TIME_IMMEDIATE);
     return size == sizeof(MIDI_EventPacket_t);
 }
-
+void midi_ep_task(void) {
+    uint8_t buffer[MIDI_STREAM_EPSIZE];
+    size_t  size = 0;
+    do {
+        size_t size = chnReadTimeout(&drivers.midi_driver.driver, buffer, sizeof(buffer), TIME_IMMEDIATE);
+        if (size > 0) {
+            MIDI_EventPacket_t event;
+            recv_midi_packet(&event);
+        }
+    } while (size > 0);
+}
 #endif
 
 #ifdef VIRTSER_ENABLE