From eb1b2f38a080e998e62807fb7ac8090b804fa186 Mon Sep 17 00:00:00 2001 From: Scott Shawcroft Date: Fri, 21 Oct 2022 20:42:26 -0700 Subject: [PATCH] Fix USB issues caused by early usb_cdc.Serial read Check for connected before calling read. Otherwise TinyUSB may setup the read on the wrong endpoint. Fixes #6018 ` --- shared-module/usb_cdc/Serial.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/shared-module/usb_cdc/Serial.c b/shared-module/usb_cdc/Serial.c index 7f1bc75a539a5..23bcc8722dd67 100644 --- a/shared-module/usb_cdc/Serial.c +++ b/shared-module/usb_cdc/Serial.c @@ -38,7 +38,10 @@ size_t common_hal_usb_cdc_serial_read(usb_cdc_serial_obj_t *self, uint8_t *data, // Read up to len bytes immediately. // The number of bytes read will not be larger than what is already in the TinyUSB FIFO. - uint32_t total_num_read = tud_cdc_n_read(self->idx, data, len); + uint32_t total_num_read = 0; + if (tud_cdc_n_connected(self->idx)) { + total_num_read = tud_cdc_n_read(self->idx, data, len); + } if (wait_forever || wait_for_timeout) { // Continue filling the buffer past what we already read. @@ -65,7 +68,9 @@ size_t common_hal_usb_cdc_serial_read(usb_cdc_serial_obj_t *self, uint8_t *data, data += num_read; // Try to read another batch of bytes. - num_read = tud_cdc_n_read(self->idx, data, len); + if (tud_cdc_n_connected(self->idx)) { + num_read = tud_cdc_n_read(self->idx, data, len); + } total_num_read += num_read; } } pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy