~ruther/qmk_firmware

0010d0c45e4aba8225249e230b3d23337e8378f4 — Drashna Jaelre 5 years ago 8a749a7
Add Midi Endpoint task to ChibiOS main (#8071)

2 files changed, 17 insertions(+), 1 deletions(-)

M tmk_core/protocol/chibios/main.c
M tmk_core/protocol/chibios/usb_main.c
M tmk_core/protocol/chibios/main.c => tmk_core/protocol/chibios/main.c +6 -0
@@ 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

M tmk_core/protocol/chibios/usb_main.c => tmk_core/protocol/chibios/usb_main.c +11 -1
@@ 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