fix(platform/rtthread): restart read at usbd_cdc_acm_bulk_out
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -269,4 +276,4 @@ void usbd_cdc_acm_serial_init(uint8_t busid, uint8_t in_ep, uint8_t out_ep)
|
|||||||
}
|
}
|
||||||
|
|
||||||
USB_LOG_INFO("USB CDC ACM Serial Device %s initialized\n", serial->name);
|
USB_LOG_INFO("USB CDC ACM Serial Device %s initialized\n", serial->name);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user