fix(platform/rtthread): restart read at usbd_cdc_acm_bulk_out

This commit is contained in:
Matthew
2025-07-24 18:17:46 +08:00
committed by sakumisu
parent fa5a9fbcaa
commit 0e31b40407

View File

@@ -190,7 +190,7 @@ rt_err_t usbd_serial_register(struct usbd_serial *serial,
device->user_data = data; device->user_data = data;
/* register a character device */ /* register a character device */
ret = rt_device_register(device, serial->name, RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_REMOVABLE); ret = rt_device_register(device, serial->name, RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_REMOVABLE);
#ifdef RT_USING_POSIX_DEVIO #ifdef RT_USING_POSIX_DEVIO
/* set fops */ /* set fops */
@@ -209,6 +209,13 @@ void usbd_cdc_acm_bulk_out(uint8_t busid, uint8_t ep, uint32_t nbytes)
serial = &g_usbd_serial_cdc_acm[devno]; serial = &g_usbd_serial_cdc_acm[devno];
if (serial->out_ep == ep) { if (serial->out_ep == ep) {
rt_ringbuffer_put(&serial->rx_rb, g_usbd_serial_cdc_acm_rx_buf[serial->minor], nbytes); rt_ringbuffer_put(&serial->rx_rb, g_usbd_serial_cdc_acm_rx_buf[serial->minor], nbytes);
usbd_ep_start_read(serial->busid, serial->out_ep,
g_usbd_serial_cdc_acm_rx_buf[serial->minor],
usbd_get_ep_mps(serial->busid, serial->out_ep));
if (serial->parent.rx_indicate) {
serial->parent.rx_indicate(&serial->parent, nbytes);
}
break; break;
} }
} }