summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoramit verma <[email protected]>2021-02-25 23:13:21 +0530
committeramit verma <[email protected]>2021-02-25 23:13:21 +0530
commit07a04255da4442fb0790130ac65c648d0884255a (patch)
treea32d210017344a7a0cdf1043e5a7e076ce3b3160 /src
parent50a0bddd8b5f394215bdf36ac5b17a7386a77e3d (diff)
initial break request handling
Diffstat (limited to 'src')
-rw-r--r--src/class/cdc/cdc_device.c11
-rw-r--r--src/class/cdc/cdc_device.h3
2 files changed, 14 insertions, 0 deletions
diff --git a/src/class/cdc/cdc_device.c b/src/class/cdc/cdc_device.c
index 58f485a5d..5a74b4876 100644
--- a/src/class/cdc/cdc_device.c
+++ b/src/class/cdc/cdc_device.c
@@ -396,6 +396,17 @@ bool cdcd_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb_control_request_t
if ( tud_cdc_line_state_cb ) tud_cdc_line_state_cb(itf, dtr, rts);
}
break;
+ case CDC_REQUEST_SEND_BREAK:
+ if (stage == CONTROL_STAGE_SETUP)
+ {
+ tud_control_status(rhport, request);
+ }
+ else if (stage == CONTROL_STAGE_ACK)
+ {
+ TU_LOG2(" Send Break\r\n");
+ if ( tud_cdc_send_break_cb ) tud_cdc_send_break_cb(itf, request->wValue);
+ }
+ break;
default: return false; // stall unsupported request
}
diff --git a/src/class/cdc/cdc_device.h b/src/class/cdc/cdc_device.h
index 62dcd3c0a..d10fe68db 100644
--- a/src/class/cdc/cdc_device.h
+++ b/src/class/cdc/cdc_device.h
@@ -133,6 +133,9 @@ static inline bool tud_cdc_write_clear (void);
// Invoked when received new data
TU_ATTR_WEAK void tud_cdc_rx_cb(uint8_t itf);
+// Invoked when received send break
+TU_ATTR_WEAK void tud_cdc_send_break_cb(uint8_t itf, uint16_t wait_ms);
+
// Invoked when received `wanted_char`
TU_ATTR_WEAK void tud_cdc_rx_wanted_cb(uint8_t itf, char wanted_char);