summaryrefslogtreecommitdiff
path: root/tmk_core/protocol/chibios
diff options
context:
space:
mode:
authorDrashna Jaelre <drashna@live.com>2020-02-04 18:28:47 -0800
committerFlorian Didron <fdidron@users.noreply.github.com>2020-02-26 10:15:12 +0900
commitf67c942c49a7f46d52e8ea51704fba17a9372055 (patch)
tree0af89ec394cebac5dcc6c0cc6ad1e6e208c6f915 /tmk_core/protocol/chibios
parent0c4d319e8dfa4f134d074eeb259830298589abc2 (diff)
Add Midi Endpoint task to ChibiOS main (#8071)
Diffstat (limited to 'tmk_core/protocol/chibios')
-rw-r--r--tmk_core/protocol/chibios/main.c6
-rw-r--r--tmk_core/protocol/chibios/usb_main.c12
2 files changed, 17 insertions, 1 deletions
diff --git a/tmk_core/protocol/chibios/main.c b/tmk_core/protocol/chibios/main.c
index d2f4914c7f..6d9608dddb 100644
--- a/tmk_core/protocol/chibios/main.c
+++ b/tmk_core/protocol/chibios/main.c
@@ -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
#ifdef WEBUSB_ENABLE
void webusb_task(void);
@@ -218,6 +221,9 @@ int main(void) {
#ifdef CONSOLE_ENABLE
console_task();
#endif
+#ifdef MIDI_ENABLE
+ midi_ep_task();
+#endif
#ifdef VIRTSER_ENABLE
virtser_task();
#endif
diff --git a/tmk_core/protocol/chibios/usb_main.c b/tmk_core/protocol/chibios/usb_main.c
index 3d4dd59873..e3a8489011 100644
--- a/tmk_core/protocol/chibios/usb_main.c
+++ b/tmk_core/protocol/chibios/usb_main.c
@@ -902,7 +902,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