summaryrefslogtreecommitdiff
path: root/src/class
diff options
context:
space:
mode:
authorJan Dümpelmann <[email protected]>2020-09-04 15:40:23 +0200
committerJan Dümpelmann <[email protected]>2020-09-04 15:40:23 +0200
commit9cc22b635c5c4b9426b1530c3623b899dc652302 (patch)
tree4013b17a899230cf23d9537246c8648e15db7c0f /src/class
parent4071e490e259de5bf2891c9893ab7965b5be3d2e (diff)
Add functionality to abort an ongoing transfer
Diffstat (limited to 'src/class')
-rw-r--r--src/class/cdc/cdc_device.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/class/cdc/cdc_device.c b/src/class/cdc/cdc_device.c
index 6f71cb781..56cc94abc 100644
--- a/src/class/cdc/cdc_device.c
+++ b/src/class/cdc/cdc_device.c
@@ -353,6 +353,16 @@ bool cdcd_control_request(uint8_t rhport, tusb_control_request_t const * request
bool const dtr = tu_bit_test(request->wValue, 0);
bool const rts = tu_bit_test(request->wValue, 1);
+#if CFG_TUD_CDC_CLEAR_AT_CONNECTION
+ // DTE connected event (if DTE supports DTR bit)
+ if ( dtr && !tu_bit_test(p_cdc->line_state, 0) )
+ {
+ // Clear not transmitted data
+ usbd_edpt_xfer_abort(rhport, p_cdc->ep_in);
+ tu_fifo_clear(&p_cdc->tx_ff);
+ }
+#endif
+
p_cdc->line_state = (uint8_t) request->wValue;
// Disable fifo overwriting if DTR bit is set