summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--examples/device/webusb_serial/src/main.c19
-rw-r--r--src/device/usbd.c3
-rw-r--r--src/device/usbd.h4
3 files changed, 8 insertions, 18 deletions
diff --git a/examples/device/webusb_serial/src/main.c b/examples/device/webusb_serial/src/main.c
index e1a098048..9309bbf6e 100644
--- a/examples/device/webusb_serial/src/main.c
+++ b/examples/device/webusb_serial/src/main.c
@@ -143,9 +143,14 @@ void tud_resume_cb(void)
// WebUSB use vendor class
//--------------------------------------------------------------------+
-// Invoked when received VENDOR control request
-bool tud_vendor_control_request_cb(uint8_t rhport, tusb_control_request_t const * request)
+// Invoked when a control transfer occurred on an interface of this class
+// Driver response accordingly to the request and the transfer stage (setup/data/ack)
+// return false to stall control endpoint (e.g unsupported request)
+bool tud_vendor_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb_control_request_t const * request)
{
+ // nothing to with DATA & ACK stage
+ if (stage != CONTROL_STAGE_SETUP ) return true;
+
switch (request->bRequest)
{
case VENDOR_REQUEST_WEBUSB:
@@ -194,16 +199,6 @@ bool tud_vendor_control_request_cb(uint8_t rhport, tusb_control_request_t const
return true;
}
-// Invoked when DATA Stage of VENDOR's request is complete
-bool tud_vendor_control_complete_cb(uint8_t rhport, tusb_control_request_t const * request)
-{
- (void) rhport;
- (void) request;
-
- // nothing to do
- return true;
-}
-
void webserial_task(void)
{
if ( web_serial_connected )
diff --git a/src/device/usbd.c b/src/device/usbd.c
index b629a1ff8..9773245c8 100644
--- a/src/device/usbd.c
+++ b/src/device/usbd.c
@@ -158,8 +158,7 @@ static usbd_class_driver_t const _usbd_driver[] =
.init = vendord_init,
.reset = vendord_reset,
.open = vendord_open,
- .control_xfer_cb = tud_vendor_control_request_cb,
- .control_complete = tud_vendor_control_complete_cb,
+ .control_xfer_cb = tud_vendor_control_xfer_cb,
.xfer_cb = vendord_xfer_cb,
.sof = NULL
},
diff --git a/src/device/usbd.h b/src/device/usbd.h
index cf7e9f0db..ef248e4ca 100644
--- a/src/device/usbd.h
+++ b/src/device/usbd.h
@@ -127,10 +127,6 @@ TU_ATTR_WEAK void tud_resume_cb(void);
// Invoked when received control request with VENDOR TYPE
TU_ATTR_WEAK bool tud_vendor_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb_control_request_t const * request);
-// Invoked when vendor control request is complete
-TU_ATTR_WEAK bool tud_vendor_control_complete_cb(uint8_t rhport, tusb_control_request_t const * request);
-
-
//--------------------------------------------------------------------+
// Binary Device Object Store (BOS) Descriptor Templates
//--------------------------------------------------------------------+