Merge pull request #7100 from tannewt/fix_usb_cdc_read

Fix USB issues caused by early usb_cdc.Serial read
This commit is contained in:
Dan Halbert 2022-10-22 10:32:43 -04:00 committed by GitHub
commit 5a6fffca42
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 7 additions and 2 deletions

View File

@ -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;
}
}