summaryrefslogtreecommitdiff
path: root/ports/esp32/usb.c
diff options
context:
space:
mode:
Diffstat (limited to 'ports/esp32/usb.c')
-rw-r--r--ports/esp32/usb.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/ports/esp32/usb.c b/ports/esp32/usb.c
index 2e417755c..316482e18 100644
--- a/ports/esp32/usb.c
+++ b/ports/esp32/usb.c
@@ -40,8 +40,10 @@
static uint8_t usb_rx_buf[CONFIG_TINYUSB_CDC_RX_BUFSIZE];
+// This is called from FreeRTOS task "tusb_tsk" in espressif__esp_tinyusb (not an ISR).
static void usb_callback_rx(int itf, cdcacm_event_t *event) {
- // TODO: what happens if more chars come in during this function, are they lost?
+ // espressif__esp_tinyusb places tinyusb rx data onto freertos ringbuffer which
+ // this function forwards onto our stdin_ringbuf.
for (;;) {
size_t len = 0;
esp_err_t ret = tinyusb_cdcacm_read(itf, usb_rx_buf, sizeof(usb_rx_buf), &len);
@@ -58,6 +60,7 @@ static void usb_callback_rx(int itf, cdcacm_event_t *event) {
ringbuf_put(&stdin_ringbuf, usb_rx_buf[i]);
}
}
+ mp_hal_wake_main_task();
}
}