From 60a1859008c35e715d868939875f6a761a8b4ab5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?King=20K=C3=A9vin?= Date: Sun, 14 Jun 2020 18:57:05 +0200 Subject: [PATCH] usb_cdcacm: add flush method to wait for empty buffer --- lib/usb_cdcacm.c | 8 +++++++- lib/usb_cdcacm.h | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/usb_cdcacm.c b/lib/usb_cdcacm.c index 4dca758..6516e5a 100644 --- a/lib/usb_cdcacm.c +++ b/lib/usb_cdcacm.c @@ -479,7 +479,13 @@ void usb_cdcacm_putchar(char c) usb_cdcacm_data_tx_cb(NULL, 0); // send data over USB when possible } +void usb_cdcacm_flush(void) +{ + while (tx_used); +} + /** USB interrupt service routine called when data is received */ -void usb_lp_can_rx0_isr(void) { +void usb_lp_can_rx0_isr(void) +{ usbd_poll(usb_device); } diff --git a/lib/usb_cdcacm.h b/lib/usb_cdcacm.h index 92177cf..ffc0289 100644 --- a/lib/usb_cdcacm.h +++ b/lib/usb_cdcacm.h @@ -16,3 +16,6 @@ void usb_cdcacm_setup(void); * @note blocks if transmit buffer is full, else puts in buffer and returns */ void usb_cdcacm_putchar(char c); +/** wait until all is transmitted (blocking) + */ +void usb_cdcacm_flush(void);